Boo.Lang.Compiler.TypeSystem.Services.AnonymousCallablesManager.CreateConcreteCallableType C# (CSharp) Method

CreateConcreteCallableType() private method

private CreateConcreteCallableType ( Node sourceNode, Boo.Lang.Compiler.TypeSystem.Core.AnonymousCallableType anonymousType ) : IType
sourceNode Node
anonymousType Boo.Lang.Compiler.TypeSystem.Core.AnonymousCallableType
return IType
        private IType CreateConcreteCallableType(Node sourceNode, AnonymousCallableType anonymousType)
        {
            var module = TypeSystemServices.GetCompilerGeneratedTypesModule();

            var name = GenerateCallableTypeNameFrom(sourceNode, module);

            ClassDefinition cd = My<CallableTypeBuilder>.Instance.CreateEmptyCallableDefinition(name);

            cd.Annotate(AnonymousCallableTypeAnnotation);
            cd.Modifiers |= TypeMemberModifiers.Public;
            cd.LexicalInfo = sourceNode.LexicalInfo;

            cd.Members.Add(CreateInvokeMethod(anonymousType));

            Method beginInvoke = CreateBeginInvokeMethod(anonymousType);
            cd.Members.Add(beginInvoke);

            cd.Members.Add(CreateEndInvokeMethod(anonymousType));
            AddGenericTypes(cd);
            module.Members.Add(cd);
            return (IType)cd.Entity;
        }