Skip to content

Commit 4aefee9

Browse files
authored
Merge pull request #6959 from mavasani/FixIssue6852
Handle reference to non-source symbols in UseConcreteTypeAnalyzer
2 parents 1066c7c + a6c29fa commit 4aefee9

File tree

2 files changed

+20
-2
lines changed

2 files changed

+20
-2
lines changed

src/NetAnalyzers/Core/Microsoft.NetCore.Analyzers/Performance/UseConcreteTypeAnalyzer.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ public override void Initialize(AnalysisContext context)
123123
context.RegisterCompilationStartAction(context =>
124124
{
125125
var voidType = context.Compilation.GetSpecialType(SpecialType.System_Void);
126-
var publicOrInternalColl = Collector.GetInstance(voidType, symbol => context.Options.MatchesConfiguredVisibility(UseConcreteTypeForMethodReturn, symbol, context.Compilation, SymbolVisibilityGroup.Private));
126+
var publicOrInternalColl = Collector.GetInstance(voidType, symbol => symbol.IsInSource() && context.Options.MatchesConfiguredVisibility(UseConcreteTypeForMethodReturn, symbol, context.Compilation, SymbolVisibilityGroup.Private));
127127

128128
context.RegisterSymbolStartAction(context =>
129129
{
@@ -134,7 +134,7 @@ public override void Initialize(AnalysisContext context)
134134
return;
135135
}
136136

137-
var coll = Collector.GetInstance(voidType, symbol => context.Options.MatchesConfiguredVisibility(UseConcreteTypeForMethodReturn, symbol, context.Compilation, SymbolVisibilityGroup.Private));
137+
var coll = Collector.GetInstance(voidType, symbol => symbol.IsInSource() && context.Options.MatchesConfiguredVisibility(UseConcreteTypeForMethodReturn, symbol, context.Compilation, SymbolVisibilityGroup.Private));
138138

139139
// we accumulate a bunch of info in the collector object
140140
context.RegisterOperationAction(context => coll.HandleInvocation((IInvocationOperation)context.Operation), OperationKind.Invocation);

src/NetAnalyzers/UnitTests/Microsoft.NetCore.Analyzers/Performance/UseConcreteTypeTests.cs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1367,6 +1367,24 @@ public bool GetIFoo(out IFoo ifoo)
13671367
await TestCSAsync(Source);
13681368
}
13691369

1370+
[Fact, WorkItem(6852, "https://github.com/dotnet/roslyn-analyzers/issues/6852")]
1371+
public static async Task ShouldNotCrashForInvocationsIntoMetadata()
1372+
{
1373+
const string Source = @"
1374+
using System;
1375+
1376+
class C
1377+
{
1378+
private void M(ValueTuple<Action> vt)
1379+
{
1380+
vt.Item1();
1381+
}
1382+
}
1383+
";
1384+
1385+
await TestCSAsync(Source);
1386+
}
1387+
13701388
private static async Task TestCSAsync(string source, params DiagnosticResult[] diagnosticResults)
13711389
{
13721390
var test = new VerifyCS.Test

0 commit comments

Comments
 (0)