예제 #1
0
 internal ArgumentReference(
     QualifiedModuleName qualifiedName,
     Declaration parentScopingDeclaration,
     Declaration parentNonScopingDeclaration,
     string identifierName,
     Selection argumentSelection,
     ParserRuleContext context,
     VBAParser.ArgumentListContext argumentListContext,
     ArgumentListArgumentType argumentType,
     int argumentPosition,
     ParameterDeclaration referencedParameter,
     IEnumerable <IParseTreeAnnotation> annotations = null)
     : base(
         qualifiedName,
         parentScopingDeclaration,
         parentNonScopingDeclaration,
         identifierName,
         argumentSelection,
         context,
         referencedParameter,
         false,
         false,
         annotations)
 {
     ArgumentType          = argumentType;
     ArgumentPosition      = argumentPosition;
     ArgumentListContext   = argumentListContext;
     NumberOfArguments     = ArgumentListContext?.argument()?.Length ?? 0;
     ArgumentListSelection = argumentListContext?.GetSelection() ?? Selection.Empty;
 }
예제 #2
0
        public void AddArgumentReference(
            QualifiedModuleName module,
            Declaration scope,
            Declaration parent,
            Selection argumentSelection,
            ParserRuleContext argumentContext,
            VBAParser.ArgumentListContext argumentListContext,
            ArgumentListArgumentType argumentType,
            int argumentPosition,
            string identifier,
            IEnumerable <IParseTreeAnnotation> annotations)
        {
            var newReference = new ArgumentReference(
                module,
                scope,
                parent,
                identifier,
                argumentSelection,
                argumentContext,
                argumentListContext,
                argumentType,
                argumentPosition,
                this,
                annotations);

            _argumentReferences.AddOrUpdate(newReference, 1, (key, value) => 1);
        }
예제 #3
0
 public ArgumentListArgument(
     IExpressionBinding binding,
     ParserRuleContext context,
     VBAParser.ArgumentListContext argumentListContext,
     ArgumentListArgumentType argumentType,
     bool isAddressOfArgument = false)
     : this(binding, context, argumentListContext, argumentType, calledProcedure => null, isAddressOfArgument)
 {
 }
예제 #4
0
 public ArgumentListArgument(
     IExpressionBinding binding,
     ParserRuleContext context,
     VBAParser.ArgumentListContext argumentListContext,
     ArgumentListArgumentType argumentType,
     Func <Declaration, IBoundExpression> namedArgumentExpressionCreator,
     bool isAddressOfArgument = false)
 {
     _binding                        = binding;
     Context                         = context;
     ArgumentListContext             = argumentListContext;
     ArgumentType                    = argumentType;
     _namedArgumentExpressionCreator = namedArgumentExpressionCreator;
     _isAddressOfArgument            = isAddressOfArgument;
     ReferencedParameter             = null;
 }
예제 #5
0
 public ArgumentListArgument(IExpressionBinding binding, ArgumentListArgumentType argumentType, Func <Declaration, IBoundExpression> namedArgumentExpressionCreator)
 {
     _binding      = binding;
     _argumentType = argumentType;
     _namedArgumentExpressionCreator = namedArgumentExpressionCreator;
 }
예제 #6
0
 public ArgumentListArgument(IExpressionBinding binding, ArgumentListArgumentType argumentType)
     : this(binding, argumentType, calledProcedure => null)
 {
 }