From 81cf8b68eca2636574f3d0a9fa1cf0b428c163e9 Mon Sep 17 00:00:00 2001 From: Richard-Qin-X Date: Sat, 1 Aug 2026 04:30:34 +0800 Subject: [Backend] Establish standalone build infrastructure Add the thin monorepo CMake entry point and an independently configurable backend project. Enforce the Clang/C++23 toolchain, expose Make/Ninja-neutral tests and developer checks, export an installable RCCBackend package, and introduce the first Support error abstraction. --- backend/unittests/CMakeLists.txt | 3 +++ backend/unittests/Support/CMakeLists.txt | 16 ++++++++++++++++ backend/unittests/Support/ErrorTest.cpp | 33 ++++++++++++++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 backend/unittests/CMakeLists.txt create mode 100644 backend/unittests/Support/CMakeLists.txt create mode 100644 backend/unittests/Support/ErrorTest.cpp (limited to 'backend/unittests') diff --git a/backend/unittests/CMakeLists.txt b/backend/unittests/CMakeLists.txt new file mode 100644 index 0000000..13f7c7b --- /dev/null +++ b/backend/unittests/CMakeLists.txt @@ -0,0 +1,3 @@ +# SPDX-License-Identifier: GPL-3.0-or-later + +add_subdirectory(Support) diff --git a/backend/unittests/Support/CMakeLists.txt b/backend/unittests/Support/CMakeLists.txt new file mode 100644 index 0000000..0c0aabc --- /dev/null +++ b/backend/unittests/Support/CMakeLists.txt @@ -0,0 +1,16 @@ +# SPDX-License-Identifier: GPL-3.0-or-later + +set(RCCBackendSupportTestSources ErrorTest.cpp) + +add_executable(RCCBackendSupportTests ${RCCBackendSupportTestSources}) +rcc_backend_configure_target(RCCBackendSupportTests) +target_link_libraries(RCCBackendSupportTests PRIVATE RCCBackend::Support) + +add_test(NAME RCCBackend.Support.Error COMMAND RCCBackendSupportTests) + +rcc_backend_register_format_files( + "${CMAKE_CURRENT_SOURCE_DIR}/ErrorTest.cpp" +) +rcc_backend_register_tidy_files( + "${CMAKE_CURRENT_SOURCE_DIR}/ErrorTest.cpp" +) diff --git a/backend/unittests/Support/ErrorTest.cpp b/backend/unittests/Support/ErrorTest.cpp new file mode 100644 index 0000000..23140e3 --- /dev/null +++ b/backend/unittests/Support/ErrorTest.cpp @@ -0,0 +1,33 @@ +// SPDX-License-Identifier: GPL-3.0-or-later + +#include "rcc/Support/Error.h" + +#include +#include + +namespace { + +int fail(const char *Message) { + std::cerr << Message << '\n'; + return 1; +} + +} // namespace + +int main() { + rcc::Expected Value = 42; + if (!Value || *Value != 42) + return fail("Expected must preserve a successful value"); + + rcc::Expected Failure = rcc::makeUnexpected(rcc::ErrorCode::ParseError, "bad MIR"); + if (Failure) + return fail("Expected must preserve an error"); + if (Failure.error().code() != rcc::ErrorCode::ParseError) + return fail("Error must preserve its code"); + if (Failure.error().message() != "bad MIR") + return fail("Error must preserve its message"); + if (rcc::getErrorCodeName(Failure.error().code()) != "parse error") + return fail("Error code must have a stable name"); + + return 0; +} -- cgit v1.2.3