diff --git a/tsc/internal/fourslash/tests/autoImportIndexReExportPrefix_test.go b/tsc/internal/fourslash/tests/autoImportIndexReExportPrefix_test.go new file mode 100644 index 0000000000000..c0934f80dc42d --- /dev/null +++ b/tsc/internal/fourslash/tests/autoImportIndexReExportPrefix_test.go @@ -0,0 +1,26 @@ +package fourslash_test + +import ( + "testing" + + "github.com/microsoft/TypeScript/tsc/internal/fourslash" + "github.com/microsoft/TypeScript/tsc/internal/ls/lsutil" + "github.com/microsoft/TypeScript/tsc/internal/testutil" +) + +func TestAutoImportIndexReExportPrefix(t *testing.T) { + t.Parallel() + defer testutil.RecoverAndFail(t, "Panic on fourslash test") + const content = `// @module: nodenext +// @Filename: /package.json +{ "type": "module" } +// @Filename: /utils/sum/index.ts +export { sum } from "./sum.js"; +// @Filename: /utils/sum/sum.ts +export const sum = 0; +// @Filename: /utils/sumAB.ts +sum/**/` + f, done := fourslash.NewFourslash(t, nil /*capabilities*/, content) + defer done() + f.VerifyImportFixModuleSpecifiers(t, "", []string{"./sum/index.js", "./sum/sum.js"}, &lsutil.UserPreferences{ImportModuleSpecifierEnding: "js"}) +} diff --git a/tsc/internal/ls/autoimport/fix.go b/tsc/internal/ls/autoimport/fix.go index a035f305eaf1d..c8315b2fe3511 100644 --- a/tsc/internal/ls/autoimport/fix.go +++ b/tsc/internal/ls/autoimport/fix.go @@ -1097,7 +1097,7 @@ func (v *View) compareNodeCoreModuleSpecifiers(a, b string, importingFile *ast.S func isFixPossiblyReExportingImportingFile(fix *Fix, importingFileName string) bool { if fix.IsReExport && isIndexFileName(fix.ModuleFileName) { reExportDir := tspath.GetDirectoryPath(fix.ModuleFileName) - return strings.HasPrefix(importingFileName, reExportDir) + return strings.HasPrefix(importingFileName, tspath.EnsureTrailingDirectorySeparator(reExportDir)) } return false }