public override void ExitArgList(VBAParser.ArgListContext context) { if (context.arg() != null && context.arg().Count(a => a.BYREF() != null || (a.BYREF() == null && a.BYVAL() == null)) == 1) { _contexts.Add(context); } }
private void RewriteSignature(Declaration target, VBAParser.ArgListContext paramList, CodeModule module) { var argList = paramList.arg(); var newContent = GetOldSignature(target); var lineNum = paramList.GetSelection().LineCount; var parameterIndex = 0; var currentStringIndex = 0; for (var i = parameterIndex; i < _model.Parameters.Count; i++) { var oldParam = argList.ElementAt(parameterIndex).GetText(); var newParam = argList.ElementAt(_model.Parameters.ElementAt(parameterIndex).Index).GetText(); var parameterStringIndex = newContent.IndexOf(oldParam, currentStringIndex, StringComparison.Ordinal); if (parameterStringIndex > -1) { var beginningSub = newContent.Substring(0, parameterStringIndex); var replaceSub = newContent.Substring(parameterStringIndex).Replace(oldParam, newParam); newContent = beginningSub + replaceSub; parameterIndex++; currentStringIndex = beginningSub.Length + newParam.Length; } } module.ReplaceLine(paramList.Start.Line, newContent.Replace(" _" + Environment.NewLine, string.Empty)); module.DeleteLines(paramList.Start.Line + 1, lineNum - 1); }
public override void EnterArgList(VBAParser.ArgListContext context) { var args = context.arg(); foreach (var argContext in args) { var asTypeClause = argContext.asTypeClause(); var asTypeName = asTypeClause == null ? Tokens.Variant : asTypeClause.type().GetText(); var identifier = argContext.ambiguousIdentifier(); if (identifier == null) { return; } OnNewDeclaration(CreateDeclaration(identifier.GetText(), asTypeName, Accessibility.Implicit, DeclarationType.Parameter, argContext, identifier.GetSelection())); } }
private void RemoveSignatureParameters(Declaration target, VBAParser.ArgListContext paramList, CodeModule module) { var paramNames = paramList.arg(); var paramsRemoved = _model.Parameters.Where(item => item.IsRemoved).ToList(); var signature = GetOldSignature(target); foreach (var param in paramsRemoved) { try { signature = ReplaceCommas(signature.Replace(paramNames.ElementAt(param.Index).GetText(), ""), _model.Parameters.FindIndex(item => item == param) - paramsRemoved.FindIndex(item => item == param)); } catch (ArgumentOutOfRangeException) { } } var lineNum = paramList.GetSelection().LineCount; module.ReplaceLine(paramList.Start.Line, signature); for (var line = paramList.Start.Line + 1; line < paramList.Start.Line + lineNum; line++) { module.ReplaceLine(line, ""); } }