Commit 01b6cc64 authored by Pawel Wodnicki's avatar Pawel Wodnicki
Browse files

Merging r168277: into 3.2 release branch.

Documentation parsing: propely handle a lone '\endverbatim' and emit a warning.

We actually used to assert on this.

Thanks to NAKAMURA Takumi for noticing this!

llvm-svn: 168730
parent 262316ad
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -131,5 +131,11 @@ def warn_doc_deprecated_not_sync : Warning<
def note_add_deprecation_attr : Note<
  "add a deprecation attribute to the declaration to silence this warning">;

// verbatim block commands

def warn_verbatim_block_end_without_start : Warning<
  "'\\%0' command does not terminate a verbatim text block">,
  InGroup<Documentation>, DefaultIgnore;

} // end of documentation issue category
} // end of AST component
+8 −0
Original line number Diff line number Diff line
@@ -554,6 +554,14 @@ BlockContentComment *Parser::parseParagraphOrBlockCommand() {
          return parseBlockCommand();
        break; // Block command ahead, finish this parapgaph.
      }
      if (Info->IsVerbatimBlockEndCommand) {
        Diag(Tok.getLocation(),
             diag::warn_verbatim_block_end_without_start)
          << Info->Name
          << SourceRange(Tok.getLocation(), Tok.getEndLocation());
        consumeToken();
        continue;
      }
      if (Info->IsUnknownCommand) {
        Content.push_back(S.actOnUnknownCommand(Tok.getLocation(),
                                                Tok.getEndLocation(),
+18 −0
Original line number Diff line number Diff line
@@ -502,6 +502,24 @@ enum test_returns_wrong_decl_8 {
namespace test_returns_wrong_decl_10 { };


// expected-warning@+1 {{'\endverbatim' command does not terminate a verbatim text block}}
/// \endverbatim
int test_verbatim_1();

// expected-warning@+1 {{'\endcode' command does not terminate a verbatim text block}}
/// \endcode
int test_verbatim_2();

// FIXME: we give a bad diagnostic here because we throw away non-documentation
// comments early.
//
// expected-warning@+2 {{'\endcode' command does not terminate a verbatim text block}}
/// \code
//  foo
/// \endcode
int test_verbatim_3();


// expected-warning@+1 {{empty paragraph passed to '\brief' command}}
int test1; ///< \brief\author Aaa