Remove deprecated APIs

This commit is contained in:
Victor Zverovich 2022-05-22 06:49:31 -07:00
parent edeb3d8091
commit ce246aaf74
7 changed files with 16 additions and 66 deletions

View File

@ -3318,13 +3318,6 @@ constexpr auto operator"" _a(const char* s, size_t) -> detail::udl_arg<char> {
return {s}; return {s};
} }
# endif # endif
// DEPRECATED!
// User-defined literal equivalent of fmt::format.
FMT_DEPRECATED constexpr auto operator"" _format(const char* s, size_t n)
-> detail::udl_formatter<char> {
return {{s, n}};
}
} // namespace literals } // namespace literals
#endif // FMT_USE_USER_DEFINED_LITERALS #endif // FMT_USE_USER_DEFINED_LITERALS

View File

@ -260,10 +260,7 @@ class buffered_file {
// Returns the pointer to a FILE object representing this file. // Returns the pointer to a FILE object representing this file.
FILE* get() const noexcept { return file_; } FILE* get() const noexcept { return file_; }
// We place parentheses around fileno to workaround a bug in some versions FMT_API int descriptor() const;
// of MinGW that define fileno as a macro.
// DEPRECATED! Rename to descriptor to avoid issues with macros.
FMT_API int(fileno)() const;
void vprint(string_view format_str, format_args args) { void vprint(string_view format_str, format_args args) {
fmt::vprint(file_, format_str, args); fmt::vprint(file_, format_str, args);

View File

@ -51,10 +51,6 @@
# include <windows.h> # include <windows.h>
#endif #endif
#ifdef fileno
# undef fileno
#endif
namespace { namespace {
#ifdef _WIN32 #ifdef _WIN32
// Return type of read and write functions. // Return type of read and write functions.
@ -206,11 +202,8 @@ void buffered_file::close() {
if (result != 0) FMT_THROW(system_error(errno, "cannot close file")); if (result != 0) FMT_THROW(system_error(errno, "cannot close file"));
} }
// A macro used to prevent expansion of fileno on broken versions of MinGW. int buffered_file::descriptor() const {
#define FMT_ARGS int fd = FMT_POSIX_CALL(fileno(file_));
int buffered_file::fileno() const {
int fd = FMT_POSIX_CALL(fileno FMT_ARGS(file_));
if (fd == -1) FMT_THROW(system_error(errno, "cannot get file descriptor")); if (fd == -1) FMT_THROW(system_error(errno, "cannot get file descriptor"));
return fd; return fd;
} }

View File

@ -1875,38 +1875,8 @@ TEST(format_test, custom_format_compile_time_string) {
} }
#if FMT_USE_USER_DEFINED_LITERALS #if FMT_USE_USER_DEFINED_LITERALS
// Passing user-defined literals directly to EXPECT_EQ causes problems
// with macro argument stringification (#) on some versions of GCC.
// Workaround: Assing the UDL result to a variable before the macro.
using namespace fmt::literals;
# if FMT_GCC_VERSION
# define FMT_CHECK_DEPRECATED_UDL_FORMAT 1
# elif FMT_CLANG_VERSION && defined(__has_warning)
# if __has_warning("-Wdeprecated-declarations")
# define FMT_CHECK_DEPRECATED_UDL_FORMAT 1
# endif
# endif
# ifndef FMT_CHECK_DEPRECATED_UDL_FORMAT
# define FMT_CHECK_DEPRECATED_UDL_FORMAT 0
# endif
# if FMT_CHECK_DEPRECATED_UDL_FORMAT
# pragma GCC diagnostic push
# pragma GCC diagnostic ignored "-Wdeprecated-declarations"
TEST(format_test, format_udl) {
EXPECT_EQ("{}c{}"_format("ab", 1), fmt::format("{}c{}", "ab", 1));
EXPECT_EQ("foo"_format(), "foo");
EXPECT_EQ("{0:10}"_format(42), " 42");
EXPECT_EQ("{}"_format(date(2015, 10, 21)), "2015-10-21");
}
# pragma GCC diagnostic pop
# endif
TEST(format_test, named_arg_udl) { TEST(format_test, named_arg_udl) {
using namespace fmt::literals;
auto udl_a = fmt::format("{first}{second}{first}{third}", "first"_a = "abra", auto udl_a = fmt::format("{first}{second}{first}{third}", "first"_a = "abra",
"second"_a = "cad", "third"_a = 99); "second"_a = "cad", "third"_a = 99);
EXPECT_EQ( EXPECT_EQ(
@ -2209,6 +2179,7 @@ TEST(format_test, format_string_errors) {
fmt::print("warning: constexpr is broken in this version of MSVC\n"); fmt::print("warning: constexpr is broken in this version of MSVC\n");
# endif # endif
# if FMT_USE_NONTYPE_TEMPLATE_PARAMETERS # if FMT_USE_NONTYPE_TEMPLATE_PARAMETERS
using namespace fmt::literals;
EXPECT_ERROR("{foo}", "named argument is not found", decltype("bar"_a = 42)); EXPECT_ERROR("{foo}", "named argument is not found", decltype("bar"_a = 42));
EXPECT_ERROR("{foo}", "named argument is not found", EXPECT_ERROR("{foo}", "named argument is not found",
decltype(fmt::arg("foo", 42))); decltype(fmt::arg("foo", 42)));

View File

@ -347,7 +347,7 @@ TEST(output_redirect_test, flush_error_in_ctor) {
TEST(output_redirect_test, dup_error_in_ctor) { TEST(output_redirect_test, dup_error_in_ctor) {
buffered_file f = open_buffered_file(); buffered_file f = open_buffered_file();
int fd = (f.fileno)(); int fd = (f.descriptor)();
file copy = file::dup(fd); file copy = file::dup(fd);
FMT_POSIX(close(fd)); FMT_POSIX(close(fd));
std::unique_ptr<output_redirect> redir{nullptr}; std::unique_ptr<output_redirect> redir{nullptr};

View File

@ -14,10 +14,6 @@
#include "gtest-extra.h" #include "gtest-extra.h"
#include "util.h" #include "util.h"
#ifdef fileno
# undef fileno
#endif
using fmt::buffered_file; using fmt::buffered_file;
using testing::HasSubstr; using testing::HasSubstr;
using wstring_view = fmt::basic_string_view<wchar_t>; using wstring_view = fmt::basic_string_view<wchar_t>;
@ -205,7 +201,7 @@ TEST(buffered_file_test, move_assignment) {
TEST(buffered_file_test, move_assignment_closes_file) { TEST(buffered_file_test, move_assignment_closes_file) {
buffered_file bf = open_buffered_file(); buffered_file bf = open_buffered_file();
buffered_file bf2 = open_buffered_file(); buffered_file bf2 = open_buffered_file();
int old_fd = bf2.fileno(); int old_fd = bf2.descriptor();
bf2 = std::move(bf); bf2 = std::move(bf);
EXPECT_TRUE(isclosed(old_fd)); EXPECT_TRUE(isclosed(old_fd));
} }
@ -225,7 +221,7 @@ TEST(buffered_file_test, move_from_temporary_in_assignment) {
TEST(buffered_file_test, move_from_temporary_in_assignment_closes_file) { TEST(buffered_file_test, move_from_temporary_in_assignment_closes_file) {
buffered_file f = open_buffered_file(); buffered_file f = open_buffered_file();
int old_fd = f.fileno(); int old_fd = f.descriptor();
f = open_buffered_file(); f = open_buffered_file();
EXPECT_TRUE(isclosed(old_fd)); EXPECT_TRUE(isclosed(old_fd));
} }
@ -234,7 +230,7 @@ TEST(buffered_file_test, close_file_in_dtor) {
int fd = 0; int fd = 0;
{ {
buffered_file f = open_buffered_file(); buffered_file f = open_buffered_file();
fd = f.fileno(); fd = f.descriptor();
} }
EXPECT_TRUE(isclosed(fd)); EXPECT_TRUE(isclosed(fd));
} }
@ -249,7 +245,7 @@ TEST(buffered_file_test, close_error_in_dtor) {
// otherwise the system may recycle closed file descriptor when // otherwise the system may recycle closed file descriptor when
// redirecting the output in EXPECT_STDERR and the second close // redirecting the output in EXPECT_STDERR and the second close
// will break output redirection. // will break output redirection.
FMT_POSIX(close(f->fileno())); FMT_POSIX(close(f->descriptor()));
SUPPRESS_ASSERT(f.reset(nullptr)); SUPPRESS_ASSERT(f.reset(nullptr));
}, },
system_error_message(EBADF, "cannot close file") + "\n"); system_error_message(EBADF, "cannot close file") + "\n");
@ -257,7 +253,7 @@ TEST(buffered_file_test, close_error_in_dtor) {
TEST(buffered_file_test, close) { TEST(buffered_file_test, close) {
buffered_file f = open_buffered_file(); buffered_file f = open_buffered_file();
int fd = f.fileno(); int fd = f.descriptor();
f.close(); f.close();
EXPECT_TRUE(f.get() == nullptr); EXPECT_TRUE(f.get() == nullptr);
EXPECT_TRUE(isclosed(fd)); EXPECT_TRUE(isclosed(fd));
@ -265,15 +261,15 @@ TEST(buffered_file_test, close) {
TEST(buffered_file_test, close_error) { TEST(buffered_file_test, close_error) {
buffered_file f = open_buffered_file(); buffered_file f = open_buffered_file();
FMT_POSIX(close(f.fileno())); FMT_POSIX(close(f.descriptor()));
EXPECT_SYSTEM_ERROR_NOASSERT(f.close(), EBADF, "cannot close file"); EXPECT_SYSTEM_ERROR_NOASSERT(f.close(), EBADF, "cannot close file");
EXPECT_TRUE(f.get() == nullptr); EXPECT_TRUE(f.get() == nullptr);
} }
TEST(buffered_file_test, fileno) { TEST(buffered_file_test, descriptor) {
auto f = open_buffered_file(); auto f = open_buffered_file();
EXPECT_TRUE(f.fileno() != -1); EXPECT_TRUE(f.descriptor() != -1);
file copy = file::dup(f.fileno()); file copy = file::dup(f.descriptor());
EXPECT_READ(copy, file_content); EXPECT_READ(copy, file_content);
} }

View File

@ -438,7 +438,7 @@ TEST(buffered_file_test, fileno_no_retry) {
file::pipe(read_end, write_end); file::pipe(read_end, write_end);
buffered_file f = read_end.fdopen("r"); buffered_file f = read_end.fdopen("r");
fileno_count = 1; fileno_count = 1;
EXPECT_SYSTEM_ERROR((f.fileno)(), EINTR, "cannot get file descriptor"); EXPECT_SYSTEM_ERROR((f.descriptor)(), EINTR, "cannot get file descriptor");
EXPECT_EQ(2, fileno_count); EXPECT_EQ(2, fileno_count);
fileno_count = 0; fileno_count = 0;
} }