From 682fcae8e8f8e0a53c24a5ba550e74bf3898c66a Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 23 Jun 2026 15:50:40 +0000 Subject: [PATCH 1/2] Initial plan From 8b8cb72fe7d50f1b84f545c3e0bd5179f23002a4 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 23 Jun 2026 15:52:36 +0000 Subject: [PATCH 2/2] fix: preserve splat sigil during rename --- .../Services/TextDocument/RenameService.cs | 2 +- .../Refactoring/Variables/VariableSplattedReference.ps1 | 5 +++++ .../Variables/VariableSplattedReferenceRenamed.ps1 | 5 +++++ .../Refactoring/Variables/_RefactorVariableTestCases.cs | 1 + 4 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 test/PowerShellEditorServices.Test.Shared/Refactoring/Variables/VariableSplattedReference.ps1 create mode 100644 test/PowerShellEditorServices.Test.Shared/Refactoring/Variables/VariableSplattedReferenceRenamed.ps1 diff --git a/src/PowerShellEditorServices/Services/TextDocument/RenameService.cs b/src/PowerShellEditorServices/Services/TextDocument/RenameService.cs index 74802cf40..96b5d1522 100644 --- a/src/PowerShellEditorServices/Services/TextDocument/RenameService.cs +++ b/src/PowerShellEditorServices/Services/TextDocument/RenameService.cs @@ -472,7 +472,7 @@ private TextEdit GetRenameVariableEdit(Ast ast) ? throw new HandlerErrorException($"${NewName} is not a valid variable name.") : new TextEdit { - NewText = '$' + NewName, + NewText = (var.Splatted ? '@' : '$') + NewName, Range = new ScriptExtentAdapter(var.Extent) }, StringConstantExpressionAst stringAst => !IsValidVariableName(NewName) diff --git a/test/PowerShellEditorServices.Test.Shared/Refactoring/Variables/VariableSplattedReference.ps1 b/test/PowerShellEditorServices.Test.Shared/Refactoring/Variables/VariableSplattedReference.ps1 new file mode 100644 index 000000000..118838eff --- /dev/null +++ b/test/PowerShellEditorServices.Test.Shared/Refactoring/Variables/VariableSplattedReference.ps1 @@ -0,0 +1,5 @@ +$SplatProcessss = @{ + FilePath = 'C:\Windows\system32\cmd.exe' +} + +Start-Process @SplatProcessss diff --git a/test/PowerShellEditorServices.Test.Shared/Refactoring/Variables/VariableSplattedReferenceRenamed.ps1 b/test/PowerShellEditorServices.Test.Shared/Refactoring/Variables/VariableSplattedReferenceRenamed.ps1 new file mode 100644 index 000000000..a2f6f3391 --- /dev/null +++ b/test/PowerShellEditorServices.Test.Shared/Refactoring/Variables/VariableSplattedReferenceRenamed.ps1 @@ -0,0 +1,5 @@ +$Renamed = @{ + FilePath = 'C:\Windows\system32\cmd.exe' +} + +Start-Process @Renamed diff --git a/test/PowerShellEditorServices.Test.Shared/Refactoring/Variables/_RefactorVariableTestCases.cs b/test/PowerShellEditorServices.Test.Shared/Refactoring/Variables/_RefactorVariableTestCases.cs index 2f54ed758..1ec1637b5 100644 --- a/test/PowerShellEditorServices.Test.Shared/Refactoring/Variables/_RefactorVariableTestCases.cs +++ b/test/PowerShellEditorServices.Test.Shared/Refactoring/Variables/_RefactorVariableTestCases.cs @@ -32,6 +32,7 @@ public static class RefactorVariableTestCases new ("VariableRedefinition.ps1", Line: 1, Column: 1), new ("VariableScriptWithParamBlock.ps1", Line: 1, Column: 30), new ("VariableSimpleFunctionParameter.ps1", Line: 6, Column: 9), + new ("VariableSplattedReference.ps1", Line: 1, Column: 1), new ("VariableusedInWhileLoop.ps1", Line: 2, Column: 5), new ("VariableWithinCommandAstScriptBlock.ps1", Line: 3, Column: 75), new ("VariableWithinForeachObject.ps1", Line: 2, Column: 1),