[clang-tidy] Fix an assertion failure of "SLocEntry::getExpansion()" when IncludeInserter handles macro header file.

Summary: Also Fixes PR24749.

Reviewers: alexfh

Subscribers: cfe-commits

Differential Revision: http://reviews.llvm.org/D17805

llvm-svn: 262484
This commit is contained in:
Haojian Wu 2016-03-02 14:12:17 +00:00
parent 8f3381ed31
commit 7d08ba2749
2 changed files with 19 additions and 2 deletions

View File

@ -8,6 +8,7 @@
//===----------------------------------------------------------------------===//
#include "IncludeInserter.h"
#include "clang/Lex/Token.h"
namespace clang {
namespace tidy {
@ -19,14 +20,14 @@ public:
// Implements PPCallbacks::InclusionDerective(). Records the names and source
// locations of the inclusions in the main source file being processed.
void InclusionDirective(SourceLocation HashLocation,
const Token & /*include_token*/,
const Token & IncludeToken,
StringRef FileNameRef, bool IsAngled,
CharSourceRange FileNameRange,
const FileEntry * /*IncludedFile*/,
StringRef /*SearchPath*/, StringRef /*RelativePath*/,
const Module * /*ImportedModule*/) override {
Inserter->AddInclude(FileNameRef, IsAngled, HashLocation,
FileNameRange.getEnd());
IncludeToken.getEndLoc());
}
private:

View File

@ -0,0 +1,16 @@
// RUN: %check_clang_tidy %s modernize-pass-by-value %t -- -- -std=c++11 -isystem %S/Inputs/Headers
// CHECK-FIXES: #include <utility>
#define HEADER <./a.h>
#include HEADER
struct A {
};
struct B {
B(const A &a) : a(a) {}
// CHECK-MESSAGES: :[[@LINE-1]]:5: warning: pass by value and use std::move [modernize-pass-by-value]
// CHECK-FIXES: B(A a) : a(std::move(a)) {}
A a;
};