-
Notifications
You must be signed in to change notification settings - Fork 322
SamplePSReadLineProfile.ps1 SmartInsertQuote Error On Strict Mode #5121
Copy link
Copy link
Open
Labels
Needs-Triage 🔍It's a new issue that core contributor team needs to triage.It's a new issue that core contributor team needs to triage.
Description
Prerequisites
- Write a descriptive title.
- Make sure you are able to repro it on the latest released version
- Search the existing issues, especially the pinned issues.
Exception report
Exception :
Type : System.IndexOutOfRangeException
TargetSite :
Name : ThrowIndexOutOfRangeException
DeclaringType : [Internal.Runtime.CompilerHelpers.ThrowHelpers]
MemberType : Method
Module : System.Private.CoreLib.dll
Message : Index was outside the bounds of the array.
Source : System.Private.CoreLib
HResult : -2146233080
StackTrace :
at CallSite.Target(Closure, CallSite, Object, Object)
at System.Management.Automation.EnumerableOps.SlicingIndex(Object target, IEnumerator indexes, Func`3 indexer)
at <ScriptBlock>(Closure, FunctionContext)
CategoryInfo : OperationStopped: (:) [], IndexOutOfRangeException
FullyQualifiedErrorId : System.IndexOutOfRangeException
InvocationInfo :
ScriptLineNumber : 393
OffsetInLine : 17
HistoryId : 111
ScriptName : C:\Users\matt\OneDrive\Documents\PowerShell\profile.ps1
Line : if ($line[0..$cursor].Where{$_ -eq $quote}.Count % 2 -eq 1) {
Statement : $line[0..$cursor].Where{$_ -eq $quote}.Count % 2 -eq 1
PositionMessage : At C:\Users\matt\OneDrive\Documents\PowerShell\profile.ps1:393 char:17
+ … if ($line[0..$cursor].Where{$_ -eq $quote}.Count % 2 -eq 1) { …
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PSScriptRoot : C:\Users\matt\OneDrive\Documents\PowerShell
PSCommandPath : C:\Users\matt\OneDrive\Documents\PowerShell\profile.ps1
CommandOrigin : Internal
ScriptStackTrace : at <ScriptBlock>, C:\Users\matt\.local\share\chezmoi\outchezmoiscripts\Sync-ScoopConfig.ps1: line 64
at <ScriptBlock>, <No file>: line 1Screenshot
N/A
Environment data
PS Version: 7.6.0
PS HostName: Visual Studio Code Host
PSReadLine Version: 2.4.4-beta4
PSReadLine EditMode: Vi
OS: 10.0.22621.1 (WinBuild.160101.0800)
BufferWidth: 190
BufferHeight: 19Steps to reproduce
Run the sample profile with Set-StrictMode -Version Latest . Then go to end of line. Then enter a quote.
Expected behavior
Two quotes should be entered
Actual behavior
Error happens.
Workaround
I edited the below line
| if ($line[0..$cursor].Where{$_ -eq $quote}.Count % 2 -eq 1) { |
to add
$cursor -lt $line.Length -and to beginning of the if block to short circuit and prevent the index out of range. I wasn't sure if $cursor - 1 inside the indexer would be appropriate as I don't completely understand all the code.Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
Needs-Triage 🔍It's a new issue that core contributor team needs to triage.It's a new issue that core contributor team needs to triage.