Skip to content

Commit a43f3a2

Browse files
authored
Merge pull request #8550 from erik-krogh/classJoin
Approved by asgerf
2 parents cb211f8 + 48ef3b1 commit a43f3a2

File tree

1 file changed

+12
-1
lines changed
  • javascript/ql/lib/semmle/javascript/dataflow

1 file changed

+12
-1
lines changed

javascript/ql/lib/semmle/javascript/dataflow/Nodes.qll

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -786,6 +786,8 @@ class MemberKind extends string {
786786
predicate isAccessor() { this = MemberKind::accessor() }
787787
}
788788

789+
private import internal.StepSummary
790+
789791
module MemberKind {
790792
/** Gets the kind of a method, such as `m() {}` */
791793
MemberKind method() { result = "method" }
@@ -960,7 +962,16 @@ class ClassNode extends DataFlow::SourceNode instanceof ClassNode::Range {
960962
result.getAstNode().getFile() = this.getAstNode().getFile()
961963
)
962964
or
963-
exists(DataFlow::TypeTracker t2 | result = this.getAClassReference(t2).track(t2, t))
965+
result = this.getAClassReferenceRec(t)
966+
}
967+
968+
pragma[noopt]
969+
private DataFlow::SourceNode getAClassReferenceRec(DataFlow::TypeTracker t) {
970+
exists(DataFlow::TypeTracker t2, StepSummary summary, DataFlow::SourceNode prev |
971+
prev = this.getAClassReference(t2) and
972+
StepSummary::step(prev, result, summary) and
973+
t = t2.append(summary)
974+
)
964975
}
965976

966977
/**

0 commit comments

Comments
 (0)