Index: tools/clang/plugins/ChromeClassTester.cpp |
diff --git a/tools/clang/plugins/ChromeClassTester.cpp b/tools/clang/plugins/ChromeClassTester.cpp |
index 8820407095efd974f3d465f1b87f6edb3337a5e2..846fd23b4016fce24fd4c0493e71c3de4ee4995f 100644 |
--- a/tools/clang/plugins/ChromeClassTester.cpp |
+++ b/tools/clang/plugins/ChromeClassTester.cpp |
@@ -150,6 +150,16 @@ bool ChromeClassTester::InBannedDirectory(SourceLocation loc) { |
filename.insert(filename.begin(), '/'); |
#endif |
+ for (const std::string& allowed_dir : allowed_directories_) { |
+ // If any of the allowed directories occur as a component in filename, |
+ // this file is allowed. |
+ assert(allowed_dir.front() == '/' && "Allowed dir must start with '/'"); |
+ assert(allowed_dir.back() == '/' && "Allowed dir must end with '/'"); |
+ |
+ if (filename.find(allowed_dir) != std::string::npos) |
+ return false; |
+ } |
+ |
for (const std::string& banned_dir : banned_directories_) { |
// If any of the banned directories occur as a component in filename, |
// this file is rejected. |
@@ -191,38 +201,42 @@ bool ChromeClassTester::InImplementationFile(SourceLocation record_location) { |
} |
void ChromeClassTester::BuildBannedLists() { |
- banned_namespaces_.push_back("std"); |
- banned_namespaces_.push_back("__gnu_cxx"); |
+ banned_namespaces_.insert("std"); |
dcheng
2015/10/01 21:42:48
IMO, if you're going to change all these, you may
Avi (use Gerrit)
2015/10/01 21:52:06
Wouldn't the same rules about no C++11 library fea
dcheng
2015/10/01 21:53:22
Nope =)
The plugin already uses std::unique_ptr a
|
+ banned_namespaces_.insert("__gnu_cxx"); |
+ |
+ if (!options_.enforce_overriding_blink) { |
+ banned_namespaces_.insert("blink"); |
+ banned_namespaces_.insert("WTF"); |
+ } |
- if (!options_.enforce_blink) { |
- banned_namespaces_.push_back("blink"); |
- banned_namespaces_.push_back("WTF"); |
+ if (options_.enforce_in_thirdparty_webkit) { |
+ allowed_directories_.insert("/third_party/WebKit/"); |
} |
- banned_directories_.push_back("/third_party/"); |
- banned_directories_.push_back("/native_client/"); |
- banned_directories_.push_back("/breakpad/"); |
- banned_directories_.push_back("/courgette/"); |
- banned_directories_.push_back("/pdf/"); |
- banned_directories_.push_back("/ppapi/"); |
- banned_directories_.push_back("/usr/include/"); |
- banned_directories_.push_back("/usr/lib/"); |
- banned_directories_.push_back("/usr/local/include/"); |
- banned_directories_.push_back("/usr/local/lib/"); |
- banned_directories_.push_back("/testing/"); |
- banned_directories_.push_back("/v8/"); |
- banned_directories_.push_back("/dart/"); |
- banned_directories_.push_back("/sdch/"); |
- banned_directories_.push_back("/icu4c/"); |
- banned_directories_.push_back("/frameworks/"); |
+ banned_directories_.insert("/third_party/"); |
+ banned_directories_.insert("/native_client/"); |
+ banned_directories_.insert("/breakpad/"); |
+ banned_directories_.insert("/courgette/"); |
+ banned_directories_.insert("/pdf/"); |
+ banned_directories_.insert("/ppapi/"); |
+ banned_directories_.insert("/usr/include/"); |
+ banned_directories_.insert("/usr/lib/"); |
+ banned_directories_.insert("/usr/local/include/"); |
+ banned_directories_.insert("/usr/local/lib/"); |
+ banned_directories_.insert("/testing/"); |
+ banned_directories_.insert("/v8/"); |
+ banned_directories_.insert("/dart/"); |
+ banned_directories_.insert("/sdch/"); |
+ banned_directories_.insert("/icu4c/"); |
+ banned_directories_.insert("/frameworks/"); |
// Don't check autogenerated headers. |
// Make puts them below $(builddir_name)/.../gen and geni. |
// Ninja puts them below OUTPUT_DIR/.../gen |
// Xcode has a fixed output directory for everything. |
- banned_directories_.push_back("/gen/"); |
- banned_directories_.push_back("/geni/"); |
- banned_directories_.push_back("/xcodebuild/"); |
+ banned_directories_.insert("/gen/"); |
+ banned_directories_.insert("/geni/"); |
+ banned_directories_.insert("/xcodebuild/"); |
// Used in really low level threading code that probably shouldn't be out of |
// lined. |