-
Notifications
You must be signed in to change notification settings - Fork 8.1k
Closed
Labels
Resolution-FixedThe issue is fixed.The issue is fixed.
Description
Prerequisites
- Write a descriptive title.
- Make sure you are able to repro it on the latest released version
- Search the existing issues.
- Refer to the FAQ.
- Refer to Differences between Windows PowerShell 5.1 and PowerShell.
Steps to reproduce
In an array-type-constrained variable (as in expressions in general), AutomationNull is treated like $null; e.g.:
# Note: & { } is a simple way to return the AutomationNull singleton.
# OK: no error, and $null is assigned.
[string[]] $arr = & { }By contrast, using AutomationNull in hashtable / [pscustomobject]-based object initializers fails:
class Example {
[string[]]$LogMessage
}
$automationNull = & {}
# !! BREAKS: "Unable to cast object of type 'System.Management.Automation.PSObject' to type 'System.String[]'"
[Example] @{ 'LogMessage' = $automationNull }
# !! BREAKS differently: ""Type 'System.String[]' does not have a default constructor (Parameter 'type')""
[Example] [pscustomobject] @{ 'LogMessage' = $automationNull }That the [pscustomobject]-based initialization breaks differently is surprising, and reminiscent of #19384 (comment)
Expected behavior
Two [Example] instances should be constructed, with $null in the .LogMessage property.
Actual behavior
Both initializations fail, albeit differently:
InvalidArgument: /path/to/script.ps1:13
Line |
13 | [Example] @{ 'LogMessage' = $automationNull }
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| Cannot create object of type "Example". Unable to cast object of type 'System.Management.Automation.PSObject' to type 'System.String[]'.
InvalidArgument: /path/to/script.ps1:16
Line |
16 | [Example] [pscustomobject] @{ 'LogMessage' = $automationNull }
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| Cannot convert value "@{LogMessage=}" to type "Example". Error: "Type 'System.String[]' does not have a default constructor (Parameter 'type')"Error details
See above.Environment data
PowerShell 7.4.0-preview.2Visuals
No response
jantari and 0xfeeddeadbeef
Metadata
Metadata
Assignees
Labels
Resolution-FixedThe issue is fixed.The issue is fixed.