@@ -5573,7 +5573,13 @@ public override AstVisitAction VisitAssignmentStatement(AssignmentStatementAst a
55735573 : AstVisitAction . StopVisit ;
55745574 }
55755575
5576- if ( assignmentStatementAst . Left is AttributedExpressionAst attributedExpression )
5576+ ProcessAssignmentLeftSide ( assignmentStatementAst . Left , assignmentStatementAst . Right ) ;
5577+ return AstVisitAction . Continue ;
5578+ }
5579+
5580+ private void ProcessAssignmentLeftSide ( ExpressionAst left , StatementAst right )
5581+ {
5582+ if ( left is AttributedExpressionAst attributedExpression )
55775583 {
55785584 var firstConvertExpression = attributedExpression as ConvertExpressionAst ;
55795585 ExpressionAst child = attributedExpression . Child ;
@@ -5593,7 +5599,7 @@ public override AstVisitAction VisitAssignmentStatement(AssignmentStatementAst a
55935599 {
55945600 if ( variableExpression == CompletionVariableAst || s_specialVariablesCache . Value . Contains ( variableExpression . VariablePath . UserPath ) )
55955601 {
5596- return AstVisitAction . Continue ;
5602+ return ;
55975603 }
55985604
55995605 if ( firstConvertExpression is not null )
@@ -5602,22 +5608,22 @@ public override AstVisitAction VisitAssignmentStatement(AssignmentStatementAst a
56025608 }
56035609 else
56045610 {
5605- PSTypeName lastAssignedType = assignmentStatementAst . Right is CommandExpressionAst commandExpression
5611+ PSTypeName lastAssignedType = right is CommandExpressionAst commandExpression
56065612 ? GetInferredVarTypeFromAst ( commandExpression . Expression )
56075613 : null ;
56085614 SaveVariableInfo ( variableExpression . VariablePath . UnqualifiedPath , lastAssignedType , isConstraint : false ) ;
56095615 }
56105616 }
56115617 }
5612- else if ( assignmentStatementAst . Left is VariableExpressionAst variableExpression )
5618+ else if ( left is VariableExpressionAst variableExpression )
56135619 {
56145620 if ( variableExpression == CompletionVariableAst || s_specialVariablesCache . Value . Contains ( variableExpression . VariablePath . UserPath ) )
56155621 {
5616- return AstVisitAction . Continue ;
5622+ return ;
56175623 }
56185624
56195625 PSTypeName lastAssignedType ;
5620- if ( assignmentStatementAst . Right is CommandExpressionAst commandExpression )
5626+ if ( right is CommandExpressionAst commandExpression )
56215627 {
56225628 lastAssignedType = GetInferredVarTypeFromAst ( commandExpression . Expression ) ;
56235629 }
@@ -5628,8 +5634,21 @@ public override AstVisitAction VisitAssignmentStatement(AssignmentStatementAst a
56285634
56295635 SaveVariableInfo ( variableExpression . VariablePath . UnqualifiedPath , lastAssignedType , isConstraint : false ) ;
56305636 }
5631-
5632- return AstVisitAction . Continue ;
5637+ else if ( left is ArrayLiteralAst array )
5638+ {
5639+ foreach ( ExpressionAst expression in array . Elements )
5640+ {
5641+ ProcessAssignmentLeftSide ( expression , right ) ;
5642+ }
5643+ }
5644+ else if ( left is ParenExpressionAst parenExpression )
5645+ {
5646+ ExpressionAst pureExpression = parenExpression . Pipeline . GetPureExpression ( ) ;
5647+ if ( pureExpression is not null )
5648+ {
5649+ ProcessAssignmentLeftSide ( pureExpression , right ) ;
5650+ }
5651+ }
56335652 }
56345653
56355654 public override AstVisitAction VisitCommand ( CommandAst commandAst )
0 commit comments