diff options
author | Nathan Sidwell <nathan@codesourcery.com> | 2000-08-11 09:28:01 +0000 |
---|---|---|
committer | Nathan Sidwell <nathan@gcc.gnu.org> | 2000-08-11 09:28:01 +0000 |
commit | fd037e0d44bb1864f21b9797133b129a7f1f1222 (patch) | |
tree | 3869daa04d4112bde6e7cbc1307a6c5abaefc8b7 /gcc | |
parent | 9104081d7828eead6bc7ed37db864ebbf0876918 (diff) | |
download | gcc-fd037e0d44bb1864f21b9797133b129a7f1f1222.zip gcc-fd037e0d44bb1864f21b9797133b129a7f1f1222.tar.gz gcc-fd037e0d44bb1864f21b9797133b129a7f1f1222.tar.bz2 |
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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cp/decl2.c | 18 |
2 files changed, 22 insertions, 2 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index ab9264e..9857169 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,11 @@ 2000-08-11 Nathan Sidwell <nathan@codesourcery.com> + * 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 <nathan@codesourcery.com> + * decl.c (check_tag_decl): Diagnose typename's which don't declare anything. diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c index cf1feb6..c968bcb 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 |