diff options
| author | Eugene Zemtsov <ezemtsov@google.com> | 2018-02-06 19:04:12 +0000 |
|---|---|---|
| committer | Eugene Zemtsov <ezemtsov@google.com> | 2018-02-06 19:04:12 +0000 |
| commit | 9e916e5e0e05f293b85cd97c03a7e38d28bb74d2 (patch) | |
| tree | 3dd08aaa4477c6f9ff78b0c1e79c0be6b178d7c7 | |
| parent | f951fc399fa5219682b8fd7fe537b43a64f18c1a (diff) | |
| download | bcm5719-llvm-9e916e5e0e05f293b85cd97c03a7e38d28bb74d2.tar.gz bcm5719-llvm-9e916e5e0e05f293b85cd97c03a7e38d28bb74d2.zip | |
More correct handling of error cases C++ name parser
Now incorrect type argument that looks like T<A><B> doesn't
cause an assert, but just a parsing error.
Bug: 36224
Differential Revision: https://reviews.llvm.org/D42939
llvm-svn: 324380
| -rw-r--r-- | lldb/source/Plugins/Language/CPlusPlus/CPlusPlusNameParser.cpp | 3 | ||||
| -rw-r--r-- | lldb/unittests/Language/CPlusPlus/CPlusPlusLanguageTest.cpp | 2 |
2 files changed, 3 insertions, 2 deletions
diff --git a/lldb/source/Plugins/Language/CPlusPlus/CPlusPlusNameParser.cpp b/lldb/source/Plugins/Language/CPlusPlus/CPlusPlusNameParser.cpp index aebea6ae356..a992b72dc6c 100644 --- a/lldb/source/Plugins/Language/CPlusPlus/CPlusPlusNameParser.cpp +++ b/lldb/source/Plugins/Language/CPlusPlus/CPlusPlusNameParser.cpp @@ -242,8 +242,7 @@ bool CPlusPlusNameParser::ConsumeTemplateArgs() { } } - assert(template_counter >= 0); - if (template_counter > 0) { + if (template_counter != 0) { return false; } start_position.Remove(); diff --git a/lldb/unittests/Language/CPlusPlus/CPlusPlusLanguageTest.cpp b/lldb/unittests/Language/CPlusPlus/CPlusPlusLanguageTest.cpp index 1e7dd77c4de..68e8a8c17a2 100644 --- a/lldb/unittests/Language/CPlusPlus/CPlusPlusLanguageTest.cpp +++ b/lldb/unittests/Language/CPlusPlus/CPlusPlusLanguageTest.cpp @@ -160,4 +160,6 @@ TEST(CPlusPlusLanguage, ExtractContextAndIdentifier) { "selector:otherField:", context, basename)); EXPECT_FALSE(CPlusPlusLanguage::ExtractContextAndIdentifier( "abc::", context, basename)); + EXPECT_FALSE(CPlusPlusLanguage::ExtractContextAndIdentifier( + "f<A<B><C>>", context, basename)); } |

