From 1ef5d609d93619a22aad4baebf3c23e2a96affea Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Sat, 30 May 2020 10:37:36 +0200 Subject: [PATCH] AK+LibC: Add TODO() as an alternative to ASSERT_NOT_REACHED() I've been using this in the new HTML parser and it makes it much easier to understand the state of unfinished code branches. TODO() is for places where it's okay to end up but we need to implement something there. ASSERT_NOT_REACHED() is for places where it's not okay to end up, and something has gone wrong. --- AK/Assertions.h | 1 + AK/TestSuite.h | 1 + Kernel/Assertions.h | 1 + Libraries/LibC/assert.h | 1 + Libraries/LibWeb/Parser/HTMLDocumentParser.cpp | 5 ----- Libraries/LibWeb/Parser/HTMLTokenizer.cpp | 6 ------ 6 files changed, 4 insertions(+), 11 deletions(-) diff --git a/AK/Assertions.h b/AK/Assertions.h index 02dd366bd8..976e36e60c 100644 --- a/AK/Assertions.h +++ b/AK/Assertions.h @@ -36,6 +36,7 @@ # define ASSERT assert # define ASSERT_NOT_REACHED() assert(false) # define RELEASE_ASSERT assert +# define TODO ASSERT_NOT_REACHED # endif # endif diff --git a/AK/TestSuite.h b/AK/TestSuite.h index ec68f780de..b792edc1a4 100644 --- a/AK/TestSuite.h +++ b/AK/TestSuite.h @@ -37,6 +37,7 @@ #define ASSERT_NOT_REACHED() fprintf(stderr, "\033[31;1mASSERT_NOT_REACHED\033[0m\n"); #define RELEASE_ASSERT ASSERT +#define TODO ASSERT_NOT_REACHED #include #include diff --git a/Kernel/Assertions.h b/Kernel/Assertions.h index cd8244452b..b48273a301 100644 --- a/Kernel/Assertions.h +++ b/Kernel/Assertions.h @@ -47,3 +47,4 @@ } while (0) #define ASSERT_INTERRUPTS_DISABLED() ASSERT(!(cpu_flags() & 0x200)) #define ASSERT_INTERRUPTS_ENABLED() ASSERT(cpu_flags() & 0x200) +#define TODO ASSERT_NOT_REACHED diff --git a/Libraries/LibC/assert.h b/Libraries/LibC/assert.h index 18711ac0e8..6045f9d484 100644 --- a/Libraries/LibC/assert.h +++ b/Libraries/LibC/assert.h @@ -51,5 +51,6 @@ __attribute__((noreturn)) void __assertion_failed(const char* msg); } while (0) #define ASSERT assert #define RELEASE_ASSERT assert +#define TODO ASSERT_NOT_REACHED __END_DECLS diff --git a/Libraries/LibWeb/Parser/HTMLDocumentParser.cpp b/Libraries/LibWeb/Parser/HTMLDocumentParser.cpp index 599d62bb8a..6e917766d7 100644 --- a/Libraries/LibWeb/Parser/HTMLDocumentParser.cpp +++ b/Libraries/LibWeb/Parser/HTMLDocumentParser.cpp @@ -39,11 +39,6 @@ #include #include -#define TODO() \ - do { \ - ASSERT_NOT_REACHED(); \ - } while (0) - #define PARSE_ERROR() \ do { \ dbg() << "Parse error! " << __PRETTY_FUNCTION__ << " @ " << __LINE__; \ diff --git a/Libraries/LibWeb/Parser/HTMLTokenizer.cpp b/Libraries/LibWeb/Parser/HTMLTokenizer.cpp index 59db11dcfe..02dc144273 100644 --- a/Libraries/LibWeb/Parser/HTMLTokenizer.cpp +++ b/Libraries/LibWeb/Parser/HTMLTokenizer.cpp @@ -37,12 +37,6 @@ #define CONSUME_NEXT_INPUT_CHARACTER \ current_input_character = next_codepoint(); -#define TODO() \ - do { \ - dbg() << "[TODO: " << state_name(m_state) << "] '" << (char)current_input_character.value() << "'"; \ - ASSERT_NOT_REACHED(); \ - } while (0) - #define SWITCH_TO(new_state) \ do { \ will_switch_to(State::new_state); \