diff options
| author | Martin Probst <martin@probst.io> | 2016-07-09 15:11:18 +0000 |
|---|---|---|
| committer | Martin Probst <martin@probst.io> | 2016-07-09 15:11:18 +0000 |
| commit | 2a19454a86fcd24ce7b5d5cbd76f0283737fd827 (patch) | |
| tree | 7666f12e8a7c2340027cd3bf98bc402d03ca540b /clang | |
| parent | a8c9d154b81e755e9a7181d9fded24de587b2473 (diff) | |
| download | bcm5719-llvm-2a19454a86fcd24ce7b5d5cbd76f0283737fd827.tar.gz bcm5719-llvm-2a19454a86fcd24ce7b5d5cbd76f0283737fd827.zip | |
clang-format: [JS] Sort imports case insensitive.
Summary: ASCII case sorting does not help finding imported symbols quickly, and it is common to have e.g. class Foo and function fooFactory exported/imported from the same file.
Reviewers: djasper
Subscribers: klimek, cfe-commits
Differential Revision: http://reviews.llvm.org/D22146
llvm-svn: 274977
Diffstat (limited to 'clang')
| -rw-r--r-- | clang/lib/Format/SortJavaScriptImports.cpp | 6 | ||||
| -rw-r--r-- | clang/unittests/Format/SortImportsTestJS.cpp | 21 |
2 files changed, 24 insertions, 3 deletions
diff --git a/clang/lib/Format/SortJavaScriptImports.cpp b/clang/lib/Format/SortJavaScriptImports.cpp index 8010e4914f0..32d5d756a3f 100644 --- a/clang/lib/Format/SortJavaScriptImports.cpp +++ b/clang/lib/Format/SortJavaScriptImports.cpp @@ -105,8 +105,8 @@ bool operator<(const JsModuleReference &LHS, const JsModuleReference &RHS) { // Empty URLs sort *last* (for export {...};). if (LHS.URL.empty() != RHS.URL.empty()) return LHS.URL.empty() < RHS.URL.empty(); - if (LHS.URL != RHS.URL) - return LHS.URL < RHS.URL; + if (int Res = LHS.URL.compare_lower(RHS.URL)) + return Res < 0; // '*' imports (with prefix) sort before {a, b, ...} imports. if (LHS.Prefix.empty() != RHS.Prefix.empty()) return LHS.Prefix.empty() < RHS.Prefix.empty(); @@ -245,7 +245,7 @@ private: std::stable_sort( Symbols.begin(), Symbols.end(), [&](const JsImportedSymbol &LHS, const JsImportedSymbol &RHS) { - return LHS.Symbol < RHS.Symbol; + return LHS.Symbol.compare_lower(RHS.Symbol) < 0; }); if (Symbols == Reference.Symbols) { // No change in symbol order. diff --git a/clang/unittests/Format/SortImportsTestJS.cpp b/clang/unittests/Format/SortImportsTestJS.cpp index 769fa793da3..e6b5273f7b1 100644 --- a/clang/unittests/Format/SortImportsTestJS.cpp +++ b/clang/unittests/Format/SortImportsTestJS.cpp @@ -240,6 +240,27 @@ TEST_F(SortImportsTestJS, TrailingComma) { verifySort("import {A, B,} from 'aa';\n", "import {B, A,} from 'aa';\n"); } +TEST_F(SortImportsTestJS, SortCaseInsensitive) { + verifySort("import {A} from 'aa';\n" + "import {A} from 'Ab';\n" + "import {A} from 'b';\n" + "import {A} from 'Bc';\n" + "\n" + "1;", + "import {A} from 'b';\n" + "import {A} from 'Bc';\n" + "import {A} from 'Ab';\n" + "import {A} from 'aa';\n" + "\n" + "1;"); + verifySort("import {aa, Ab, b, Bc} from 'x';\n" + "\n" + "1;", + "import {b, Bc, Ab, aa} from 'x';\n" + "\n" + "1;"); +} + } // end namespace } // end namespace format } // end namespace clang |

