aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/CodeGen/CodeGenModule.cpp
diff options
context:
space:
mode:
authorRichard Smith <richard@metafoo.co.uk>2020-06-16 16:55:56 -0700
committerRichard Smith <richard@metafoo.co.uk>2020-06-23 17:14:33 -0700
commitd1446017f3fdc2f6a9efba222008d20afa1e26cc (patch)
tree4da96738e704f2f28d8de95914a3a5a99292239e /clang/lib/CodeGen/CodeGenModule.cpp
parentc2bb88cc025cd16efee33a46cc0547e51f56bfd0 (diff)
downloadllvm-d1446017f3fdc2f6a9efba222008d20afa1e26cc.zip
llvm-d1446017f3fdc2f6a9efba222008d20afa1e26cc.tar.gz
llvm-d1446017f3fdc2f6a9efba222008d20afa1e26cc.tar.bz2
DR458: Search template parameter scopes in the right order.
C++ unqualified name lookup searches template parameter scopes immediately after finishing searching the entity the parameters belong to. (Eg, for a class template, you search the template parameter scope after looking in that class template and its base classes and before looking in the scope containing the class template.) This is complicated by the fact that scope lookup within a template parameter scope looks in a different sequence of places prior to reaching the end of the declarator-id in the template declaration. We used to approximate the proper lookup rule with a hack in the scope / decl context walk inside name lookup. Now we instead compute the lookup parent for each template parameter scope. In order to get this right, we now make sure to enter a distinct Scope for each template parameter scope, and make sure to re-enter the enclosing class scopes properly when handling delay-parsed regions within a class.
Diffstat (limited to 'clang/lib/CodeGen/CodeGenModule.cpp')
0 files changed, 0 insertions, 0 deletions