[cfe-dev] Message send to super

David Chisnall csdavec at swansea.ac.uk
Fri May 2 17:15:57 PDT 2008


Hi,

It appears that, in generating the AST, the following expression:

[super msg];

is being translated to:

[(superclass*)self msg];

Running clang -ast-print confirms this.  These two expressions have  
completely different semantics in Objective-C, and since there appears  
to be no way of determining whether the user actually performed a cast  
on self (which is uncommon, but does happen in real code) or sent a  
message to super (which happens a lot more frequently).

Can anyone suggest a way of distinguishing these two?  If not, is it  
possible to introduce a separate kind of AST node, or a flag in the  
ObjCMessageExpr indicating if super is the receiver?  I have now  
written the code to produce the correct output for the GNU runtime  
with this kind of expression, but am currently unable to connect it to  
anything.

David



More information about the cfe-dev mailing list