diff --git a/packages/compiler-sfc/__tests__/compileScript/resolveType.spec.ts b/packages/compiler-sfc/__tests__/compileScript/resolveType.spec.ts index f671541977b..85d67e01cb8 100644 --- a/packages/compiler-sfc/__tests__/compileScript/resolveType.spec.ts +++ b/packages/compiler-sfc/__tests__/compileScript/resolveType.spec.ts @@ -615,6 +615,25 @@ describe('resolveType', () => { expect(deps && [...deps]).toStrictEqual(Object.keys(files)) }) + test('relative (re-export /w same source type name)', () => { + const files = { + '/foo.ts': `export default interface P { foo: string }`, + '/bar.ts': `export default interface PP { bar: number }`, + '/baz.ts': `export { default as X } from './foo'; export { default as XX } from './bar'; ` + } + const { props, deps } = resolve( + `import { X, XX } from './baz' + defineProps() + `, + files + ) + expect(props).toStrictEqual({ + foo: ['String'], + bar: ['Number'] + }) + expect(deps && [...deps]).toStrictEqual(['/baz.ts', '/foo.ts', '/bar.ts']) + }) + test('relative (dynamic import)', () => { const files = { '/foo.ts': `export type P = { foo: string, bar: import('./bar').N }`, diff --git a/packages/compiler-sfc/src/script/resolveType.ts b/packages/compiler-sfc/src/script/resolveType.ts index f4e1915255e..b2e47b08bea 100644 --- a/packages/compiler-sfc/src/script/resolveType.ts +++ b/packages/compiler-sfc/src/script/resolveType.ts @@ -1117,7 +1117,7 @@ function recordTypes( const exported = getId(spec.exported) if (stmt.source) { // re-export, register an import + export as a type reference - imports[local] = { + imports[exported] = { source: stmt.source.value, imported: local }