Commit 0c970e2f authored by Bill Wendling's avatar Bill Wendling
Browse files

Merging r196048:

------------------------------------------------------------------------
r196048 | d0k | 2013-12-01 07:09:32 -0800 (Sun, 01 Dec 2013) | 3 lines

CommentLexer: When proceeding with a typo corrected name don't clobber the token.

This would crash if the token is used in another diagnostic. PR18051.
------------------------------------------------------------------------

llvm-svn: 196075
parent c1f8b785
Loading
Loading
Loading
Loading
+6 −5
Original line number Diff line number Diff line
@@ -353,16 +353,17 @@ void Lexer::lexCommentText(Token &T) {

        const CommandInfo *Info = Traits.getCommandInfoOrNULL(CommandName);
        if (!Info) {
          formTokenWithChars(T, TokenPtr, tok::unknown_command);
          T.setUnknownCommandName(CommandName);
          if ((Info = Traits.getTypoCorrectCommandInfo(CommandName))) {
            StringRef CorrectedName = Info->Name;
            SourceRange CommandRange(T.getLocation().getLocWithOffset(1),
                                     T.getEndLocation());
            Diag(T.getLocation(), diag::warn_correct_comment_command_name)
            SourceLocation Loc = getSourceLocation(BufferPtr);
            SourceRange CommandRange(Loc.getLocWithOffset(1),
                                     getSourceLocation(TokenPtr));
            Diag(Loc, diag::warn_correct_comment_command_name)
              << CommandName << CorrectedName
              << FixItHint::CreateReplacement(CommandRange, CorrectedName);
          } else {
            formTokenWithChars(T, TokenPtr, tok::unknown_command);
            T.setUnknownCommandName(CommandName);
            Diag(T.getLocation(), diag::warn_unknown_comment_command_name);
            return;
          }
+6 −0
Original line number Diff line number Diff line
@@ -70,6 +70,11 @@ int gorf();
/// \t bbb IS_DOXYGEN_END
int Bar();

// expected-warning@+2  {{unknown command tag name 'encode'; did you mean 'endcode'?}}
// expected-warning@+1  {{'\endcode' command does not terminate a verbatim text block}}
/// \encode PR18051
int PR18051();

// CHECK: fix-it:"{{.*}}":{5:12-5:22}:"a"
// CHECK: fix-it:"{{.*}}":{9:12-9:15}:"aaa"
// CHECK: fix-it:"{{.*}}":{13:13-13:23}:"T"
@@ -83,3 +88,4 @@ int Bar();
// CHECK: fix-it:"{{.*}}":{58:30-58:30}:" MY_ATTR_DEPRECATED"
// CHECK: fix-it:"{{.*}}":{63:6-63:11}:"return"
// CHECK: fix-it:"{{.*}}":{67:6-67:11}:"foobar"
// CHECK: fix-it:"{{.*}}":{75:6-75:12}:"endcode"