[lld][WebAssembly] Reinstate mistakenly disabled test. NFC
[llvm-project.git] / clang / test / Modules / merge-objc-protocol-visibility.m
blob8521a60e7adc8e0a7d1dca265017c110ae0e7aa4
1 // UNSUPPORTED: -aix
2 // RUN: rm -rf %t
3 // RUN: split-file %s %t
4 // RUN: %clang_cc1 -emit-llvm -o %t/test.bc -F%t/Frameworks %t/test.m -Werror=objc-method-access -DHIDDEN_FIRST=1 \
5 // RUN:            -fmodules -fimplicit-module-maps -fmodules-cache-path=%t/modules.cache
6 // RUN: %clang_cc1 -emit-llvm -o %t/test.bc -F%t/Frameworks %t/test.m -Werror=objc-method-access -DHIDDEN_FIRST=0 \
7 // RUN:            -fmodules -fimplicit-module-maps -fmodules-cache-path=%t/modules.cache
9 // Test a case when Objective-C protocol is imported both as hidden and as visible.
11 //--- Frameworks/Foundation.framework/Headers/Foundation.h
12 @interface NSObject
13 @end
15 //--- Frameworks/Foundation.framework/Modules/module.modulemap
16 framework module Foundation {
17   header "Foundation.h"
18   export *
21 //--- Frameworks/Common.framework/Headers/Common.h
22 #import <Foundation/Foundation.h>
23 @protocol Testing;
24 @interface Common : NSObject
25 - (id<Testing>)getProtocolObj;
26 @end
28 //--- Frameworks/Common.framework/Modules/module.modulemap
29 framework module Common {
30   header "Common.h"
31   export *
34 //--- Frameworks/Regular.framework/Headers/Regular.h
35 @protocol Testing
36 - (void)protocolMethod;
37 @end
39 //--- Frameworks/Regular.framework/Modules/module.modulemap
40 framework module Regular {
41   header "Regular.h"
42   export *
45 //--- Frameworks/RegularHider.framework/Headers/Visible.h
46 // Empty, file required to create a module.
48 //--- Frameworks/RegularHider.framework/Headers/Hidden.h
49 @protocol Testing
50 - (void)protocolMethod;
51 @end
53 //--- Frameworks/RegularHider.framework/Modules/module.modulemap
54 framework module RegularHider {
55   header "Visible.h"
56   export *
58   explicit module Hidden {
59     header "Hidden.h"
60     export *
61   }
64 //--- test.m
65 #import <Common/Common.h>
67 #if HIDDEN_FIRST
68 #import <RegularHider/Visible.h>
69 #import <Regular/Regular.h>
70 #else
71 #import <Regular/Regular.h>
72 #import <RegularHider/Visible.h>
73 #endif
75 void test(Common *obj) {
76   [[obj getProtocolObj] protocolMethod];