private IMethodDefinition CreateForwardReferenceToMethodDefinition() { //TODO: if not compiling an object file give an error MethodDeclaration.Flags flags = MethodDeclaration.Flags.External; if (this.AcceptsExtraArguments) flags |= MethodDeclaration.Flags.AcceptsExtraArguments; FunctionDefinition externFunc = new FunctionDefinition(flags, this.specifiers, this.CallingConvention, TypeMemberVisibility.Public, this.Type, this.Name, this.templateParameters, this.parameters, null, this.isSpec, this.expansion, this.SourceLocation); externFunc.SetContainingTypeDeclaration(this.CompilationPart.GlobalDeclarationContainer, false); if (this.templateParameters != null) { foreach (GenericMethodParameterDeclaration templatePar in this.templateParameters) templatePar.SetDeclaringMethod(externFunc); } IMethodDefinition result = externFunc.MethodDefinition; this.TransferContract(result); return result; }