[cfe-dev] [PATCH]: Parsing for C++ classes
Chris Lattner
clattner at apple.com
Sat Jun 21 11:58:46 PDT 2008
On Jun 21, 2008, at 3:17 AM, Argiris Kirtzidis wrote:
> Chris Lattner wrote:
>>
>> On Jun 20, 2008, at 11:13 AM, Eli Friedman wrote:
>>
>>> In Sema::ActOnIdentifierExpr:
>>> + // FIXME: Should this use a new expr for a direct
>>> reference, instead of
>>> + // turning it into "this->field" ? Or else a MemberExpr
>>> with null base ?
>>> + ExprResult ThisExpr = ActOnCXXThis(Loc);
>>> + return new MemberExpr(static_cast<Expr*>(ThisExpr.Val),
>>> + true, FD, Loc, FD->getType());
>>>
>>> I'd say this is fine, except that you should use an empty
>>> SourceLocation for the artificial "this" so it's distinguishable
>>> from
>>> a real MemberExpr. clang currently uses this technique for
>>> initializer lists.
>>
>> Great catch. I'd strongly prefer to represent "field" and "this-
>> >field" differently. The former should be a DeclRefExpr and the
>> later should be a member expr. We are still trying to untangle the
>> ObjC front-end from this early mistake.
>
> DeclRefExpr is "A reference to a declared variable, function, enum,
> etc." and accepts a ValueDecl. Is it appropriate to change it to
> accept a NamedDecl so that a CXXFieldDecl can be passed ?
Yeah, I think that's ok. If you think a new *Expr is appropriate,
that would also be fine with me too.
Thanks Argiris,
-Chris
More information about the cfe-dev
mailing list