@@ -296,7 +296,7 @@ private module Cached {
296296 TTokenSuperCall ( Ruby:: Super g ) { vcall ( g ) } or
297297 TToplevel ( Ruby:: Program g ) or
298298 TTrueLiteral ( Ruby:: True g ) or
299- TTuplePatternParameter ( Ruby:: DestructuredParameter g ) or
299+ TDestructuredParameter ( Ruby:: DestructuredParameter g ) or
300300 TUnaryMinusExpr ( Ruby:: Unary g ) { g instanceof @ruby_unary_minus } or
301301 TUnaryPlusExpr ( Ruby:: Unary g ) { g instanceof @ruby_unary_plus } or
302302 TUndefStmt ( Ruby:: Undef g ) or
@@ -342,7 +342,7 @@ private module Cached {
342342 TStringConcatenation or TStringEscapeSequenceComponent or TStringInterpolationComponent or
343343 TStringTextComponent or TSubExprReal or TSubshellLiteral or TSymbolArrayLiteral or
344344 TTernaryIfExpr or TThen or TTokenConstantAccess or TTokenMethodName or TTokenSuperCall or
345- TToplevel or TTrueLiteral or TTuplePatternParameter or TUnaryMinusExpr or TUnaryPlusExpr or
345+ TToplevel or TTrueLiteral or TDestructuredParameter or TUnaryMinusExpr or TUnaryPlusExpr or
346346 TUndefStmt or TUnlessExpr or TUnlessModifierExpr or TUntilExpr or TUntilModifierExpr or
347347 TVariableReferencePattern or TWhenExpr or TWhileExpr or TWhileModifierExpr or TYieldCall ;
348348
@@ -502,7 +502,7 @@ private module Cached {
502502 n = TTokenSuperCall ( result ) or
503503 n = TToplevel ( result ) or
504504 n = TTrueLiteral ( result ) or
505- n = TTuplePatternParameter ( result ) or
505+ n = TDestructuredParameter ( result ) or
506506 n = TUnaryMinusExpr ( result ) or
507507 n = TUnaryPlusExpr ( result ) or
508508 n = TUndefStmt ( result ) or
@@ -613,6 +613,15 @@ private module Cached {
613613 or
614614 result = toGenerated ( n ) .getLocation ( )
615615 }
616+
617+ cached
618+ predicate lhsExpr ( AST:: Expr e ) {
619+ explicitAssignmentNode ( toGenerated ( e ) , _)
620+ or
621+ implicitAssignmentNode ( toGenerated ( e ) )
622+ or
623+ e = getSynthChild ( any ( AST:: AssignExpr ae ) , 0 )
624+ }
616625}
617626
618627import Cached
@@ -645,11 +654,13 @@ class TLoop = TConditionalLoop or TForExpr;
645654
646655class TSelf = TSelfReal or TSelfSynth ;
647656
657+ class TDestructuredLhsExpr = TDestructuredLeftAssignment or TLeftAssignmentList ;
658+
648659class TExpr =
649660 TSelf or TArgumentList or TInClause or TRescueClause or TRescueModifierExpr or TPair or
650661 TStringConcatenation or TCall or TBlockArgument or TConstantAccess or TControlExpr or
651662 TWhenExpr or TLiteral or TCallable or TVariableAccess or TStmtSequence or TOperation or
652- TSimpleParameter or TForwardArgument ;
663+ TSimpleParameter or TForwardArgument or TDestructuredLhsExpr ;
653664
654665class TSplatExpr = TSplatExprReal or TSplatExprSynth ;
655666
@@ -778,18 +789,20 @@ class TStmt =
778789class TReturningStmt = TReturnStmt or TBreakStmt or TNextStmt ;
779790
780791class TParameter =
781- TPatternParameter or TBlockParameter or THashSplatParameter or THashSplatNilParameter or
782- TKeywordParameter or TOptionalParameter or TSplatParameter or TForwardParameter ;
792+ TSimpleParameter or TDestructuredParameter or TBlockParameter or THashSplatParameter or
793+ THashSplatNilParameter or TKeywordParameter or TOptionalParameter or TSplatParameter or
794+ TForwardParameter ;
783795
784796class TSimpleParameter = TSimpleParameterReal or TSimpleParameterSynth ;
785797
786- class TPatternParameter = TSimpleParameter or TTuplePatternParameter ;
798+ deprecated class TPatternParameter = TSimpleParameter or TDestructuredParameter ;
787799
788800class TNamedParameter =
789801 TSimpleParameter or TBlockParameter or THashSplatParameter or TKeywordParameter or
790802 TOptionalParameter or TSplatParameter ;
791803
792- class TTuplePattern = TTuplePatternParameter or TDestructuredLeftAssignment or TLeftAssignmentList ;
804+ deprecated class TTuplePattern =
805+ TDestructuredParameter or TDestructuredLeftAssignment or TLeftAssignmentList ;
793806
794807class TVariableAccess =
795808 TLocalVariableAccess or TGlobalVariableAccess or TInstanceVariableAccess or
0 commit comments