+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.
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)
{
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);
}
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);