// RUN: rm -rf %t
// RUN: %clang_cc1 -fmodules -fobjc-arc -I %S/Inputs -fmodules-cache-path=%t %s -verify -DUSE_1 -DUSE_2 -DUSE_3 -DUSE_4
// RUN: %clang_cc1 -fmodules -fobjc-arc -I %S/Inputs -fmodules-cache-path=%t %s -verify -DUSE_2 -DUSE_3 -DUSE_4
// RUN: %clang_cc1 -fmodules -fobjc-arc -I %S/Inputs -fmodules-cache-path=%t %s -verify -DUSE_3 -DUSE_4
// RUN: %clang_cc1 -fmodules -fobjc-arc -I %S/Inputs -fmodules-cache-path=%t %s -verify -DUSE_4

// expected-note@Inputs/def.h:5 0-1{{previous}}
// expected-note@Inputs/def.h:16 0-1{{previous}}
// expected-note@Inputs/def-include.h:11 0-1{{previous}}

@class Def;
Def *def;
class Def2; // expected-note 0-1{{forward decl}}
Def2 *def2;
namespace Def3NS { class Def3; } // expected-note 0-1{{forward decl}}
Def3NS::Def3 *def3;

@interface Unrelated
- defMethod;
@end

@import decldef;
#ifdef USE_1
A *a1; // expected-error{{declaration of 'A' must be imported from module 'decldef.Def'}}
B *b1;
#define USED
#endif
@import decldef.Decl;

A *a2;
B *b;

void testA(A *a) {
#ifdef USE_2
  a->ivar = 17;
  #ifndef USED
  // expected-error@-2{{definition of 'A' must be imported from module 'decldef.Def' before it is required}}
  #define USED
  #endif
#endif
}

void testB() {
#ifdef USE_3
  B b;
  #ifndef USED
  // expected-error@-2{{definition of 'B' must be imported from module 'decldef.Def' before it is required}}
  #define USED
  #endif
#endif
}

void testDef() {
  [def defMethod];
}

void testDef2() {
#ifdef USE_4
  def2->func();
  def3->func();
  #ifndef USED
  // expected-error@-3 {{definition of 'Def2' must be imported}}
  #define USED
  #endif
#endif
}
