brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.0 KiB · 02883dc Raw
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