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()) {