Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(50)

Unified Diff: tools/clang/rewrite_to_chrome_style/RewriteToChromeStyle.cpp

Issue 2608443002: Blacklisting renaming of "hash" in case of static methods and functions. (Closed)
Patch Set: Trying to remove code duplication. Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | tools/clang/rewrite_to_chrome_style/tests/methods-expected.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/clang/rewrite_to_chrome_style/RewriteToChromeStyle.cpp
diff --git a/tools/clang/rewrite_to_chrome_style/RewriteToChromeStyle.cpp b/tools/clang/rewrite_to_chrome_style/RewriteToChromeStyle.cpp
index 3374ea29ea6bd6ab8c3f0b796c90c6e5683384c2..626872b4948387a2aa5c4319e80e6f9002095493 100644
--- a/tools/clang/rewrite_to_chrome_style/RewriteToChromeStyle.cpp
+++ b/tools/clang/rewrite_to_chrome_style/RewriteToChromeStyle.cpp
@@ -207,16 +207,27 @@ bool IsMethodOverrideOf(const clang::CXXMethodDecl& decl,
return false;
}
-bool IsBlacklistedFunction(const clang::FunctionDecl& decl) {
+bool IsBlacklistedFunctionOrInstanceOrStaticMethodName(llvm::StringRef name) {
dcheng 2016/12/27 20:30:40 I find the naming of this helper to be a bit confu
Łukasz Anforowicz 2016/12/27 22:42:43 Done.
+ // https://crbug.com/677166: Have to avoid renaming |hash| -> |Hash| to avoid
+ // colliding with a struct already named |Hash|.
+ return name == "hash";
+}
+
+bool IsBlacklistedFunctionName(llvm::StringRef name) {
// swap() functions should match the signature of std::swap for ADL tricks.
- return decl.getName() == "swap";
+ return name == "swap";
dcheng 2016/12/27 20:30:40 And call this "IsBlacklistedFreeFunctionName" (sin
Łukasz Anforowicz 2016/12/27 22:42:43 Done.
}
-bool IsBlacklistedMethodName(llvm::StringRef name) {
+bool IsBlacklistedInstanceMethodName(llvm::StringRef name) {
+ if (IsBlacklistedFunctionOrInstanceOrStaticMethodName(name))
+ return true;
+
static const char* kBlacklistedNames[] = {
- "hash",
- "lock", "unlock", "try_lock",
- "begin", "end", "rbegin", "rend",
+ // We should avoid renaming the method names listed below, because
+ // 1. They are used in templated code (e.g. in <algorithms>)
+ // 2. They (begin+end) are used in range-based for syntax sugar
+ // - for (auto x : foo) { ... } // <- foo.begin() will be called.
+ "begin", "end", "rbegin", "rend", "lock", "unlock", "try_lock",
};
for (const auto& b : kBlacklistedNames) {
if (name == b)
@@ -225,13 +236,28 @@ bool IsBlacklistedMethodName(llvm::StringRef name) {
return false;
}
+bool IsBlacklistedStaticMethodName(llvm::StringRef name) {
+ return IsBlacklistedFunctionOrInstanceOrStaticMethodName(name);
+}
+
+bool IsBlacklistedMethodName(llvm::StringRef name) {
+ return IsBlacklistedStaticMethodName(name) ||
+ IsBlacklistedInstanceMethodName(name);
+}
+
+bool IsBlacklistedFunction(const clang::FunctionDecl& decl) {
+ clang::StringRef name = decl.getName();
+ return IsBlacklistedFunctionOrInstanceOrStaticMethodName(name) ||
+ IsBlacklistedFunctionName(name);
+}
+
bool IsBlacklistedMethod(const clang::CXXMethodDecl& decl) {
+ clang::StringRef name = decl.getName();
if (decl.isStatic())
- return false;
+ return IsBlacklistedStaticMethodName(name);
- clang::StringRef name = decl.getName();
- if (IsBlacklistedMethodName(name))
- return true;
+ if (IsBlacklistedInstanceMethodName(name))
+ return true;
// Subclasses of InspectorAgent will subclass "disable()" from both blink and
// from gen/, which is problematic, but DevTools folks don't want to rename
« no previous file with comments | « no previous file | tools/clang/rewrite_to_chrome_style/tests/methods-expected.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698