Skip to content

Commit c00d594

Browse files
authored
Merge pull request #4478 from Evangelink/RS1024-NRE
Fix NRE in RS1024
2 parents a4ca78b + 5cc39c6 commit c00d594

File tree

2 files changed

+27
-1
lines changed

2 files changed

+27
-1
lines changed

src/Microsoft.CodeAnalysis.Analyzers/Core/MetaAnalyzers/CompareSymbolsCorrectlyAnalyzer.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -215,7 +215,7 @@ private static void HandleObjectCreation(in OperationAnalysisContext context, IN
215215
collectionTypes.Contains(createdType.OriginalDefinition) &&
216216
!createdType.TypeArguments.IsEmpty &&
217217
IsSymbolType(createdType.TypeArguments[0], symbolType) &&
218-
!objectCreation.Arguments.Any(arg => arg.Type.Equals(symbolEqualityComparerType)))
218+
!objectCreation.Arguments.Any(arg => IsSymbolType(arg.Type, symbolEqualityComparerType)))
219219
{
220220
context.ReportDiagnostic(objectCreation.CreateDiagnostic(CollectionRule));
221221
}

src/Microsoft.CodeAnalysis.Analyzers/UnitTests/MetaAnalyzers/CompareSymbolsCorrectlyTests.cs

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
using System.Collections.Immutable;
66
using System.Linq;
77
using System.Threading.Tasks;
8+
using Microsoft.CodeAnalysis.Testing;
89
using Microsoft.CodeAnalysis.VisualBasic.Syntax;
910
using Test.Utilities;
1011
using Xunit;
@@ -858,6 +859,31 @@ public void M(IEnumerable<ISymbol> e, ISymbol symbol, INamedTypeSymbol type)
858859
.Where(x => x.IsAsync)
859860
.ToLookup(x => x.ContainingType, x => x, SymbolEqualityComparer.Default);
860861
}
862+
}",
863+
SymbolEqualityComparerStubCSharp,
864+
},
865+
},
866+
}.RunAsync();
867+
}
868+
869+
[Fact, WorkItem(4470, "https://github.com/dotnet/roslyn-analyzers/issues/4470")]
870+
public async Task RS1024_InvocationArgumentTypeIsNull()
871+
{
872+
await new VerifyCS.Test
873+
{
874+
TestState =
875+
{
876+
Sources =
877+
{
878+
@"
879+
using System;
880+
using System.Collections.Generic;
881+
using System.Linq;
882+
using Microsoft.CodeAnalysis;
883+
884+
public class C
885+
{
886+
private readonly HashSet<ITypeSymbol> _types = [|new HashSet<ITypeSymbol>(SymbolEqualityComparer.Default)|];
861887
}",
862888
SymbolEqualityComparerStubCSharp,
863889
},

0 commit comments

Comments
 (0)