summaryrefslogtreecommitdiffstats
path: root/clang
diff options
context:
space:
mode:
authorErik Verbruggen <erikjv@me.com>2016-10-25 10:06:11 +0000
committerErik Verbruggen <erikjv@me.com>2016-10-25 10:06:11 +0000
commit490823746a13bca58798e11543701c1cd30ffdf6 (patch)
treeac4524c265bdb43dab0552543dbace95c2efb57a /clang
parent7df3043db36ddeb3e4c4f7412e9d9c6c4a797f79 (diff)
downloadbcm5719-llvm-490823746a13bca58798e11543701c1cd30ffdf6.tar.gz
bcm5719-llvm-490823746a13bca58798e11543701c1cd30ffdf6.zip
Fix 'unknown documentation command' warning ranges
Warnings generated by -Wdocumentation-unknown-command did only have a start location, not a full source range. This resulted in only the "carret" being show in messages, and IDEs highlighting only the single initial character. llvm-svn: 285056
Diffstat (limited to 'clang')
-rw-r--r--clang/lib/AST/CommentLexer.cpp10
-rw-r--r--clang/test/Sema/warn-documentation-unknown-command.cpp4
2 files changed, 10 insertions, 4 deletions
diff --git a/clang/lib/AST/CommentLexer.cpp b/clang/lib/AST/CommentLexer.cpp
index 57bfef08df6..65d0f56f09a 100644
--- a/clang/lib/AST/CommentLexer.cpp
+++ b/clang/lib/AST/CommentLexer.cpp
@@ -378,15 +378,17 @@ void Lexer::lexCommentText(Token &T) {
if ((Info = Traits.getTypoCorrectCommandInfo(CommandName))) {
StringRef CorrectedName = Info->Name;
SourceLocation Loc = getSourceLocation(BufferPtr);
- SourceRange CommandRange(Loc.getLocWithOffset(1),
- getSourceLocation(TokenPtr));
+ SourceLocation EndLoc = getSourceLocation(TokenPtr);
+ SourceRange FullRange = SourceRange(Loc, EndLoc);
+ SourceRange CommandRange(Loc.getLocWithOffset(1), EndLoc);
Diag(Loc, diag::warn_correct_comment_command_name)
- << CommandName << CorrectedName
+ << FullRange << 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);
+ Diag(T.getLocation(), diag::warn_unknown_comment_command_name)
+ << SourceRange(T.getLocation(), T.getEndLocation());
return;
}
}
diff --git a/clang/test/Sema/warn-documentation-unknown-command.cpp b/clang/test/Sema/warn-documentation-unknown-command.cpp
index 3674a9c6801..4328c9682f2 100644
--- a/clang/test/Sema/warn-documentation-unknown-command.cpp
+++ b/clang/test/Sema/warn-documentation-unknown-command.cpp
@@ -9,3 +9,7 @@ int test_unknown_comand_1;
/// \retur aaa
int test_unknown_comand_2();
+// RUN: c-index-test -test-load-source all -Wdocumentation-unknown-command %s > /dev/null 2> %t.err
+// RUN: FileCheck < %t.err -check-prefix=CHECK-RANGE %s
+// CHECK-RANGE: warn-documentation-unknown-command.cpp:5:9:{5:9-5:17}: warning: unknown command tag name
+// CHECK-RANGE: warn-documentation-unknown-command.cpp:9:5:{9:5-9:11}: warning: unknown command tag name 'retur'; did you mean 'return'?
OpenPOWER on IntegriCloud