summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--clang-tools-extra/clang-tidy/ClangTidyDiagnosticConsumer.cpp14
-rw-r--r--clang-tools-extra/test/clang-tidy/diagnostic.cpp8
2 files changed, 13 insertions, 9 deletions
diff --git a/clang-tools-extra/clang-tidy/ClangTidyDiagnosticConsumer.cpp b/clang-tools-extra/clang-tidy/ClangTidyDiagnosticConsumer.cpp
index dc702b0d1dd..81fb86bf73f 100644
--- a/clang-tools-extra/clang-tidy/ClangTidyDiagnosticConsumer.cpp
+++ b/clang-tools-extra/clang-tidy/ClangTidyDiagnosticConsumer.cpp
@@ -110,7 +110,7 @@ void ClangTidyDiagnosticConsumer::HandleDiagnostic(
addFixes(Info, Errors.back());
// Let argument parsing-related warnings through.
- if (!Diags->hasSourceManager() ||
+ if (!Info.getLocation().isValid() ||
!Diags->getSourceManager().isInSystemHeader(Info.getLocation())) {
LastErrorRelatesToUserCode = true;
}
@@ -128,12 +128,16 @@ void ClangTidyDiagnosticConsumer::addFixes(const Diagnostic &Info,
ClangTidyError &Error) {
if (!Info.hasSourceManager())
return;
- SourceManager &SourceMgr = Info.getSourceManager();
+ SourceManager &Sources = Info.getSourceManager();
tooling::Replacements Replacements;
for (unsigned i = 0, e = Info.getNumFixItHints(); i != e; ++i) {
- Error.Fix.insert(tooling::Replacement(
- SourceMgr, Info.getFixItHint(i).RemoveRange.getBegin(), 0,
- Info.getFixItHint(i).CodeToInsert));
+ CharSourceRange Range = Info.getFixItHint(i).RemoveRange;
+ assert(Range.getBegin().isValid() && Range.getEnd().isValid() &&
+ "Invalid range in the fix-it hint.");
+ assert(Range.getBegin().isFileID() && Range.getEnd().isFileID() &&
+ "Only file locations supported in fix-it hints.");
+ std::string Text = Info.getFixItHint(i).CodeToInsert;
+ Error.Fix.insert(tooling::Replacement(Sources, Range, Text));
}
}
diff --git a/clang-tools-extra/test/clang-tidy/diagnostic.cpp b/clang-tools-extra/test/clang-tidy/diagnostic.cpp
index e82f7d4764a..2dcf09fa670 100644
--- a/clang-tools-extra/test/clang-tidy/diagnostic.cpp
+++ b/clang-tools-extra/test/clang-tidy/diagnostic.cpp
@@ -1,5 +1,5 @@
-// RUN: grep -Ev "// *[A-Z-]+:" %s > %t.cpp
-// RUN: clang-tidy %t.cpp -- -fan-unknown-option > %t2.cpp
-// RUN: FileCheck -input-file=%t2.cpp %s
+// RUN: clang-tidy %s -- -fan-unknown-option | FileCheck -check-prefix=CHECK1 %s
+// RUN: clang-tidy %s.nonexistent.cpp -- | FileCheck -check-prefix=CHECK2 %s
-// CHECK: warning: unknown argument: '-fan-unknown-option'
+// CHECK1: warning: unknown argument: '-fan-unknown-option'
+// CHECK2: warning: error reading '{{.*}}.nonexistent.cpp'
OpenPOWER on IntegriCloud