// UNSUPPORTED: target={{.*}}-aix{{.*}} // RUN: rm -rf %t // RUN: split-file %s %t // RUN: %clang_cc1 -emit-llvm -o %t/test.bc -F%t/Frameworks %t/test.m -Werror=objc-method-access -DHIDDEN_FIRST=1 \ // RUN: -fmodules -fimplicit-module-maps -fmodules-cache-path=%t/modules.cache // RUN: %clang_cc1 -emit-llvm -o %t/test.bc -F%t/Frameworks %t/test.m -Werror=objc-method-access -DHIDDEN_FIRST=0 \ // RUN: -fmodules -fimplicit-module-maps -fmodules-cache-path=%t/modules.cache // Test a case when Objective-C protocol is imported both as hidden and as visible. //--- Frameworks/Foundation.framework/Headers/Foundation.h @interface NSObject @end //--- Frameworks/Foundation.framework/Modules/module.modulemap framework module Foundation { header "Foundation.h" export * } //--- Frameworks/Common.framework/Headers/Common.h #import @protocol Testing; @interface Common : NSObject - (id)getProtocolObj; @end //--- Frameworks/Common.framework/Modules/module.modulemap framework module Common { header "Common.h" export * } //--- Frameworks/Regular.framework/Headers/Regular.h @protocol Testing - (void)protocolMethod; @end //--- Frameworks/Regular.framework/Modules/module.modulemap framework module Regular { header "Regular.h" export * } //--- Frameworks/RegularHider.framework/Headers/Visible.h // Empty, file required to create a module. //--- Frameworks/RegularHider.framework/Headers/Hidden.h @protocol Testing - (void)protocolMethod; @end //--- Frameworks/RegularHider.framework/Modules/module.modulemap framework module RegularHider { header "Visible.h" export * explicit module Hidden { header "Hidden.h" export * } } //--- test.m #import #if HIDDEN_FIRST #import #import #else #import #import #endif void test(Common *obj) { [[obj getProtocolObj] protocolMethod]; }