vscode-powershell icon indicating copy to clipboard operation
vscode-powershell copied to clipboard

PowerShell Integrated Console: "Value cannot be null" for missing mandatory parameter when debugging

Open gmckeown opened this issue 6 years ago • 6 comments

Issue Type: Bug

Steps to reproduce

Create a .ps1 script file with the following contents:

class MyNewClass {
    [string] $DummyVar
}

function Get-Details {
    param (
        [Parameter(Mandatory)][MyNewClass] $ClassVar,
        [Parameter(Mandatory)][String] $StringVar
    )
    $ClassVar | Out-Host
}

Get-Details

Run the script from a PowerShell terminal window in VSCode.

Expected behavior

Using an explicit "pwsh" terminal inside VSCode, or an external Windows PowerShell or PowerShell Core shell, the above code gives:

cmdlet Get-Details at command pipeline position 1
Supply values for the following parameters:
ClassVar:

Actual behavior

From the PowerShell Integrated Console, the same script results in:

Value cannot be null.
Parameter name: type
At C:\Users\myuser\Documents\Development\PowerShell\TestParamNull.ps1:14 char:1
+ Get-Details
+ ~~~~~~~~~~~
+ CategoryInfo          : OperationStopped: (:) [], ArgumentNullException
+ FullyQualifiedErrorId : System.ArgumentNullException

If I explicitly call "pwsh" from inside this same integrated console, the script then works as expected.

Best guesses are that the issue is occurring when the debugger is involved, or that your readline is choking because it doesn't know how to request the user enters a custom class?

Environment data

Explicit pwsh

PS> $PSVersionTable
Name                           Value
----                           -----
PSVersion                      6.2.0
PSEdition                      Core
GitCommitId                    6.2.0
OS                             Microsoft Windows 10.0.17763
Platform                       Win32NT
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0…}
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1
WSManStackVersion              3.0
PS> $PSHOME
C:\Program Files\PowerShell\6

PowerShell Integrated Console

PS>$PSVersionTable
Name                           Value
----                           -----
PSVersion                      6.2.0
PSEdition                      Core
GitCommitId                    6.2.0
OS                             Microsoft Windows 10.0.17763
Platform                       Win32NT
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0…}
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1
WSManStackVersion              3.0
PS> $PSHOME
C:\Program Files\PowerShell\6

VSCode PowerShell Debugger Launch Config

        {
            "name": "PowerShell Launch Current File",
            "type": "PowerShell",
            "request": "launch",
            "script": "${file}",
            "args": [],
            "cwd": "${file}"
        }

Extension version: 1.12.1 VS Code version: Code 1.34.0 (a622c65b2c713c890fcf4fbf07cf34049d5fe758, 2019-05-15T21:59:37.030Z) OS version: Windows_NT x64 10.0.17763

System Info
Item Value
CPUs Intel(R) Core(TM) i7-7820HQ CPU @ 2.90GHz (8 x 2904)
GPU Status 2d_canvas: enabled
checker_imaging: disabled_off
flash_3d: enabled
flash_stage3d: enabled
flash_stage3d_baseline: enabled
gpu_compositing: enabled
multiple_raster_threads: enabled_on
native_gpu_memory_buffers: disabled_software
rasterization: enabled
surface_synchronization: enabled_on
video_decode: enabled
webgl: enabled
webgl2: enabled
Load (avg) undefined
Memory (System) 31.81GB (14.95GB free)
Process Argv
Screen Reader no
VM 0%

gmckeown avatar May 20 '19 18:05 gmckeown