diff --git a/StyleCop.Analyzers/StyleCop.Analyzers.Test.CSharp8/MaintainabilityRules/SA1119CSharp8UnitTests.cs b/StyleCop.Analyzers/StyleCop.Analyzers.Test.CSharp8/MaintainabilityRules/SA1119CSharp8UnitTests.cs index ead0cf280..176071c3c 100644 --- a/StyleCop.Analyzers/StyleCop.Analyzers.Test.CSharp8/MaintainabilityRules/SA1119CSharp8UnitTests.cs +++ b/StyleCop.Analyzers/StyleCop.Analyzers.Test.CSharp8/MaintainabilityRules/SA1119CSharp8UnitTests.cs @@ -219,6 +219,25 @@ public unsafe string TestMethod(int n, byte* a, byte* b) await VerifyCSharpDiagnosticAsync(testCode, DiagnosticResult.EmptyDiagnosticResults, CancellationToken.None).ConfigureAwait(false); } + [Fact] + [WorkItem(3730, "https://github.com/DotNetAnalyzers/StyleCopAnalyzers/issues/3730")] + public async Task TestSwitchExpressionFollowedByInvocationAsync() + { + string testCode = @" +using System; + +public class Foo +{ + public string TestMethod(int n, Func a, Func b) + { + return (n switch { 1 => a, 2 => b })(); + } +} +"; + + await VerifyCSharpDiagnosticAsync(testCode, DiagnosticResult.EmptyDiagnosticResults, CancellationToken.None).ConfigureAwait(false); + } + [Fact] public async Task TestStackAllocExpressionInExpressionAsync() { diff --git a/StyleCop.Analyzers/StyleCop.Analyzers/MaintainabilityRules/SA1119StatementMustNotUseUnnecessaryParenthesis.cs b/StyleCop.Analyzers/StyleCop.Analyzers/MaintainabilityRules/SA1119StatementMustNotUseUnnecessaryParenthesis.cs index 0d33ff9df..97491b01d 100644 --- a/StyleCop.Analyzers/StyleCop.Analyzers/MaintainabilityRules/SA1119StatementMustNotUseUnnecessaryParenthesis.cs +++ b/StyleCop.Analyzers/StyleCop.Analyzers/MaintainabilityRules/SA1119StatementMustNotUseUnnecessaryParenthesis.cs @@ -230,6 +230,7 @@ private static bool IsSwitchOrWithExpressionWithRequiredParentheses(Parenthesize MemberAccessExpressionSyntax memberAccessExpression => memberAccessExpression.Expression == outerExpression, ConditionalAccessExpressionSyntax conditionalAccessExpression => conditionalAccessExpression.Expression == outerExpression, ElementAccessExpressionSyntax elementAccessExpression => elementAccessExpression.Expression == outerExpression, + InvocationExpressionSyntax invocationExpression => invocationExpression.Expression == outerExpression, _ => false, }; }