`SamplePSReadLineProfile.ps1` SmartInsertQuote Error On Strict Mode
Nobody has claimed this yet.
Assessment
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Newbie friendliness
- 72/100
- Issue type
- Bug
- Clarity
- Clearly specified
- Activity status
- Quiet
- Tech stack
- powershell
- Domain
- cli
Research direction
Start with PSReadLine/SamplePSReadLineProfile.ps1 at the linked SmartInsertQuote condition and run the sample profile under Set-StrictMode -Version Latest. Reproduce the error by moving to the end of a line and entering a quote, then verify the guard handles that position, inserts two quotes, and avoids the index-out-of-range exception.
Written by the indexing model from the issue text.
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 1
Screenshot
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: 19
Steps 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
https://github.com/PowerShell/PSReadLine/blob/caa53f8469e35f6ba6e1a434d4fc8efae2dde20c/PSReadLine/SamplePSReadLineProfile.ps1#L195
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.
- Dominant language
- C#
- Stars
- 4.4k
- Forks
- 341
- PR merge metrics
- No merged PRs in 30d
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from PowerShell/PSReadLine
-
Needs-Triage :mag:
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
PowerShell/PSReadLine#5205 ·
-
Needs-Triage :mag:
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
PowerShell/PSReadLine#5195 ·
-
Needs-Triage :mag:
Difficulty 2/5 1-3 hours Newbie friendliness 64/100
PowerShell/PSReadLine#5045 ·
-
Area-CommandHelp Issue-Enhancement
Difficulty 1/5 Under an hour Newbie friendliness 68/100
PowerShell/PSReadLine#3470 · 3 reactions ·
-
Needs-Triage :mag:
Difficulty 3/5 1-2 days Newbie friendliness 55/100
PowerShell/PSReadLine#5214 ·
All issues in PowerShell/PSReadLine
Similar issues
-
bug
Difficulty 1/5 Under an hour Newbie friendliness 75/100
sillsdev/languageforge-lexbox#2665 ·
-
bug documentation frontend
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
azurenoops/spin_agent#975 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 86/100
-
:watch: Not Triaged 11.0 fundamentals/subsvc
Difficulty 2/5 1-3 hours Newbie friendliness 92/100
dotnet/AspNetCore.Docs#37699 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
SubtitleEdit/subtitleedit#15108 · 1 comment ·