From d9e044c7b5e911abb4c311cb06fb918d7ff42feb Mon Sep 17 00:00:00 2001 From: Staffan Gustafsson Date: Sat, 22 Apr 2017 17:38:22 +0200 Subject: [PATCH 1/2] Fixing #3624 - Readline crash with @{ --- .../engine/CommandCompletion/CompletionAnalysis.cs | 8 ++++++++ test/powershell/Host/TabCompletion/BugFix.Tests.ps1 | 9 +++++++++ 2 files changed, 17 insertions(+) diff --git a/src/System.Management.Automation/engine/CommandCompletion/CompletionAnalysis.cs b/src/System.Management.Automation/engine/CommandCompletion/CompletionAnalysis.cs index 32057fce1c4..efcd17cbed8 100644 --- a/src/System.Management.Automation/engine/CommandCompletion/CompletionAnalysis.cs +++ b/src/System.Management.Automation/engine/CommandCompletion/CompletionAnalysis.cs @@ -442,6 +442,14 @@ internal List GetResultHelper(CompletionContext completionCont result = GetResultForEnumPropertyValueOfDSCResource(completionContext, string.Empty, ref replacementIndex, ref replacementLength, out unused); } break; + case TokenKind.AtCurly: + // Handle scenarios such as Sort-Object @{ || gci | Format-Table @{ + { + result = GetResultForHashtable(completionContext); + replacementIndex += 2; + replacementLength = 0; + break; + } case TokenKind.Number: // Handle scenarios such as Get-Process -Id 5 || Get-Process -Id 5210, 3 || Get-Process -Id: 5210, 3 diff --git a/test/powershell/Host/TabCompletion/BugFix.Tests.ps1 b/test/powershell/Host/TabCompletion/BugFix.Tests.ps1 index d97d4a36688..f1bbf19abd9 100644 --- a/test/powershell/Host/TabCompletion/BugFix.Tests.ps1 +++ b/test/powershell/Host/TabCompletion/BugFix.Tests.ps1 @@ -54,4 +54,13 @@ Describe "Tab completion bug fix" -Tags "CI" { $result.CompletionMatches[1].CompletionText | Should Be $DatetimeProperties[1].Name # DateTime } } + + It "Issue#3628 - 'Sort-Object @{ should work" { + $cmd = "Get-Date | Sort-Object @{" + $result = TabExpansion2 -inputScript $cmd -cursorColumn $cmd.Length + $result.CompletionMatches.Count | Should Be 3 + $result.CompletionMatches[0].CompletionText | Should Be 'Expression' + $result.CompletionMatches[1].CompletionText | Should Be 'Ascending' + $result.CompletionMatches[2].CompletionText | Should Be 'Descending' + } } From 5531daa517a3a2e856e8494b8bd3c28fc8f18879 Mon Sep 17 00:00:00 2001 From: Staffan Gustafsson Date: Tue, 25 Apr 2017 07:56:26 +0200 Subject: [PATCH 2/2] improving comments and test description Adressing review comments --- .../engine/CommandCompletion/CompletionAnalysis.cs | 6 ++---- test/powershell/Host/TabCompletion/BugFix.Tests.ps1 | 2 +- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/src/System.Management.Automation/engine/CommandCompletion/CompletionAnalysis.cs b/src/System.Management.Automation/engine/CommandCompletion/CompletionAnalysis.cs index efcd17cbed8..759b60ea0c1 100644 --- a/src/System.Management.Automation/engine/CommandCompletion/CompletionAnalysis.cs +++ b/src/System.Management.Automation/engine/CommandCompletion/CompletionAnalysis.cs @@ -443,13 +443,11 @@ internal List GetResultHelper(CompletionContext completionCont } break; case TokenKind.AtCurly: - // Handle scenarios such as Sort-Object @{ || gci | Format-Table @{ - { + // Handle scenarios such as 'Sort-Object @{' and 'gci | Format-Table @{' result = GetResultForHashtable(completionContext); replacementIndex += 2; replacementLength = 0; - break; - } + break; case TokenKind.Number: // Handle scenarios such as Get-Process -Id 5 || Get-Process -Id 5210, 3 || Get-Process -Id: 5210, 3 diff --git a/test/powershell/Host/TabCompletion/BugFix.Tests.ps1 b/test/powershell/Host/TabCompletion/BugFix.Tests.ps1 index f1bbf19abd9..291dc1165c7 100644 --- a/test/powershell/Host/TabCompletion/BugFix.Tests.ps1 +++ b/test/powershell/Host/TabCompletion/BugFix.Tests.ps1 @@ -55,7 +55,7 @@ Describe "Tab completion bug fix" -Tags "CI" { } } - It "Issue#3628 - 'Sort-Object @{ should work" { + It "Issue#3628 - 'Sort-Object @{' should work" { $cmd = "Get-Date | Sort-Object @{" $result = TabExpansion2 -inputScript $cmd -cursorColumn $cmd.Length $result.CompletionMatches.Count | Should Be 3