Mark Mitchell <[EMAIL PROTECTED]> writes: | Gabriel Dos Reis wrote: | | > The resason here is that, after we complained that A is incomplete | > (therefore cannot be used as return type in the function definition), | > cp/decl.c:check_function_type() changes the return type to void, thus | > giving misleading diagnostic later. | | That's the bug. It should change the return type to error_mark_node, | and then the code that check returns should be silent in that case.
It turns out that start_preparsed_function() is a one-way drive-thru, i.e., there is no early exit and it does not check for whatever check_function_type() did. Setting the return type to error_mark_node makes the compiler die later in build_function_type -- which is unprepared to have error_mark_node as inputs. Would prefer to have build_function_type() also modified to be nice to error_mark_node? -- Gaby