On 04/11/2011 04:50 PM, Rodrigo Rivas wrote:
Because the type of the expression must have complete type *only* if it is an array.
Actually, if it has class type, it must also have a complete type or the class member lookup is ill-formed. And you can't pass an expression of void type to a function call. So we can just unconditionally require a complete type.
Well, I just did that, but I'm not sure this is totally correct, I've just begun to understand finish_call_expr. It works, if only because I'm the only one using this new code path. Fell free to revise/change/comment about it.
It looks fine.
+ ? LOOKUP_NONVIRTUAL : 0),
Except this should be ? LOOKUP_NORMAL|LOOKUP_NORVIRTUAL : LOOKUP_NORMAL. The other calls to build_new_method_call here should be fixed that way, too.
Jason