1// RUN: rm -rf %t
2// RUN: %clang_cc1 -fmodules -fimplicit-module-maps -fno-objc-infer-related-result-type -Werror -Wno-error=incomplete-umbrella -fmodules-cache-path=%t -F %S/Inputs -I %S/Inputs -verify %s
3// RUN: %clang_cc1 -fmodules -fimplicit-module-maps -fno-objc-infer-related-result-type -Werror -Wno-error=incomplete-umbrella -x objective-c++ -fmodules-cache-path=%t -F %S/Inputs -I %S/Inputs -verify %s
4// RUN: %clang_cc1 -fmodules -fimplicit-module-maps -fno-objc-infer-related-result-type -Werror -Wno-error=incomplete-umbrella -fmodules-cache-path=%t -F %S/Inputs -I %S/Inputs -verify %s
5#define FOO
6@import Module;
7@interface OtherClass
8@end
9
10// expected-note@Inputs/Module.framework/Headers/Module.h:17{{class method 'alloc' is assumed to return an instance of its receiver type ('Module *')}}
11void test_getModuleVersion() {
12  const char *version = getModuleVersion();
13  const char *version2 = [Module version];
14
15  OtherClass *other = [Module alloc]; // expected-error{{init}}
16}
17
18#ifdef MODULE_SUBFRAMEWORK_H
19#  error MODULE_SUBFRAMEWORK_H should be hidden
20#endif
21
22@import subdir;
23
24const char *getSubdirTest() { return getSubdir(); }
25