From fba12a24b79c833b10df56d6a481c76d6bdbfc0d 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 fail because they become outdated --- test/compile-error-test/CMakeLists.txt | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/test/compile-error-test/CMakeLists.txt b/test/compile-error-test/CMakeLists.txt index 724b11ed571e1..7a3c7d9704c01 100644 --- a/test/compile-error-test/CMakeLists.txt +++ b/test/compile-error-test/CMakeLists.txt @@ -117,19 +117,28 @@ 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) +expect_compile(wide-character-narrow-format-string "fmt::format(L\"{}\", L'a');") +expect_compile(wide-character-narrow-format-string-error "fmt::format(\"{}\", L'a');" ERROR) # Formatting a wide string with a narrow format string is forbidden. -expect_compile(wide-string-narrow-format-string "fmt::format(\"{}\", L\"foo\");" ERROR) +expect_compile(wide-string-narrow-format-string "fmt::format(L\"{}\", L\"foo\");") +expect_compile(wide-string-narrow-format-string-error "fmt::format(\"{}\", L\"foo\");" ERROR) # 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) +expect_compile(narrow-string-wide-format-string "fmt::format(L\"{}\", L\"foo\");") +expect_compile(narrow-string-wide-format-string-error "fmt::format(L\"{}\", \"foo\");" ERROR) -# 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(); } }; @@ -138,6 +147,10 @@ expect_compile(cast-to-string " # Formatting a function expect_compile(format-function " + void (*f)(); + fmt::format(\"{}\", fmt::ptr(f)); +") +expect_compile(format-function-error " void (*f)(); fmt::format(\"{}\", f); " ERROR)