コード例 #1
0
        public static ResolveResult resolve(this O2AstResolver o2AstResolver, Expression expression, IClass callingClass, IMember callingMember)
        {
            o2AstResolver.initialize(expression);
            if (callingClass != null)                   // this is needed on the cases where we need to resolve expressions from partial files
            {
                o2AstResolver.resolver.CallingClass = callingClass;
                o2AstResolver.resolver.CallingMember = callingMember;
                o2AstResolver.resolver.CaretColumn = 0;
                o2AstResolver.resolver.CaretLine = 0;
            }
            var methodDeclaration = expression.parent<MethodDeclaration>();
            if (methodDeclaration != null)
                o2AstResolver.resolver.RunLookupTableVisitor(methodDeclaration);
            else
            {
                var constructorDeclaration = expression.parent<ConstructorDeclaration>();
                if (constructorDeclaration != null)
                    o2AstResolver.resolver.RunLookupTableVisitor(constructorDeclaration);
            }
            //resolver.Initialize(parseInformation, memberReferenceExpression.StartLocation.Line, memberReferenceExpression.StartLocation.Column);
            //resolver.RunLookupTableVisitor(memberReferenceExpression);

            return o2AstResolver.resolver.ResolveInternal(expression, ExpressionContext.Default);
        }