Fixes#5987.
Usages of a class property in a preceding property already gave an error, but the following doesn't yet:
```ts
class Test {
x: number = this.x;
}
```
As with other use-before-declare checking, IIFEs are not treated as invalid uses.
Starts on #29035 by creating a codefix to enable the `experimentalDecorators` setting in a user's config file, if one exists. The issue's discussion also mentions giving a more precise error message if the user has a jsconfig or tsconfig or creating one if not; I'd rather tackle those in separate PRs to keep this one small.
Doesn't create the code action if no config file is present. Otherwise keeps to the precedent of returning without action when the config file contents aren't the expected JSON structure (looking at `fixCannotFindModule.ts`). Moves a couple JSON helpers from that file into the sibling `helpers.ts` so both codefixes can use them.
* Exclude JSDoc @extends from 'super()' checks
This fixes a similar problem as #29244 where JSDoc `@extends`
* fix check 'super can only be referenced in a derived class'
When transpiling JavaScript, TS3.1+ emits `@extends` tags as code. E.g.
/** @extends {SuperClass} */
class SubClass {}
Causes an ES5 emit that references SuperClass:
/**
* @extends {SomeBase}
*/
var SubClass = /** @class */ (function (_super) {
__extends(SubClass, _super);
function SubClass() {
return _super !== null && _super.apply(this, arguments) || this;
}
return SubClass;
}(SomeBase));
Note the literal references to `SomeBase`.
This appears to be an accidental effect of 0f55566cf4. It refactored
`getEffectiveBaseTypeNode` for type checking, but missed an instance
where it is also used for emit logic. This change fixes the problem by
specifically getting the heritage clauses directly off the AST.
Change-Id: I3128a757e5924e2528c61230a90ac13650852542
* Add core of new union signature logic and test - needs intersection signature logic to fully work
* Add inversion of variance for class props lookup from union sig returns
* Fix lints
* Combine parameter names for nicer quick info
* PR feedback 1
* Fix miscopy
* PR feedback round 2
* Remove argument name combining because loc :(
* Nit cleanup round 3
* Reinline getTupleTypeForArgumentAtPos
* Remove a tad more
* No step on sneky off-by-one error