diff options
author | Richard Smith <richard-llvm@metafoo.co.uk> | 2016-12-20 21:35:28 +0000 |
---|---|---|
committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2016-12-20 21:35:28 +0000 |
commit | c8c1a1961a459f5f79ba8dfb08a2d53d5443bf32 (patch) | |
tree | c042187cdc68b1038bde77c652ded7a849bd53d3 /include/clang/Basic/DiagnosticParseKinds.td | |
parent | a966b1fd6ce257ab259c534488003e7aef57a0ff (diff) |
[c++1z] P0195R2: Support pack-expansion of using-declarations.
This change introduces UsingPackDecl as a marker for the set of UsingDecls
produced by pack expansion of a single (unresolved) using declaration. This is
not strictly necessary (we just need to be able to map from the original using
declaration to its expansions somehow), but it's useful to maintain the
invariant that each declaration reference instantiates to refer to one
declaration.
This is a re-commit of r290080 (reverted in r290092) with a fix for a
use-after-lifetime bug.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@290203 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/clang/Basic/DiagnosticParseKinds.td')
-rw-r--r-- | include/clang/Basic/DiagnosticParseKinds.td | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/include/clang/Basic/DiagnosticParseKinds.td b/include/clang/Basic/DiagnosticParseKinds.td index 31e55b4aff..0943feae95 100644 --- a/include/clang/Basic/DiagnosticParseKinds.td +++ b/include/clang/Basic/DiagnosticParseKinds.td @@ -740,6 +740,8 @@ def err_alias_declaration_not_identifier : Error< "name defined in alias declaration must be an identifier">; def err_alias_declaration_specialization : Error< "%select{partial specialization|explicit specialization|explicit instantiation}0 of alias templates is not permitted">; +def err_alias_declaration_pack_expansion : Error< + "alias declaration cannot be a pack expansion">; // C++1z using-declaration pack expansions def ext_multi_using_declaration : ExtWarn< @@ -749,6 +751,11 @@ def warn_cxx1z_compat_multi_using_declaration : Warning< "use of multiple declarators in a single using declaration is " "incompatible with C++ standards before C++1z">, InGroup<CXXPre1zCompat>, DefaultIgnore; +def ext_using_declaration_pack : ExtWarn< + "pack expansion of using declaration is a C++1z extension">, InGroup<CXX1z>; +def warn_cxx1z_compat_using_declaration_pack : Warning< + "pack expansion using declaration is incompatible with C++ standards " + "before C++1z">, InGroup<CXXPre1zCompat>, DefaultIgnore; // C++11 override control def ext_override_control_keyword : ExtWarn< |