[cfe-dev] [PATCH]: Parsing for C++ classes
Argiris Kirtzidis
akyrtzi at gmail.com
Sat Jun 21 03:17:15 PDT 2008
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 ?
-Argiris
More information about the cfe-dev
mailing list