]> granicus.if.org Git - clang/commitdiff
clang-format: [JS] Fix formatting of generator functions.
authorDaniel Jasper <djasper@google.com>
Tue, 1 Nov 2016 06:22:59 +0000 (06:22 +0000)
committerDaniel Jasper <djasper@google.com>
Tue, 1 Nov 2016 06:22:59 +0000 (06:22 +0000)
Before:
  var x = {
    a: function*
() {
  //
}
  }

After:
  var x = {
    a: function*() {
      //
    }
  }

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@285670 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Format/TokenAnnotator.cpp
lib/Format/UnwrappedLineParser.cpp
unittests/Format/FormatTestJS.cpp

index bd55e114a684983aade18d0d78a2116743cf75c7..5a0d592a1457b5654c4f8354855e6d664423579f 100644 (file)
@@ -859,7 +859,8 @@ private:
     if (!CurrentToken->isOneOf(TT_LambdaLSquare, TT_ForEachMacro,
                                TT_FunctionLBrace, TT_ImplicitStringLiteral,
                                TT_InlineASMBrace, TT_JsFatArrow, TT_LambdaArrow,
-                               TT_RegexLiteral, TT_TemplateString))
+                               TT_OverloadedOperator, TT_RegexLiteral,
+                               TT_TemplateString))
       CurrentToken->Type = TT_Unknown;
     CurrentToken->Role.reset();
     CurrentToken->MatchingParen = nullptr;
index 42bee8c72fd4f3308e17a0982d61c3d3a205828f..f38cfa999e2edb0db08723ba3f5ad4a98c5b1542 100644 (file)
@@ -1230,9 +1230,11 @@ void UnwrappedLineParser::tryToParseJSFunction() {
   // Consume "function".
   nextToken();
 
-  // Consume * (generator function).
-  if (FormatTok->is(tok::star))
+  // Consume * (generator function). Treat it like C++'s overloaded operators.
+  if (FormatTok->is(tok::star)) {
+    FormatTok->Type = TT_OverloadedOperator;
     nextToken();
+  }
 
   // Consume function name.
   if (FormatTok->is(tok::identifier))
index 71d09db7c071f9d92b0e703a1f2d5052c29aa434..846abaffebffd072b56bfcfd88fbe77da44de550 100644 (file)
@@ -384,6 +384,11 @@ TEST_F(FormatTestJS, GeneratorFunctions) {
                "    yield x;\n"
                "  }\n"
                "}");
+  verifyFormat("var x = {\n"
+               "  a: function*() {\n"
+               "    //\n"
+               "  }\n"
+               "}\n");
 }
 
 TEST_F(FormatTestJS, AsyncFunctions) {