Mercurial > hg > CbC > CbC_llvm
diff clang/test/Modules/diag-pragma.cpp @ 150:1d019706d866
LLVM10
author | anatofuz |
---|---|
date | Thu, 13 Feb 2020 15:10:13 +0900 |
parents | |
children | 1f2b6ac9f198 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/clang/test/Modules/diag-pragma.cpp Thu Feb 13 15:10:13 2020 +0900 @@ -0,0 +1,47 @@ +// RUN: rm -rf %t +// RUN: %clang_cc1 -fmodules -fimplicit-module-maps -emit-module -fmodules-cache-path=%t -fmodule-name=diag_pragma -x c++ %S/Inputs/module.map -fmodules-ts +// RUN: %clang_cc1 -fmodules -fimplicit-module-maps -verify -fmodules-cache-path=%t -I %S/Inputs %s -fmodules-ts +// RUN: %clang_cc1 -fmodules -fimplicit-module-maps -emit-module -fmodule-name=diag_pragma -x c++ %S/Inputs/module.map -fmodules-ts -o %t/explicit.pcm -Werror=string-plus-int +// RUN: %clang_cc1 -fmodules -fimplicit-module-maps -verify -fmodules-cache-path=%t -I %S/Inputs %s -fmodules-ts -DEXPLICIT_FLAG -fmodule-file=%t/explicit.pcm + +import diag_pragma; + +int foo(int x) { + // Diagnostics from templates in the module follow the diagnostic state from + // when the module was built. +#ifdef EXPLICIT_FLAG + // expected-error@diag_pragma.h:7 {{adding 'int' to a string}} +#else + // expected-warning@diag_pragma.h:7 {{adding 'int' to a string}} +#endif + // expected-note@diag_pragma.h:7 {{use array indexing}} + f(0); // expected-note {{instantiation of}} + + g(0); // ok, warning was ignored when building module + + // Diagnostics from this source file ignore the diagnostic state from the + // module. + void("foo" + x); // expected-warning {{adding 'int' to a string}} + // expected-note@-1 {{use array indexing}} + +#pragma clang diagnostic ignored "-Wstring-plus-int" + + // Diagnostics from the module ignore diagnostic state changes from this + // source file. +#ifdef EXPLICIT_FLAG + // expected-error@diag_pragma.h:7 {{adding 'long' to a string}} +#else + // expected-warning@diag_pragma.h:7 {{adding 'long' to a string}} +#endif + // expected-note@diag_pragma.h:7 {{use array indexing}} + f(0L); // expected-note {{instantiation of}} + + g(0L); + + void("bar" + x); + + if (x = DIAG_PRAGMA_MACRO) // expected-warning {{using the result of an assignment as a condition without parentheses}} \ + // expected-note {{place parentheses}} expected-note {{use '=='}} + return 0; + return 1; +}