[Python-checkins] Enhance Py_UNREACHABLE macro (GH-16032)
Gregory P. Smith
webhook-mailer at python.org
Thu Sep 12 08:35:52 EDT 2019
https://github.com/python/cpython/commit/3ab61473ba7f3dca32d779ec2766a4faa0657923
commit: 3ab61473ba7f3dca32d779ec2766a4faa0657923
branch: master
author: Zachary Ware <zachary.ware at gmail.com>
committer: Gregory P. Smith <greg at krypto.org>
date: 2019-09-12T13:35:48+01:00
summary:
Enhance Py_UNREACHABLE macro (GH-16032)
files:
M Include/pymacro.h
diff --git a/Include/pymacro.h b/Include/pymacro.h
index 1890619099a3..ae09063e10d8 100644
--- a/Include/pymacro.h
+++ b/Include/pymacro.h
@@ -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 */
More information about the Python-checkins
mailing list