[PATCH] D92101: [Clang][Sema] Attempt to fix CTAD faulty copy of non-local typedefs
Richard Smith - zygoloid via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Mon Nov 30 01:01:13 PST 2020
rsmith added inline comments.
================
Comment at: clang/lib/Sema/SemaTemplate.cpp:2356-2359
+ auto *CD = cast<CXXConstructorDecl>(OldParam->getDeclContext());
+ // If the typedef is not a local typedef, then skip the transform.
+ if (OldTypedefDecl->getDeclContext() != CD->getDeclContext())
+ return OldParam;
----------------
I think it would be equivalent and simpler to check only `OldTypedefDecl->getDeclContext()->isDependentContext()`. If we can resolve the name of the typedef to a dependently-scoped typedef, it must be a member of the current instantiation, and that's what we really care about here. This would also avoid any concerns about whether we're looking at the right declaration of the enclosing class (in the case where multiple definitions from different modules got merged), whether we need to skip over transparent contexts, and so on.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D92101/new/
https://reviews.llvm.org/D92101
More information about the cfe-commits
mailing list