summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Jasper <djasper@google.com>2016-09-17 07:20:36 +0000
committerDaniel Jasper <djasper@google.com>2016-09-17 07:20:36 +0000
commit58209dd9ad6a772ae37198f9216effc209138521 (patch)
tree5d2b31c79b16ec351eb5400edcb181067cf3eb14
parent55394c0775c8799d3ff9eab70dc315925311b0b3 (diff)
downloadbcm5719-llvm-58209dd9ad6a772ae37198f9216effc209138521.tar.gz
bcm5719-llvm-58209dd9ad6a772ae37198f9216effc209138521.zip
clang-format: [JS] Fix a crash in handledTemplateStrings.
llvm-svn: 281816
-rw-r--r--clang/lib/Format/FormatTokenLexer.cpp2
-rw-r--r--clang/unittests/Format/FormatTestJS.cpp3
2 files changed, 5 insertions, 0 deletions
diff --git a/clang/lib/Format/FormatTokenLexer.cpp b/clang/lib/Format/FormatTokenLexer.cpp
index 8c795fb4d6d..c9670aeff66 100644
--- a/clang/lib/Format/FormatTokenLexer.cpp
+++ b/clang/lib/Format/FormatTokenLexer.cpp
@@ -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;
diff --git a/clang/unittests/Format/FormatTestJS.cpp b/clang/unittests/Format/FormatTestJS.cpp
index 528986a0c94..9ccb75b6296 100644
--- a/clang/unittests/Format/FormatTestJS.cpp
+++ b/clang/unittests/Format/FormatTestJS.cpp
@@ -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) {
OpenPOWER on IntegriCloud