Mercurial > hg > CbC > CbC_llvm
view clang/test/SemaObjC/block-compare.mm @ 150:1d019706d866
LLVM10
author | anatofuz |
---|---|
date | Thu, 13 Feb 2020 15:10:13 +0900 |
parents | |
children |
line wrap: on
line source
// RUN: %clang_cc1 -S -o - -triple i686-windows -verify -fblocks \ // RUN: -Wno-unused-comparison %s #pragma clang diagnostic ignored "-Wunused-comparison" #define nil ((id)nullptr) @protocol NSObject @end @protocol NSCopying @end @protocol OtherProtocol @end __attribute__((objc_root_class)) @interface NSObject <NSObject, NSCopying> @end __attribute__((objc_root_class)) @interface Test @end int main() { void (^block)() = ^{}; NSObject *object; id<NSObject, NSCopying> qualifiedId; id<OtherProtocol> poorlyQualified1; Test *objectOfWrongType; block == nil; block == object; block == qualifiedId; nil == block; object == block; qualifiedId == block; // these are still not valid: blocks must be compared with id, NSObject*, or a protocol-qualified id // conforming to NSCopying or NSObject. block == poorlyQualified1; // expected-error {{invalid operands to binary expression ('void (^)()' and 'id<OtherProtocol>')}} block == objectOfWrongType; // expected-error {{invalid operands to binary expression ('void (^)()' and 'Test *')}} poorlyQualified1 == block; // expected-error {{invalid operands to binary expression ('id<OtherProtocol>' and 'void (^)()')}} objectOfWrongType == block; // expected-error {{invalid operands to binary expression ('Test *' and 'void (^)()')}} return 0; }