diff options
author | Dmitri Gribenko <gribozavr@gmail.com> | 2012-07-20 20:18:53 +0000 |
---|---|---|
committer | Dmitri Gribenko <gribozavr@gmail.com> | 2012-07-20 20:18:53 +0000 |
commit | 9f08f49929324ec6863e81b22a43fb2e8575b433 (patch) | |
tree | 6a28cd180db00d848df4346f3e05184ed16f1cca /lib/AST/CommentParser.cpp | |
parent | bbe0175255d4da42cd99d93ca1e60c8eabcb4b9a (diff) |
Fix PR13411: Comment parsing: failed assertion on unterminated verbatim block.
The assertion was wrong in case we have a verbatim block without a closing
command.
Also add tests for closing command name in a verbatim block, since now it can
be empty in such cases.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160568 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/AST/CommentParser.cpp')
-rw-r--r-- | lib/AST/CommentParser.cpp | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/lib/AST/CommentParser.cpp b/lib/AST/CommentParser.cpp index d4b9708778..6b7e0ab49d 100644 --- a/lib/AST/CommentParser.cpp +++ b/lib/AST/CommentParser.cpp @@ -378,11 +378,16 @@ VerbatimBlockComment *Parser::parseVerbatimBlock() { Lines.push_back(Line); } - assert(Tok.is(tok::verbatim_block_end)); - VB = S.actOnVerbatimBlockFinish(VB, Tok.getLocation(), - Tok.getVerbatimBlockName(), - copyArray(llvm::makeArrayRef(Lines))); - consumeToken(); + if (Tok.is(tok::verbatim_block_end)) { + VB = S.actOnVerbatimBlockFinish(VB, Tok.getLocation(), + Tok.getVerbatimBlockName(), + copyArray(llvm::makeArrayRef(Lines))); + consumeToken(); + } else { + // Unterminated \\verbatim block + VB = S.actOnVerbatimBlockFinish(VB, SourceLocation(), "", + copyArray(llvm::makeArrayRef(Lines))); + } return VB; } |