Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 26 additions & 0 deletions Include/pymacro.h
Original file line number Diff line number Diff line change
Expand Up @@ -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 */