diff options
-rw-r--r-- | clang/lib/Serialization/ASTReader.cpp | 10 | ||||
-rw-r--r-- | clang/test/VFS/Inputs/UsesFoo.framework/Headers/UsesFoo.h | 1 | ||||
-rw-r--r-- | clang/test/VFS/Inputs/UsesFoo.framework/Modules/module.modulemap | 4 | ||||
-rw-r--r-- | clang/test/VFS/umbrella-mismatch.m | 2 |
4 files changed, 13 insertions, 4 deletions
diff --git a/clang/lib/Serialization/ASTReader.cpp b/clang/lib/Serialization/ASTReader.cpp index bb6a450222d..0ee2b2b2215 100644 --- a/clang/lib/Serialization/ASTReader.cpp +++ b/clang/lib/Serialization/ASTReader.cpp @@ -4578,9 +4578,13 @@ ASTReader::ReadSubmoduleBlock(ModuleFile &F, unsigned ClientLoadCapabilities) { if (!CurrentModule->getUmbrellaHeader()) ModMap.setUmbrellaHeader(CurrentModule, Umbrella); else if (CurrentModule->getUmbrellaHeader() != Umbrella) { - if ((ClientLoadCapabilities & ARR_OutOfDate) == 0) - Error("mismatched umbrella headers in submodule"); - return OutOfDate; + // This can be a spurious difference caused by changing the VFS to + // point to a different copy of the file, and it is too late to + // to rebuild safely. + // FIXME: If we wrote the virtual paths instead of the 'real' paths, + // after input file validation only real problems would remain and we + // could just error. For now, assume it's okay. + break; } } break; diff --git a/clang/test/VFS/Inputs/UsesFoo.framework/Headers/UsesFoo.h b/clang/test/VFS/Inputs/UsesFoo.framework/Headers/UsesFoo.h new file mode 100644 index 00000000000..375d3ea2a04 --- /dev/null +++ b/clang/test/VFS/Inputs/UsesFoo.framework/Headers/UsesFoo.h @@ -0,0 +1 @@ +@import Foo; diff --git a/clang/test/VFS/Inputs/UsesFoo.framework/Modules/module.modulemap b/clang/test/VFS/Inputs/UsesFoo.framework/Modules/module.modulemap new file mode 100644 index 00000000000..55be29e8001 --- /dev/null +++ b/clang/test/VFS/Inputs/UsesFoo.framework/Modules/module.modulemap @@ -0,0 +1,4 @@ +framework module UsesFoo { + umbrella header "UsesFoo.h" + export * +} diff --git a/clang/test/VFS/umbrella-mismatch.m b/clang/test/VFS/umbrella-mismatch.m index f3a4ab34e06..741b0e69308 100644 --- a/clang/test/VFS/umbrella-mismatch.m +++ b/clang/test/VFS/umbrella-mismatch.m @@ -4,4 +4,4 @@ // RUN: %clang_cc1 -Werror -fmodules -fmodules-cache-path=%t -ivfsoverlay %t.yaml -F %S/Inputs -fsyntax-only %s -verify // RUN: %clang_cc1 -Werror -fmodules -fmodules-cache-path=%t -F %S/Inputs -fsyntax-only %s -verify // expected-no-diagnostics -@import Foo; +@import UsesFoo; |