diff options
| -rw-r--r-- | clang-tools-extra/clang-tidy/ClangTidyDiagnosticConsumer.cpp | 14 | ||||
| -rw-r--r-- | clang-tools-extra/test/clang-tidy/diagnostic.cpp | 8 |
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' |

