From 265c8f45d5034e73e065959d00d3a563a0597adf Mon Sep 17 00:00:00 2001 From: Daniel Jacobowitz Date: Tue, 16 Dec 2003 14:03:58 +0000 Subject: [PATCH] 2003-12-16 Daniel Jacobowitz * cp-names.y (function_arglist): Call d_qualify. (ptr_operator_seq): Reverse the list. (decl1b): Add the declarator-id. --- gdb/ChangeLog.cplus | 6 ++++++ gdb/cp-names.y | 25 +++++++++++++------------ 2 files changed, 19 insertions(+), 12 deletions(-) diff --git a/gdb/ChangeLog.cplus b/gdb/ChangeLog.cplus index b9b4063e0cf..aab1a6eac41 100644 --- a/gdb/ChangeLog.cplus +++ b/gdb/ChangeLog.cplus @@ -1,3 +1,9 @@ +2003-12-16 Daniel Jacobowitz + + * cp-names.y (function_arglist): Call d_qualify. + (ptr_operator_seq): Reverse the list. + (decl1b): Add the declarator-id. + 2003-12-14 Daniel Jacobowitz * Makefile.in: Add cp-names.y. diff --git a/gdb/cp-names.y b/gdb/cp-names.y index 3a85d172c6e..5cf08b92faa 100644 --- a/gdb/cp-names.y +++ b/gdb/cp-names.y @@ -434,11 +434,12 @@ function_args : type } ; -/*FIXME d_qualify */ function_arglist: '(' function_args ')' qualifiers_opt - { $$ = d_make_comp (di, D_COMP_FUNCTION_TYPE, NULL, $2.comp); } + { $$ = d_make_comp (di, D_COMP_FUNCTION_TYPE, NULL, $2.comp); + $$ = d_qualify ($$, $4, 1); } | '(' ')' qualifiers_opt - { $$ = d_make_comp (di, D_COMP_FUNCTION_TYPE, NULL, NULL); } + { $$ = d_make_comp (di, D_COMP_FUNCTION_TYPE, NULL, NULL); + $$ = d_qualify ($$, $3, 1); } ; /* @@ -457,6 +458,7 @@ typed_function : type base_function ; */ +/* FIXME actions all wrong */ qualified : ext_name function_arglist {} | type1a ext_name function_arglist @@ -601,10 +603,10 @@ ptr_operator : ptr_operator_1 ; ptr_operator_seq: ptr_operator - | ptr_operator ptr_operator_seq - { $$.comp = $2.comp; - $$.last = $1.last; - *$2.last = $1.comp; } + | ptr_operator_seq ptr_operator + { $$.comp = $1.comp; + $$.last = $2.last; + *$1.last = $2.comp; } ; /* "type1" are the type productions which can legally be followed by a :: @@ -657,13 +659,12 @@ type1b : ext_name '(' ptr_operator_seq ')' '(' function_args ')' *$3.last = funtype; } ; -/* FIXME ACTION */ -/* FIXME when I add the name here I get a conflict on ptr-to-members that I don't see a soln for */ -decl1b : ext_name '(' ptr_operator_seq ')' '(' function_args ')' +/* FIXME ACTION is quite wrong; need a new type for identifiers? */ +decl1b : ext_name '(' ptr_operator_seq ext_name '(' function_args ')' ')' { struct d_comp *funtype; funtype = d_make_comp (di, D_COMP_FUNCTION_TYPE, $1, $6.comp); - $$ = $3.comp; - *$3.last = funtype; } + *$3.last = funtype; + $$ = d_make_comp (di, D_COMP_TYPED_NAME, $4, $3.comp); } /* | COLONCOLON ext_name '(' ptr_operator_seq ')' '(' function_args ')' -- 2.39.5