* Start enabling element access special assignment * Treat element access assignment as special assignment in JS * Make declarations for bindable element access expressions * Fix navigationBar crash * Add multi-level test for JS * Propagate element access expressions to more code paths * Fix property access on `this` * Add quick info test * Uhhh I guess this is fine * Fix module["exports"] and property access chained off element access * Add test for this property assignment * Add test for and fix prototype property assignment * Fix teeeest??? * Update APIs * Fix element access declarations on `this` * Fix go-to-definition * Add declaration emit to tests * Reconcile with late-bound symbol element access assignment * Fix baselines * Add JS declaration back to tests * Fix JS declaration emit of non-late-bound string literal property names * Revert accidental auto-format * Use `isAccessExpression` * Add underscore escaping member to test * Fix and test navBar changes
31 lines
706 B
TypeScript
31 lines
706 B
TypeScript
// @checkJs: true
|
||
// @allowJs: true
|
||
// @strict: true
|
||
// @emitDeclarationOnly: true
|
||
// @declaration: true
|
||
// @Filename: 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.y = {};
|
||
this["y"] = {};
|
||
this["y"]["z"] = {};
|
||
|
||
/** @constructor */
|
||
function F() {
|
||
this.a = {};
|
||
this.a.b = {};
|
||
this["b"] = {};
|
||
this["b"]["c"] = {};
|
||
}
|
||
|
||
const f = new F();
|
||
f.a;
|
||
f.b;
|