diff --git a/ChangeLog.md b/ChangeLog.md index a8ec394087..c937c73d96 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed - Fix [RCS1084](https://github.com/JosefPihrt/Roslynator/blob/main/docs/analyzers/RCS1084.md) ([#1006](https://github.com/josefpihrt/roslynator/pull/1006)). +- Fix [RCS1244](https://github.com/JosefPihrt/Roslynator/blob/main/docs/analyzers/RCS1244.md) ([#1007](https://github.com/josefpihrt/roslynator/pull/1007)). ## [4.2.0] - 2022-11-27 diff --git a/src/Analyzers/CSharp/Analysis/DefaultExpressionAnalyzer.cs b/src/Analyzers/CSharp/Analysis/DefaultExpressionAnalyzer.cs index ada2189814..906e3082c8 100644 --- a/src/Analyzers/CSharp/Analysis/DefaultExpressionAnalyzer.cs +++ b/src/Analyzers/CSharp/Analysis/DefaultExpressionAnalyzer.cs @@ -107,6 +107,12 @@ public static void AnalyzeDefaultExpression(SyntaxNodeAnalysisContext context) if (parent.IsParentKind(SyntaxKind.ObjectInitializerExpression)) return; + if (parent is BinaryExpressionSyntax coalesceExpression + && coalesceExpression.Left == defaultExpression) + { + return; + } + TypeInfo typeInfo = context.SemanticModel.GetTypeInfo(expression, context.CancellationToken); if (!SymbolEqualityComparer.Default.Equals(typeInfo.Type, typeInfo.ConvertedType)) diff --git a/src/Tests/Analyzers.Tests/RCS1244SimplifyDefaultExpressionTests.cs b/src/Tests/Analyzers.Tests/RCS1244SimplifyDefaultExpressionTests.cs index 8a0a646309..704dc76b07 100644 --- a/src/Tests/Analyzers.Tests/RCS1244SimplifyDefaultExpressionTests.cs +++ b/src/Tests/Analyzers.Tests/RCS1244SimplifyDefaultExpressionTests.cs @@ -490,6 +490,22 @@ void M() }; } } +"); + } + + [Fact, Trait(Traits.Analyzer, DiagnosticIdentifiers.SimplifyDefaultExpression)] + public async Task TestNoDiagnostic_LambdaExpression2() + { + await VerifyNoDiagnosticAsync(@" +using System; + +class C +{ + T M() + { + return default(T) ?? (T)Convert.ChangeType("""", typeof(T)); + } +} "); } }