incomplete-umbrella.m 904 Bytes
// RUN: rm -rf %t
// RUN: not %clang_cc1 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t -F%S/Inputs/incomplete-umbrella -fsyntax-only %s 2>&1 | FileCheck %s

#import <Foo/Foo.h>
#import <Foo/Bar.h>
#import <Foo/Baz.h>
@import Foo.Private;

// CHECK: While building module 'Foo' imported from {{.*[/\]}}incomplete-umbrella.m:4:
// CHECK-NEXT: In file included from <module-includes>:1:
// CHECK-NEXT: {{.*Foo[.]framework[/\]Headers[/\]}}FooPublic.h:2:1: warning: umbrella header for module 'Foo' does not include header 'Bar.h'
// CHECK: While building module 'Foo' imported from {{.*[/\]}}incomplete-umbrella.m:4:
// CHECK-NEXT: In file included from <module-includes>:2:
// CHECK-NEXT: {{.*Foo[.]framework[/\]PrivateHeaders[/\]}}Foo.h:2:1: warning: umbrella header for module 'Foo.Private' does not include header 'Baz.h'
int foo() {
  int a = BAR_PUBLIC;
  int b = BAZ_PRIVATE;
  return 0;
}