From: Jason Merrill Date: Sun, 19 Jul 1998 23:47:18 +0000 (+0000) Subject: lex.c (do_identifier): Look for class value even if we don't have a global value. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=e13a41239fcc18a362856e167b7dcb97ca4ee1c2;p=gcc.git lex.c (do_identifier): Look for class value even if we don't have a global value. * lex.c (do_identifier): Look for class value even if we don't have a global value. Do implicit declaration if parsing is 2. * semantics.c (finish_call_expr): Pass 2 if we're doing Koenig lookup. From-SVN: r21291 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 09a9b4b74c1..bd3bd68e8f1 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,10 @@ +1998-07-19 Jason Merrill + + * lex.c (do_identifier): Look for class value even if we don't + have a global value. Do implicit declaration if parsing is 2. + * semantics.c (finish_call_expr): Pass 2 if we're doing Koenig + lookup. + 1998-07-19 Mark Mitchell * decl.c (pushtag): Revert previous change. diff --git a/gcc/cp/lex.c b/gcc/cp/lex.c index 8573a8543fe..57639adfdeb 100644 --- a/gcc/cp/lex.c +++ b/gcc/cp/lex.c @@ -2817,17 +2817,17 @@ do_identifier (token, parsing, args) tree args; { register tree id; + int lexing = (parsing == 1); + int in_call = (parsing == 2); - if (! parsing || IDENTIFIER_OPNAME_P (token)) + if (! lexing || IDENTIFIER_OPNAME_P (token)) id = lookup_name (token, 0); else id = lastiddecl; - if (parsing && yychar == YYEMPTY) - yychar = yylex (); /* Scope class declarations before global declarations. */ - if (id && is_global (id) + if ((!id || is_global (id)) && current_class_type != 0 && TYPE_SIZE (current_class_type) == 0) { @@ -2894,7 +2894,7 @@ do_identifier (token, parsing, args) cp_error ("`%D' not defined", token); id = error_mark_node; } - else if (parsing && (yychar == '(' || yychar == LEFT_RIGHT)) + else if (in_call) { id = implicitly_declare (token); } diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c index 241241d1791..50685129e08 100644 --- a/gcc/cp/semantics.c +++ b/gcc/cp/semantics.c @@ -848,7 +848,7 @@ finish_call_expr (fn, args, koenig) if (TREE_CODE (fn) == BIT_NOT_EXPR) fn = build_x_unary_op (BIT_NOT_EXPR, TREE_OPERAND (fn, 0)); else if (TREE_CODE (fn) != TEMPLATE_ID_EXPR) - fn = do_identifier (fn, 0, args); + fn = do_identifier (fn, 2, args); } result = build_x_function_call (fn, args, current_class_ref);