On 5/31/19 1:39 PM, Nathan Sidwell wrote:
I discovered we could occasionally create TYPE_DECLs with error_mark_node type, and then successfully push them into the symbol table!

I don't think we should be doing this -- it means TREE_TYPE of a TYPE_DECL might not be a type, with resulting ICE fallout.  (When we cons up a VAR_DECL to cope with an undefined lookup we give it int type, to avoid this kind of thing.)

This patch stops grokdeclarator doing this, by immediately returning error_mark_node.  And added an assert to push_template_decl_real, where I noticed the problem occurring.

The fallout is some error cascade on symbol lookups that now fail.

Right, that's why we had the previous behavior, to avoid this extra noise. And then various places check error_operand_p to avoid trying to do anything with such a declaration.

Perhaps lookup should return error_mark_node rather than a _DECL with error_mark_node type?

Jason

Reply via email to