diff --git a/ChangeLog.md b/ChangeLog.md index 2f912c4a67..4938abea90 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Fixed + +- Fix [RCS1164](https://josefpihrt.github.io/docs/roslynator/analyzers/RCS1164) ([#1196](https://github.com/JosefPihrt/Roslynator/pull/1196)). + ## [4.5.0] - 2023-08-27 ### Added diff --git a/src/Analyzers/CSharp/Analysis/UnusedParameter/UnusedParameterWalker.cs b/src/Analyzers/CSharp/Analysis/UnusedParameter/UnusedParameterWalker.cs index 3eef45dcb8..af0c29e94d 100644 --- a/src/Analyzers/CSharp/Analysis/UnusedParameter/UnusedParameterWalker.cs +++ b/src/Analyzers/CSharp/Analysis/UnusedParameter/UnusedParameterWalker.cs @@ -182,7 +182,7 @@ public override void VisitBracketedParameterList(BracketedParameterListSyntax no public override void VisitParameterList(ParameterListSyntax node) { - if (node.IsParentKind(SyntaxKind.MethodDeclaration, SyntaxKind.LocalFunctionStatement)) + if (node.IsParentKind(SyntaxKind.MethodDeclaration, SyntaxKind.LocalFunctionStatement, SyntaxKind.ParenthesizedLambdaExpression)) base.VisitParameterList(node); } diff --git a/src/Tests/Analyzers.Tests/RCS1164UnusedTypeParameterTests.cs b/src/Tests/Analyzers.Tests/RCS1164UnusedTypeParameterTests.cs new file mode 100644 index 0000000000..a70c2f9c21 --- /dev/null +++ b/src/Tests/Analyzers.Tests/RCS1164UnusedTypeParameterTests.cs @@ -0,0 +1,45 @@ +// Copyright (c) Josef Pihrt and Contributors. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System.Threading.Tasks; +using Microsoft.CodeAnalysis; +using Roslynator.CSharp.CodeFixes; +using Roslynator.Testing.CSharp; +using Xunit; + +namespace Roslynator.CSharp.Analysis.Tests; + +public class RCS1164UnusedTypeParameterTests : AbstractCSharpDiagnosticVerifier +{ + public override DiagnosticDescriptor Descriptor { get; } = DiagnosticRules.UnusedTypeParameter; + + [Fact, Trait(Traits.Analyzer, DiagnosticIdentifiers.UnusedTypeParameter)] + public async Task TestNoDiagnostic_DependencyPropertyEventArgs() + { + await VerifyNoDiagnosticAsync(@" +using System; + +public static class TestClass +{ + public static void RunDelegate(object arg) + { + RunDelegate(arg, (T arg) => + { + if (arg is string stringArg) + { + Console.WriteLine(stringArg); + } + } + ); + } + + private static void RunDelegate( + object arg, + Delegate _delegate + ) + { + _delegate.DynamicInvoke(arg); + } +} +"); + } +}