1// REQUIRES: shell 2// RUN: rm -rf %t 3// RUN: rm -rf %t-saved 4// RUN: mkdir -p %t-saved 5 6// Initial module build (-Werror=header-guard) 7// RUN: %clang_cc1 -fmodules -fmodules-cache-path=%t -fdisable-module-hash \ 8// RUN: -F %S/Inputs -fsyntax-only %s -verify -Wno-incomplete-umbrella \ 9// RUN: -Werror=header-guard 10// RUN: cp %t/Module.pcm %t-saved/Module.pcm 11 12// Building with looser -Werror options does not rebuild 13// RUN: %clang_cc1 -fmodules -fmodules-cache-path=%t -fdisable-module-hash \ 14// RUN: -F %S/Inputs -fsyntax-only %s -verify -Wno-incomplete-umbrella 15// RUN: diff %t/Module.pcm %t-saved/Module.pcm 16 17// Make the build more restricted (-Werror) 18// RUN: %clang_cc1 -fmodules -fmodules-cache-path=%t -fdisable-module-hash \ 19// RUN: -F %S/Inputs -fsyntax-only %s -verify -Wno-incomplete-umbrella \ 20// RUN: -Werror -Wno-incomplete-umbrella 21// RUN: not diff %t/Module.pcm %t-saved/Module.pcm 22// RUN: cp %t/Module.pcm %t-saved/Module.pcm 23 24// Ensure -Werror=header-guard is less strict than -Werror 25// RUN: %clang_cc1 -fmodules -fmodules-cache-path=%t -fdisable-module-hash \ 26// RUN: -F %S/Inputs -fsyntax-only %s -verify -Wno-incomplete-umbrella \ 27// RUN: -Werror=header-guard -Wno-incomplete-umbrella 28// RUN: diff %t/Module.pcm %t-saved/Module.pcm 29 30// But -Werror=unused is not, because some of its diags are DefaultIgnore 31// RUN: %clang_cc1 -fmodules -fmodules-cache-path=%t -fdisable-module-hash \ 32// RUN: -F %S/Inputs -fsyntax-only %s -verify -Wno-incomplete-umbrella \ 33// RUN: -Werror=unused 34// RUN: not diff %t/Module.pcm %t-saved/Module.pcm 35// RUN: cp %t/Module.pcm %t-saved/Module.pcm 36 37// RUN: %clang_cc1 -fmodules -fmodules-cache-path=%t -fdisable-module-hash \ 38// RUN: -F %S/Inputs -fsyntax-only %s -verify -Wno-incomplete-umbrella \ 39// RUN: -Werror -Wno-incomplete-umbrella 40 41// FIXME: when rebuilding the module, take the union of the diagnostic options 42// so that we don't need to rebuild here 43// RUN-DISABLED: diff %t/Module.pcm %t-saved/Module.pcm 44 45// -Wno-everything, -Werror 46// RUN: %clang_cc1 -fmodules -fmodules-cache-path=%t -fdisable-module-hash \ 47// RUN: -F %S/Inputs -fsyntax-only %s -verify -Wno-incomplete-umbrella \ 48// RUN: -Wno-everything -Wall -Werror 49// RUN: cp %t/Module.pcm %t-saved/Module.pcm 50// RUN: %clang_cc1 -fmodules -fmodules-cache-path=%t -fdisable-module-hash \ 51// RUN: -F %S/Inputs -fsyntax-only %s -verify -Wno-incomplete-umbrella \ 52// RUN: -Wall -Werror 53// RUN: not diff %t/Module.pcm %t-saved/Module.pcm 54 55// -pedantic, -Werror is not compatible with -Wall -Werror 56// RUN: %clang_cc1 -fmodules -fmodules-cache-path=%t -fdisable-module-hash \ 57// RUN: -F %S/Inputs -fsyntax-only %s -verify -Wno-incomplete-umbrella \ 58// RUN: -Werror -pedantic 59// RUN: not diff %t/Module.pcm %t-saved/Module.pcm 60// RUN: cp %t/Module.pcm %t-saved/Module.pcm 61 62// -pedantic-errors is less strict that -pedantic, -Werror 63// RUN: %clang_cc1 -fmodules -fmodules-cache-path=%t -fdisable-module-hash \ 64// RUN: -F %S/Inputs -fsyntax-only %s -verify -Wno-incomplete-umbrella \ 65// RUN: -pedantic-errors 66// RUN: diff %t/Module.pcm %t-saved/Module.pcm 67 68// -Wsystem-headers does not affect non-system modules 69// RUN: %clang_cc1 -fmodules -fmodules-cache-path=%t -fdisable-module-hash \ 70// RUN: -F %S/Inputs -fsyntax-only %s -verify -Wno-incomplete-umbrella \ 71// RUN: -pedantic-errors -Wsystem-headers 72// RUN: diff %t/Module.pcm %t-saved/Module.pcm 73 74// expected-no-diagnostics 75@import Module; 76