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.
When a user sets `noLib`, this indicates that they will supply their own
list of `lib*.d.ts` files as part of input sources. In this situation,
TypeScript should not try to resolve library reference directives.
This avoids a problem where TypeScript loads a file that e.g. contains
`/// <reference lib="es2015.symbol"/>`. Previously, TypeScript would use
its builtin ts.libMap and attempt to load builtin libraries from the
TypeScript installation, instead of respecting the user-supplied set of
libraries.
* 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