Skip to content

Commit d78efdb

Browse files
authored
Merge pull request #15883 from RasmusWL/js-cg-tests
JS: show test changes after #15823
2 parents 5ab1047 + c82f5da commit d78efdb

File tree

3 files changed

+49
-0
lines changed

3 files changed

+49
-0
lines changed

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

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,3 +25,24 @@ MyOtherStream.prototype.instanceProp = 1; /* def=moduleImport("classes").getMemb
2525
MyOtherStream.classProp = 1; /* def=moduleImport("classes").getMember("exports").getMember("MyOtherStream").getMember("classProp") */
2626

2727
module.exports.MyOtherStream = MyOtherStream;
28+
29+
30+
// function-style class without .prototype reference
31+
function MyThirdStream() { /* use=moduleImport("classes").getMember("exports").getMember("MyThirdStream").getInstance() */
32+
}
33+
let instance = new MyThirdStream(); /* use=moduleImport("classes").getMember("exports").getMember("MyThirdStream").getInstance() */
34+
35+
module.exports.MyThirdStream = MyThirdStream;
36+
37+
38+
// function-style class without .prototype reference (through global variable)
39+
(function(f) {
40+
foo.bar = function() { /* use=moduleImport("classes").getMember("exports").getMember("bar").getInstance() */
41+
}
42+
})(foo = foo || {});
43+
44+
(function(f) {
45+
let x = new f.bar(); /* use=moduleImport("classes").getMember("exports").getMember("bar").getInstance() */
46+
})(foo = foo || {});
47+
48+
module.exports.bar = foo.bar;
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import 'dummy';
2+
3+
let trackedProp = "implicit-receiver-prop"; // name: implicit-receiver-prop
4+
5+
function factory() {
6+
let obj = unknown(); // name: implicit-receiver-obj
7+
obj.foo = function() {
8+
track(this); // track: implicit-receiver-obj
9+
track(this.x); // track: implicit-receiver-obj track: implicit-receiver-prop
10+
}
11+
return obj;
12+
}
13+
let obj = factory();
14+
obj.x = trackedProp;
15+
16+
17+
function factory2() {
18+
let obj2 = { // name: implicit-receiver-obj2
19+
foo: function() {
20+
track(this); // track: implicit-receiver-obj2
21+
track(this.x); // track: implicit-receiver-obj2 track: implicit-receiver-prop
22+
}
23+
}
24+
return obj2;
25+
}
26+
let obj2 = factory2()
27+
obj2.x = trackedProp;

0 commit comments

Comments
 (0)