Example #1
0
        private void ConvertPropertyGet(IInspectionResult result, VBAParser.PropertyGetStmtContext propertyGetContext, IModuleRewriter rewriter)
        {
            var asTypeContext = propertyGetContext.GetChild <VBAParser.AsTypeClauseContext>();

            if (asTypeContext != null)
            {
                rewriter.Remove(asTypeContext);
                rewriter.Remove(propertyGetContext.children.ElementAt(propertyGetContext.children.IndexOf(asTypeContext) - 1) as ParserRuleContext);
            }

            if (result.Target.TypeHint != null)
            {
                rewriter.Remove(propertyGetContext.GetDescendent <VBAParser.TypeHintContext>());
            }

            rewriter.Replace(propertyGetContext.PROPERTY_GET(), Tokens.Sub);
            rewriter.Replace(propertyGetContext.END_PROPERTY(), "End Sub");

            foreach (var returnStatement in GetReturnStatements(result.Target))
            {
                rewriter.Remove(returnStatement);
            }
        }
Example #2
0
        private void ConvertFunction(IInspectionResult result, VBAParser.FunctionStmtContext functionContext, IModuleRewriter rewriter)
        {
            var asTypeContext = functionContext.GetChild <VBAParser.AsTypeClauseContext>();

            if (asTypeContext != null)
            {
                rewriter.Remove(asTypeContext);
                rewriter.Remove(functionContext.children.ElementAt(functionContext.children.IndexOf(asTypeContext) - 1) as ParserRuleContext);
            }

            if (result.Target.TypeHint != null)
            {
                rewriter.Remove(functionContext.GetDescendent <VBAParser.TypeHintContext>());
            }

            rewriter.Replace(functionContext.FUNCTION(), Tokens.Sub);
            rewriter.Replace(functionContext.END_FUNCTION(), "End Sub");

            foreach (var returnStatement in GetReturnStatements(result.Target))
            {
                rewriter.Remove(returnStatement);
            }
        }
        public static void SetVariableVisiblity(this IModuleRewriter rewriter, Declaration element, string visibility)
        {
            if (!element.IsVariable())
            {
                throw new ArgumentException();
            }

            var variableStmtContext = element.Context.GetAncestor <VBAParser.VariableStmtContext>();
            var visibilityContext   = variableStmtContext.GetChild <VBAParser.VisibilityContext>();

            if (visibilityContext != null)
            {
                rewriter.Replace(visibilityContext, visibility);
                return;
            }
            rewriter.InsertBefore(element.Context.Start.TokenIndex, $"{visibility} ");
        }
        private static void ReplaceDictionaryAccess(ArgumentReference dictionaryAccessArgument, IModuleRewriter rewriter)
        {
            //TODO: Deal with WithDictionaryAccessExprContexts.
            //This should best be handled by extracting a refactoring out of the ExpandBangNotationQuickFix and
            //using it here to expand the dictionary access for both kinds of dictionary access expression.
            var dictionaryAccess = dictionaryAccessArgument?.Context?.Parent as VBAParser.DictionaryAccessExprContext;

            if (dictionaryAccess == null)
            {
                return;
            }

            var          startTokenIndex   = dictionaryAccess.dictionaryAccess().start.TokenIndex;
            var          stopTokenIndex    = dictionaryAccess.unrestrictedIdentifier().stop.TokenIndex;
            const string replacementString = "()";

            rewriter.Replace(new Interval(startTokenIndex, stopTokenIndex), replacementString);
        }
Example #5
0
        private static void SetPrivateVariableVisiblity(IReadOnlyCollection <IEncapsulateFieldCandidate> fields, IModuleRewriter rewriter)
        {
            var visibility = Accessibility.Private.TokenString();

            foreach (var element in fields.Where(f => !f.Declaration.HasPrivateAccessibility()).Select(f => f.Declaration))
            {
                if (!element.IsVariable())
                {
                    throw new ArgumentException();
                }

                var variableStmtContext = element.Context.GetAncestor <VBAParser.VariableStmtContext>();
                var visibilityContext   = variableStmtContext.GetChild <VBAParser.VisibilityContext>();

                if (visibilityContext != null)
                {
                    rewriter.Replace(visibilityContext, visibility);
                    continue;
                }
                rewriter.InsertBefore(element.Context.Start.TokenIndex, $"{visibility} ");
            }
        }
Example #6
0
        private static void ReplaceTypeHint(RuleContext context, IModuleRewriter rewriter)
        {
            var typeHintContext = ((ParserRuleContext)context).GetDescendent <VBAParser.TypeHintContext>();

            rewriter.Replace(typeHintContext, "&");
        }
 private void UpdateCondition(VBAParser.LogicalOrOpContext condition, IModuleRewriter rewriter)
 {
     rewriter.Replace(condition.OR(), "And");
 }
 private void UpdateCondition(VBAParser.LogicalAndOpContext condition, IModuleRewriter rewriter)
 {
     rewriter.Replace(condition.AND(), "Or");
 }
Example #9
0
 private static void ConvertPropertyGetDeclaration(VBAParser.PropertyGetStmtContext propertyGetContext, IModuleRewriter rewriter)
 {
     rewriter.Replace(propertyGetContext.PROPERTY_GET(), Tokens.Sub);
     rewriter.Replace(propertyGetContext.END_PROPERTY(), "End Sub");
 }
Example #10
0
 private static void ConvertFunctionDeclaration(VBAParser.FunctionStmtContext functionContext, IModuleRewriter rewriter)
 {
     rewriter.Replace(functionContext.FUNCTION(), Tokens.Sub);
     rewriter.Replace(functionContext.END_FUNCTION(), "End Sub");
 }
Example #11
0
        private void InsertDefaultMember(VBAParser.DictionaryAccessContext dictionaryAccessContext, QualifiedSelection selection, DeclarationFinder finder, IModuleRewriter rewriter)
        {
            var defaultMemberAccessCode = DefaultMemberAccessCode(selection, finder);

            rewriter.Replace(dictionaryAccessContext, defaultMemberAccessCode);
        }