forked from OSchip/llvm-project
[clang-tidy] Cleanups utils files
Summary: Cleanup some code by using appropriate APIs. Some coding style cleanups. There is no behavior changes. - Function `IncludeSorter::CreateFixIt` can be replaced by `FixItHint::CreateReplacement`. - Function `cleanPath` is a wrapper for `llvm::sys::path::remove_dots`. Reviewers: alexfh Subscribers: cfe-commits Differential Revision: http://reviews.llvm.org/D20279 llvm-svn: 269656
This commit is contained in:
parent
4b9c0d4dcf
commit
8d73de9eac
|
@ -15,7 +15,7 @@
|
|||
|
||||
namespace clang {
|
||||
namespace tidy {
|
||||
namespace utils {
|
||||
namespace utils {
|
||||
namespace decl_ref_expr {
|
||||
|
||||
using namespace ::clang::ast_matchers;
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
|
||||
#include "HeaderFileExtensionsUtils.h"
|
||||
#include "clang/Basic/CharInfo.h"
|
||||
#include "llvm/Support/Path.h"
|
||||
|
||||
namespace clang {
|
||||
namespace tidy {
|
||||
|
|
|
@ -10,13 +10,10 @@
|
|||
#ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_UTILS_HEADER_FILE_EXTENSIONS_UTILS_H
|
||||
#define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_UTILS_HEADER_FILE_EXTENSIONS_UTILS_H
|
||||
|
||||
#include <string>
|
||||
|
||||
#include "clang/Basic/SourceLocation.h"
|
||||
#include "clang/Basic/SourceManager.h"
|
||||
#include "llvm/ADT/StringRef.h"
|
||||
#include "llvm/ADT/SmallSet.h"
|
||||
#include "llvm/Support/Path.h"
|
||||
|
||||
namespace clang {
|
||||
namespace tidy {
|
||||
|
|
|
@ -19,29 +19,16 @@ namespace tidy {
|
|||
namespace utils {
|
||||
|
||||
/// \brief canonicalize a path by removing ./ and ../ components.
|
||||
// FIXME: Consider moving this to llvm::sys::path.
|
||||
static std::string cleanPath(StringRef Path) {
|
||||
SmallString<256> NewPath;
|
||||
for (auto I = llvm::sys::path::begin(Path), E = llvm::sys::path::end(Path);
|
||||
I != E; ++I) {
|
||||
if (*I == ".")
|
||||
continue;
|
||||
if (*I == "..") {
|
||||
// Drop the last component.
|
||||
NewPath.resize(llvm::sys::path::parent_path(NewPath).size());
|
||||
} else {
|
||||
if (!NewPath.empty() && !NewPath.endswith("/"))
|
||||
NewPath += '/';
|
||||
NewPath += *I;
|
||||
}
|
||||
}
|
||||
return NewPath.str();
|
||||
SmallString<256> Result = Path;
|
||||
llvm::sys::path::remove_dots(Result, true);
|
||||
return Result.str();
|
||||
}
|
||||
|
||||
namespace {
|
||||
class HeaderGuardPPCallbacks : public PPCallbacks {
|
||||
public:
|
||||
explicit HeaderGuardPPCallbacks(Preprocessor *PP, HeaderGuardCheck *Check)
|
||||
HeaderGuardPPCallbacks(Preprocessor *PP, HeaderGuardCheck *Check)
|
||||
: PP(PP), Check(Check) {}
|
||||
|
||||
void FileChanged(SourceLocation Loc, FileChangeReason Reason,
|
||||
|
|
|
@ -67,9 +67,9 @@ IncludeInserter::CreateIncludeInsertion(FileID FileID, StringRef Header,
|
|||
return IncludeSorterByFile[FileID]->CreateIncludeInsertion(Header, IsAngled);
|
||||
}
|
||||
|
||||
void IncludeInserter::AddInclude(StringRef file_name, bool IsAngled,
|
||||
void IncludeInserter::AddInclude(StringRef FileName, bool IsAngled,
|
||||
SourceLocation HashLocation,
|
||||
SourceLocation end_location) {
|
||||
SourceLocation EndLocation) {
|
||||
FileID FileID = SourceMgr.getFileID(HashLocation);
|
||||
if (IncludeSorterByFile.find(FileID) == IncludeSorterByFile.end()) {
|
||||
IncludeSorterByFile.insert(std::make_pair(
|
||||
|
@ -77,8 +77,8 @@ void IncludeInserter::AddInclude(StringRef file_name, bool IsAngled,
|
|||
&SourceMgr, &LangOpts, FileID,
|
||||
SourceMgr.getFilename(HashLocation), Style)));
|
||||
}
|
||||
IncludeSorterByFile[FileID]->AddInclude(file_name, IsAngled, HashLocation,
|
||||
end_location);
|
||||
IncludeSorterByFile[FileID]->AddInclude(FileName, IsAngled, HashLocation,
|
||||
EndLocation);
|
||||
}
|
||||
|
||||
} // namespace utils
|
||||
|
|
|
@ -60,8 +60,8 @@ public:
|
|||
CreateIncludeInsertion(FileID FileID, llvm::StringRef Header, bool IsAngled);
|
||||
|
||||
private:
|
||||
void AddInclude(StringRef file_name, bool IsAngled,
|
||||
SourceLocation hash_location, SourceLocation end_location);
|
||||
void AddInclude(StringRef FileName, bool IsAngled,
|
||||
SourceLocation HashLocation, SourceLocation EndLocation);
|
||||
|
||||
llvm::DenseMap<FileID, std::unique_ptr<IncludeSorter>> IncludeSorterByFile;
|
||||
llvm::DenseMap<FileID, std::set<std::string>> InsertedHeaders;
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
|
||||
namespace clang {
|
||||
namespace tidy {
|
||||
namespace utils {
|
||||
namespace utils {
|
||||
|
||||
namespace {
|
||||
|
||||
|
@ -254,7 +254,8 @@ std::vector<FixItHint> IncludeSorter::GetEdits() {
|
|||
// Otherwise report the current block edit and start a new block.
|
||||
} else {
|
||||
if (CurrentEndLine) {
|
||||
Fixes.push_back(CreateFixIt(CurrentRange, CurrentText));
|
||||
Fixes.push_back(
|
||||
FixItHint::CreateReplacement(CurrentRange, CurrentText));
|
||||
}
|
||||
|
||||
CurrentEndLine = LineEdit.first;
|
||||
|
@ -264,7 +265,7 @@ std::vector<FixItHint> IncludeSorter::GetEdits() {
|
|||
}
|
||||
// Finally, report the current block edit if there is one.
|
||||
if (CurrentEndLine) {
|
||||
Fixes.push_back(CreateFixIt(CurrentRange, CurrentText));
|
||||
Fixes.push_back(FixItHint::CreateReplacement(CurrentRange, CurrentText));
|
||||
}
|
||||
|
||||
// Reset the remaining internal state.
|
||||
|
@ -273,16 +274,6 @@ std::vector<FixItHint> IncludeSorter::GetEdits() {
|
|||
return Fixes;
|
||||
}
|
||||
|
||||
// Creates a fix-it for the given replacements.
|
||||
// Takes the the source location that will be replaced, and the new text.
|
||||
FixItHint IncludeSorter::CreateFixIt(SourceRange EditRange,
|
||||
const std::string &NewText) {
|
||||
FixItHint Fix;
|
||||
Fix.RemoveRange = CharSourceRange::getCharRange(EditRange);
|
||||
Fix.CodeToInsert = NewText;
|
||||
return Fix;
|
||||
}
|
||||
|
||||
IncludeSorter::IncludeStyle
|
||||
IncludeSorter::parseIncludeStyle(const std::string &Value) {
|
||||
return Value == "llvm" ? IS_LLVM : IS_Google;
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
|
||||
namespace clang {
|
||||
namespace tidy {
|
||||
namespace utils {
|
||||
namespace utils {
|
||||
|
||||
// Class used by IncludeSorterCallback and IncludeInserterCallback to record the
|
||||
// names of the inclusions in a given source file being processed and generate
|
||||
|
@ -66,10 +66,6 @@ public:
|
|||
private:
|
||||
typedef SmallVector<SourceRange, 1> SourceRangeVector;
|
||||
|
||||
// Creates a fix-it for the given replacements.
|
||||
// Takes the the source location that will be replaced, and the new text.
|
||||
FixItHint CreateFixIt(SourceRange EditRange, const std::string &NewText);
|
||||
|
||||
const SourceManager *SourceMgr;
|
||||
const LangOptions *LangOpts;
|
||||
const IncludeStyle Style;
|
||||
|
|
|
@ -77,7 +77,8 @@ bool recordIsTriviallyDefaultConstructible(const RecordDecl &RecordDecl,
|
|||
}
|
||||
|
||||
// Based on QualType::isTrivial.
|
||||
bool isTriviallyDefaultConstructible(QualType Type, const ASTContext &Context) {
|
||||
bool isTriviallyDefaultConstructible(QualType Type,
|
||||
const ASTContext &Context) {
|
||||
if (Type.isNull())
|
||||
return false;
|
||||
|
||||
|
|
Loading…
Reference in New Issue