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); } }
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); }
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} "); } }
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"); }
private static void ConvertPropertyGetDeclaration(VBAParser.PropertyGetStmtContext propertyGetContext, IModuleRewriter rewriter) { rewriter.Replace(propertyGetContext.PROPERTY_GET(), Tokens.Sub); rewriter.Replace(propertyGetContext.END_PROPERTY(), "End Sub"); }
private static void ConvertFunctionDeclaration(VBAParser.FunctionStmtContext functionContext, IModuleRewriter rewriter) { rewriter.Replace(functionContext.FUNCTION(), Tokens.Sub); rewriter.Replace(functionContext.END_FUNCTION(), "End Sub"); }
private void InsertDefaultMember(VBAParser.DictionaryAccessContext dictionaryAccessContext, QualifiedSelection selection, DeclarationFinder finder, IModuleRewriter rewriter) { var defaultMemberAccessCode = DefaultMemberAccessCode(selection, finder); rewriter.Replace(dictionaryAccessContext, defaultMemberAccessCode); }