Author: Martin Probst Date: 2021-04-22T10:36:47+02:00 New Revision: fbc6f42dbee5d1d4ced30f520418c2b62942845a
URL: https://github.com/llvm/llvm-project/commit/fbc6f42dbee5d1d4ced30f520418c2b62942845a DIFF: https://github.com/llvm/llvm-project/commit/fbc6f42dbee5d1d4ced30f520418c2b62942845a.diff LOG: clang-format: [JS] do not merge side-effect imports. The if condition was testing the current element, but forgot to check the previous element (doh), so it would fail depending on sort order of the imports. Differential Revision: https://reviews.llvm.org/D101020 Added: Modified: clang/lib/Format/SortJavaScriptImports.cpp clang/unittests/Format/SortImportsTestJS.cpp Removed: ################################################################################ diff --git a/clang/lib/Format/SortJavaScriptImports.cpp b/clang/lib/Format/SortJavaScriptImports.cpp index a6a706f15f281..ca83f1926f6ce 100644 --- a/clang/lib/Format/SortJavaScriptImports.cpp +++ b/clang/lib/Format/SortJavaScriptImports.cpp @@ -271,6 +271,7 @@ class JavaScriptImportSorter : public TokenAnalyzer { // import Default from 'foo'; on either previous or this. // mismatching if (Reference->Category == JsModuleReference::SIDE_EFFECT || + PreviousReference->Category == JsModuleReference::SIDE_EFFECT || Reference->IsExport != PreviousReference->IsExport || !PreviousReference->Prefix.empty() || !Reference->Prefix.empty() || !PreviousReference->DefaultImport.empty() || diff --git a/clang/unittests/Format/SortImportsTestJS.cpp b/clang/unittests/Format/SortImportsTestJS.cpp index 784238ef6ce7c..7e7669c0ab51d 100644 --- a/clang/unittests/Format/SortImportsTestJS.cpp +++ b/clang/unittests/Format/SortImportsTestJS.cpp @@ -364,6 +364,13 @@ TEST_F(SortImportsTestJS, MergeImports) { // do merge exports verifySort("export {A, B} from 'foo';\n", "export {A} from 'foo';\n" "export {B} from 'foo';"); + + // do not merge side effect imports with named ones + verifySort("import './a';\n" + "\n" + "import {bar} from './a';\n", + "import {bar} from './a';\n" + "import './a';\n"); } } // end namespace _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits