Skip to content

Commit 98e93a7

Browse files
author
Max Schaefer
committed
JavaScript: Improve API-graph support for function-style classes.
1 parent dfc4436 commit 98e93a7

File tree

2 files changed

+9
-1
lines changed

2 files changed

+9
-1
lines changed

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

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -547,7 +547,11 @@ module API {
547547
ref = DataFlow::moduleImport(m)
548548
)
549549
or
550-
exists(DataFlow::ClassNode cls | nd = MkClassInstance(cls) | ref = cls.getAReceiverNode())
550+
exists(DataFlow::ClassNode cls | nd = MkClassInstance(cls) |
551+
ref = cls.getAReceiverNode()
552+
or
553+
ref = cls.(DataFlow::ClassNode::FunctionStyleClass).getAPrototypeReference()
554+
)
551555
or
552556
nd = MkUse(ref)
553557
or

javascript/ql/test/ApiGraphs/classes/classes.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,4 +20,8 @@ MyOtherStream.prototype.write = function (data) { /* use (instance (member MyOth
2020
return this;
2121
};
2222

23+
MyOtherStream.prototype.instanceProp = 1; /* def (member instanceProp (instance (member MyOtherStream (member exports (module classes))))) */
24+
25+
MyOtherStream.classProp = 1; /* def (member classProp (member MyOtherStream (member exports (module classes)))) */
26+
2327
module.exports.MyOtherStream = MyOtherStream;

0 commit comments

Comments
 (0)