diff options
author | Nick Coghlan <ncoghlan@gmail.com> | 2019-08-25 13:45:40 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-08-25 13:45:40 (GMT) |
commit | 5dbe0f59b7a4f39c7c606b48056bc29e406ebf78 (patch) | |
tree | 9dd53ae948d0e49719d85d5e7814a6b1db61fdf3 /Misc | |
parent | ce6a070414ed1e1374d1e6212bfbff61b6d5d755 (diff) | |
download | cpython-5dbe0f59b7a4f39c7c606b48056bc29e406ebf78.zip cpython-5dbe0f59b7a4f39c7c606b48056bc29e406ebf78.tar.gz cpython-5dbe0f59b7a4f39c7c606b48056bc29e406ebf78.tar.bz2 |
bpo-37757: Disallow PEP 572 cases that expose implementation details (GH-15131)
- drop TargetScopeError in favour of raising SyntaxError directly
as per the updated PEP 572
- comprehension iteration variables are explicitly local, but
named expression targets in comprehensions are nonlocal or
global. Raise SyntaxError as specified in PEP 572
- named expression targets in the outermost iterable of a
comprehension have an ambiguous target scope. Avoid resolving
that question now by raising SyntaxError. PEP 572
originally required this only for cases where the bound name
conflicts with the iteration variable in the comprehension,
but CPython can't easily restrict the exception to that case
(as it doesn't know the target variable names when visiting
the outermost iterator expression)
Diffstat (limited to 'Misc')
-rw-r--r-- | Misc/NEWS.d/next/Core and Builtins/2019-08-05-14-22-59.bpo-37757.lRv5HX.rst | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/Misc/NEWS.d/next/Core and Builtins/2019-08-05-14-22-59.bpo-37757.lRv5HX.rst b/Misc/NEWS.d/next/Core and Builtins/2019-08-05-14-22-59.bpo-37757.lRv5HX.rst new file mode 100644 index 0000000..258df0d --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2019-08-05-14-22-59.bpo-37757.lRv5HX.rst @@ -0,0 +1,7 @@ +:pep:`572`: As described in the PEP, assignment expressions now raise +:exc:`SyntaxError` when their interaction with comprehension scoping results +in an ambiguous target scope. + +The ``TargetScopeError`` subclass originally proposed by the PEP has been +removed in favour of just raising regular syntax errors for the disallowed +cases. |