Enhance Py_UNREACHABLE macro (GH-16032)
This commit is contained in:
parent
224b8aaa7e
commit
3ab61473ba
|
@ -100,6 +100,32 @@
|
|||
# define Py_UNUSED(name) _unused_ ## name
|
||||
#endif
|
||||
|
||||
#if defined(RANDALL_WAS_HERE)
|
||||
#define Py_UNREACHABLE() do { \
|
||||
fputs( \
|
||||
"ERROR:\n\n" \
|
||||
"If you're seeing this, the code is in what I thought was\n" \
|
||||
"an unreachable state.\n\n" \
|
||||
"I could give you advice for what to do, but honestly, why\n" \
|
||||
"should you trust me? I clearly screwed this up. I'm writing\n" \
|
||||
"a message that should never appear, yet I know it will\n" \
|
||||
"probably appear someday.\n\n" \
|
||||
"On a deep level, I know I'm not up to this task.\n" \
|
||||
"I'm so sorry.\n\n" \
|
||||
"https://xkcd.com/2200\n", stderr); \
|
||||
abort(); \
|
||||
} while(0)
|
||||
#elif defined(Py_DEBUG)
|
||||
#define Py_UNREACHABLE() do { \
|
||||
fputs( \
|
||||
"ERROR:\n\n" \
|
||||
"We've reached an unreachable state. Anything is possible.\n" \
|
||||
"The limits were in our heads all along. Follow your dreams.\n\n" \
|
||||
"https://xkcd.com/2200\n", stderr); \
|
||||
abort(); \
|
||||
} while(0)
|
||||
#else
|
||||
#define Py_UNREACHABLE() abort()
|
||||
#endif
|
||||
|
||||
#endif /* Py_PYMACRO_H */
|
||||
|
|
Loading…
Reference in New Issue