mirror of
https://github.com/intel/llvm.git
synced 2026-01-24 08:30:34 +08:00
Objective-C++ Sema - Allow static_cast of one objc pointer to
another. llvm-svn: 103630
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
29
clang/test/SemaObjCXX/static-cast.mm
Normal file
29
clang/test/SemaObjCXX/static-cast.mm
Normal 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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user