llvm-project/clang/test/CXX
Richard Smith afcfb6bc3a Fix implementation of [temp.local]p4.
When a template-name is looked up, we need to give injected-class-name
declarations of class templates special treatment, as they denote a
template rather than a type.

Previously we achieved this by applying a filter to the lookup results
after completing name lookup, but that is incorrect in various ways, not
least of which is that it lost all information about access and how
members were named, and the filtering caused us to generally lose
all ambiguity errors between templates and non-templates.

We now preserve the lookup results exactly, and the few places that need
to map from a declaration found by name lookup into a declaration of a
template do so explicitly. Deduplication of repeated lookup results of
the same injected-class-name declaration is done by name lookup instead
of after the fact.

This reinstates r354091, which was previously reverted in r354097
because it exposed bugs in lldb and compiler-rt. Those bugs were fixed
in r354173 and r354174 respectively.

llvm-svn: 354176
2019-02-15 21:53:07 +00:00
..
basic Restore pre-r335182 behavior for naming inherited constructors as 2018-06-22 19:50:19 +00:00
class DR674, PR38883, PR40238: Qualified friend lookup should look for a 2019-01-07 06:00:46 +00:00
class.access Fix implementation of [temp.local]p4. 2019-02-15 21:53:07 +00:00
class.derived [cxx2a] P0641R2: (Some) type mismatches on defaulted functions only 2018-09-28 01:16:43 +00:00
concepts-ts Remove old concepts parsing code 2017-12-07 00:34:20 +00:00
conv Specify an explicit underlying type for this enum to fix Windows 2018-06-29 20:41:23 +00:00
cpp/cpp.predefined P0035R4: add predefined __STDCPP_DEFAULT_NEW_ALIGNMENT__ macro. By default, we 2016-09-30 22:41:36 +00:00
dcl.dcl Add a triple to this test so it passes for targets where alignof(double) 2019-01-24 20:52:56 +00:00
dcl.decl [cxx2a] P0641R2: (Some) type mismatches on defaulted functions only 2018-09-28 01:16:43 +00:00
drs Mark the lambda function pointer conversion operator as noexcept. 2019-01-21 16:25:08 +00:00
except Revert "[CodeGenCXX] Treat 'this' as noalias in constructors" 2018-10-15 15:43:00 +00:00
expr Mark the lambda function pointer conversion operator as noexcept. 2019-01-21 16:25:08 +00:00
lex
modules-ts Bring r325915 back. 2018-02-23 19:30:48 +00:00
over DR1687: When overload resolution selects a built-in operator, implicit 2018-06-27 20:30:34 +00:00
special PR24164, PR39336: init-captures are not distinct full-expressions. 2018-10-19 19:01:34 +00:00
stmt.stmt Refactor the way we handle diagnosing unused expression results. 2019-01-04 16:58:14 +00:00
temp Fix implementation of [temp.local]p4. 2019-02-15 21:53:07 +00:00