示例#1
0
        public TypeKind GetTypeKindForAstType(ICSharpCode.NRefactory.CSharp.AstType type)
        {
            var annotation = type.Annotation <ITypeDefOrRef>();

            if (annotation is null)
            {
                return(TypeKind.Unknown);
            }

            var definition = annotation.ResolveTypeDef();

            if (definition is null)
            {
                return(TypeKind.Unknown);
            }
            if (definition.IsClass)
            {
                return(TypeKind.Class);
            }
            if (definition.IsInterface)
            {
                return(TypeKind.Interface);
            }
            if (definition.IsEnum)
            {
                return(TypeKind.Enum);
            }
            if (definition.IsValueType)
            {
                return(TypeKind.Struct);
            }

            return(TypeKind.Unknown);
        }
示例#2
0
        public ClassType GetClassTypeForAstType(ICSharpCode.NRefactory.CSharp.AstType type)
        {
            var definition = type.Annotations.OfType <TypeReference>().First().ResolveOrThrow();

            if (definition.IsClass)
            {
                return(ClassType.Class);
            }
            if (definition.IsInterface)
            {
                return(ClassType.Interface);
            }
            if (definition.IsEnum)
            {
                return(ClassType.Enum);
            }
            if (definition.IsFunctionPointer)
            {
                return(ClassType.Delegate);
            }
            if (definition.IsValueType)
            {
                return(ClassType.Struct);
            }

            return(ClassType.Module);
        }
示例#3
0
        public TypeKind GetTypeKindForAstType(ICSharpCode.NRefactory.CSharp.AstType type)
        {
            var annotation = type.Annotation <TypeReference>();

            if (annotation == null)
            {
                return(TypeKind.Unknown);
            }

            var definition = annotation.ResolveOrThrow();

            if (definition.IsClass)
            {
                return(TypeKind.Class);
            }
            if (definition.IsInterface)
            {
                return(TypeKind.Interface);
            }
            if (definition.IsEnum)
            {
                return(TypeKind.Enum);
            }
            if (definition.IsFunctionPointer)
            {
                return(TypeKind.Delegate);
            }
            if (definition.IsValueType)
            {
                return(TypeKind.Struct);
            }

            return(TypeKind.Unknown);
        }
示例#4
0
 public ICSharpCode.NRefactory.CSharp.AstType ShortenTypeName(ICSharpCode.NRefactory.CSharp.AstType typeReference)
 {
     return(Document.CompilationUnit.ShortenTypeName(typeReference.ConvertToReturnType(), Document.Editor.Caret.Line, Document.Editor.Caret.Column).ConvertToTypeReference());
 }