Beispiel #1
0
        private IExpressionBinding Visit(Declaration module, Declaration parent, VBAParser.MemberAccessExprContext expression, IBoundExpression withBlockVariable, StatementResolutionContext statementContext)
        {
            dynamic lExpression        = expression.lExpression();
            var     lExpressionBinding = Visit(module, parent, lExpression, withBlockVariable, StatementResolutionContext.Undefined);

            return(new MemberAccessDefaultBinding(_declarationFinder, Declaration.GetProjectParent(parent), module, parent, expression, lExpressionBinding, statementContext, expression.unrestrictedIdentifier()));
        }
        private IExpressionBinding Visit(Declaration module, Declaration parent, VBAParser.MemberAccessExprContext expression)
        {
            var lExpression        = expression.lExpression();
            var lExpressionBinding = Visit(module, parent, lExpression);

            return(new MemberAccessProcedurePointerBinding(_declarationFinder, Declaration.GetProjectParent(parent), module, parent, expression, expression.unrestrictedIdentifier(), lExpressionBinding));
        }
Beispiel #3
0
        private IExpressionBinding Visit(Declaration module, Declaration parent, VBAParser.MemberAccessExprContext expression)
        {
            dynamic lExpression        = expression.lExpression();
            var     lExpressionBinding = Visit(module, parent, lExpression);

            SetPreferProjectOverUdt(lExpressionBinding);
            return(new MemberAccessTypeBinding(_declarationFinder, Declaration.GetProjectParent(parent), module, parent, expression, expression.unrestrictedIdentifier(), lExpressionBinding));
        }
            private string GetAttributeNameWithoutProcedureName(VBAParser.MemberAccessExprContext expr)
            {
                string name = expr.unrestrictedIdentifier().GetText();

                // The simple name expression represents the procedure's name.
                // We don't want that one though so we simply ignore it.
                if (expr.lExpression() is VBAParser.SimpleNameExprContext)
                {
                    return(name);
                }
                return(string.Format("{0}.{1}", GetAttributeNameWithoutProcedureName((VBAParser.MemberAccessExprContext)expr.lExpression()), name));
            }
Beispiel #5
0
 public MemberAccessProcedurePointerBinding(
     DeclarationFinder declarationFinder,
     Declaration project,
     Declaration module,
     Declaration parent,
     VBAParser.MemberAccessExprContext expression,
     ParserRuleContext unrestrictedNameContext,
     IExpressionBinding lExpressionBinding)
 {
     _declarationFinder       = declarationFinder;
     _project                 = project;
     _module                  = module;
     _parent                  = parent;
     _expression              = expression;
     _lExpressionBinding      = lExpressionBinding;
     _unrestrictedNameContext = unrestrictedNameContext;
 }
Beispiel #6
0
 public MemberAccessDefaultBinding(
     DeclarationFinder declarationFinder,
     Declaration project,
     Declaration module,
     Declaration parent,
     VBAParser.MemberAccessExprContext expression,
     IExpressionBinding lExpressionBinding,
     StatementResolutionContext statementContext,
     ParserRuleContext unrestrictedNameContext)
     : this(
         declarationFinder,
         project,
         module,
         parent,
         expression,
         null,
         Identifier.GetName(expression.unrestrictedIdentifier()),
         statementContext,
         unrestrictedNameContext)
 {
     _lExpressionBinding = lExpressionBinding;
 }