Skip to content

Commit 37fae1f

Browse files
committed
Fixed bug with SA1115 (Parameter must begin on next line) when argument list contains pragma directives.
1 parent e137b57 commit 37fae1f

1 file changed

Lines changed: 20 additions & 5 deletions

File tree

StyleCop.Analyzers/StyleCop.Analyzers/ReadabilityRules/SA1115ParameterMustFollowComma.cs

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -270,18 +270,32 @@ private static void AnalyzeArgumentList(SyntaxNodeAnalysisContext context, BaseA
270270
return;
271271
}
272272

273-
var previousLine = argumentListSyntax.Arguments[0].GetLineSpan().EndLinePosition.Line;
273+
var previousArgumentLine = argumentListSyntax.Arguments[0].GetLineSpan().EndLinePosition.Line;
274274
for (int i = 1; i < argumentListSyntax.Arguments.Count; i++)
275275
{
276276
var currentArgument = argumentListSyntax.Arguments[i];
277-
var lineSpan = currentArgument.GetLineSpan();
278-
var currentLine = lineSpan.StartLinePosition.Line;
279-
if (currentLine - previousLine > 1)
277+
int currentArgumentStartLine;
278+
int currentArgumentEndLine;
279+
280+
if (currentArgument.HasLeadingTrivia && currentArgument.GetLeadingTrivia().All(trivia => IsValidTrivia(trivia)))
281+
{
282+
var lineSpan = currentArgument.SyntaxTree.GetLineSpan(currentArgument.FullSpan);
283+
currentArgumentStartLine = lineSpan.StartLinePosition.Line;
284+
currentArgumentEndLine = lineSpan.EndLinePosition.Line;
285+
}
286+
else
287+
{
288+
var lineSpan = currentArgument.GetLineSpan();
289+
currentArgumentStartLine = lineSpan.StartLinePosition.Line;
290+
currentArgumentEndLine = lineSpan.EndLinePosition.Line;
291+
}
292+
293+
if (currentArgumentStartLine - previousArgumentLine > 1)
280294
{
281295
context.ReportDiagnostic(Diagnostic.Create(Descriptor, currentArgument.GetLocation()));
282296
}
283297

284-
previousLine = lineSpan.EndLinePosition.Line;
298+
previousArgumentLine = currentArgumentEndLine;
285299
}
286300
}
287301

@@ -327,6 +341,7 @@ private static bool IsValidTrivia(SyntaxTrivia trivia)
327341
case SyntaxKind.EndIfDirectiveTrivia:
328342
case SyntaxKind.DisabledTextTrivia:
329343
case SyntaxKind.WhitespaceTrivia:
344+
case SyntaxKind.PragmaWarningDirectiveTrivia:
330345
return true;
331346

332347
default:

0 commit comments

Comments
 (0)