Skip to content
This repository was archived by the owner on Apr 14, 2022. It is now read-only.

Commit 4812d92

Browse files
authored
No diagnostic message when Generic is called with no args (#1305)
* No diagnostic message when Generic is called with no args
1 parent 76098c1 commit 4812d92

File tree

3 files changed

+28
-2
lines changed

3 files changed

+28
-2
lines changed

src/Analysis/Ast/Impl/Analyzer/Evaluation/ExpressionEval.Generics.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,10 @@ private IReadOnlyList<IMember> EvaluateIndex(IndexExpression expr) {
125125
}
126126
} else {
127127
var index = GetValueFromExpression(expr.Index);
128-
indices.Add(index ?? UnknownType);
128+
// Don't count null indexes as arguments
129+
if (index != null) {
130+
indices.Add(index);
131+
}
129132
}
130133
return indices;
131134
}

src/Analysis/Ast/Impl/Analyzer/Evaluation/ExpressionEval.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,10 @@ public IMember GetValueFromExpression(Expression expr, LookupOptions options = L
184184
case NamedExpression namedExpr:
185185
m = GetValueFromExpression(namedExpr.Value);
186186
break;
187+
// indexing with nothing, e.g Generic[]
188+
case ErrorExpression error:
189+
m = null;
190+
break;
187191
default:
188192
m = GetValueFromBinaryOp(expr) ?? GetConstantFromLiteral(expr, options);
189193
break;

src/Analysis/Ast/Test/LintGenericTests.cs

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,26 @@ public async Task GenericDuplicateArguments(string decl) {
8080
public async Task GenericArgumentsNoDiagnosticOnValid(string decl) {
8181
string code = GenericSetup + decl;
8282
var analysis = await GetAnalysisAsync(code);
83-
analysis.Diagnostics.Should().HaveCount(0);
83+
analysis.Diagnostics.Should().BeEmpty();
84+
}
85+
86+
[TestMethod, Priority(0)]
87+
public async Task GenericNoArgumentsNoDiagnostic() {
88+
string code = GenericSetup + @"
89+
x = Generic[]
90+
";
91+
var analysis = await GetAnalysisAsync(code);
92+
analysis.Diagnostics.Should().BeEmpty();
93+
}
94+
95+
96+
[TestMethod, Priority(0)]
97+
public async Task GenericArgumentSpaceNoDiagnostic() {
98+
string code = GenericSetup + @"
99+
x = Generic[ ]
100+
";
101+
var analysis = await GetAnalysisAsync(code);
102+
analysis.Diagnostics.Should().BeEmpty();
84103
}
85104
}
86105
}

0 commit comments

Comments
 (0)