clang-format: [JS] Understand object literals with only methods.
authorDaniel Jasper <djasper@google.com>
Sat, 4 Apr 2015 07:56:55 +0000 (07:56 +0000)
committerDaniel Jasper <djasper@google.com>
Sat, 4 Apr 2015 07:56:55 +0000 (07:56 +0000)
Before:
  let theObject = {someMethodName() {
    doTheThing();
    doTheOtherThing();
  },
                   someOtherMethodName() {
                     doSomething();
                     doSomethingElse();
                   }};

After:
  let theObject = {
    someMethodName() {
      doTheThing();
      doTheOtherThing();
    },
    someOtherMethodName() {
      doSomething();
      doSomethingElse();
    }
  };

llvm-svn: 234091

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

index e0da80c..25c309a 100644 (file)
@@ -342,7 +342,8 @@ private:
                Style.Language == FormatStyle::LK_Proto) &&
               Previous->is(tok::identifier))
             Previous->Type = TT_SelectorName;
-          if (CurrentToken->is(tok::colon))
+          if (CurrentToken->is(tok::colon) ||
+              Style.Language == FormatStyle::LK_JavaScript)
             Left->Type = TT_DictLiteral;
         }
         if (!consumeToken())
index 0074472..35727eb 100644 (file)
@@ -163,6 +163,14 @@ TEST_F(FormatTestJS, MethodsInObjectLiterals) {
                "    doSomething(this.value + val);\n"
                "  }\n"
                "};");
+  verifyFormat("var o = {\n"
+               "  someMethod(val) {  // method\n"
+               "    doSomething(this.value + val);\n"
+               "  },\n"
+               "  someOtherMethod(val) {  // method\n"
+               "    doSomething(this.value + val);\n"
+               "  }\n"
+               "};");
 }
 
 TEST_F(FormatTestJS, SpacesInContainerLiterals) {