private IExpressionBinding VisitArgumentBinding(Declaration module, Declaration parent, VBAParser.ArgumentExpressionContext argumentExpression, IBoundExpression withBlockVariable, StatementResolutionContext statementContext) { if (argumentExpression.expression() != null) { dynamic expr = argumentExpression.expression(); return(Visit(module, parent, expr, withBlockVariable, StatementResolutionContext.Undefined)); } else { dynamic expr = argumentExpression.addressOfExpression(); return(Visit(module, parent, expr, withBlockVariable, StatementResolutionContext.Undefined)); } }
private (IExpressionBinding binding, ParserRuleContext context, bool isAddressOfArgument) VisitArgumentBinding(Declaration module, Declaration parent, VBAParser.ArgumentExpressionContext argumentExpression, IBoundExpression withBlockVariable) { if (argumentExpression.expression() != null) { var expr = argumentExpression.expression(); return(Visit(module, parent, expr, withBlockVariable, StatementResolutionContext.Undefined), expr, false); } else { var expr = argumentExpression.addressOfExpression(); return(Visit(module, parent, expr, withBlockVariable, StatementResolutionContext.Undefined), expr, true); } }
private void ResolveRedimArgument(VBAParser.ArgumentExpressionContext argument) { // Redim statements can either have "normal" positional argument expressions or lower + upper bounds arguments. if (argument.lowerBoundArgumentExpression() != null) { ResolveDefault(argument.lowerBoundArgumentExpression().expression()); ResolveDefault(argument.upperBoundArgumentExpression().expression()); } else { ResolveDefault(argument.expression()); } }