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

AddGenericTypes() private method

private AddGenericTypes ( ClassDefinition cd ) : void
cd Boo.Lang.Compiler.Ast.ClassDefinition
return void
        private void AddGenericTypes(ClassDefinition cd)
        {
            var collector = new GenericTypeCollector(this.CodeBuilder);
            collector.Process(cd);

            var counter = cd.GenericParameters.Count;
            var innerCollector = new DetectInnerGenerics();
            cd.Accept(innerCollector);
            foreach (Node node in innerCollector.Values)
            {
                var param = (IGenericParameter)node.Entity;
                var gp = cd.GenericParameters.FirstOrDefault(gpd => gpd.Name.Equals(param.Name));
                if (gp == null)
                {
                    gp = CodeBuilder.CreateGenericParameterDeclaration(counter, param.Name);
                    cd.GenericParameters.Add(gp);
                    ++counter;
                }
                node.Entity = new InternalGenericParameter(this.TypeSystemServices, gp);
                gp["InternalGenericParent"] = (param as InternalGenericParameter).Node;
            }
        }