teak-llvm/clang/test/SemaObjCXX/block-for-lambda-conversion.mm
Manman Ren 8abc2e51b8 ObjCXX: fix a crash during typo correction.
For ObjCXX, we can create a CastExpr with Kind being CK_UserDefinedConversion
and SubExpr being BlockExpr. Specifically one can return BlockExpr from
BuildCXXMemberCallExpr and the result can be used to build a CastExpr.

Fix the assumption in CastExpr::getSubExprAsWritten that SubExpr can only
be CXXMemberCallExpr.

rdar://problem/24364077

llvm-svn: 259591
2016-02-02 22:23:03 +00:00

28 lines
688 B
Plaintext

// RUN: %clang_cc1 -fsyntax-only -fblocks -verify -std=c++11 %s
enum NSEventType {
NSEventTypeFlagsChanged = 12
};
enum NSEventMask {
NSEventMaskLeftMouseDown = 1
};
static const NSEventType NSFlagsChanged = NSEventTypeFlagsChanged;
@interface NSObject
@end
@interface NSEvent : NSObject {
}
+ (nullable id)
addMonitor:(NSEventMask)mask handler:(NSEvent *_Nullable (^)(NSEvent *))block;
@end
void test(id weakThis) {
id m_flagsChangedEventMonitor = [NSEvent
addMonitor:NSFlagsChangedMask //expected-error {{use of undeclared identifier 'NSFlagsChangedMask'}}
handler:[weakThis](NSEvent *flagsChangedEvent) {
return flagsChangedEvent;
}];
}