File tree Expand file tree Collapse file tree 3 files changed +49
-0
lines changed
library-tests/TypeTracking Expand file tree Collapse file tree 3 files changed +49
-0
lines changed Original file line number Diff line number Diff line change @@ -25,3 +25,24 @@ MyOtherStream.prototype.instanceProp = 1; /* def=moduleImport("classes").getMemb
2525MyOtherStream . classProp = 1 ; /* def=moduleImport("classes").getMember("exports").getMember("MyOtherStream").getMember("classProp") */
2626
2727module . 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 ;
Original file line number Diff line number Diff line change 1+
Original file line number Diff line number Diff line change 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 ;
You can’t perform that action at this time.
0 commit comments