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
This commit is contained in:
parent
077e7015e0
commit
e13a41239f
@ -1,3 +1,10 @@
|
||||
1998-07-19 Jason Merrill <jason@yorick.cygnus.com>
|
||||
|
||||
* 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 <mark@markmitchell.com>
|
||||
|
||||
* decl.c (pushtag): Revert previous change.
|
||||
|
10
gcc/cp/lex.c
10
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);
|
||||
}
|
||||
|
@ -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);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user