Fix type-dependence and the current instantiation.
authorJason Merrill <jason@redhat.com>
Fri, 13 May 2016 19:18:35 +0000 (15:18 -0400)
committerJason Merrill <jason@gcc.gnu.org>
Fri, 13 May 2016 19:18:35 +0000 (15:18 -0400)
commit23cb72663051cd3f5a8952d4aa2186d50243b7d0
treee9aad0aad6326cf9be486f34c8cb1608f3166a1f
parent827e5d3f706ff07400025488c76e1ad7b3300d83
Fix type-dependence and the current instantiation.

PR c++/10200
PR c++/69753
* pt.c (tsubst_decl): Use uses_template_parms.
(instantiate_template_1): Handle non-dependent calls in templates.
(value_dependent_expression_p): Handle BASELINK, FUNCTION_DECL.
(type_dependent_expression_p): Only consider innermost template args.
(dependent_template_arg_p): Check enclosing class of a template here.
(dependent_template_p): Not here.
(type_dependent_object_expression_p): New.
* typeck.c (finish_class_member_access_expr): Use it.
* parser.c (cp_parser_postfix_expression): Use it.
(cp_parser_postfix_dot_deref_expression): Use it.  Use comptypes
to detect the current instantiation.
(cp_parser_lookup_name): Really implement DR 141.
* search.c (lookup_field_r): Prefer a dependent using-declaration.
(any_dependent_bases_p): Split out from...
* name-lookup.c (do_class_using_decl): ...here.
* call.c (build_new_method_call_1): Use it.
* semantics.c (finish_call_expr): 'this' doesn't make a call dependent.
* tree.c (non_static_member_function_p): Remove.
* typeck2.c (build_x_arrow): Use dependent_scope_p.

From-SVN: r236221
14 files changed:
gcc/cp/ChangeLog
gcc/cp/call.c
gcc/cp/cp-tree.h
gcc/cp/name-lookup.c
gcc/cp/parser.c
gcc/cp/pt.c
gcc/cp/search.c
gcc/cp/semantics.c
gcc/cp/tree.c
gcc/cp/typeck.c
gcc/cp/typeck2.c
gcc/testsuite/g++.dg/lookup/member4.C [new file with mode: 0644]
gcc/testsuite/g++.dg/lookup/member5.C [new file with mode: 0644]
gcc/testsuite/g++.dg/template/using14.C