1*67e74705SXin Li // RUN: rm -rf %t 2*67e74705SXin Li // RUN: %clang_cc1 -x objective-c -fmodules-cache-path=%t -fmodules -fimplicit-module-maps -I %S/Inputs/normal-module-map %s -verify 3*67e74705SXin Li #include "Umbrella/umbrella_sub.h" 4*67e74705SXin Li getUmbrella()5*67e74705SXin Liint getUmbrella() { 6*67e74705SXin Li return umbrella + umbrella_sub; 7*67e74705SXin Li } 8*67e74705SXin Li 9*67e74705SXin Li @import Umbrella2; 10*67e74705SXin Li 11*67e74705SXin Li #include "a1.h" 12*67e74705SXin Li #include "b1.h" 13*67e74705SXin Li #include "nested/nested2.h" 14*67e74705SXin Li test()15*67e74705SXin Liint test() { 16*67e74705SXin Li return a1 + b1 + nested2; 17*67e74705SXin Li } 18*67e74705SXin Li 19*67e74705SXin Li @import nested_umbrella.a; 20*67e74705SXin Li testNestedUmbrellaA()21*67e74705SXin Liint testNestedUmbrellaA() { 22*67e74705SXin Li return nested_umbrella_a; 23*67e74705SXin Li } 24*67e74705SXin Li testNestedUmbrellaBFail()25*67e74705SXin Liint testNestedUmbrellaBFail() { 26*67e74705SXin Li return nested_umbrella_b; 27*67e74705SXin Li // expected-error@-1{{declaration of 'nested_umbrella_b' must be imported from module 'nested_umbrella.b' before it is required}} 28*67e74705SXin Li // expected-note@Inputs/normal-module-map/nested_umbrella/b.h:1{{previous}} 29*67e74705SXin Li } 30*67e74705SXin Li 31*67e74705SXin Li @import nested_umbrella.b; 32*67e74705SXin Li testNestedUmbrellaB()33*67e74705SXin Liint testNestedUmbrellaB() { 34*67e74705SXin Li return nested_umbrella_b; 35*67e74705SXin Li } 36*67e74705SXin Li 37*67e74705SXin Li @import nested_umbrella.a_extras; 38*67e74705SXin Li 39*67e74705SXin Li @import nested_umbrella._1; 40*67e74705SXin Li 41*67e74705SXin Li @import nested_umbrella.decltype_; 42*67e74705SXin Li testSanitizedName()43*67e74705SXin Liint testSanitizedName() { 44*67e74705SXin Li return extra_a + one + decltype_val; 45*67e74705SXin Li } 46