Commit 479781c5 by Mark Mitchell Committed by Mark Mitchell

* lex.c (do_identifier): Fix thinko in previous change.

From-SVN: r22064
parent 818c8883
1998-08-28 Mark Mitchell <mark@markmitchell.com>
* lex.c (do_identifier): Fix thinko in previous change.
1998-08-28 Jason Merrill <jason@yorick.cygnus.com>
* search.c (dfs_search, binfo_for_vtable, dfs_bfv_helper): New fns.
......@@ -20,12 +24,13 @@
* decl.c (finish_enum): Don't set the TREE_TYPE for the
enumeration constant values if we're processing_template_decls.
Don't set the type for the CONST_DECLs either; that's done in
build_enumerator. (
build_enumerator.
(build_enumerator): Take the enumeration type as a
paramter.
parameter.
* lex.c (do_identifier): Don't resolve enumeration constants while
processing template declarations, even if they happen to be
TEMPLATE_PARM_INDEXs.
* parse.y (current_enum_type): New variable.
(primary): Don't allow statement-expression in local classes just
as we don't in global classes.
......
......@@ -2985,11 +2985,14 @@ do_identifier (token, parsing, args)
/* protected is OK, since it's an enum of `this'. */
}
if (!processing_template_decl
/* Don't resolve enumeration constants while processing
template declarations, unless they're for global
enumerations and therefore cannot involve template
parameters. */
|| (!DECL_CONTEXT (id)
/* Really, if we're processing a template, we just want to
resolve template parameters, and not enumeration
constants. But, they're hard to tell apart. (Note that
a non-type template parameter may have enumeration type.)
Fortunately, there's no harm in resolving *global*
enumeration constants, since they can't depend on
template parameters. */
|| (TREE_CODE (CP_DECL_CONTEXT (id)) == NAMESPACE_DECL
&& TREE_CODE (DECL_INITIAL (id)) == TEMPLATE_PARM_INDEX))
id = DECL_INITIAL (id);
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment