-
Notifications
You must be signed in to change notification settings - Fork 12.8k
Do not emit code for @extends
tags in JS.
#29244
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
/CC @sandersn |
80cca24
to
fd7a197
Compare
@mprobst you'll find the tests easier to write/baseline if you add a // @outDir: ./out
// @allowJs: true
// @filename: extends.js
/** @extends {SuperClass} */
class SubClass {} should work. |
@weswigham thanks! I'll take a look at that tomorrow. I don't understand my test failure, locally |
I would guess it's failing because your input file, |
You definitely want to write a |
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 0f55566. 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
💡 For context, I was looking for tests that used I've moved to a compiler test case, that's indeed much simpler. |
This fixes a similar problem as microsoft#29244 where JSDoc `@extends`
When transpiling JavaScript, TS3.1+ emits
@extends
tags as code. E.g.Causes an ES5 emit that references SuperClass:
Note the literal references to
SomeBase
.This appears to be an accidental effect of
0f55566. It refactored
getEffectiveBaseTypeNode
for type checking, but missed an instancewhere it is also used for emit logic. This change fixes the problem by
specifically getting the heritage clauses directly off the AST.