From a10a36aecc329f79d9bfa5d1844adf0e8bcbe02e Mon Sep 17 00:00:00 2001 From: Cameron Trando Date: Wed, 10 Jul 2019 13:09:57 -0700 Subject: [PATCH 1/2] No diagnostic message when Generic is called with no args --- .../Evaluation/ExpressionEval.Generics.cs | 5 ++++- .../Analyzer/Evaluation/ExpressionEval.cs | 4 ++++ src/Analysis/Ast/Test/LintGenericTests.cs | 21 ++++++++++++++++++- 3 files changed, 28 insertions(+), 2 deletions(-) diff --git a/src/Analysis/Ast/Impl/Analyzer/Evaluation/ExpressionEval.Generics.cs b/src/Analysis/Ast/Impl/Analyzer/Evaluation/ExpressionEval.Generics.cs index b36242ba2..f3781dd7c 100644 --- a/src/Analysis/Ast/Impl/Analyzer/Evaluation/ExpressionEval.Generics.cs +++ b/src/Analysis/Ast/Impl/Analyzer/Evaluation/ExpressionEval.Generics.cs @@ -125,7 +125,10 @@ private IReadOnlyList EvaluateIndex(IndexExpression expr) { } } else { var index = GetValueFromExpression(expr.Index); - indices.Add(index ?? UnknownType); + // Don't count null indexes as arguments + if(index != null) { + indices.Add(index); + } } return indices; } diff --git a/src/Analysis/Ast/Impl/Analyzer/Evaluation/ExpressionEval.cs b/src/Analysis/Ast/Impl/Analyzer/Evaluation/ExpressionEval.cs index 7f878600d..143a58df7 100644 --- a/src/Analysis/Ast/Impl/Analyzer/Evaluation/ExpressionEval.cs +++ b/src/Analysis/Ast/Impl/Analyzer/Evaluation/ExpressionEval.cs @@ -184,6 +184,10 @@ public IMember GetValueFromExpression(Expression expr, LookupOptions options = L case NamedExpression namedExpr: m = GetValueFromExpression(namedExpr.Value); break; + // indexing with nothing, e.g Generic[] + case ErrorExpression error: + m = null; + break; default: m = GetValueFromBinaryOp(expr) ?? GetConstantFromLiteral(expr, options); break; diff --git a/src/Analysis/Ast/Test/LintGenericTests.cs b/src/Analysis/Ast/Test/LintGenericTests.cs index 86f09faba..e0ce8b18a 100644 --- a/src/Analysis/Ast/Test/LintGenericTests.cs +++ b/src/Analysis/Ast/Test/LintGenericTests.cs @@ -80,7 +80,26 @@ public async Task GenericDuplicateArguments(string decl) { public async Task GenericArgumentsNoDiagnosticOnValid(string decl) { string code = GenericSetup + decl; var analysis = await GetAnalysisAsync(code); - analysis.Diagnostics.Should().HaveCount(0); + analysis.Diagnostics.Should().BeEmpty(); + } + + [TestMethod, Priority(0)] + public async Task GenericNoArgumentsNoDiagnostic() { + string code = GenericSetup + @" +x = Generic[] +"; + var analysis = await GetAnalysisAsync(code); + analysis.Diagnostics.Should().BeEmpty(); + } + + + [TestMethod, Priority(0)] + public async Task GenericArgumentSpaceNoDiagnostic() { + string code = GenericSetup + @" +x = Generic[ ] +"; + var analysis = await GetAnalysisAsync(code); + analysis.Diagnostics.Should().BeEmpty(); } } } From fb4cd09bb3c89db942cdd8886305ec2ffb158068 Mon Sep 17 00:00:00 2001 From: Cameron Trando Date: Wed, 10 Jul 2019 14:43:31 -0700 Subject: [PATCH 2/2] Fixing if spacing --- .../Ast/Impl/Analyzer/Evaluation/ExpressionEval.Generics.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Analysis/Ast/Impl/Analyzer/Evaluation/ExpressionEval.Generics.cs b/src/Analysis/Ast/Impl/Analyzer/Evaluation/ExpressionEval.Generics.cs index f3781dd7c..514d1e735 100644 --- a/src/Analysis/Ast/Impl/Analyzer/Evaluation/ExpressionEval.Generics.cs +++ b/src/Analysis/Ast/Impl/Analyzer/Evaluation/ExpressionEval.Generics.cs @@ -126,7 +126,7 @@ private IReadOnlyList EvaluateIndex(IndexExpression expr) { } else { var index = GetValueFromExpression(expr.Index); // Don't count null indexes as arguments - if(index != null) { + if (index != null) { indices.Add(index); } }