Skip to content

ALT+H causes exception with parameter help message #3367

@ThomasNieto

Description

@ThomasNieto

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

### Environment
PSReadLine: 2.2.6
PowerShell: 7.2.5
OS: Microsoft Windows 10.0.19043
BufferWidth: 120
BufferHeight: 30

Last 200 Keys:

 Enter
 Spacebar Spacebar Spacebar Spacebar } Enter
 Spacebar Spacebar Spacebar Spacebar Enter
 Spacebar Spacebar Spacebar Spacebar e n d Spacebar { Enter
 Spacebar Spacebar Spacebar Spacebar Spacebar Spacebar Spacebar Spacebar Enter
 Spacebar Spacebar Spacebar Spacebar } Enter
 } Enter
 Enter
 t e s t - m Tab Enter
 UpArrow Spacebar - n Tab Spacebar Backspace Enter
 UpArrow Backspace Backspace Backspace Backspace Backspace - ? Enter
 UpArrow Backspace Backspace Backspace Home g e t - h e l p Spacebar Enter
 UpArrow Spacebar - f u Tab l l Enter
 UpArrow Backspace Backspace Enter
 UpArrow Backspace Backspace Backspace Backspace Backspace Ctrl+Backspace Ctrl+Backspace Ctrl+Backspace Ctrl+Backspace t e s t - m a n Tab Spacebar - n Tab Spacebar Backspace F1 Alt+h Enter
 Enter
 g e t - h e l Backspace Backspace Backspace p s r e s Backspace Tab Tab Shift+Tab Enter
 t e s w t - Backspace Backspace Backspace Backspace Backspace Backspace Backspace g e t - c o m Tab Spacebar - m o Tab Spacebar Backspace Alt+h Alt+h Ctrl+Backspace Ctrl+Backspace c o m Backspace Backspace Backspace Backspace Backspace Backspace Backspace t e s t - m a n Tab Spacebar - n Tab Spacebar Backspace Alt+h

### Exception

Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: 'char' does not contain a definition for 'Text'
   at CallSite.Target(Closure , CallSite , Object )
   at System.Dynamic.UpdateDelegates.UpdateAndExecute1[T0,TRet](CallSite site, T0 arg0)
   at CallSite.Target(Closure , CallSite , Object )
   at Microsoft.PowerShell.PSConsoleReadLine.WriteParameterHelp(Object helpContent)
   at Microsoft.PowerShell.PSConsoleReadLine.WriteDynamicHelpContent(String commandName, String parameterName, Boolean isFullHelp)
   at Microsoft.PowerShell.PSConsoleReadLine.DynamicHelpImpl(Boolean isFullHelp)
   at Microsoft.PowerShell.PSConsoleReadLine.ShowParameterHelp(Nullable`1 key, Object arg)
   at Microsoft.PowerShell.PSConsoleReadLine.ProcessOneKey(PSKeyInfo key, Dictionary`2 dispatchTable, Boolean ignoreIfNoAction, Object arg)
   at Microsoft.PowerShell.PSConsoleReadLine.InputLoop()
   at Microsoft.PowerShell.PSConsoleReadLine.ReadLine(Runspace runspace, EngineIntrinsics engineIntrinsics, CancellationToken cancellationToken, Nullable`1 lastRunStatus)

Screenshot

image

Environment data

PS Version: 7.2.5
PS HostName: ConsoleHost (Windows Terminal)
PSReadLine Version: 2.2.6
PSReadLine EditMode: Windows
OS: 10.0.19041.1 (WinBuild.160101.0800)
BufferWidth: 120
BufferHeight: 30

Steps to reproduce

Define this function and then press ALT + H to show parameter help and then it will error.

function test-mandatory {
    [CmdletBinding()]
    param (
        [Parameter(HelpMessage = 'this is a test')]
        [string]
        $Name
    )
    
    begin {
        
    }
    
    process {
        $Name
    }
    
    end {
        
    }
}

test-mandatory -Name

Expected behavior

Shows parameter help message

Actual behavior

The above exception happens.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions