From 3f11ee6b441aa2417ea434d7ec8eff0829bf24fa Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 28 Oct 2026 11:39:58 +0000 Subject: [PATCH 1/2] Initial plan From a163a22c788ab89e15ecf71e07eda0531471da0d Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 28 Oct 2026 11:44:02 +0000 Subject: [PATCH 2/2] Preserve close brace indentation for branches Co-authored-by: bergmeister <9250262+bergmeister@users.noreply.github.com> --- Rules/PlaceCloseBrace.cs | 5 ++- Tests/Rules/PlaceCloseBrace.tests.ps1 | 46 +++++++++++++++++++++++++++ 2 files changed, 50 insertions(+), 1 deletion(-) diff --git a/Rules/PlaceCloseBrace.cs b/Rules/PlaceCloseBrace.cs index e9a7183f3..1bb15f6e1 100644 --- a/Rules/PlaceCloseBrace.cs +++ b/Rules/PlaceCloseBrace.cs @@ -277,6 +277,9 @@ private List GetCorrectionsForBraceShouldHaveNewLineAfter( var corrections = new List(); var nextToken = tokens[closeBracePos + 1]; var closeBraceToken = tokens[closeBracePos]; + var indentation = tokens[closeBracePos - 1].Kind == TokenKind.NewLine + ? new String(' ', closeBraceToken.Extent.StartColumnNumber - 1) + : GetIndentation(tokens, closeBracePos, openBracePos); // Also remove the whitespace between the close brace and the next token // and indent the next token to the same level as the close brace @@ -285,7 +288,7 @@ private List GetCorrectionsForBraceShouldHaveNewLineAfter( nextToken.Extent.StartLineNumber, closeBraceToken.Extent.StartColumnNumber, nextToken.Extent.StartColumnNumber, - closeBraceToken.Text + Environment.NewLine + GetIndentation(tokens, closeBracePos, openBracePos), + closeBraceToken.Text + Environment.NewLine + indentation, fileName)); return corrections; } diff --git a/Tests/Rules/PlaceCloseBrace.tests.ps1 b/Tests/Rules/PlaceCloseBrace.tests.ps1 index 5f270f75b..151ed64e8 100644 --- a/Tests/Rules/PlaceCloseBrace.tests.ps1 +++ b/Tests/Rules/PlaceCloseBrace.tests.ps1 @@ -180,6 +180,52 @@ if (Test-Path "blah") { Test-CorrectionExtentFromContent @params } + It "Should preserve close brace indentation after a multiline if condition" { + $def = @' +if ( + $true) { + $true +} else { + $false +} +'@ + $expected = @' +if ( + $true) { + $true +} +else { + $false +} +'@ + Invoke-Formatter -ScriptDefinition $def -Settings $settings | Should -Be $expected + } + + It "Should preserve nested close brace indentation after a multiline if condition" { + $def = @' +function Test { + if ( + $true) { + $true + } else { + $false + } +} +'@ + $expected = @' +function Test { + if ( + $true) { + $true + } + else { + $false + } +} +'@ + Invoke-Formatter -ScriptDefinition $def -Settings $settings | Should -Be $expected + } + It "Should find a violation for a close brace followed by elseif" { $def = @' if (Test-Path "blah") {