Skip to content

Commit ebf84a7

Browse files
StartAutomatingStartAutomating
authored andcommitted
[TypeConstraintAst]: Adding -Parameter and -ArgumentList and aliases (Fixes #287)
1 parent 3a62b4c commit ebf84a7

File tree

1 file changed

+67
-0
lines changed

1 file changed

+67
-0
lines changed

PipeScript.types.ps1xml

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)