コード例 #1
0
        public void ResolveSimpleTypeReference(SimpleTypeReference node)
        {
            if (null != node.Entity)
            {
                return;
            }

            IEntity entity = ResolveTypeName(node);

            if (null == entity)
            {
                node.Entity = NameNotType(node, "not found");
                return;
            }

            GenericTypeReference gtr = node as GenericTypeReference;

            if (null != gtr)
            {
                entity = ResolveGenericTypeReference(gtr, entity);
            }

            GenericTypeDefinitionReference gtdr = node as GenericTypeDefinitionReference;

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

            entity = Entities.PreferInternalEntitiesOverExternalOnes(entity);

            if (EntityType.Type != entity.EntityType)
            {
                if (EntityType.Ambiguous == entity.EntityType)
                {
                    entity = AmbiguousReference(node, (Ambiguous)entity);
                }
                else if (EntityType.Error != entity.EntityType)
                {
                    entity = NameNotType(node, entity.ToString());
                }
            }
            else
            {
                node.Name = entity.FullName;
            }

            if (node.IsPointer && EntityType.Type == entity.EntityType)
            {
                entity = ((IType)entity).MakePointerType();
            }

            node.Entity = entity;
        }
コード例 #2
0
ファイル: BooPrinterVisitor.cs プロジェクト: codehaus/boo
 override public void OnGenericTypeDefinitionReference(GenericTypeDefinitionReference node)
 {
     OnSimpleTypeReference(node);
     Write("[of *");
     for (int i = 1; i < node.GenericPlaceholders; i++)
     {
         Write(", *");
     }
     Write("]");
 }
コード例 #3
0
ファイル: NameResolutionService.cs プロジェクト: codehaus/boo
        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
            {
#if NET_2_0
                GenericTypeReference gtr = node as GenericTypeReference;
                if (null != gtr)
                {
                    entity = MakeGenericType(gtr, (IType)entity);
                }

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

                node.Name = entity.FullName;
            }

            node.Entity = entity;
        }
コード例 #4
0
ファイル: ResolveTypeReferences.cs プロジェクト: codehaus/boo
 override public void OnGenericTypeDefinitionReference(GenericTypeDefinitionReference node)
 {
     NameResolutionService.ResolveSimpleTypeReference(node);
 }
コード例 #5
0
 public override void OnGenericTypeDefinitionReference(GenericTypeDefinitionReference node)
 {
     base.OnGenericTypeDefinitionReference(node);
     OnTypeReference(node);
 }
コード例 #6
0
 public override void OnGenericTypeDefinitionReference(GenericTypeDefinitionReference node)
 {
     throw new NotImplementedException();
     IL_0006 :;
 }
コード例 #7
0
 override public void OnGenericTypeDefinitionReference(GenericTypeDefinitionReference node)
 {
     OnTypeReference(node);
 }
コード例 #8
0
 override public void OnGenericTypeDefinitionReference(GenericTypeDefinitionReference node)
 {
     CheckName(node, node.Name);
 }