From fd037e0d44bb1864f21b9797133b129a7f1f1222 Mon Sep 17 00:00:00 2001 From: Nathan Sidwell Date: Fri, 11 Aug 2000 09:28:01 +0000 Subject: [PATCH] decl2.c (build_expr_from_tree, [...]): Build explicit TEMPLATE_ID_EXPR args. * decl2.c (build_expr_from_tree, case METHOD_CALL_EXPR): Build explicit TEMPLATE_ID_EXPR args. (build_expr_from_tree, case CALL_EXPR): Likewise. From-SVN: r35629 --- gcc/cp/ChangeLog | 6 ++++++ gcc/cp/decl2.c | 18 ++++++++++++++++-- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index ab9264e899a6..985716935e38 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2000-08-11 Nathan Sidwell + + * decl2.c (build_expr_from_tree, case METHOD_CALL_EXPR): Build + explicit TEMPLATE_ID_EXPR args. + (build_expr_from_tree, case CALL_EXPR): Likewise. + 2000-08-11 Nathan Sidwell * decl.c (check_tag_decl): Diagnose typename's which don't diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c index cf1feb606e9f..c968bcb2b04d 100644 --- a/gcc/cp/decl2.c +++ b/gcc/cp/decl2.c @@ -4116,10 +4116,17 @@ build_expr_from_tree (t) if (TREE_CODE (TREE_OPERAND (t, 0)) == SCOPE_REF) { tree ref = TREE_OPERAND (t, 0); + tree name = TREE_OPERAND (ref, 1); + + if (TREE_CODE (name) == TEMPLATE_ID_EXPR) + name = build_nt (TEMPLATE_ID_EXPR, + TREE_OPERAND (name, 0), + build_expr_from_tree (TREE_OPERAND (name, 1))); + return build_scoped_method_call (build_expr_from_tree (TREE_OPERAND (t, 1)), build_expr_from_tree (TREE_OPERAND (ref, 0)), - TREE_OPERAND (ref, 1), + name, build_expr_from_tree (TREE_OPERAND (t, 2))); } else @@ -4151,9 +4158,16 @@ build_expr_from_tree (t) if (TREE_CODE (TREE_OPERAND (t, 0)) == SCOPE_REF) { tree ref = TREE_OPERAND (t, 0); + tree name = TREE_OPERAND (ref, 1); + + if (TREE_CODE (name) == TEMPLATE_ID_EXPR) + name = build_nt (TEMPLATE_ID_EXPR, + TREE_OPERAND (name, 0), + build_expr_from_tree (TREE_OPERAND (name, 1))); + return build_member_call (build_expr_from_tree (TREE_OPERAND (ref, 0)), - TREE_OPERAND (ref, 1), + name, build_expr_from_tree (TREE_OPERAND (t, 1))); } else -- 2.43.5