75 lines · plain
1// RUN: rm -rf %t2// RUN: %clang_cc1 -fmodules -fimplicit-module-maps -fobjc-arc -I %S/Inputs -fmodules-cache-path=%t %s -verify -DUSE_1 -DUSE_2 -DUSE_3 -DUSE_4 -DUSE_53// RUN: %clang_cc1 -fmodules -fimplicit-module-maps -fobjc-arc -I %S/Inputs -fmodules-cache-path=%t %s -verify -DUSE_2 -DUSE_3 -DUSE_4 -DUSE_54// RUN: %clang_cc1 -fmodules -fimplicit-module-maps -fobjc-arc -I %S/Inputs -fmodules-cache-path=%t %s -verify -DUSE_3 -DUSE_4 -DUSE_55// RUN: %clang_cc1 -fmodules -fimplicit-module-maps -fobjc-arc -I %S/Inputs -fmodules-cache-path=%t %s -verify -DUSE_4 -DUSE_56// RUN: %clang_cc1 -fmodules -fimplicit-module-maps -fobjc-arc -I %S/Inputs -fmodules-cache-path=%t %s -verify -DUSE_57 8// expected-note@Inputs/def.h:5 0-1{{here}}9// expected-note@Inputs/def.h:11 0-1{{here}}10// expected-note@Inputs/def.h:16 0-1{{here}}11// expected-note@Inputs/def-include.h:11 0-1{{here}}12 13@class Def;14Def *def;15class Def2; // expected-note 0-1{{forward decl}}16Def2 *def2;17namespace Def3NS { class Def3; } // expected-note 0-1{{forward decl}}18Def3NS::Def3 *def3;19 20@interface Unrelated21- defMethod;22@end23 24@import decldef;25#ifdef USE_126A *a1; // expected-error{{declaration of 'A' must be imported from module 'decldef.Def'}}27B *b1;28#define USED29#endif30@import decldef.Decl;31 32A *a2;33B *b;34 35void testA(A *a) {36#ifdef USE_237 a->ivar = 17;38 #ifndef USED39 // expected-error@-2{{definition of 'A' must be imported from module 'decldef.Def' before it is required}}40 #define USED41 #endif42#endif43}44 45void testB() {46#ifdef USE_347 B b;48 #ifndef USED49 // expected-error@-2{{definition of 'B' must be imported from module 'decldef.Def' before it is required}}50 #define USED51 #endif52#endif53}54 55void testDef() {56#ifdef USE_457 [def defMethod];58 #ifndef USED59 // expected-error@-2{{definition of 'Def' must be imported from module 'decldef.Def' before it is required}}60 #define USED61 #endif62#endif63}64 65void testDef2() {66#ifdef USE_567 def2->func();68 def3->func();69 #ifndef USED70 // expected-error@-3 {{definition of 'Def2' must be imported}}71 #define USED72 #endif73#endif74}75