diff --git a/internal/fourslash/tests/renameNamedImportUseAliasesForRenames_test.go b/internal/fourslash/tests/renameNamedImportUseAliasesForRenames_test.go new file mode 100644 index 00000000000..115128331e4 --- /dev/null +++ b/internal/fourslash/tests/renameNamedImportUseAliasesForRenames_test.go @@ -0,0 +1,27 @@ +package fourslash_test + +import ( + "testing" + + "github.com/microsoft/typescript-go/internal/core" + "github.com/microsoft/typescript-go/internal/fourslash" + "github.com/microsoft/typescript-go/internal/ls/lsutil" + "github.com/microsoft/typescript-go/internal/testutil" +) + +func TestRenameNamedImportUseAliasesForRenames(t *testing.T) { + t.Parallel() + defer testutil.RecoverAndFail(t, "Panic on fourslash test") + const content = `// @Filename: /a.ts +import { /*import*/MyTypeA } from "./b"; +const type: MyTypeA = { foo: "bar" }; +// @Filename: /b.ts +export interface MyTypeA { + foo: string; +}` + + f, done := fourslash.NewFourslash(t, nil /*capabilities*/, content) + defer done() + f.VerifyBaselineRename(t, &lsutil.UserPreferences{UseAliasesForRename: core.TSFalse}, "import") + f.VerifyBaselineRename(t, &lsutil.UserPreferences{UseAliasesForRename: core.TSTrue}, "import") +} diff --git a/internal/ls/findallreferences.go b/internal/ls/findallreferences.go index b01fc659547..28043f859dd 100644 --- a/internal/ls/findallreferences.go +++ b/internal/ls/findallreferences.go @@ -686,7 +686,7 @@ func (l *LanguageService) getSymbolAndEntries( } } else { options.use = referenceUseRename - options.useAliasesForRename = true + options.useAliasesForRename = l.UserPreferences().UseAliasesForRename.IsTrueOrUnknown() } return l.getReferencedSymbolsForNode(ctx, position, node, program, program.GetSourceFiles(), options) } diff --git a/internal/ls/rename.go b/internal/ls/rename.go index a6007159300..b1ef362666c 100644 --- a/internal/ls/rename.go +++ b/internal/ls/rename.go @@ -80,6 +80,7 @@ func (l *LanguageService) symbolAndEntriesToRename(ctx context.Context, params * defer done() quotePreference := lsutil.GetQuotePreference(sourceFile, l.UserPreferences()) + useAliasesForRename := l.UserPreferences().UseAliasesForRename.IsTrueOrUnknown() for _, entry := range entries { uri := l.getFileNameOfEntry(entry) @@ -88,7 +89,7 @@ func (l *LanguageService) symbolAndEntriesToRename(ctx context.Context, params * } textEdit := &lsproto.TextEdit{ Range: l.getRangeOfEntry(entry), - NewText: l.getTextForRename(data.OriginalNode, entry, params.NewName, ch, quotePreference), + NewText: l.getTextForRename(data.OriginalNode, entry, params.NewName, ch, quotePreference, useAliasesForRename), } changes[uri] = append(changes[uri], textEdit) } @@ -186,7 +187,7 @@ func isDefinedInLibraryFile(program *compiler.Program, declaration *ast.Node) bo // wouldRenameInOtherNodeModules checks if renaming the symbol would affect node_modules. func wouldRenameInOtherNodeModules(originalFile *ast.SourceFile, symbol *ast.Symbol, ch *checker.Checker, preferences lsutil.UserPreferences) *diagnostics.Message { sym := symbol - if !preferences.UseAliasesForRename.IsTrue() && sym.Flags&ast.SymbolFlagsAlias != 0 { + if !preferences.UseAliasesForRename.IsTrueOrUnknown() && sym.Flags&ast.SymbolFlagsAlias != 0 { importSpecifier := core.Find(sym.Declarations, ast.IsImportSpecifier) if importSpecifier != nil && importSpecifier.AsImportSpecifier().PropertyName == nil { sym = ch.GetAliasedSymbol(sym) @@ -293,8 +294,8 @@ func (l *LanguageService) getNewFileNameForModuleRename(oldPath, specifierText, return newPath } -func (l *LanguageService) getTextForRename(originalNode *ast.Node, entry *ReferenceEntry, newText string, ch *checker.Checker, quotePreference lsutil.QuotePreference) string { - if entry.kind != entryKindRange && (ast.IsIdentifier(originalNode) || ast.IsStringLiteralLike(originalNode)) { +func (l *LanguageService) getTextForRename(originalNode *ast.Node, entry *ReferenceEntry, newText string, ch *checker.Checker, quotePreference lsutil.QuotePreference, useAliasesForRename bool) string { + if useAliasesForRename && entry.kind != entryKindRange && (ast.IsIdentifier(originalNode) || ast.IsStringLiteralLike(originalNode)) { node := ast.GetReparsedNodeForNode(entry.node) kind := entry.kind parent := node.Parent diff --git a/testdata/baselines/reference/fourslash/findRenameLocations/renameNamedImportUseAliasesForRenames.baseline.jsonc b/testdata/baselines/reference/fourslash/findRenameLocations/renameNamedImportUseAliasesForRenames.baseline.jsonc new file mode 100644 index 00000000000..76b66edf0ad --- /dev/null +++ b/testdata/baselines/reference/fourslash/findRenameLocations/renameNamedImportUseAliasesForRenames.baseline.jsonc @@ -0,0 +1,20 @@ +// === findRenameLocations === +// @useAliasesForRename: false + +// === /a.ts === +// import { /*RENAME*/[|MyTypeARENAME|] } from "./b"; +// const type: [|MyTypeARENAME|] = { foo: "bar" }; + +// === /b.ts === +// export interface [|MyTypeARENAME|] { +// foo: string; +// } + + + +// === findRenameLocations === +// @useAliasesForRename: true + +// === /a.ts === +// import { /*START PREFIX*/MyTypeA as /*RENAME*/[|MyTypeARENAME|] } from "./b"; +// const type: [|MyTypeARENAME|] = { foo: "bar" }; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/fourslash/findRenameLocations/findAllRefsPrefixSuffixPreference.baseline.jsonc b/testdata/baselines/reference/submodule/fourslash/findRenameLocations/findAllRefsPrefixSuffixPreference.baseline.jsonc index 5fe7d981bc7..2ddccfa5af2 100644 --- a/testdata/baselines/reference/submodule/fourslash/findRenameLocations/findAllRefsPrefixSuffixPreference.baseline.jsonc +++ b/testdata/baselines/reference/submodule/fourslash/findRenameLocations/findAllRefsPrefixSuffixPreference.baseline.jsonc @@ -59,13 +59,18 @@ // === /file1.ts === // declare function log(s: string | number): void; // const /*RENAME*/[|qRENAME|] = 1; -// export { [|qRENAME|] as q/*END SUFFIX*/ }; +// export { [|qRENAME|] }; // const x = { // z: 'value' // } // const { z } = x; // log(z); +// === /file2.ts === +// declare function log(s: string | number): void; +// import { [|qRENAME|] } from "./file1"; +// log([|qRENAME|] + 1); + // === findRenameLocations === @@ -73,8 +78,8 @@ // === /file1.ts === // declare function log(s: string | number): void; -// const q = 1; -// export { /*START PREFIX*/q as /*RENAME*/[|qRENAME|] }; +// const [|qRENAME|] = 1; +// export { /*RENAME*/[|qRENAME|] }; // const x = { // z: 'value' // } @@ -91,9 +96,19 @@ // === findRenameLocations === // @useAliasesForRename: false +// === /file1.ts === +// declare function log(s: string | number): void; +// const [|qRENAME|] = 1; +// export { [|qRENAME|] }; +// const x = { +// z: 'value' +// } +// const { z } = x; +// log(z); + // === /file2.ts === // declare function log(s: string | number): void; -// import { /*START PREFIX*/q as /*RENAME*/[|qRENAME|] } from "./file1"; +// import { /*RENAME*/[|qRENAME|] } from "./file1"; // log([|qRENAME|] + 1); @@ -101,9 +116,19 @@ // === findRenameLocations === // @useAliasesForRename: false +// === /file1.ts === +// declare function log(s: string | number): void; +// const [|qRENAME|] = 1; +// export { [|qRENAME|] }; +// const x = { +// z: 'value' +// } +// const { z } = x; +// log(z); + // === /file2.ts === // declare function log(s: string | number): void; -// import { /*START PREFIX*/q as [|qRENAME|] } from "./file1"; +// import { [|qRENAME|] } from "./file1"; // log(/*RENAME*/[|qRENAME|] + 1); @@ -159,8 +184,8 @@ // const x = { // /*RENAME*/[|zRENAME|]: 'value' // } -// const { [|zRENAME|]: z/*END SUFFIX*/ } = x; -// log(z); +// const { [|zRENAME|] } = x; +// log([|zRENAME|]); @@ -168,11 +193,13 @@ // @useAliasesForRename: false // === /file1.ts === -// --- (line: 3) skipped --- +// declare function log(s: string | number): void; +// const q = 1; +// export { q }; // const x = { -// z: 'value' +// [|zRENAME|]: 'value' // } -// const { /*START PREFIX*/z: /*RENAME*/[|zRENAME|] } = x; +// const { /*RENAME*/[|zRENAME|] } = x; // log([|zRENAME|]); @@ -181,9 +208,11 @@ // @useAliasesForRename: false // === /file1.ts === -// --- (line: 3) skipped --- +// declare function log(s: string | number): void; +// const q = 1; +// export { q }; // const x = { -// z: 'value' +// [|zRENAME|]: 'value' // } -// const { /*START PREFIX*/z: [|zRENAME|] } = x; +// const { [|zRENAME|] } = x; // log(/*RENAME*/[|zRENAME|]); \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/fourslash/findRenameLocations/findAllRefsPrefixSuffixPreference.baseline.jsonc.diff b/testdata/baselines/reference/submodule/fourslash/findRenameLocations/findAllRefsPrefixSuffixPreference.baseline.jsonc.diff index 5bb6cfc6b21..ecf75d90862 100644 --- a/testdata/baselines/reference/submodule/fourslash/findRenameLocations/findAllRefsPrefixSuffixPreference.baseline.jsonc.diff +++ b/testdata/baselines/reference/submodule/fourslash/findRenameLocations/findAllRefsPrefixSuffixPreference.baseline.jsonc.diff @@ -1,51 +1,24 @@ --- old.findAllRefsPrefixSuffixPreference.baseline.jsonc +++ new.findAllRefsPrefixSuffixPreference.baseline.jsonc -@@= skipped -58, +58 lines =@@ - // === /file1.ts === +@@= skipped -95, +95 lines =@@ + // === findRenameLocations === + // @useAliasesForRename: false + ++// === /file1.ts === ++// declare function log(s: string | number): void; ++// const [|qRENAME|] = 1; ++// export { [|qRENAME|] }; ++// const x = { ++// z: 'value' ++// } ++// const { z } = x; ++// log(z); ++ + // === /file2.ts === // declare function log(s: string | number): void; - // const /*RENAME*/[|qRENAME|] = 1; --// export { [|qRENAME|] }; --// const x = { --// z: 'value' --// } --// const { z } = x; --// log(z); -- --// === /file2.ts === --// declare function log(s: string | number): void; --// import { [|qRENAME|] } from "./file1"; --// log([|qRENAME|] + 1); -- -- -- --// === findRenameLocations === --// @useAliasesForRename: false -- --// === /file1.ts === --// declare function log(s: string | number): void; --// const [|qRENAME|] = 1; --// export { /*RENAME*/[|qRENAME|] }; --// const x = { --// z: 'value' --// } --// const { z } = x; --// log(z); -- --// === /file2.ts === --// declare function log(s: string | number): void; --// import { [|qRENAME|] } from "./file1"; --// log([|qRENAME|] + 1); -- -- -- --// === findRenameLocations === --// @useAliasesForRename: false -- --// === /file2.ts === --// declare function log(s: string | number): void; --// import { /*RENAME*/[|qRENAME|] } from "./file1"; --// log([|qRENAME|] + 1); -- + // import { /*RENAME*/[|qRENAME|] } from "./file1"; + // log([|qRENAME|] + 1); + -// === /file1.ts === -// declare function log(s: string | number): void; -// const [|qRENAME|] = 1; @@ -56,61 +29,26 @@ -// const { z } = x; -// log(z); - -- -- --// === findRenameLocations === --// @useAliasesForRename: false -- --// === /file2.ts === --// declare function log(s: string | number): void; --// import { [|qRENAME|] } from "./file1"; -+// export { [|qRENAME|] as q/*END SUFFIX*/ }; -+// const x = { -+// z: 'value' -+// } -+// const { z } = x; -+// log(z); -+ -+ -+ -+// === findRenameLocations === -+// @useAliasesForRename: false -+ + + + // === findRenameLocations === + // @useAliasesForRename: false + +// === /file1.ts === +// declare function log(s: string | number): void; -+// const q = 1; -+// export { /*START PREFIX*/q as /*RENAME*/[|qRENAME|] }; ++// const [|qRENAME|] = 1; ++// export { [|qRENAME|] }; +// const x = { +// z: 'value' +// } +// const { z } = x; +// log(z); + -+// === /file2.ts === -+// declare function log(s: string | number): void; -+// import { [|qRENAME|] } from "./file1"; -+// log([|qRENAME|] + 1); -+ -+ -+ -+// === findRenameLocations === -+// @useAliasesForRename: false -+ -+// === /file2.ts === -+// declare function log(s: string | number): void; -+// import { /*START PREFIX*/q as /*RENAME*/[|qRENAME|] } from "./file1"; -+// log([|qRENAME|] + 1); -+ -+ -+ -+// === findRenameLocations === -+// @useAliasesForRename: false -+ -+// === /file2.ts === -+// declare function log(s: string | number): void; -+// import { /*START PREFIX*/q as [|qRENAME|] } from "./file1"; + // === /file2.ts === + // declare function log(s: string | number): void; + // import { [|qRENAME|] } from "./file1"; // log(/*RENAME*/[|qRENAME|] + 1); - +- -// === /file1.ts === -// declare function log(s: string | number): void; -// const [|qRENAME|] = 1; @@ -120,70 +58,5 @@ -// } -// const { z } = x; -// log(z); -- - // === findRenameLocations === -@@= skipped -125, +100 lines =@@ - // const x = { - // /*RENAME*/[|zRENAME|]: 'value' - // } --// const { [|zRENAME|] } = x; --// log([|zRENAME|]); -- -- -- --// === findRenameLocations === --// @useAliasesForRename: false -- --// === /file1.ts === --// declare function log(s: string | number): void; --// const q = 1; --// export { q }; --// const x = { --// [|zRENAME|]: 'value' --// } --// const { /*RENAME*/[|zRENAME|] } = x; --// log([|zRENAME|]); -- -- -- --// === findRenameLocations === --// @useAliasesForRename: false -- --// === /file1.ts === --// declare function log(s: string | number): void; --// const q = 1; --// export { q }; --// const x = { --// [|zRENAME|]: 'value' --// } --// const { [|zRENAME|] } = x; -+// const { [|zRENAME|]: z/*END SUFFIX*/ } = x; -+// log(z); -+ -+ -+ -+// === findRenameLocations === -+// @useAliasesForRename: false -+ -+// === /file1.ts === -+// --- (line: 3) skipped --- -+// const x = { -+// z: 'value' -+// } -+// const { /*START PREFIX*/z: /*RENAME*/[|zRENAME|] } = x; -+// log([|zRENAME|]); -+ -+ -+ -+// === findRenameLocations === -+// @useAliasesForRename: false -+ -+// === /file1.ts === -+// --- (line: 3) skipped --- -+// const x = { -+// z: 'value' -+// } -+// const { /*START PREFIX*/z: [|zRENAME|] } = x; - // log(/*RENAME*/[|zRENAME|]); \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/fourslash/findRenameLocations/findAllRefsReExportsUseInImportType.baseline.jsonc b/testdata/baselines/reference/submodule/fourslash/findRenameLocations/findAllRefsReExportsUseInImportType.baseline.jsonc index 5a8fb51b708..11d0ec9dcee 100644 --- a/testdata/baselines/reference/submodule/fourslash/findRenameLocations/findAllRefsReExportsUseInImportType.baseline.jsonc +++ b/testdata/baselines/reference/submodule/fourslash/findRenameLocations/findAllRefsReExportsUseInImportType.baseline.jsonc @@ -89,10 +89,14 @@ // @useAliasesForRename: false // === /app.ts === -// import { /*START PREFIX*/foo as /*RENAME*/[|fooRENAME|] } from './foo/types'; +// import { /*RENAME*/[|fooRENAME|] } from './foo/types'; // export type fullType = [|fooRENAME|].Full; // type namespaceImport = typeof import('./foo/types'); -// type fullType2 = import('./foo/types').foo.Full; +// type fullType2 = import('./foo/types').[|fooRENAME|].Full; + +// === /foo/types/index.ts === +// import * as [|fooRENAME|] from './types'; +// export { [|fooRENAME|] }; @@ -100,10 +104,14 @@ // @useAliasesForRename: false // === /app.ts === -// import { /*START PREFIX*/foo as [|fooRENAME|] } from './foo/types'; +// import { [|fooRENAME|] } from './foo/types'; // export type fullType = /*RENAME*/[|fooRENAME|].Full; // type namespaceImport = typeof import('./foo/types'); -// type fullType2 = import('./foo/types').foo.Full; +// type fullType2 = import('./foo/types').[|fooRENAME|].Full; + +// === /foo/types/index.ts === +// import * as [|fooRENAME|] from './types'; +// export { [|fooRENAME|] }; @@ -117,17 +125,23 @@ // type fullType2 = import('./foo/types')./*RENAME*/[|fooRENAME|].Full; // === /foo/types/index.ts === -// import * as foo from './types'; -// export { /*START PREFIX*/foo as [|fooRENAME|] }; +// import * as [|fooRENAME|] from './types'; +// export { [|fooRENAME|] }; // === findRenameLocations === // @useAliasesForRename: false +// === /app.ts === +// import { [|fooRENAME|] } from './foo/types'; +// export type fullType = [|fooRENAME|].Full; +// type namespaceImport = typeof import('./foo/types'); +// type fullType2 = import('./foo/types').[|fooRENAME|].Full; + // === /foo/types/index.ts === // import * as /*RENAME*/[|fooRENAME|] from './types'; -// export { [|fooRENAME|] as foo/*END SUFFIX*/ }; +// export { [|fooRENAME|] }; @@ -141,5 +155,5 @@ // type fullType2 = import('./foo/types').[|fooRENAME|].Full; // === /foo/types/index.ts === -// import * as foo from './types'; -// export { /*START PREFIX*/foo as /*RENAME*/[|fooRENAME|] }; \ No newline at end of file +// import * as [|fooRENAME|] from './types'; +// export { /*RENAME*/[|fooRENAME|] }; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/fourslash/findRenameLocations/findAllRefsReExportsUseInImportType.baseline.jsonc.diff b/testdata/baselines/reference/submodule/fourslash/findRenameLocations/findAllRefsReExportsUseInImportType.baseline.jsonc.diff index 4a58f402efd..601dee87fc6 100644 --- a/testdata/baselines/reference/submodule/fourslash/findRenameLocations/findAllRefsReExportsUseInImportType.baseline.jsonc.diff +++ b/testdata/baselines/reference/submodule/fourslash/findRenameLocations/findAllRefsReExportsUseInImportType.baseline.jsonc.diff @@ -44,242 +44,108 @@ // type namespaceImport = typeof import('./foo/types'); // type fullType2 = import('./foo/types').foo./*RENAME*/[|FullRENAME|]; -- -- --// === findRenameLocations === --// === /foo/types/index.ts === --// import * as /*RENAME*/[|fooRENAME|] from './types'; --// export { [|fooRENAME|] as foo/*END SUFFIX*/ }; -- -- -- --// === findRenameLocations === --// === /foo/types/index.ts === --// import * as foo from './types'; --// export { /*START PREFIX*/foo as /*RENAME*/[|fooRENAME|] }; -- --// === /app.ts === --// import { [|fooRENAME|] } from './foo/types'; --// export type fullType = [|fooRENAME|].Full; --// type namespaceImport = typeof import('./foo/types'); ++// === /foo/types/types.ts === ++// export type [|FullRENAME|] = { prop: string; }; ++ + + + // === findRenameLocations === +@@= skipped -41, +41 lines =@@ + + + // === findRenameLocations === ++// === /app.ts === ++// import { [|fooRENAME|] } from './foo/types'; ++// export type fullType = [|fooRENAME|].Full; ++// type namespaceImport = typeof import('./foo/types'); ++// type fullType2 = import('./foo/types').[|fooRENAME|].Full; ++ + // === /foo/types/index.ts === + // import * as foo from './types'; + // export { /*START PREFIX*/foo as /*RENAME*/[|fooRENAME|] }; + ++ ++ ++// === findRenameLocations === + // === /app.ts === + // import { [|fooRENAME|] } from './foo/types'; + // export type fullType = [|fooRENAME|].Full; + // type namespaceImport = typeof import('./foo/types'); -// type fullType2 = import('./foo/types').[|fooRENAME|].Full; - - - -// === findRenameLocations === --// === /foo/types/index.ts === --// import * as foo from './types'; --// export { /*START PREFIX*/foo as [|fooRENAME|] }; -- ++// type fullType2 = import('./foo/types')./*RENAME*/[|fooRENAME|].Full; ++ + // === /foo/types/index.ts === + // import * as foo from './types'; + // export { /*START PREFIX*/foo as [|fooRENAME|] }; + -// === /app.ts === -// import { [|fooRENAME|] } from './foo/types'; -// export type fullType = [|fooRENAME|].Full; -// type namespaceImport = typeof import('./foo/types'); -// type fullType2 = import('./foo/types')./*RENAME*/[|fooRENAME|].Full; - -- -- --// === findRenameLocations === --// === /app.ts === --// import { /*START PREFIX*/foo as /*RENAME*/[|fooRENAME|] } from './foo/types'; --// export type fullType = [|fooRENAME|].Full; --// type namespaceImport = typeof import('./foo/types'); --// type fullType2 = import('./foo/types').foo.Full; -- -- -- --// === findRenameLocations === --// === /app.ts === --// import { /*START PREFIX*/foo as [|fooRENAME|] } from './foo/types'; --// export type fullType = /*RENAME*/[|fooRENAME|].Full; --// type namespaceImport = typeof import('./foo/types'); --// type fullType2 = import('./foo/types').foo.Full; -- -- -- --// === findRenameLocations === --// @useAliasesForRename: false -- --// === /app.ts === --// import { /*RENAME*/[|fooRENAME|] } from './foo/types'; --// export type fullType = [|fooRENAME|].Full; --// type namespaceImport = typeof import('./foo/types'); --// type fullType2 = import('./foo/types').[|fooRENAME|].Full; -- --// === /foo/types/index.ts === --// import * as [|fooRENAME|] from './types'; --// export { [|fooRENAME|] }; -- -- -- --// === findRenameLocations === --// @useAliasesForRename: false -- --// === /app.ts === --// import { [|fooRENAME|] } from './foo/types'; --// export type fullType = /*RENAME*/[|fooRENAME|].Full; --// type namespaceImport = typeof import('./foo/types'); --// type fullType2 = import('./foo/types').[|fooRENAME|].Full; -- --// === /foo/types/index.ts === --// import * as [|fooRENAME|] from './types'; --// export { [|fooRENAME|] }; -- -- -- --// === findRenameLocations === --// @useAliasesForRename: false -- + + + // === findRenameLocations === +@@= skipped -76, +76 lines =@@ + // === findRenameLocations === + // @useAliasesForRename: false + -// === /foo/types/index.ts === -// import * as [|fooRENAME|] from './types'; -// export { [|fooRENAME|] }; - --// === /app.ts === --// import { [|fooRENAME|] } from './foo/types'; --// export type fullType = [|fooRENAME|].Full; --// type namespaceImport = typeof import('./foo/types'); --// type fullType2 = import('./foo/types')./*RENAME*/[|fooRENAME|].Full; -- -- -- --// === findRenameLocations === --// @useAliasesForRename: false -- --// === /foo/types/index.ts === --// import * as /*RENAME*/[|fooRENAME|] from './types'; --// export { [|fooRENAME|] }; -- --// === /app.ts === --// import { [|fooRENAME|] } from './foo/types'; --// export type fullType = [|fooRENAME|].Full; --// type namespaceImport = typeof import('./foo/types'); --// type fullType2 = import('./foo/types').[|fooRENAME|].Full; -- -- -- --// === findRenameLocations === --// @useAliasesForRename: false -- --// === /foo/types/index.ts === --// import * as [|fooRENAME|] from './types'; --// export { /*RENAME*/[|fooRENAME|] }; -- --// === /app.ts === --// import { [|fooRENAME|] } from './foo/types'; --// export type fullType = [|fooRENAME|].Full; --// type namespaceImport = typeof import('./foo/types'); --// type fullType2 = import('./foo/types').[|fooRENAME|].Full; -+// === /foo/types/types.ts === -+// export type [|FullRENAME|] = { prop: string; }; -+ -+ -+ -+// === findRenameLocations === + // === /app.ts === + // import { [|fooRENAME|] } from './foo/types'; + // export type fullType = [|fooRENAME|].Full; + // type namespaceImport = typeof import('./foo/types'); + // type fullType2 = import('./foo/types')./*RENAME*/[|fooRENAME|].Full; + +// === /foo/types/index.ts === -+// import * as /*RENAME*/[|fooRENAME|] from './types'; -+// export { [|fooRENAME|] as foo/*END SUFFIX*/ }; -+ ++// import * as [|fooRENAME|] from './types'; ++// export { [|fooRENAME|] }; + + + + // === findRenameLocations === + // @useAliasesForRename: false + -+// === findRenameLocations === +// === /app.ts === +// import { [|fooRENAME|] } from './foo/types'; +// export type fullType = [|fooRENAME|].Full; +// type namespaceImport = typeof import('./foo/types'); +// type fullType2 = import('./foo/types').[|fooRENAME|].Full; -+ -+// === /foo/types/index.ts === -+// import * as foo from './types'; -+// export { /*START PREFIX*/foo as /*RENAME*/[|fooRENAME|] }; -+ -+ -+ -+// === findRenameLocations === -+// === /app.ts === -+// import { [|fooRENAME|] } from './foo/types'; -+// export type fullType = [|fooRENAME|].Full; -+// type namespaceImport = typeof import('./foo/types'); -+// type fullType2 = import('./foo/types')./*RENAME*/[|fooRENAME|].Full; -+ -+// === /foo/types/index.ts === -+// import * as foo from './types'; -+// export { /*START PREFIX*/foo as [|fooRENAME|] }; -+ -+ -+ -+// === findRenameLocations === -+// === /app.ts === -+// import { /*START PREFIX*/foo as /*RENAME*/[|fooRENAME|] } from './foo/types'; -+// export type fullType = [|fooRENAME|].Full; -+// type namespaceImport = typeof import('./foo/types'); -+// type fullType2 = import('./foo/types').foo.Full; -+ -+ -+ -+// === findRenameLocations === -+// === /app.ts === -+// import { /*START PREFIX*/foo as [|fooRENAME|] } from './foo/types'; -+// export type fullType = /*RENAME*/[|fooRENAME|].Full; -+// type namespaceImport = typeof import('./foo/types'); -+// type fullType2 = import('./foo/types').foo.Full; -+ -+ -+ -+// === findRenameLocations === -+// @useAliasesForRename: false -+ -+// === /app.ts === -+// import { /*START PREFIX*/foo as /*RENAME*/[|fooRENAME|] } from './foo/types'; -+// export type fullType = [|fooRENAME|].Full; -+// type namespaceImport = typeof import('./foo/types'); -+// type fullType2 = import('./foo/types').foo.Full; -+ -+ -+ -+// === findRenameLocations === -+// @useAliasesForRename: false -+ -+// === /app.ts === -+// import { /*START PREFIX*/foo as [|fooRENAME|] } from './foo/types'; -+// export type fullType = /*RENAME*/[|fooRENAME|].Full; -+// type namespaceImport = typeof import('./foo/types'); -+// type fullType2 = import('./foo/types').foo.Full; -+ -+ -+ -+// === findRenameLocations === -+// @useAliasesForRename: false -+ -+// === /app.ts === -+// import { [|fooRENAME|] } from './foo/types'; -+// export type fullType = [|fooRENAME|].Full; -+// type namespaceImport = typeof import('./foo/types'); -+// type fullType2 = import('./foo/types')./*RENAME*/[|fooRENAME|].Full; -+ -+// === /foo/types/index.ts === -+// import * as foo from './types'; -+// export { /*START PREFIX*/foo as [|fooRENAME|] }; -+ -+ -+ -+// === findRenameLocations === -+// @useAliasesForRename: false -+ -+// === /foo/types/index.ts === -+// import * as /*RENAME*/[|fooRENAME|] from './types'; -+// export { [|fooRENAME|] as foo/*END SUFFIX*/ }; -+ + + // === /foo/types/index.ts === + // import * as /*RENAME*/[|fooRENAME|] from './types'; + // export { [|fooRENAME|] }; + + + +// === findRenameLocations === +// @useAliasesForRename: false + -+// === /app.ts === -+// import { [|fooRENAME|] } from './foo/types'; -+// export type fullType = [|fooRENAME|].Full; -+// type namespaceImport = typeof import('./foo/types'); -+// type fullType2 = import('./foo/types').[|fooRENAME|].Full; -+ -+// === /foo/types/index.ts === -+// import * as foo from './types'; -+// export { /*START PREFIX*/foo as /*RENAME*/[|fooRENAME|] }; \ No newline at end of file + // === /app.ts === + // import { [|fooRENAME|] } from './foo/types'; + // export type fullType = [|fooRENAME|].Full; + // type namespaceImport = typeof import('./foo/types'); + // type fullType2 = import('./foo/types').[|fooRENAME|].Full; +- +- +- +-// === findRenameLocations === +-// @useAliasesForRename: false + + // === /foo/types/index.ts === + // import * as [|fooRENAME|] from './types'; + // export { /*RENAME*/[|fooRENAME|] }; +- +-// === /app.ts === +-// import { [|fooRENAME|] } from './foo/types'; +-// export type fullType = [|fooRENAME|].Full; +-// type namespaceImport = typeof import('./foo/types'); +-// type fullType2 = import('./foo/types').[|fooRENAME|].Full; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/fourslash/findRenameLocations/renameExportSpecifier2.baseline.jsonc b/testdata/baselines/reference/submodule/fourslash/findRenameLocations/renameExportSpecifier2.baseline.jsonc index 0b1ead83bf4..81b791eafa2 100644 --- a/testdata/baselines/reference/submodule/fourslash/findRenameLocations/renameExportSpecifier2.baseline.jsonc +++ b/testdata/baselines/reference/submodule/fourslash/findRenameLocations/renameExportSpecifier2.baseline.jsonc @@ -2,8 +2,8 @@ // @useAliasesForRename: false // === /a.ts === -// const name = {}; -// export { /*START PREFIX*/name as [|nameRENAME|]/*RENAME*/ }; +// const [|nameRENAME|] = {}; +// export { [|nameRENAME|]/*RENAME*/ }; // === /b.ts === // import { [|nameRENAME|] } from './a'; diff --git a/testdata/baselines/reference/submodule/fourslash/findRenameLocations/renameExportSpecifier2.baseline.jsonc.diff b/testdata/baselines/reference/submodule/fourslash/findRenameLocations/renameExportSpecifier2.baseline.jsonc.diff deleted file mode 100644 index b17ced5c571..00000000000 --- a/testdata/baselines/reference/submodule/fourslash/findRenameLocations/renameExportSpecifier2.baseline.jsonc.diff +++ /dev/null @@ -1,13 +0,0 @@ ---- old.renameExportSpecifier2.baseline.jsonc -+++ new.renameExportSpecifier2.baseline.jsonc -@@= skipped -1, +1 lines =@@ - // @useAliasesForRename: false - - // === /a.ts === --// const [|nameRENAME|] = {}; --// export { [|nameRENAME|]/*RENAME*/ }; -+// const name = {}; -+// export { /*START PREFIX*/name as [|nameRENAME|]/*RENAME*/ }; - - // === /b.ts === - // import { [|nameRENAME|] } from './a'; \ No newline at end of file