Skip to content

Commit 30e2a16

Browse files
committed
FIXUP: Mistakenly broke functionality for static properties.
1 parent b2ef853 commit 30e2a16

File tree

1 file changed

+14
-4
lines changed

1 file changed

+14
-4
lines changed

csharp/ql/lib/semmle/code/csharp/controlflow/internal/ControlFlowGraphImpl.qll

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

Comments
 (0)