]> granicus.if.org Git - clang/commitdiff
Comment parser: don't crash on a completely empty \param followed by a block
authorDmitri Gribenko <gribozavr@gmail.com>
Mon, 30 Jul 2012 18:05:28 +0000 (18:05 +0000)
committerDmitri Gribenko <gribozavr@gmail.com>
Mon, 30 Jul 2012 18:05:28 +0000 (18:05 +0000)
command

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160975 91177308-0d34-0410-b5e6-96231b3b80d8

lib/AST/CommentParser.cpp
test/Sema/warn-documentation.cpp

index 607ace3546583eb30e02c4f08855e431bc10efc3..6d535673f8fa0d17ec23fe026ef0d9a90c9c0776 100644 (file)
@@ -318,9 +318,9 @@ BlockCommandComment *Parser::parseBlockCommand() {
   if (Tok.is(tok::command) && S.isBlockCommand(Tok.getCommandName())) {
     // Block command ahead.  We can't nest block commands, so pretend that this
     // command has an empty argument.
-    ParagraphComment *PC = S.actOnParagraphComment(
+    ParagraphComment *Paragraph = S.actOnParagraphComment(
                                 ArrayRef<InlineContentComment *>());
-    return S.actOnBlockCommandFinish(BC, PC);
+    return S.actOnBlockCommandFinish(IsParam ? PC : BC, Paragraph);
   }
 
   if (IsParam || NumArgs > 0) {
index 5ec3ffcf68bbf864671471ae92c75fbc0ef29e61..87d8840c7a24fe1f5776bea2be8501a8f79bf098 100644 (file)
@@ -298,3 +298,9 @@ namespace test_attach24 {
  */
 void test_nocrash1(int);
 
+// We used to crash on this.
+// expected-warning@+2 {{empty paragraph passed to '\param' command}}
+// expected-warning@+1 {{empty paragraph passed to '\brief' command}}
+/// \param\brief
+void test_nocrash2(int);
+