@@ -1088,6 +1088,73 @@ elseif ($TranspilerWarnings) {
10881088 <Type >
10891089 <Name >System.Management.Automation.Language.TypeConstraintAst</Name >
10901090 <Members >
1091+ <AliasProperty >
1092+ <Name >Args</Name >
1093+ <ReferencedMemberName >ArgumentList</ReferencedMemberName >
1094+ </AliasProperty >
1095+ <AliasProperty >
1096+ <Name >Arguments</Name >
1097+ <ReferencedMemberName >ArgumentList</ReferencedMemberName >
1098+ </AliasProperty >
1099+ <AliasProperty >
1100+ <Name >Parameters</Name >
1101+ <ReferencedMemberName >Parameter</ReferencedMemberName >
1102+ </AliasProperty >
1103+ <ScriptProperty >
1104+ <Name >ArgumentList</Name >
1105+ <GetScriptBlock >
1106+ if (-not $this.TypeName.IsGeneric) { return @() }
1107+ @(foreach ($typeName in $this.TypeName.GenericArguments ) {
1108+ if ($TypeName.IsGeneric) { continue }
1109+ if (-not $TypeName.IsArray) {
1110+ $TypeName.Name
1111+ }
1112+ })
1113+
1114+ </GetScriptBlock >
1115+ </ScriptProperty >
1116+ <ScriptProperty >
1117+ <Name >Parameter</Name >
1118+ <GetScriptBlock >
1119+
1120+
1121+ function TypeConstraintToArguments (
1122+ [Parameter(ValueFromPipeline)]
1123+ $TypeName
1124+ ) {
1125+ begin {
1126+ $TypeNameArgs = @()
1127+ $TypeNameParams = [Ordered]@{}
1128+
1129+ }
1130+ process {
1131+
1132+ if ($TypeName.IsGeneric) {
1133+ $TypeNameParams[$typeName.TypeName.Name] =
1134+ $typeName.GenericArguments |
1135+ TypeConstraintToArguments
1136+ } elseif (-not $TypeName.IsArray) {
1137+ $TypeNameArgs += $TypeName.Name
1138+ }
1139+ }
1140+ end {
1141+ if ($TypeNameParams.Count) {
1142+ $TypeNameParams
1143+ } elseif ($TypeNameArgs) {
1144+ $TypeNameArgs
1145+ }
1146+ }
1147+ }
1148+
1149+ if (-not $this.TypeName.IsGeneric) { return @{} }
1150+ foreach ($arg in @($this.TypeName.GenericArguments | TypeConstraintToArguments)) {
1151+ if ($arg -is [Collections.IDictionary]) {
1152+ $arg
1153+ }
1154+ }
1155+
1156+ </GetScriptBlock >
1157+ </ScriptProperty >
10911158 <ScriptProperty >
10921159 <Name >ResolvedCommand</Name >
10931160 <GetScriptBlock >
0 commit comments