Skip to content

Commit 5bfdca8

Browse files
committed
JS: Remove recursive def of SourceNode::Range
1 parent 230b9cf commit 5bfdca8

File tree

1 file changed

+18
-10
lines changed

1 file changed

+18
-10
lines changed

javascript/ql/src/semmle/javascript/ApiGraphs.qll

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -619,11 +619,11 @@ module API {
619619
cached
620620
predicate use(TApiNode nd, DataFlow::Node ref) {
621621
exists(string m, Module mod | nd = MkModuleDef(m) and mod = importableModule(m) |
622-
ref.(ModuleAsSourceNode).getModule() = mod
622+
ref.(ModuleVarNode).getModule() = mod
623623
)
624624
or
625625
exists(string m, Module mod | nd = MkModuleExport(m) and mod = importableModule(m) |
626-
ref.(ExportsAsSourceNode).getModule() = mod
626+
ref.(ExportsVarNode).getModule() = mod
627627
or
628628
exists(DataFlow::Node base | use(MkModuleDef(m), base) |
629629
ref = trackUseNode(base).getAPropertyRead("exports")
@@ -746,9 +746,9 @@ module API {
746746
or
747747
// additional backwards step from `require('m')` to `exports` or `module.exports` in m
748748
exists(Import imp | imp.getImportedModuleNode() = trackDefNode(nd, t.continue()) |
749-
result.(ExportsAsSourceNode).getModule() = imp.getImportedModule()
749+
result.(ExportsVarNode).getModule() = imp.getImportedModule()
750750
or
751-
exists(ModuleAsSourceNode mod |
751+
exists(ModuleVarNode mod |
752752
mod.getModule() = imp.getImportedModule() and
753753
result = mod.(DataFlow::SourceNode).getAPropertyRead("exports")
754754
)
@@ -983,13 +983,21 @@ private module Label {
983983
string promised() { result = "promised" }
984984
}
985985

986+
private class NodeModuleSourcesNodes extends DataFlow::SourceNode::Range {
987+
NodeModuleSourcesNodes() {
988+
exists(NodeModule m |
989+
this = DataFlow::ssaDefinitionNode(SSA::implicitInit([m.getModuleVariable(), m.getExportsVariable()]))
990+
)
991+
}
992+
}
993+
986994
/**
987-
* A CommonJS/AMD `module` variable, considered as a source node.
995+
* A CommonJS/AMD `module` variable.
988996
*/
989-
private class ModuleAsSourceNode extends DataFlow::SourceNode::Range {
997+
private class ModuleVarNode extends DataFlow::Node {
990998
Module m;
991999

992-
ModuleAsSourceNode() {
1000+
ModuleVarNode() {
9931001
this = DataFlow::ssaDefinitionNode(SSA::implicitInit(m.(NodeModule).getModuleVariable()))
9941002
or
9951003
DataFlow::parameterNode(this, m.(AmdModule).getDefine().getModuleParameter())
@@ -999,12 +1007,12 @@ private class ModuleAsSourceNode extends DataFlow::SourceNode::Range {
9991007
}
10001008

10011009
/**
1002-
* A CommonJS/AMD `exports` variable, considered as a source node.
1010+
* A CommonJS/AMD `exports` variable.
10031011
*/
1004-
private class ExportsAsSourceNode extends DataFlow::SourceNode::Range {
1012+
private class ExportsVarNode extends DataFlow::Node {
10051013
Module m;
10061014

1007-
ExportsAsSourceNode() {
1015+
ExportsVarNode() {
10081016
this = DataFlow::ssaDefinitionNode(SSA::implicitInit(m.(NodeModule).getExportsVariable()))
10091017
or
10101018
DataFlow::parameterNode(this, m.(AmdModule).getDefine().getExportsParameter())

0 commit comments

Comments
 (0)