AK: TestSuite: Terminate when ASSERT_NOT_REACHED is called.

Previously, it would just print something with 'FAIL' to stderr which
would be picked up by CTest. However, some code assumes that
ASSERT_NOT_REACHED() doesn't return, for example:

    bool foo(int value) {
        switch(value) {
        case 0:
            return true;
        case 1:
            return false;
        default:
            ASSERT_NOT_REACHED();
        }

        // warning: control reaches end of non-void function
    }
This commit is contained in:
asynts 2020-08-22 16:24:37 +02:00 committed by Andreas Kling
commit c2be38e50f
Notes: sideshowbarker 2024-07-19 03:17:34 +09:00

View file

@ -40,11 +40,17 @@
fprintf(stderr, "\033[31;1mFAIL\033[0m: %s:%d: RELEASE_ASSERT(%s) failed\n", __FILE__, __LINE__, #x); \
}
#define ASSERT_NOT_REACHED() \
fprintf(stderr, "\033[31;1mFAIL\033[0m: %s:%d: ASSERT_NOT_REACHED() called\n", __FILE__, __LINE__);
#define ASSERT_NOT_REACHED() \
{ \
fprintf(stderr, "\033[31;1mFAIL\033[0m: %s:%d: ASSERT_NOT_REACHED() called\n", __FILE__, __LINE__); \
abort(); \
}
#define TODO \
fprintf(stderr, "\033[31;1mFAIL\033[0m: %s:%d: TODO() called\n", __FILE__, __LINE__);
#define TODO() \
{ \
fprintf(stderr, "\033[31;1mFAIL\033[0m: %s:%d: TODO() called\n", __FILE__, __LINE__); \
abort(); \
}
#include <stdio.h>