[PATCH] D29635: clang-format: [JS] handle parenthesized class expressions.

Martin Probst via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Tue Feb 7 05:49:16 PST 2017


mprobst created this revision.
Herald added a subscriber: klimek.

In JavaScript, classes are expressions, so they can appear e.g. in
argument lists.

  var C = foo(class {
    bar() {
      return 1;
    }
  };


https://reviews.llvm.org/D29635

Files:
  lib/Format/UnwrappedLineParser.cpp
  unittests/Format/FormatTestJS.cpp


Index: unittests/Format/FormatTestJS.cpp
===================================================================
--- unittests/Format/FormatTestJS.cpp
+++ unittests/Format/FormatTestJS.cpp
@@ -1109,6 +1109,10 @@
   verifyFormat("class C {\n  static x(): string {\n    return 'asd';\n  }\n}");
   verifyFormat("class C extends P implements I {}");
   verifyFormat("class C extends p.P implements i.I {}");
+  verifyFormat(
+      "x(class {\n"
+      "  a(): A {}\n"
+      "});");
   verifyFormat("class Test {\n"
                "  aaaaaaaaaaaaaaaa(aaaaaaaaaaaaaaa: aaaaaaaaaaaaaaaaaaaa):\n"
                "      aaaaaaaaaaaaaaaaaaaaaa {}\n"
Index: lib/Format/UnwrappedLineParser.cpp
===================================================================
--- lib/Format/UnwrappedLineParser.cpp
+++ lib/Format/UnwrappedLineParser.cpp
@@ -1381,6 +1381,14 @@
       if (FormatTok->Tok.is(tok::l_brace))
         parseBracedList();
       break;
+    case tok::kw_class:
+      if (Style.Language == FormatStyle::LK_JavaScript) {
+        parseRecord();
+        addUnwrappedLine();
+      } else {
+        nextToken();
+      }
+      break;
     case tok::identifier:
       if (Style.Language == FormatStyle::LK_JavaScript &&
           (FormatTok->is(Keywords.kw_function) ||


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D29635.87405.patch
Type: text/x-patch
Size: 1273 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20170207/08ccbd05/attachment.bin>


More information about the cfe-commits mailing list