Пример #1
0
        public static Iterable <TypeInfo> getTypeMemberDependencies(TypeMemberNode tm)
        {
            var result = new HashSet <TypeInfo>();

            addTypeMemberDependencies(tm, result);
            return(result);
        }
 void buildIndexerDocumentation(MethodInfo method, TypeMemberNode indexerDeclaration) {
     var comment = ParserHelper.decodeDocumentation(context.Text, indexerDeclaration.DocumentationOffset,
             indexerDeclaration.DocumentationLength);
     memberKind = MemberKind.Indexer;
     this.method = method;
     node = indexerDeclaration;
     appendDocumentation(getIdString(method), comment);
 }
 void buildFieldDocumentation(FieldInfo field, TypeMemberNode fieldDeclaration) {
     var comment = ParserHelper.decodeDocumentation(context.Text, fieldDeclaration.DocumentationOffset,
             fieldDeclaration.DocumentationLength);
     memberKind = MemberKind.Field;
     this.field = field;
     node = fieldDeclaration;
     appendDocumentation(getIdString(field), comment);
 }
 void buildTypeDocumentation(TypeInfo type, TypeMemberNode typeDeclaration) {
     var comment = ParserHelper.decodeDocumentation(context.Text, typeDeclaration.DocumentationOffset,
             typeDeclaration.DocumentationLength);
     memberKind = MemberKind.Type;
     this.type = type;
     node = typeDeclaration;
     appendDocumentation(getIdString(type), comment);
 }
Пример #5
0
        void buildIndexerDocumentation(MethodInfo method, TypeMemberNode indexerDeclaration)
        {
            var comment = ParserHelper.decodeDocumentation(context.Text, indexerDeclaration.DocumentationOffset,
                                                           indexerDeclaration.DocumentationLength);

            memberKind  = MemberKind.Indexer;
            this.method = method;
            node        = indexerDeclaration;
            appendDocumentation(getIdString(method), comment);
        }
Пример #6
0
        void buildFieldDocumentation(FieldInfo field, TypeMemberNode fieldDeclaration)
        {
            var comment = ParserHelper.decodeDocumentation(context.Text, fieldDeclaration.DocumentationOffset,
                                                           fieldDeclaration.DocumentationLength);

            memberKind = MemberKind.Field;
            this.field = field;
            node       = fieldDeclaration;
            appendDocumentation(getIdString(field), comment);
        }
Пример #7
0
        void buildTypeDocumentation(TypeInfo type, TypeMemberNode typeDeclaration)
        {
            var comment = ParserHelper.decodeDocumentation(context.Text, typeDeclaration.DocumentationOffset,
                                                           typeDeclaration.DocumentationLength);

            memberKind = MemberKind.Type;
            this.type  = type;
            node       = typeDeclaration;
            appendDocumentation(getIdString(type), comment);
        }
Пример #8
0
        void buildPropertyDocumentation(MethodInfo method, String name, TypeMemberNode propertyDeclaration)
        {
            var comment = ParserHelper.decodeDocumentation(context.Text, propertyDeclaration.DocumentationOffset,
                                                           propertyDeclaration.DocumentationLength);

            memberKind  = MemberKind.Property;
            this.method = method;
            node        = propertyDeclaration;
            appendDocumentation(getIdString(method), comment);
        }
 void buildPropertyDocumentation(MethodInfo method, String name, TypeMemberNode propertyDeclaration) {
     var comment = ParserHelper.decodeDocumentation(context.Text, propertyDeclaration.DocumentationOffset,
             propertyDeclaration.DocumentationLength);
     memberKind = MemberKind.Property;
     this.method = method;
     node = propertyDeclaration;
     appendDocumentation(getIdString(method), comment);
 }
Пример #10
0
        private static void addTypeMemberDependencies(TypeMemberNode tm, Set <TypeInfo> dependencies)
        {
            var t = tm.getUserData(typeof(TypeInfo));

            if (t == null)
            {
                return;
            }
            addAnnotationsDependencies(t.Annotations, dependencies);
            foreach (var ga in t.GenericArguments)
            {
                foreach (var b in ga.GenericParameterBounds)
                {
                    addDependencies(b, dependencies);
                }
            }

            ExpressionDependenciesHandler expressionHandler = null;

            switch (tm.TypeMemberKind)
            {
            case Class:
                var c = (ClassDeclarationNode)tm;
                addDependencies(t.BaseType, dependencies);
                foreach (var i in t.Interfaces)
                {
                    addDependencies(i, dependencies);
                }
                foreach (var cm in c.Members)
                {
                    switch (cm.TypeMemberKind)
                    {
                    case Class:
                    case Interface:
                    case Delegate:
                        addTypeMemberDependencies((TypeMemberNode)cm, dependencies);
                        break;

                    case EnumConstant:
                        var enumConstant = (EnumConstantDeclarationNode)cm;
                        addTypeMemberDependencies(enumConstant, dependencies);
                        foreach (var e in enumConstant.Arguments)
                        {
                            if (expressionHandler == null)
                            {
                                expressionHandler = new ExpressionDependenciesHandler(null);
                            }
                            expressionHandler.handleExpression(e, dependencies, true);
                        }
                        break;

                    case Field:
                        foreach (var decl in ((FieldDeclarationNode)cm).Declarators)
                        {
                            var f = decl.getUserData(typeof(FieldInfo));
                            addDependencies(f.Type, dependencies);
                            addAnnotationsDependencies(f.Annotations, dependencies);
                            if (decl.Value != null)
                            {
                                if (expressionHandler == null)
                                {
                                    expressionHandler = new ExpressionDependenciesHandler(null);
                                }
                                expressionHandler.handleExpression(decl.Value, dependencies, true);
                            }
                        }
                        break;

                    case Constructor:
                        var constructor = (ConstructorDeclarationNode)cm;
                        addBodyDependencies(constructor.getUserData(typeof(MethodInfo)), constructor.Body, dependencies);
                        if (constructor.Initializer != null)
                        {
                            foreach (var e in constructor.Initializer.Arguments)
                            {
                                if (expressionHandler == null)
                                {
                                    expressionHandler = new ExpressionDependenciesHandler(null);
                                }
                                expressionHandler.handleExpression(e, dependencies, true);
                            }
                        }
                        break;

                    case Destructor:
                        var destructor = (DestructorDeclarationNode)cm;
                        addBodyDependencies(destructor.getUserData(typeof(MethodInfo)), destructor.Body, dependencies);
                        break;

                    case Method:
                        var method = (MethodDeclarationNode)cm;
                        addBodyDependencies(method.getUserData(typeof(MethodInfo)), method.Body, dependencies);
                        break;

                    case Property:
                    case Indexer:
                        var accessorsOwner = (IAccessorsOwner)cm;
                        var get            = accessorsOwner.getGetAccessor();
                        var set            = accessorsOwner.getSetAccessor();
                        if (get != null)
                        {
                            addBodyDependencies(get.getUserData(typeof(MethodInfo)), get.Body, dependencies);
                        }
                        if (set != null)
                        {
                            addBodyDependencies(set.getUserData(typeof(MethodInfo)), set.Body, dependencies);
                        }
                        break;
                    }
                }
                break;

            case Interface:
            case Delegate:
                foreach (var i in t.getInterfaces())
                {
                    addDependencies(i, dependencies);
                    addAnnotationsDependencies(i.Annotations, dependencies);
                }
                foreach (var meth in t.Methods)
                {
                    addDependencies(meth.ReturnType, dependencies);
                    addAnnotationsDependencies(meth.Annotations, dependencies);
                    foreach (var p in meth.Parameters)
                    {
                        addDependencies(p.Type, dependencies);
                        addAnnotationsDependencies(p.Annotations, dependencies);
                    }
                }
                break;
            }
        }