mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-15 12:50:59 +08:00
c++: using-decl instantiation
In streaming using decls I needed to check some assumptions. This adds those checks to the instantiation machinery. gcc/cp/ * pt.c (tsubst_expr): Simplify using decl instantiation, add asserts.
This commit is contained in:
parent
78f2f08ac8
commit
a52bf01643
15
gcc/cp/pt.c
15
gcc/cp/pt.c
@ -18058,11 +18058,18 @@ tsubst_expr (tree t, tree args, tsubst_flags_t complain, tree in_decl,
|
||||
finish_label_decl (DECL_NAME (decl));
|
||||
else if (TREE_CODE (decl) == USING_DECL)
|
||||
{
|
||||
tree scope = USING_DECL_SCOPE (decl);
|
||||
tree name = DECL_NAME (decl);
|
||||
/* We cannot have a member-using decl here (until 'using
|
||||
enum T' is a thing). */
|
||||
gcc_checking_assert (!DECL_DEPENDENT_P (decl));
|
||||
|
||||
scope = tsubst (scope, args, complain, in_decl);
|
||||
finish_nonmember_using_decl (scope, name);
|
||||
/* This must be a non-dependent using-decl, and we'll have
|
||||
used the names it found during template parsing. We do
|
||||
not want to do the lookup again, because we might not
|
||||
find the things we found then. (Again, using enum T
|
||||
might mean we have to do things here.) */
|
||||
tree scope = USING_DECL_SCOPE (decl);
|
||||
gcc_checking_assert (scope
|
||||
== tsubst (scope, args, complain, in_decl));
|
||||
}
|
||||
else if (is_capture_proxy (decl)
|
||||
&& !DECL_TEMPLATE_INSTANTIATION (current_function_decl))
|
||||
|
Loading…
x
Reference in New Issue
Block a user