Skip to content

Commit 6109ac7

Browse files
author
Mikhail Arkhipov
committed
Don't suppress LHS diagnostics on augmented assign
1 parent 0b28fa4 commit 6109ac7

File tree

3 files changed

+21
-2
lines changed

3 files changed

+21
-2
lines changed

src/Analysis/Ast/Impl/Linting/UndefinedVariables/UndefinedVariablesWalker.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,9 +49,7 @@ public override bool Walk(SuiteStatement node) {
4949
HandleNonLocal(nls);
5050
break;
5151
case AugmentedAssignStatement augs:
52-
_suppressDiagnostics = true;
5352
augs.Left?.Walk(new ExpressionWalker(this));
54-
_suppressDiagnostics = false;
5553
augs.Right?.Walk(new ExpressionWalker(this));
5654
break;
5755
case AssignmentStatement asst:

src/Analysis/Ast/Test/AssignmentTests.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -219,6 +219,15 @@ def __init__(self):
219219
.Which.Should().HaveMembers("abc", "y", "__class__");
220220
}
221221

222+
[TestMethod, Priority(0)]
223+
public async Task AugmentedAssignToUndefined() {
224+
const string code = @"
225+
x += 1
226+
";
227+
var analysis = await GetAnalysisAsync(code);
228+
analysis.Should().NotHaveVariable("x");
229+
}
230+
222231
[TestMethod, Priority(0)]
223232
public async Task BaseInstanceVariable() {
224233
const string code = @"

src/Analysis/Ast/Test/LintUndefinedVarsTests.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -821,6 +821,18 @@ class Subclass(MyClass):
821821
d.Should().BeEmpty();
822822
}
823823

824+
[TestMethod, Priority(0)]
825+
public async Task AugmentedAssignToUndefined() {
826+
const string code = @"
827+
x += 1
828+
";
829+
var d = await LintAsync(code);
830+
d.Should().HaveCount(1);
831+
d[0].ErrorCode.Should().Be(ErrorCodes.UndefinedVariable);
832+
d[0].SourceSpan.Should().Be(2, 1, 2, 2);
833+
}
834+
835+
824836
private async Task<IReadOnlyList<DiagnosticsEntry>> LintAsync(string code, InterpreterConfiguration configuration = null) {
825837
var analysis = await GetAnalysisAsync(code, configuration ?? PythonVersions.LatestAvailable3X);
826838
var a = Services.GetService<IPythonAnalyzer>();

0 commit comments

Comments
 (0)