public override void EnterVariableSubStmt(VBAParser.VariableSubStmtContext context)
        {
            var parent        = (VBAParser.VariableStmtContext)context.Parent.Parent;
            var accessibility = GetMemberAccessibility(parent.visibility());
            var identifier    = context.identifier();

            if (identifier == null)
            {
                return;
            }
            var name         = Identifier.GetName(identifier);
            var typeHint     = Identifier.GetTypeHintValue(identifier);
            var asTypeClause = context.asTypeClause();
            var asTypeName   = asTypeClause == null
                ? Tokens.Variant
                : asTypeClause.type().GetText();
            var  withEvents   = parent.WITHEVENTS() != null;
            var  isAutoObject = asTypeClause != null && asTypeClause.NEW() != null;
            bool isArray      = context.LPAREN() != null;

            AddDeclaration(
                CreateDeclaration(
                    name,
                    asTypeName,
                    accessibility,
                    DeclarationType.Variable,
                    context,
                    context.identifier().GetSelection(),
                    isArray,
                    asTypeClause,
                    typeHint,
                    isAutoObject,
                    withEvents));
        }
예제 #2
0
        public override void EnterVariableSubStmt(VBAParser.VariableSubStmtContext context)
        {
            var parent        = (VBAParser.VariableStmtContext)context.Parent.Parent;
            var accessibility = GetMemberAccessibility(parent.visibility());
            var identifier    = context.identifier();

            if (identifier == null)
            {
                return;
            }
            var name = identifier.GetText();

            var asTypeClause = context.asTypeClause();
            var asTypeName   = asTypeClause == null
                ? Tokens.Variant
                : asTypeClause.type().GetText();

            var withEvents   = parent.WITHEVENTS() != null;
            var selfAssigned = asTypeClause != null && asTypeClause.NEW() != null;

            OnNewDeclaration(CreateDeclaration(name, asTypeName, accessibility, DeclarationType.Variable, context, context.identifier().GetSelection(), selfAssigned, withEvents));
        }
        private string DeclareExplicitVariant(VBAParser.VariableSubStmtContext context, string contextLines, out string instruction, out Selection selection)
        {
            if (context == null)
            {
                instruction = null;
                selection   = VBEditor.Selection.Empty;
                return(null);
            }

            var parent = (ParserRuleContext)context.Parent.Parent;

            selection   = parent.GetSelection();
            instruction = contextLines.Substring(selection.StartColumn - 1);

            var variable    = context.GetText();
            var replacement = context.identifier().GetText() + ' ' + Tokens.As + ' ' + Tokens.Variant;

            var insertIndex = instruction.IndexOf(variable, StringComparison.Ordinal);
            var result      = instruction.Substring(0, insertIndex)
                              + replacement + instruction.Substring(insertIndex + variable.Length);

            return(result);
        }
예제 #4
0
        public static string GetName(VBAParser.VariableSubStmtContext context)
        {
            var nameContext = context.identifier();

            return(GetName(nameContext));
        }
예제 #5
0
        public static string GetName(VBAParser.VariableSubStmtContext context, out Interval tokenInterval)
        {
            var nameContext = context.identifier();

            return(GetName(nameContext, out tokenInterval));
        }