On Oct 6, 2010, at 7:55 AM, Douglas Gregor wrote:

> 
> On Sep 27, 2010, at 5:56 AM, John McCall wrote:
> 
>> On Sep 20, 2010, at 6:30 PM, Douglas Gregor wrote:
>>> I'd really rather not add a new expression type just for the purpose of 
>>> type-checking __is_convertible_to. How about we synthesize appropriate 
>>> expressions instead, e.g., a DeclRefExpr to a synthesized variable, or a 
>>> CallExpr to a synthesized function with an appropriate return type?
>> 
>> Actually, I think there are several places in the AST where "opaque 
>> expression of fixed type and l-valueness" would be very convenient — mostly 
>> with copies, e.g. with synthesized array copies, caught-exception copies, 
>> etc.
> 
> Synthesized array copies always have a parameter to hang on to.

Right, but we end up synthesizing array index variables.  I'm suggesting this 
as a general alternative to making a reference to a synthesized variable.

> I'm on the fence. I don't like having expression nodes that don't represent 
> ideas in the language, but there is some messiness in the expression 
> synthesis we do in Sema.

I'm just saying that there are several places in the language where values come 
from no intrinsically-expressible place, and while it's obviously always 
possible to fake up expressions with the right properties in terms of spurious 
variables, I'm not sure I accept that that's somehow inherently cleaner than 
having a pair of expressions for "this opaque value comes from some place that 
the context knows about" and "the sub-expression needs these opaque values to 
work".  I'm basically suggesting specialized lambdas. :)  They'd definitely be 
constrained to a few places in the AST, though.

John.
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to