diff options
author | Paolo Carlini <paolo.carlini@oracle.com> | 2019-02-13 10:34:49 +0000 |
---|---|---|
committer | Paolo Carlini <paolo@gcc.gnu.org> | 2019-02-13 10:34:49 +0000 |
commit | eeebb022b22ec51557bc1c731dc168d58c6e1cd3 (patch) | |
tree | c844cf39cd063eef35ab6d93d10efc6d758b5328 /gcc/cp/decl.c | |
parent | 3e7f831c2a312ce3c8b0a60417a896203dcbbf56 (diff) | |
download | gcc-eeebb022b22ec51557bc1c731dc168d58c6e1cd3.zip gcc-eeebb022b22ec51557bc1c731dc168d58c6e1cd3.tar.gz gcc-eeebb022b22ec51557bc1c731dc168d58c6e1cd3.tar.bz2 |
re PR c++/88986 (ICE: tree check: expected tree that contains 'decl minimal' structure, have 'error_mark' in member_vec_binary_search, at cp/name-lookup.c:1136)
/cp
2019-02-13 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/88986
* decl.c (make_typename_type): Allow for TYPE_PACK_EXPANSION as
context (the first argument).
* pt.c (tsubst, case TYPENAME_TYPE): Handle TYPE_PACK_EXPANSION
as context.
/testsuite
2019-02-13 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/88986
* g++.dg/cpp1z/using4.C: New.
* g++.dg/cpp1z/using5.C: Likewise.
* g++.dg/cpp1z/using6.C: Likewise.
From-SVN: r268839
Diffstat (limited to 'gcc/cp/decl.c')
-rw-r--r-- | gcc/cp/decl.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index 4038197..31d7dc5 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -3816,7 +3816,9 @@ make_typename_type (tree context, tree name, enum tag_types tag_type, gcc_assert (identifier_p (name)); gcc_assert (TYPE_P (context)); - if (!MAYBE_CLASS_TYPE_P (context)) + if (TREE_CODE (context) == TYPE_PACK_EXPANSION) + /* This can happen for C++17 variadic using (c++/88986). */; + else if (!MAYBE_CLASS_TYPE_P (context)) { if (complain & tf_error) error ("%q#T is not a class", context); |