Skip to content

Commit 4fa8da8

Browse files
authored
fix(compiler-sfc): support resolve multiple re-export /w same source type name (#8365)
close #8364
1 parent 0e8bbe8 commit 4fa8da8

File tree

2 files changed

+20
-1
lines changed

2 files changed

+20
-1
lines changed

packages/compiler-sfc/__tests__/compileScript/resolveType.spec.ts

+19
Original file line numberDiff line numberDiff line change
@@ -615,6 +615,25 @@ describe('resolveType', () => {
615615
expect(deps && [...deps]).toStrictEqual(Object.keys(files))
616616
})
617617

618+
test('relative (re-export /w same source type name)', () => {
619+
const files = {
620+
'/foo.ts': `export default interface P { foo: string }`,
621+
'/bar.ts': `export default interface PP { bar: number }`,
622+
'/baz.ts': `export { default as X } from './foo'; export { default as XX } from './bar'; `
623+
}
624+
const { props, deps } = resolve(
625+
`import { X, XX } from './baz'
626+
defineProps<X & XX>()
627+
`,
628+
files
629+
)
630+
expect(props).toStrictEqual({
631+
foo: ['String'],
632+
bar: ['Number']
633+
})
634+
expect(deps && [...deps]).toStrictEqual(['/baz.ts', '/foo.ts', '/bar.ts'])
635+
})
636+
618637
test('relative (dynamic import)', () => {
619638
const files = {
620639
'/foo.ts': `export type P = { foo: string, bar: import('./bar').N }`,

packages/compiler-sfc/src/script/resolveType.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1117,7 +1117,7 @@ function recordTypes(
11171117
const exported = getId(spec.exported)
11181118
if (stmt.source) {
11191119
// re-export, register an import + export as a type reference
1120-
imports[local] = {
1120+
imports[exported] = {
11211121
source: stmt.source.value,
11221122
imported: local
11231123
}

0 commit comments

Comments
 (0)