private string DeclareExplicitVariant(VBAParser.ConstSubStmtContext 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;

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

            var constant    = context.GetText();
            var replacement = context.identifier().GetText() + ' '
                              + Tokens.As + ' ' + Tokens.Variant + ' '
                              + context.EQ().GetText() + ' '
                              + context.expression().GetText();

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

            return(result);
        }
        public override void EnterConstSubStmt(VBAParser.ConstSubStmtContext context)
        {
            var parent        = (VBAParser.ConstStmtContext)context.Parent;
            var accessibility = GetMemberAccessibility(parent.visibility());

            var asTypeClause = context.asTypeClause();
            var asTypeName   = asTypeClause == null
                ? Tokens.Variant
                : asTypeClause.type().GetText();
            var identifier = context.identifier();
            var typeHint   = Identifier.GetTypeHintValue(identifier);
            var name       = Identifier.GetName(identifier);
            var value      = context.expression().GetText();
            var constStmt  = (VBAParser.ConstStmtContext)context.Parent;

            var declaration = new ConstantDeclaration(
                new QualifiedMemberName(_qualifiedName, name),
                _parentDeclaration,
                _currentScope,
                asTypeName,
                asTypeClause,
                typeHint,
                FindAnnotations(constStmt.Start.Line),
                accessibility,
                DeclarationType.Constant,
                value,
                context,
                identifier.GetSelection());

            AddDeclaration(declaration);
        }
Exemplo n.º 3
0
        private string DeclareExplicitVariant(VBAParser.ConstSubStmtContext context, out string instruction)
        {
            if (context == null)
            {
                instruction = null;
                return(null);
            }

            var parent = (VBAParser.ConstStmtContext)context.Parent;

            instruction = parent.GetText();

            var constant    = context.GetText();
            var replacement = context.identifier().GetText() + ' '
                              + Tokens.As + ' ' + Tokens.Variant + ' '
                              + context.EQ().GetText() + ' '
                              + context.expression().GetText();

            var result = instruction.Replace(constant, replacement);

            return(result);
        }