Objective-C++ Sema - Allow static_cast of one objc pointer to

another.

llvm-svn: 103630
This commit is contained in:
Fariborz Jahanian
2010-05-12 18:16:59 +00:00
parent a11479eb49
commit b0901b7951
2 changed files with 34 additions and 1 deletions

View File

@@ -591,7 +591,11 @@ static TryCastResult TryStaticCast(Sema &Self, Expr *&SrcExpr,
}
}
}
// Allow arbitray objective-c pointer conversion with static casts.
if (SrcType->isObjCObjectPointerType() &&
DestType->isObjCObjectPointerType())
return TC_Success;
// We tried everything. Everything! Nothing works! :-(
return TC_NotApplicable;
}

View File

@@ -0,0 +1,29 @@
// RUN: %clang_cc1 -fsyntax-only -verify %s
@protocol NSTextViewDelegate;
@interface NSResponder @end
class AutoreleaseObject
{
public:
AutoreleaseObject();
~AutoreleaseObject();
AutoreleaseObject& operator=(NSResponder* inValue);
AutoreleaseObject& operator=(const AutoreleaseObject& inValue);
AutoreleaseObject(const AutoreleaseObject& inValue);
operator NSResponder*() const;
};
void InvokeSaveFocus()
{
AutoreleaseObject mResolvedFirstResponder;
id<NSTextViewDelegate> Mydelegate;
mResolvedFirstResponder = static_cast<NSResponder*>(Mydelegate);
}