[PATCH] D101515: clang-format: [JS] handle "off" in imports

Krasimir Georgiev via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Thu Apr 29 14:18:07 PDT 2021


krasimir added inline comments.


================
Comment at: clang/lib/Format/SortJavaScriptImports.cpp:158
     std::string ReferencesText;
-    bool SymbolsInOrder = true;
-    for (unsigned i = 0, e = Indices.size(); i != e; ++i) {
-      JsModuleReference Reference = References[Indices[i]];
-      if (appendReference(ReferencesText, Reference))
-        SymbolsInOrder = false;
+    for (unsigned i = 0, e = References.size(); i != e; ++i) {
+      JsModuleReference Reference = References[i];
----------------
nit: capitalize, `I`, `E` (:


================
Comment at: clang/lib/Format/SortJavaScriptImports.cpp:191
+        !(FirstNonImportLine->First->is(tok::comment) &&
+          FirstNonImportLine->First->TokenText.trim() == "// clang-format on"))
       ReferencesText += "\n";
----------------
note that we generally also support `/* clang-format off/on */`: https://github.com/llvm/llvm-project/blob/aaf026d9da3885a951dcdc5edd64c8e7d23b6285/clang/lib/Format/Format.cpp#L2390


================
Comment at: clang/lib/Format/SortJavaScriptImports.cpp:251
+  // references that have formatting enabled in individual chunks.
+  SmallVector<JsModuleReference, 16>
+  sortModuleReferences(SmallVector<JsModuleReference, 16> &References) {
----------------
We should pass in and return `llvm::SmallVectorImpl<JsModuleReference>` (the size version is mainly for local vars). Also, take the arg by `const` reference.


================
Comment at: clang/lib/Format/SortJavaScriptImports.cpp:257
+    // references per group.
+    auto *start = References.begin();
+    SmallVector<JsModuleReference, 16> ReferencesSorted;
----------------
h-joo wrote:
> nit : `Start`
nit: `Start`


================
Comment at: clang/lib/Format/SortJavaScriptImports.cpp:288
+  // longer needed references).
+  void mergeModuleReferences(SmallVector<JsModuleReference, 16> &References) {
+    if (References.empty())
----------------
use `llvm::SmallVectorImpl<JsModuleReference>`


================
Comment at: clang/unittests/Format/SortImportsTestJS.cpp:362
+             "\n"
+             "export {B} from 'foo';\n",
              "import {A} from 'foo';\n"
----------------
Was this change intended? It doesn't seem related to this patch.


================
Comment at: clang/unittests/Format/SortImportsTestJS.cpp:385
+             "import {A} from './a';\n"
+             "// clang-format on\n");
+
----------------
can we have a test that checks that we don't merge import lines in an off section


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D101515/new/

https://reviews.llvm.org/D101515



More information about the cfe-commits mailing list