JS: Add tests before #15823 changes

This commit is contained in:
Rasmus Wriedt Larsen
2024-03-12 13:29:34 +01:00
parent 245cd5c0b5
commit f9309cec0b
4 changed files with 55 additions and 0 deletions

View File

@@ -0,0 +1,4 @@
| classes.js:31:28:31:122 | /* use= ... ce() */ | def moduleImport("classes").getMember("exports").getMember("MyThirdStream") has no outgoing edge labelled getInstance(); it does have outgoing edges labelled getReceiver(). |
| classes.js:33:37:33:131 | /* use= ... ce() */ | def moduleImport("classes").getMember("exports").getMember("MyThirdStream") has no outgoing edge labelled getInstance(); it does have outgoing edges labelled getReceiver(). |
| classes.js:40:28:40:112 | /* use= ... ce() */ | def moduleImport("classes").getMember("exports").getMember("bar") has no outgoing edge labelled getInstance(); it does have outgoing edges labelled getReceiver(). |
| classes.js:45:26:45:110 | /* use= ... ce() */ | def moduleImport("classes").getMember("exports").getMember("bar") has no outgoing edge labelled getInstance(); it does have outgoing edges labelled getReceiver(). |

View File

@@ -25,3 +25,24 @@ MyOtherStream.prototype.instanceProp = 1; /* def=moduleImport("classes").getMemb
MyOtherStream.classProp = 1; /* def=moduleImport("classes").getMember("exports").getMember("MyOtherStream").getMember("classProp") */
module.exports.MyOtherStream = MyOtherStream;
// function-style class without .prototype reference
function MyThirdStream() { /* use=moduleImport("classes").getMember("exports").getMember("MyThirdStream").getInstance() */
}
let instance = new MyThirdStream(); /* use=moduleImport("classes").getMember("exports").getMember("MyThirdStream").getInstance() */
module.exports.MyThirdStream = MyThirdStream;
// function-style class without .prototype reference (through global variable)
(function(f) {
foo.bar = function() { /* use=moduleImport("classes").getMember("exports").getMember("bar").getInstance() */
}
})(foo = foo || {});
(function(f) {
let x = new f.bar(); /* use=moduleImport("classes").getMember("exports").getMember("bar").getInstance() */
})(foo = foo || {});
module.exports.bar = foo.bar;

View File

@@ -0,0 +1,3 @@
| implicit-receiver.js:8:22:8:52 | // trac ... ver-obj | Failed to track implicit-receiver-obj here. |
| implicit-receiver.js:9:24:9:84 | // trac ... er-prop | Failed to track implicit-receiver-obj here. |
| implicit-receiver.js:9:24:9:84 | // trac ... er-prop | Failed to track implicit-receiver-prop here. |

View File

@@ -0,0 +1,27 @@
import 'dummy';
let trackedProp = "implicit-receiver-prop"; // name: implicit-receiver-prop
function factory() {
let obj = unknown(); // name: implicit-receiver-obj
obj.foo = function() {
track(this); // track: implicit-receiver-obj
track(this.x); // track: implicit-receiver-obj track: implicit-receiver-prop
}
return obj;
}
let obj = factory();
obj.x = trackedProp;
function factory2() {
let obj2 = { // name: implicit-receiver-obj2
foo: function() {
track(this); // track: implicit-receiver-obj2
track(this.x); // track: implicit-receiver-obj2 track: implicit-receiver-prop
}
}
return obj2;
}
let obj2 = factory2()
obj2.x = trackedProp;