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 3a19515c190ac61352db73b703e20e33987e67ac..f073c73a713531066575133ae8729e850fc7bdfb 100644 |
--- a/tools/clang/rewrite_to_chrome_style/RewriteToChromeStyle.cpp |
+++ b/tools/clang/rewrite_to_chrome_style/RewriteToChromeStyle.cpp |
@@ -101,17 +101,6 @@ AST_MATCHER_P(clang::OverloadExpr, |
return true; |
} |
-bool IsDeclContextInWTF(const clang::DeclContext* decl_context) { |
- auto* namespace_decl = clang::dyn_cast_or_null<clang::NamespaceDecl>( |
- decl_context->getEnclosingNamespaceContext()); |
- if (!namespace_decl) |
- return false; |
- if (namespace_decl->getParent()->isTranslationUnit() && |
- namespace_decl->getName() == "WTF") |
- return true; |
- return IsDeclContextInWTF(namespace_decl->getParent()); |
-} |
- |
template <typename T> |
bool MatchAllOverriddenMethods( |
const clang::CXXMethodDecl& decl, |
@@ -453,13 +442,23 @@ bool GetNameForDecl(const clang::VarDecl& decl, |
bool is_const = IsProbablyConst(decl, context); |
if (is_const) { |
- // Struct consts in WTF do not become kFoo cuz stuff like type traits |
- // should stay as lowercase. |
- const clang::DeclContext* decl_context = decl.getDeclContext(); |
- bool is_in_wtf = IsDeclContextInWTF(decl_context); |
- const clang::CXXRecordDecl* parent = |
- clang::dyn_cast_or_null<clang::CXXRecordDecl>(decl_context); |
- if (is_in_wtf && parent && parent->isStruct()) |
+ // Given |
+ // namespace WTF { |
+ // struct TypeTrait { |
+ // static const bool value = ...; |
+ // }; |
+ // } |
+ // matches |value|. |
+ auto type_trait_matcher = varDecl( |
+ hasName("value"), |
+ hasStaticStorageDuration(), |
+ hasType(isConstQualified()), |
+ hasType(booleanType()), |
+ hasAncestor(recordDecl(hasAncestor(namespaceDecl( |
+ hasName("WTF"), hasParent(translationUnitDecl())))))); |
dcheng
2016/08/24 21:42:17
Since this is expressed as a matcher now, should w
Łukasz Anforowicz
2016/08/24 21:55:09
Good point. Done. (although this has to go to |v
|
+ |
+ // Avoid renaming |value| -> |kValue| in WTF type traits. |
+ if (!match(type_trait_matcher, decl, context).empty()) |
return false; |
if (!GetNameForConstant(original_name.str(), name)) |