|  | // RUN: rm -rf %t | 
|  | // RUN: split-file %s %t | 
|  | // RUN: %clang_cc1 -emit-llvm -o %t/test.bc -F%t/Frameworks %t/test.m -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 -DHIDDEN_FIRST=0 \ | 
|  | // RUN:            -fmodules -fimplicit-module-maps -fmodules-cache-path=%t/modules.cache | 
|  | // UNSUPPORTED: target={{.*}}-zos{{.*}}, target={{.*}}-aix{{.*}} | 
|  |  | 
|  | // Test a case when Objective-C interface 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/Regular.framework/Headers/Regular.h | 
|  | #import <Foundation/Foundation.h> | 
|  | @interface Regular : NSObject | 
|  | @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 | 
|  | #import <Foundation/Foundation.h> | 
|  | @interface Regular : NSObject | 
|  | @end | 
|  |  | 
|  | //--- Frameworks/RegularHider.framework/Modules/module.modulemap | 
|  | framework module RegularHider { | 
|  | header "Visible.h" | 
|  | export * | 
|  |  | 
|  | explicit module Hidden { | 
|  | header "Hidden.h" | 
|  | export * | 
|  | } | 
|  | } | 
|  |  | 
|  | //--- test.m | 
|  |  | 
|  | #if HIDDEN_FIRST | 
|  | #import <RegularHider/Visible.h> | 
|  | #import <Regular/Regular.h> | 
|  | #else | 
|  | #import <Regular/Regular.h> | 
|  | #import <RegularHider/Visible.h> | 
|  | #endif | 
|  |  | 
|  | @interface SubClass : Regular | 
|  | @end |