diff --git a/clang/lib/Format/SortJavaScriptImports.cpp b/clang/lib/Format/SortJavaScriptImports.cpp --- a/clang/lib/Format/SortJavaScriptImports.cpp +++ b/clang/lib/Format/SortJavaScriptImports.cpp @@ -517,7 +517,7 @@ } // eat a potential "import X, " prefix. - if (Current->is(tok::identifier)) { + if (!Reference.IsExport && Current->is(tok::identifier)) { Reference.DefaultImport = Current->TokenText; nextToken(); if (Current->is(Keywords.kw_from)) diff --git a/clang/unittests/Format/SortImportsTestJS.cpp b/clang/unittests/Format/SortImportsTestJS.cpp --- a/clang/unittests/Format/SortImportsTestJS.cpp +++ b/clang/unittests/Format/SortImportsTestJS.cpp @@ -503,6 +503,15 @@ verifySort("export {A, type B} from 'foo';\n", "export {A} from 'foo';\n" "export {type B} from 'foo';"); + + // `export type X = Y;` should terminate import sorting. The following export + // statements should therefore not merge. + verifySort("export type A = B;\n" + "export {X};\n" + "export {Y};\n", + "export type A = B;\n" + "export {X};\n" + "export {Y};\n"); } } // end namespace