Multiple exports for the same concrete type result in a build error that is inconsistent with TypeScript #568
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.
This PR is intended to encode behaviour that I think should be considered valid but which is currently considered invalid in
esbuild
.When multiple modules re-export the same underlying type (via different paths) this appears to produce an 'ambiguous import' error:
esbuild/internal/bundler/linker.go
Lines 1786 to 1790 in 1f3bd9d
I think TypeScript is taking a different approach which is to say that since the 'duplicate' exports refer to the same concrete type, they can be deduplicated instead of being treated as conflicting. In the included test, there is only one
Foo
class but it gets exported via the entrypoint through two competing paths. Perhaps the linker needs a concept of source identity beyond identifier identity.