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.
This commit is contained in:
Andreas Kling 2020-05-30 10:37:36 +02:00
parent cfbd95f42a
commit 1ef5d609d9
Notes: sideshowbarker 2024-07-19 05:57:51 +09:00
6 changed files with 4 additions and 11 deletions

View file

@ -36,6 +36,7 @@
# define ASSERT assert
# define ASSERT_NOT_REACHED() assert(false)
# define RELEASE_ASSERT assert
# define TODO ASSERT_NOT_REACHED
# endif
# endif

View file

@ -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 <AK/Function.h>
#include <AK/NonnullRefPtrVector.h>

View file

@ -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

View file

@ -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

View file

@ -39,11 +39,6 @@
#include <LibWeb/Parser/HTMLDocumentParser.h>
#include <LibWeb/Parser/HTMLToken.h>
#define TODO() \
do { \
ASSERT_NOT_REACHED(); \
} while (0)
#define PARSE_ERROR() \
do { \
dbg() << "Parse error! " << __PRETTY_FUNCTION__ << " @ " << __LINE__; \

View file

@ -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); \