diff --git a/deps/ox/src/ox/std/assert.cpp b/deps/ox/src/ox/std/assert.cpp index 8cba5ffe..f20ec98a 100644 --- a/deps/ox/src/ox/std/assert.cpp +++ b/deps/ox/src/ox/std/assert.cpp @@ -32,21 +32,34 @@ void assertFunc<bool>([[maybe_unused]]const char *file, [[maybe_unused]]int line } template<> -void assertFunc<Error>(const char *file, int line, Error err, const char *msg) { +void assertFunc<Error>(const char *file, int line, Error err, const char *assertMsg) { if (err) { - panic(file, line, msg, err); + std::cerr << "\033[31;1;1mASSERT FAILURE:\033[0m (" << file << ':' << line << "): " << assertMsg << '\n'; + if (err.msg) { + std::cerr << "\tError Message:\t" << err.msg << '\n'; + } + std::cerr << "\tError Code:\t" << err << '\n'; + if (err.file != nullptr) { + std::cerr << "\tError Location:\t" << reinterpret_cast<const char*>(err.file) << ':' << err.line << '\n'; + } + printStackTrace(2); + oxTrace("panic").del("") << "Panic: " << assertMsg << " (" << file << ":" << line << ")"; + std::abort(); } } #if defined(OX_USE_STDLIB) -void panic(const char *file, int line, const char *msg, Error err) { - std::cerr << "\033[31;1;1mPANIC:\033[0m (" << file << ':' << line << "): " << msg << '\n'; +void panic(const char *file, int line, const char *panicMsg, Error err) { + std::cerr << "\033[31;1;1mPANIC:\033[0m (" << file << ':' << line << "): " << panicMsg << '\n'; + if (err.msg) { + std::cerr << "\tError Message:\t" << err.msg << '\n'; + } std::cerr << "\tError Code:\t" << err << '\n'; if (err.file != nullptr) { std::cerr << "\tError Location:\t" << reinterpret_cast<const char*>(err.file) << ':' << err.line << '\n'; } printStackTrace(2); - oxTrace("assert").del("") << "Failed assert: " << msg << " (" << file << ":" << line << ")"; + oxTrace("panic").del("") << "Panic: " << panicMsg << " (" << file << ":" << line << ")"; std::abort(); } #endif diff --git a/deps/ox/src/ox/std/error.hpp b/deps/ox/src/ox/std/error.hpp index 9ab7a6fa..2398e633 100644 --- a/deps/ox/src/ox/std/error.hpp +++ b/deps/ox/src/ox/std/error.hpp @@ -13,20 +13,22 @@ #include "utility.hpp" #ifdef DEBUG -#define OxError(x) ox::_error(__FILE__, __LINE__, static_cast<ox::Error>(x)) +#define OxError(...) ox::_error(__FILE__, __LINE__, __VA_ARGS__) #else -#define OxError(x) static_cast<ox::Error>(x) +#define OxError(...) static_cast<ox::Error>(__VA_ARGS__) #endif namespace ox { struct BaseError { + const char *msg = nullptr; const char *file = ""; uint16_t line = 0; BaseError() = default; constexpr BaseError(const BaseError &o) noexcept { + msg = o.msg; file = o.file; line = o.line; } @@ -35,10 +37,11 @@ struct BaseError { using Error = Integer<uint64_t, BaseError>; -static constexpr Error _error(const char *file, uint32_t line, Error errCode) { - Error err = errCode; +static constexpr Error _error(const char *file, uint32_t line, uint64_t errCode, const char *msg = nullptr) { + Error err = static_cast<ox::Error>(errCode); err.file = file; err.line = line; + err.msg = msg; return err; }