[cfe-commits] r44028 - in /cfe/trunk: AST/StmtPrinter.cpp Sema/SemaExpr.cpp include/clang/AST/Expr.h test/Sema/static-ivar-ref-1.m

Chris Lattner clattner at apple.com
Wed Dec 12 20:44:45 PST 2007


On Nov 12, 2007, at 2:29 PM, Fariborz Jahanian wrote:

> Author: fjahanian
> Date: Mon Nov 12 16:29:28 2007
> New Revision: 44028
>
> URL: http://llvm.org/viewvc/llvm-project?rev=44028&view=rev
> Log:
> Patch to do statically typed ivar references.

Hi Fariborz,

> +++ cfe/trunk/Sema/SemaExpr.cpp Mon Nov 12 16:29:28 2007
> @@ -519,9 +519,20 @@
>     if (ret.isNull())
>       return true;
>     return new OCUVectorElementExpr(ret, BaseExpr, Member, MemberLoc);
> +  } else if (BaseType->isObjcInterfaceType()) {
> +    ObjcInterfaceDecl *IFace;
> +    if (isa<ObjcInterfaceType>(BaseType.getCanonicalType()))
> +      IFace = dyn_cast<ObjcInterfaceType>(BaseType)->getDecl();
> +    else
> +      IFace = dyn_cast<ObjcQualifiedInterfaceType>(BaseType)
> +                ->getInterfaceType()->getDecl();

Code like this could be simplified if ObjcQualifiedInterfaceType  
inherited from ObjcInterfaceType.  Would it make sense to do this?   
Then the code above would just be:

} else if (ObjcInterfaceType *IT = BaseType->getAsObjcInterfaceType()) {
    ObjcInterfaceDecl *IFace = IT->getDecl();

or something.

If you don't think that ObjcQualifiedInterfaceType should derive from  
ObjcInterfaceType then we need to figure out a better name for  
"isObjcInterfaceType".  I wouldn't expect that to return true for  
ObjcQualifiedInterfaceType unless ObjcQualifiedInterfaceType derives  
from ObjcInterfaceType.

-Chris




More information about the cfe-commits mailing list