]> granicus.if.org Git - clang/commitdiff
clang-format: [JS] Fix a crash in handledTemplateStrings.
authorDaniel Jasper <djasper@google.com>
Sat, 17 Sep 2016 07:20:36 +0000 (07:20 +0000)
committerDaniel Jasper <djasper@google.com>
Sat, 17 Sep 2016 07:20:36 +0000 (07:20 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@281816 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Format/FormatTokenLexer.cpp
unittests/Format/FormatTestJS.cpp

index 8c795fb4d6d8f96c9048c07cc90382d01956a6d3..c9670aeff66258442c166aef16df80247138b759 100644 (file)
@@ -235,6 +235,8 @@ void FormatTokenLexer::handleTemplateStrings() {
     return;
   }
   if (BacktickToken->is(tok::r_brace)) {
+    if (StateStack.size() == 1)
+      return;
     StateStack.pop();
     if (StateStack.top() != LexerState::TEMPLATE_STRING)
       return;
index 528986a0c94804db9a47a1d6aa9eb40c97d57a8a..9ccb75b6296d6dc3cf3a6cea9079aafcb223c5c9 100644 (file)
@@ -1253,6 +1253,9 @@ TEST_F(FormatTestJS, NestedTemplateStrings) {
   verifyFormat(
       "var x = `<ul>${xs.map(x => `<li>${x}</li>`).join('\\n')}</ul>`;");
   verifyFormat("var x = `he${({text: 'll'}.text)}o`;");
+
+  // Crashed at some point.
+  verifyFormat("}");
 }
 
 TEST_F(FormatTestJS, TaggedTemplateStrings) {