From baa749c3274d360a0f67e6b42793da420e7f1a87 Mon Sep 17 00:00:00 2001 From: Alexey Ochapov Date: Mon, 13 Dec 2021 02:44:52 +0300 Subject: [PATCH] add reverse tests to compile-error-test to make sure that error tests do not fault because they become outdated --- test/compile-error-test/CMakeLists.txt | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/test/compile-error-test/CMakeLists.txt b/test/compile-error-test/CMakeLists.txt index ce2857ff732cd..6588416f3b16b 100644 --- a/test/compile-error-test/CMakeLists.txt +++ b/test/compile-error-test/CMakeLists.txt @@ -91,19 +91,29 @@ endfunction () # check if the source file skeleton compiles expect_compile(check "") +expect_compile(check-error "compilation_error" ERROR) # Formatting a wide character with a narrow format string is forbidden. -expect_compile(wide-character-narrow-format-string "fmt::format(\"{}\", L'a');" ERROR XCHAR) +expect_compile(wide-character-narrow-format-string "fmt::format(L\"{}\", L'a');" XCHAR) +expect_compile(wide-character-narrow-format-string-error "fmt::format(\"{}\", L'a');" ERROR XCHAR) # Formatting a wide string with a narrow format string is forbidden. -expect_compile(wide-string-narrow-format-string "fmt::format(\"{}\", L\"foo\");" ERROR XCHAR) +expect_compile(wide-string-narrow-format-string "fmt::format(L\"{}\", L\"foo\");" XCHAR) +expect_compile(wide-string-narrow-format-string-error "fmt::format(\"{}\", L\"foo\");" ERROR XCHAR) # Formatting a narrow string with a wide format string is forbidden because # mixing UTF-8 with UTF-16/32 can result in an invalid output. -expect_compile(narrow-string-wide-format-string "fmt::format(L\"{}\", \"foo\");" ERROR XCHAR) +expect_compile(narrow-string-wide-format-string "fmt::format(L\"{}\", L\"foo\");" XCHAR) +expect_compile(narrow-string-wide-format-string-error "fmt::format(L\"{}\", \"foo\");" ERROR XCHAR) # Formatting a wide string with a narrow format string is forbidden. expect_compile(cast-to-string " + struct S { + operator std::string() const { return std::string(); } + }; + fmt::format(\"{}\", std::string(S())); +") +expect_compile(cast-to-string-error " struct S { operator std::string() const { return std::string(); } }; @@ -112,6 +122,10 @@ expect_compile(cast-to-string " # Formatting a function expect_compile(format-function " + void (*f)(); + fmt::format(\"{}\", fmt::ptr(f)); +" FORMAT) +expect_compile(format-function-error " void (*f)(); fmt::format(\"{}\", f); " FORMAT ERROR)