1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
|
=== tests/cases/conformance/salsa/a.js ===
// This test is asserting that a single property/element access
// on `this` is a special assignment declaration, but chaining
// off that does not create additional declarations. I’m not sure
// if it needs to be that way in JavaScript; the test simply
// ensures no accidental changes were introduced while allowing
// element access assignments to create declarations.
this.x = {};
>this.x : Symbol(x, Decl(a.js, 0, 0))
>this : Symbol(globalThis)
>x : Symbol(x, Decl(a.js, 0, 0))
this.x.y = {};
>this.x : Symbol(x, Decl(a.js, 0, 0))
>this : Symbol(globalThis)
>x : Symbol(x, Decl(a.js, 0, 0))
this["y"] = {};
>this : Symbol(globalThis)
>"y" : Symbol("y", Decl(a.js, 8, 14))
this["y"]["z"] = {};
>this : Symbol(globalThis)
>"y" : Symbol("y", Decl(a.js, 8, 14))
/** @constructor */
function F() {
>F : Symbol(F, Decl(a.js, 10, 20))
this.a = {};
>this.a : Symbol(F.a, Decl(a.js, 13, 14))
>this : Symbol(F, Decl(a.js, 10, 20))
>a : Symbol(F.a, Decl(a.js, 13, 14))
this.a.b = {};
>this.a : Symbol(F.a, Decl(a.js, 13, 14))
>this : Symbol(F, Decl(a.js, 10, 20))
>a : Symbol(F.a, Decl(a.js, 13, 14))
this["b"] = {};
>this : Symbol(F, Decl(a.js, 10, 20))
>"b" : Symbol(F["b"], Decl(a.js, 15, 16))
this["b"]["c"] = {};
>this : Symbol(F, Decl(a.js, 10, 20))
>"b" : Symbol(F["b"], Decl(a.js, 15, 16))
}
const f = new F();
>f : Symbol(f, Decl(a.js, 20, 5))
>F : Symbol(F, Decl(a.js, 10, 20))
f.a;
>f.a : Symbol(F.a, Decl(a.js, 13, 14))
>f : Symbol(f, Decl(a.js, 20, 5))
>a : Symbol(F.a, Decl(a.js, 13, 14))
f.b;
>f.b : Symbol(F["b"], Decl(a.js, 15, 16))
>f : Symbol(f, Decl(a.js, 20, 5))
>b : Symbol(F["b"], Decl(a.js, 15, 16))
|