private void AddParameter(Declaration targetMethod, Declaration targetVariable, VBAParser.ArgListContext paramList, IRewriteSession rewriteSession) { var rewriter = rewriteSession.CheckOutModuleRewriter(targetMethod.QualifiedModuleName); var argList = paramList.arg(); var newParameter = $"{Tokens.ByVal} {targetVariable.IdentifierName} {Tokens.As} {targetVariable.AsTypeName}"; if (!argList.Any()) { rewriter.InsertBefore(paramList.RPAREN().Symbol.TokenIndex, newParameter); } else if (targetMethod.DeclarationType != DeclarationType.PropertyLet && targetMethod.DeclarationType != DeclarationType.PropertySet) { rewriter.InsertBefore(paramList.RPAREN().Symbol.TokenIndex, $", {newParameter}"); } else { var lastParam = argList.Last(); rewriter.InsertBefore(lastParam.Start.TokenIndex, $"{newParameter}, "); } }
private void AddParameter(Declaration targetMethod, Declaration targetVariable, VBAParser.ArgListContext paramList) { var rewriter = _state.GetRewriter(targetMethod); _rewriters.Add(rewriter); var argList = paramList.arg(); var newParameter = Tokens.ByVal + " " + targetVariable.IdentifierName + " " + Tokens.As + " " + targetVariable.AsTypeName; if (!argList.Any()) { rewriter.InsertBefore(paramList.RPAREN().Symbol.TokenIndex, newParameter); } else if (targetMethod.DeclarationType != DeclarationType.PropertyLet && targetMethod.DeclarationType != DeclarationType.PropertySet) { rewriter.InsertBefore(paramList.RPAREN().Symbol.TokenIndex, $", {newParameter}"); } else { var lastParam = argList.Last(); rewriter.InsertBefore(lastParam.Start.TokenIndex, $"{newParameter}, "); } }
private static RewriterInfo GetRewriterInfo(VBAParser.ArgContext arg, VBAParser.ArgListContext context) { if (context == null) { throw new ArgumentNullException(nameof(context), @"Context is null. Expecting a VBAParser.ArgListContext instance."); } var items = context.arg(); var itemIndex = items.ToList().IndexOf(arg); if (items.Length == 1) { return(new RewriterInfo(context.LPAREN().Symbol.TokenIndex + 1, context.RPAREN().Symbol.TokenIndex - 1)); } return(GetRewriterInfoForTargetRemovedFromListStmt(arg.Start, itemIndex, context.arg())); }