From 8f857303adedd1d6721a7721d88a0366171c47e5 Mon Sep 17 00:00:00 2001 From: Jake Bailey <5341706+jakebailey@users.noreply.github.com> Date: Thu, 1 Nov 2018 15:01:04 -0700 Subject: [PATCH] Fix None being reported as not defined in type hints --- .../Impl/Analyzer/ExpressionEvaluator.cs | 2 +- .../Engine/Test/LanguageServerTests.cs | 21 +++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/src/Analysis/Engine/Impl/Analyzer/ExpressionEvaluator.cs b/src/Analysis/Engine/Impl/Analyzer/ExpressionEvaluator.cs index a50ffb7d8..3d8891e4e 100644 --- a/src/Analysis/Engine/Impl/Analyzer/ExpressionEvaluator.cs +++ b/src/Analysis/Engine/Impl/Analyzer/ExpressionEvaluator.cs @@ -150,7 +150,7 @@ public IAnalysisSet LookupAnalysisSetByName(Node node, string name, bool addRef res = refs.Types; } else { // ... warn the user - warn = true; + warn = !(node is ConstantExpression); // Don't warn when None. } } } diff --git a/src/Analysis/Engine/Test/LanguageServerTests.cs b/src/Analysis/Engine/Test/LanguageServerTests.cs index 076cf62d8..cd500935a 100644 --- a/src/Analysis/Engine/Test/LanguageServerTests.cs +++ b/src/Analysis/Engine/Test/LanguageServerTests.cs @@ -363,6 +363,27 @@ public async Task DiagnosticsSettingChange() { } } + [TestMethod, Priority(0)] + public async Task TypeHintNoneDiagnostic() { + if (this is LanguageServerTests_V2) { + // No type hints in Python 2. + return; + } + + var code = @" +def f(b: None) -> None: + b: None +"; + + var diags = new Dictionary(); + using (var s = await CreateServer((Uri)null, null, diags)) { + var u = await s.OpenDefaultDocumentAndGetUriAsync(code); + + await s.WaitForCompleteAnalysisAsync(CancellationToken.None); + GetDiagnostics(diags, u).Should().BeEmpty(); + } + } + [TestMethod, Priority(0)] public async Task OnTypeFormattingLine() { using (var s = await CreateServer()) {