mirror of
https://github.com/microsoft/TypeScript.git
synced 2025-12-12 11:50:54 -06:00
Do not emit code for @extends tags in JS. (#29244)
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
This commit is contained in:
parent
b7d7d5f7b3
commit
7a2b2cebbf
@ -780,7 +780,7 @@ namespace ts {
|
||||
enableSubstitutionsForBlockScopedBindings();
|
||||
}
|
||||
|
||||
const extendsClauseElement = getEffectiveBaseTypeNode(node);
|
||||
const extendsClauseElement = getClassExtendsHeritageElement(node);
|
||||
const classFunction = createFunctionExpression(
|
||||
/*modifiers*/ undefined,
|
||||
/*asteriskToken*/ undefined,
|
||||
|
||||
18
tests/baselines/reference/extendsJavaScript.js
Normal file
18
tests/baselines/reference/extendsJavaScript.js
Normal file
@ -0,0 +1,18 @@
|
||||
//// [extendsJavaScript.js]
|
||||
/**
|
||||
* @extends {SomeBase}
|
||||
*/
|
||||
class MyClass {
|
||||
|
||||
}
|
||||
|
||||
|
||||
//// [extendsJavaScript.js]
|
||||
/**
|
||||
* @extends {SomeBase}
|
||||
*/
|
||||
var MyClass = /** @class */ (function () {
|
||||
function MyClass() {
|
||||
}
|
||||
return MyClass;
|
||||
}());
|
||||
9
tests/baselines/reference/extendsJavaScript.symbols
Normal file
9
tests/baselines/reference/extendsJavaScript.symbols
Normal file
@ -0,0 +1,9 @@
|
||||
=== tests/cases/compiler/extendsJavaScript.js ===
|
||||
/**
|
||||
* @extends {SomeBase}
|
||||
*/
|
||||
class MyClass {
|
||||
>MyClass : Symbol(MyClass, Decl(extendsJavaScript.js, 0, 0))
|
||||
|
||||
}
|
||||
|
||||
9
tests/baselines/reference/extendsJavaScript.types
Normal file
9
tests/baselines/reference/extendsJavaScript.types
Normal file
@ -0,0 +1,9 @@
|
||||
=== tests/cases/compiler/extendsJavaScript.js ===
|
||||
/**
|
||||
* @extends {SomeBase}
|
||||
*/
|
||||
class MyClass {
|
||||
>MyClass : MyClass
|
||||
|
||||
}
|
||||
|
||||
11
tests/cases/compiler/extendsJavaScript.ts
Normal file
11
tests/cases/compiler/extendsJavaScript.ts
Normal file
@ -0,0 +1,11 @@
|
||||
// @allowJs: true
|
||||
// @checkJs: false
|
||||
// @outDir: ./out
|
||||
// @filename: extendsJavaScript.js
|
||||
|
||||
/**
|
||||
* @extends {SomeBase}
|
||||
*/
|
||||
class MyClass {
|
||||
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user