From ac97bca73628ed39a39d3e62e55686086ee72eec Mon Sep 17 00:00:00 2001 From: ronimizy Date: Sat, 11 Nov 2023 20:59:27 +0300 Subject: [PATCH] fix: OfType analyzer --- .../OfTypeMustUseDerivedTypeAnalyzer.cs | 6 ++++++ .../SourceKit.Analyzers.Enumerable.csproj | 20 ++++++++++--------- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/src/analyzers/SourceKit.Analyzers.Enumerable/Analyzers/OfTypeMustUseDerivedTypeAnalyzer.cs b/src/analyzers/SourceKit.Analyzers.Enumerable/Analyzers/OfTypeMustUseDerivedTypeAnalyzer.cs index 161b299..a3d8c5c 100644 --- a/src/analyzers/SourceKit.Analyzers.Enumerable/Analyzers/OfTypeMustUseDerivedTypeAnalyzer.cs +++ b/src/analyzers/SourceKit.Analyzers.Enumerable/Analyzers/OfTypeMustUseDerivedTypeAnalyzer.cs @@ -68,6 +68,12 @@ private void HandleOperation(OperationAnalysisContext context) if (returnElementType.IsAssignableTo(sourceElementType)) return; + if (sourceElementType is ITypeParameterSymbol parameterSymbol && + parameterSymbol.ConstraintTypes.Any(c => returnElementType.IsAssignableTo(c))) + { + return; + } + var diagnostic = Diagnostic.Create( Descriptor, operation.Syntax.GetLocation(), diff --git a/src/analyzers/SourceKit.Analyzers.Enumerable/SourceKit.Analyzers.Enumerable.csproj b/src/analyzers/SourceKit.Analyzers.Enumerable/SourceKit.Analyzers.Enumerable.csproj index da404d4..56b95f3 100644 --- a/src/analyzers/SourceKit.Analyzers.Enumerable/SourceKit.Analyzers.Enumerable.csproj +++ b/src/analyzers/SourceKit.Analyzers.Enumerable/SourceKit.Analyzers.Enumerable.csproj @@ -25,28 +25,30 @@ 1.0.$(PatchVersion) - Added OfType analyzer + + Added generic constraint support for OfType analyzer + - - + + - + - - - + + + - - + +