diff --git a/src/EditorFeatures/CSharpTest/ExtractMethod/ExtractMethodTests.cs b/src/EditorFeatures/CSharpTest/ExtractMethod/ExtractMethodTests.cs index 11ff98e60f45d1dac954380c933dfa6db6bc7181..d03bbf318cb47d7fcae7bb32d83b60c9bbb65033 100644 --- a/src/EditorFeatures/CSharpTest/ExtractMethod/ExtractMethodTests.cs +++ b/src/EditorFeatures/CSharpTest/ExtractMethod/ExtractMethodTests.cs @@ -11106,6 +11106,32 @@ private static string GetBar(string bar) { return bar; } +}"; + await TestExtractMethodAsync(code, expected); + } + + [WorkItem(33242, "https://github.com/dotnet/roslyn/issues/33242")] + [Fact, Trait(Traits.Feature, Traits.Features.ExtractMethod)] + public async Task ExtractMethodInExpressionBodiedFinalizers() + { + var code = @" +class Foo +{ + bool finalized; + + ~Foo() => finalized = [|true|]; +}"; + var expected = @" +class Foo +{ + bool finalized; + + ~Foo() => finalized = NewMethod(); + + private static bool NewMethod() + { + return true; + } }"; await TestExtractMethodAsync(code, expected); } diff --git a/src/Workspaces/CSharp/Portable/Extensions/MemberDeclarationSyntaxExtensions.cs b/src/Workspaces/CSharp/Portable/Extensions/MemberDeclarationSyntaxExtensions.cs index 76c11769efd4f677703dc2d62547403b907cca86..3980e35d557d1b92a90f3c6da9d4f33625ec117e 100644 --- a/src/Workspaces/CSharp/Portable/Extensions/MemberDeclarationSyntaxExtensions.cs +++ b/src/Workspaces/CSharp/Portable/Extensions/MemberDeclarationSyntaxExtensions.cs @@ -295,6 +295,8 @@ public static ArrowExpressionClauseSyntax GetExpressionBody(this MemberDeclarati return ((ConversionOperatorDeclarationSyntax)memberDeclaration).ExpressionBody; case SyntaxKind.ConstructorDeclaration: return ((ConstructorDeclarationSyntax)memberDeclaration).ExpressionBody; + case SyntaxKind.DestructorDeclaration: + return ((DestructorDeclarationSyntax)memberDeclaration).ExpressionBody; default: return null; }