bpo-34880: Add the LOAD_ASSERTION_ERROR opcode. (GH-15073)
Fix assert statement misbehavior if AssertionError is shadowed.
diff --git a/Doc/library/dis.rst b/Doc/library/dis.rst
index 4a20245..b5243d0 100644
--- a/Doc/library/dis.rst
+++ b/Doc/library/dis.rst
@@ -752,6 +752,14 @@
from the block stack.
+.. opcode:: LOAD_ASSERTION_ERROR
+
+ Pushes :exc:`AssertionError` onto the stack. Used by the :keyword:`assert`
+ statement.
+
+ .. versionadded:: 3.9
+
+
.. opcode:: LOAD_BUILD_CLASS
Pushes :func:`builtins.__build_class__` onto the stack. It is later called
diff --git a/Doc/whatsnew/3.9.rst b/Doc/whatsnew/3.9.rst
index 10217f1..e20ae47 100644
--- a/Doc/whatsnew/3.9.rst
+++ b/Doc/whatsnew/3.9.rst
@@ -226,3 +226,12 @@
* The :mod:`venv` activation scripts no longer special-case when
``__VENV_PROMPT__`` is set to ``""``.
+
+
+CPython bytecode changes
+------------------------
+
+* The :opcode:`LOAD_ASSERTION_ERROR` opcode was added for handling the
+ :keyword:`assert` statement. Previously, the assert statement would not work
+ correctly if the :exc:`AssertionError` exception was being shadowed.
+ (Contributed by Zackery Spytz in :issue:`34880`.)