alexfh requested changes to this revision.
alexfh added inline comments.
This revision now requires changes to proceed.
================
Comment at: clang-tidy/google/UsingNamespaceDirectiveCheck.cpp:43
+ if (StandardLiteralsNamespaceRE.match(
+ U->getNominatedNamespace()->getQualifiedNameAsString())) {
+ // Do not warn if name matches std::.*literals. User-defined literals in
----------------
`getQualifiedNameAsString()` is pretty expensive, since it allocates a string
and reconstructs the qualified name by going up all declaration contexts.
Instead, consider checking the names directly, something like this:
const NamespaceDecl *NS = U->getNominatedNamespace();
if (NS->getName().ends_with("literals")) {
const auto *Parent = dyn_cast_or_null<NamespaceDecl>(NS->getParent());
if (Parent && (Parent->isStdNamespace() || (Parent->getName() == "literals"
&& Parent->getParent() && Parent->getParent()->isStdNamespace())))
return;
}
https://reviews.llvm.org/D33010
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits