Skip to content

Commit d81387d

Browse files
author
Kapil Borle
committed
Ignore DotDot operator in UseConsistentWhitespace rule
1 parent 70894cc commit d81387d

File tree

2 files changed

+21
-9
lines changed

2 files changed

+21
-9
lines changed

Rules/UseConsistentWhitespace.cs

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -298,19 +298,24 @@ private bool IsPreviousTokenApartByWhitespace(LinkedListNode<Token> tokenNode)
298298
(tokenNode.Value.Extent.StartColumnNumber - tokenNode.Previous.Value.Extent.EndColumnNumber);
299299
}
300300

301-
private IEnumerable<DiagnosticRecord> FindOperatorViolations(TokenOperations tokenOperations)
301+
private bool IsPreviousTokenOnSameLineAndApartByWhitespace(LinkedListNode<Token> tokenNode)
302302
{
303-
Func<LinkedListNode<Token>, bool> predicate = tokenNode =>
304-
{
305-
return tokenNode.Previous != null
306-
&& IsPreviousTokenOnSameLine(tokenNode)
307-
&& IsPreviousTokenApartByWhitespace(tokenNode);
308-
};
303+
return IsPreviousTokenOnSameLine(tokenNode) && IsPreviousTokenApartByWhitespace(tokenNode);
304+
}
309305

306+
private IEnumerable<DiagnosticRecord> FindOperatorViolations(TokenOperations tokenOperations)
307+
{
310308
foreach (var tokenNode in tokenOperations.GetTokenNodes(IsOperator))
311309
{
312-
var hasWhitespaceBefore = predicate(tokenNode);
313-
var hasWhitespaceAfter = predicate(tokenNode.Next);
310+
if (tokenNode.Previous == null
311+
|| tokenNode.Next == null
312+
|| tokenNode.Value.Kind == TokenKind.DotDot)
313+
{
314+
continue;
315+
}
316+
317+
var hasWhitespaceBefore = IsPreviousTokenOnSameLineAndApartByWhitespace(tokenNode);
318+
var hasWhitespaceAfter = IsPreviousTokenOnSameLineAndApartByWhitespace(tokenNode.Next);
314319

315320
if (!hasWhitespaceAfter || !hasWhitespaceBefore)
316321
{

Tests/Rules/UseConsistentWhitespace.tests.ps1

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,13 @@ $x = 1
173173
$violations = Invoke-ScriptAnalyzer -ScriptDefinition $def -Settings $settings
174174
$violations.Count | Should Be 0
175175
}
176+
177+
It "Should not find violation if there are no whitespaces around DotDot operator" {
178+
$def = @'
179+
1..5
180+
'@
181+
Invoke-ScriptAnalyzer -ScriptDefinition $def -Settings $settings | Should Be $null
182+
}
176183
}
177184

178185
Context "When a comma is not followed by a space" {

0 commit comments

Comments
 (0)