Elide type-only exports when the TS transform is enabled #433
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes #398
This ended up having a lot of cases and complexity. We actually care about the
known type declarations and the known value declarations.
be a value. This is true both for named export syntax and default export.
to be a type. For default exports, it's the same logic as ESM: we only elide
if we know it as a type and not as a value.
This required going through all declarations (at least in TS parsing mode) and
making sure we add the right identifier info to each of them, which in turn had
consequences on the react-hot-loader transform, so that had to be fixed.
One challenge is that default exports should be elided only when they export a
single identifier, which we can't know statically. Instead, we now use the
rhsEndIndex
field on theexport
token to know when the export statementactually ends, and use that to determine if the export is just an identifier.