Boo.Lang.Compiler.TypeSystem.NameResolutionService.ResolveSimpleTypeReference C# (CSharp) Method

ResolveSimpleTypeReference() public method

public ResolveSimpleTypeReference ( Boo.Lang.Compiler.Ast.SimpleTypeReference node ) : void
node Boo.Lang.Compiler.Ast.SimpleTypeReference
return void
        public void ResolveSimpleTypeReference(SimpleTypeReference node)
        {
            if (null != node.Entity) return;

            IEntity entity = ResolveTypeName(node);
            if (null == entity)
            {
                node.Entity = NameNotType(node);
                return;
            }
            if (EntityType.Type != entity.EntityType)
            {
                if (EntityType.Ambiguous == entity.EntityType)
                {
                    entity = AmbiguousReference(node, (Ambiguous)entity);
                }
                else
                {
                    entity = NameNotType(node);
                }
            }
            else
            {
                GenericTypeReference gtr = node as GenericTypeReference;
                if (null != gtr)
                {
                    ResolveTypeReferenceCollection(gtr.GenericArguments);
                    entity = ResolveGenericTypeReference(gtr, entity);
                }

                GenericTypeDefinitionReference gtdr = node as GenericTypeDefinitionReference;
                if (null != gtdr)
                {
                    IType type = (IType)entity;
                    if (gtdr.GenericPlaceholders != type.GenericInfo.GenericParameters.Length)
                    {
                        entity = GenericArgumentsCountMismatch(gtdr, type);
                    }
                }

                node.Name = entity.FullName;
            }

            node.Entity = entity;
        }