llvm-project/clang/lib/Parse
Richard Smith 74f02347ca PR13403 (+duplicates): implement C++ DR1310 (http://wg21.link/cwg1310).
Under this defect resolution, the injected-class-name of a class or class
template cannot be used except in very limited circumstances (when declaring a
constructor, in a nested-name-specifier, in a base-specifier, or in an
elaborated-type-specifier). This is apparently done to make parsing easier, but
it's a pain for us since we don't know whether a template-id using the
injected-class-name is valid at the point when we annotate it (we don't yet
know whether the template-id will become part of an elaborated-type-specifier).

As a tentative resolution to a perceived language defect, mem-initializer-ids
are added to the list of exceptions here (they generally follow the same rules
as base-specifiers).

When the reference to the injected-class-name uses the 'typename' or 'template'
keywords, we permit it to be used to name a type or template as an extension;
other compilers also accept some cases in this area. There are also a couple of
corner cases with dependent template names that we do not yet diagnose, but
which will also get this treatment.

llvm-svn: 292518
2017-01-19 21:00:13 +00:00
..
CMakeLists.txt [CMake] Reorder libdeps by alphabetical order. 2014-07-14 04:59:27 +00:00
ParseAST.cpp C++ Modules TS: add frontend support for building pcm files from module 2016-08-26 00:14:38 +00:00
ParseCXXInlineMethods.cpp Use unique_ptr for cached tokens for default arguments in C++. 2016-11-17 17:52:58 +00:00
ParseDecl.cpp PR13403 (+duplicates): implement C++ DR1310 (http://wg21.link/cwg1310). 2017-01-19 21:00:13 +00:00
ParseDeclCXX.cpp Tracking exception specification source locations 2017-01-12 16:11:28 +00:00
ParseExpr.cpp [code-completion] Fix crash when trying to do postfix completion of instance member inside a static function. 2017-01-15 06:11:04 +00:00
ParseExprCXX.cpp PR13403 (+duplicates): implement C++ DR1310 (http://wg21.link/cwg1310). 2017-01-19 21:00:13 +00:00
ParseInit.cpp PR23135: Don't instantiate constexpr functions referenced in unevaluated operands where possible. 2017-01-07 00:48:55 +00:00
ParseObjc.cpp Module: Improve diagnostic message when cxx modules are disabled and @import is used in Objective CXX. 2017-01-19 19:05:55 +00:00
ParseOpenMP.cpp [OpenMP] Sema and parsing for 'target teams distribute simd’ pragma 2017-01-10 18:08:18 +00:00
ParsePragma.cpp [OpenCL] Re-enable supported core extensions based on opencl version when disabling all extensions using pragma 2017-01-06 16:14:41 +00:00
ParseStmt.cpp [CodeCompletion] Add a block property setter completion result 2016-10-18 10:55:01 +00:00
ParseStmtAsm.cpp More diagnostic name fixups: w_ -> warn_, warning_ -> warn_, not_ -> note_. 2016-12-02 23:00:28 +00:00
ParseTemplate.cpp PR13403 (+duplicates): implement C++ DR1310 (http://wg21.link/cwg1310). 2017-01-19 21:00:13 +00:00
ParseTentative.cpp regcall: Implement regcall Calling Conv in clang 2016-11-02 18:29:35 +00:00
Parser.cpp PR13403 (+duplicates): implement C++ DR1310 (http://wg21.link/cwg1310). 2017-01-19 21:00:13 +00:00
RAIIObjectsForParser.h Add a new error for unexpected semi-colon before closing delimiter. 2015-05-12 21:36:35 +00:00