@@ -482,6 +482,15 @@ module Expressions {
482482 }
483483 }
484484
485+ private class QualifiedExprOrStatOrDynAccessorCall_ =
486+ @dynamic_member_access_expr or @dynamic_element_access_expr or @call_access_expr or
487+ @qualifiable_expr;
488+
489+ /** A normal or a (potential) dynamic call to an accessor. */
490+ private class QualifiedExprOrStatOrDynAccessorCall extends Expr ,
491+ QualifiedExprOrStatOrDynAccessorCall_
492+ { }
493+
485494 /**
486495 * An expression that writes via an accessor, for example `x.Prop = 0`,
487496 * where `Prop` is a property.
@@ -506,18 +515,19 @@ module Expressions {
506515
507516 QualifiedAccessorWrite ( ) {
508517 def .getExpr ( ) = this and
509- def .getTargetAccess ( ) instanceof QualifiedWriteAccess and
518+ def .getTargetAccess ( ) . ( WriteAccess ) instanceof QualifiedExprOrStatOrDynAccessorCall and
510519 not this instanceof AssignOperationWithExpandedAssignment
511520 }
512521
513522 /**
514523 * Gets the `i`th accessor being called in this write. More than one call
515524 * can happen in tuple assignments.
516525 */
517- WriteAccess getAccess ( int i ) {
526+ QualifiedExprOrStatOrDynAccessorCall getAccess ( int i ) {
518527 result =
519528 rank [ i + 1 ] ( AssignableDefinitions:: TupleAssignmentDefinition tdef |
520- tdef .getExpr ( ) = this
529+ tdef .getExpr ( ) = this and
530+ tdef .getTargetAccess ( ) instanceof QualifiedExprOrStatOrDynAccessorCall
521531 |
522532 tdef order by tdef .getEvaluationOrder ( )
523533 ) .getTargetAccess ( )
@@ -579,7 +589,7 @@ module Expressions {
579589 * to after the assignment.
580590 */
581591 private class QualifiedAssignments extends PostOrderTree instanceof Assignment {
582- QualifiedWriteAccess left ;
592+ QualifiedAccessorWrite left ;
583593 Expr right ;
584594
585595 QualifiedAssignments ( ) {
0 commit comments