Lysandros Nikolaou
6d65087655
bpo-40334: Disallow invalid single statements in the new parser (GH-19774)
...
After parsing is done in single statement mode, the tokenizer buffer has to be checked for additional lines and a `SyntaxError` must be raised, in case there are any.
Co-authored-by: Pablo Galindo <Pablogsal@gmail.com>
2020-04-29 02:42:27 +01:00
Victor Stinner
1def7754b7
bpo-40334: Rename PyConfig.use_peg to _use_peg_parser (GH-19670)
...
* Rename PyConfig.use_peg to _use_peg_parser
* Document PyConfig._use_peg_parser and mark it a deprecated
* Mark -X oldparser option and PYTHONOLDPARSER env var as deprecated
in the documentation.
* Add use_old_parser() and skip_if_new_parser() to test.support
* Remove sys.flags.use_peg: use_old_parser() uses
_testinternalcapi.get_configs() instead.
* Enhance test_embed tests
* subprocess._args_from_interpreter_flags() copies -X oldparser
2020-04-23 03:03:24 +02:00
Pablo Galindo
c5fc156852
bpo-40334: PEP 617 implementation: New PEG parser for CPython (GH-19503)
...
Co-authored-by: Guido van Rossum <guido@python.org>
Co-authored-by: Lysandros Nikolaou <lisandrosnik@gmail.com>
2020-04-22 23:29:27 +01:00
Pablo Galindo
6c3e66a34b
bpo-38640: Allow break and continue in always false while loops (GH-16992)
2019-10-30 11:53:26 +00:00
Pablo Galindo
18c5f9d44d
bpo-37500: Make sure dead code does not generate bytecode but also detect syntax errors (GH-14612)
...
https://bugs.python.org/issue37500
Add a new field to the compiler structure that allows to be configured
so no bytecode is emitted. In this way is possible to detect errors by
walking the nodes while preserving optimizations.
https://bugs.python.org/issue37500
2019-07-15 02:15:01 -07:00
INADA Naoki
f7e4d3642f
bpo-34100: compile: Re-enable frozenset merging (GH-10760)
...
This reverts commit 1005c84535
.
2018-11-28 16:58:46 +01:00
Victor Stinner
1005c84535
bpo-34100: Partially revert merge_consts_recursive() (GH-10743)
...
Partically revert commit c2e1607a51
to
fix a reference leak.
2018-11-27 15:12:47 +01:00
INADA Naoki
c2e1607a51
bpo-34100: Merge constants recursively (GH-8341)
...
There are some same consts in a module. This commit merges them into
single instance. It reduces number of objects in memory after loading modules.
https://bugs.python.org/issue34100
2018-11-26 04:23:22 -08:00
Gregory P. Smith
49fa4a9f1e
bpo-35193: Fix an off by one error in the RETURN_VALUE case. (GH-10418)
...
Fix an off by one error in the peephole optimizer when checking for unreachable code beyond a return.
Do a bounds check within find_op so it can return before going past the end as a safety measure.
7db3c48833 (diff-a33329ae6ae0bb295d742f0caf93c137)
introduced this off by one error while fixing another one nearby.
This bug was shipped in all Python 3.6 and 3.7 releases.
The included unittest won't fail unless you do a clang msan build.
2018-11-08 17:55:07 -08:00
Serhiy Storchaka
34fd4c2019
bpo-35133: Fix mistakes when concatenate string literals on different lines. (GH-10284)
...
Two kind of mistakes:
1. Missed space. After concatenating there is no space between words.
2. Missed comma. Causes unintentional concatenating in a list of strings.
2018-11-05 16:20:25 +02:00
Serhiy Storchaka
fe2bbb1869
bpo-32489: Allow 'continue' in 'finally' clause. (GH-5822)
2018-03-18 09:56:52 +02:00
Serhiy Storchaka
b21d155f57
bpo-32964: Reuse a testing implementation of the path protocol in tests. ( #5930 )
2018-03-02 11:53:51 +02:00
Serhiy Storchaka
782d6fe443
bpo-31113: Get rid of recursion in the compiler for normal control flow. ( #3015 )
2018-01-11 20:20:13 +02:00
Serhiy Storchaka
d4864c61e3
bpo-24340: Fix estimation of the code stack size. ( #5076 )
2018-01-09 21:54:52 +02:00
Serhiy Storchaka
3325a6780c
bpo-27169: The __debug__ constant is now optimized out at compile time. ( #4880 )
...
This fixes also bpo-22091.
2017-12-15 12:35:48 +02:00
Serhiy Storchaka
067cbd02bf
Issue #29337 : Fixed possible BytesWarning when compare the code objects.
...
Warnings could be emitted at compile time.
2017-01-24 20:54:07 +02:00
Serhiy Storchaka
4102d25b7e
Issue #29337 : Fixed possible BytesWarning when compare the code objects.
...
Warnings could be emitted at compile time.
2017-01-24 20:52:43 +02:00
Serhiy Storchaka
713640c4c9
Issue #29337 : Fixed possible BytesWarning when compare the code objects.
...
Warnings could be emitted at compile time.
2017-01-24 20:49:26 +02:00
Serhiy Storchaka
5bb8b9134b
Issue #18896 : Python function can now have more than 255 parameters.
...
collections.namedtuple() now supports tuples with more than 255 elements.
2016-12-16 19:19:02 +02:00
Brett Cannon
a571120410
Issue #27182 : Add support for path-like objects to PyUnicode_FSDecoder().
2016-09-06 19:36:01 -07:00
Serhiy Storchaka
febc332056
Issue #26754 : Undocumented support of general bytes-like objects
...
as path in compile() and similar functions is now deprecated.
2016-08-06 23:29:29 +03:00
Serhiy Storchaka
9305d83425
Issue #26754 : PyUnicode_FSDecoder() accepted a filename argument encoded as
...
an iterable of integers. Now only strings and byte-like objects are accepted.
2016-06-18 13:53:36 +03:00
Victor Stinner
3cdd5fb970
code_richcompare() now uses the constants types
...
Issue #25843 : When compiling code, don't merge constants if they are equal but
have a different types. For example, "f1, f2 = lambda: 1, lambda: 1.0" is now
correctly compiled to two different functions: f1() returns 1 (int) and f2()
returns 1.0 (int), even if 1 and 1.0 are equal.
Add a new _PyCode_ConstantKey() private function.
2016-01-22 12:33:12 +01:00
Serhiy Storchaka
7e2b870b85
Issue #25388 : Fixed tokenizer crash when processing undecodable source code
...
with a null byte.
2015-11-14 15:11:17 +02:00
Serhiy Storchaka
0d441119f5
Issue #25388 : Fixed tokenizer crash when processing undecodable source code
...
with a null byte.
2015-11-14 15:10:35 +02:00
Martin Panter
eeb896c411
Issue #24802 : Copy bytes-like objects to null-terminated buffers if necessary
...
This avoids possible buffer overreads when int(), float(), compile(), exec()
and eval() are passed bytes-like objects. Similar code is removed from the
complex() constructor, where it was not reachable.
Patch by John Leitch, Serhiy Storchaka and Martin Panter.
2015-11-07 02:32:21 +00:00
Martin Panter
d61d860ed3
Issue #24802 : Update test case for ValueError in 3.5
2015-11-08 11:09:13 +00:00
Martin Panter
61d6e4ae9d
Issue #24802 : Merge null termination fixes from 3.4 into 3.5
2015-11-07 02:56:11 +00:00
Yury Selivanov
f488fb422a
Issue #19235 : Add new RecursionError exception. Patch by Georg Brandl.
2015-07-03 01:04:23 -04:00
Benjamin Peterson
ee85339cc6
in dict displays, evaluate the key before the value ( closes #11205 )
...
Patch partially by Steve Dougherty.
2015-05-28 14:30:26 -05:00
Berker Peksag
076dbd0560
Fix remaining tests and remove an unused import.
2015-05-06 07:01:52 +03:00
Benjamin Peterson
273a720f87
merge 3.4 ( #24022 )
2015-04-21 12:07:06 -04:00
Benjamin Peterson
d73aca769f
do not call into python api if an exception is set ( #24022 )
2015-04-21 12:05:19 -04:00
Brett Cannon
f299abdafa
Issue #23731 : Implement PEP 488.
...
The concept of .pyo files no longer exists. Now .pyc files have an
optional `opt-` tag which specifies if any extra optimizations beyond
the peepholer were applied.
2015-04-13 14:21:02 -04:00
Serhiy Storchaka
607cb9cf99
Issue #22221 : Add tests for compile() with source encoding cookie.
2014-09-05 11:00:56 +03:00
Antoine Pitrou
9961405ed1
Issue #21523 : Fix over-pessimistic computation of the stack effect of some opcodes in the compiler.
...
This also fixes a quadratic compilation time issue noticeable when compiling
code with a large number of "and" and "or" operators.
2014-05-23 11:46:03 +02:00
Serhiy Storchaka
9594942716
Issue #18783 : Removed existing mentions of Python long type in docstrings,
...
error messages and comments.
2013-08-27 19:40:23 +03:00
Nick Coghlan
aab9c2b2ea
Issue #5765 : Apply a hard recursion limit in the compiler
...
Previously, excessive nesting in expressions would blow the
stack and segfault the interpreter. Now, a hard limit based
on the configured recursion limit and a hardcoded scaling
factor is applied.
2012-11-04 23:14:34 +10:00
Benjamin Peterson
77fc1f3c06
add another test case
2012-01-20 11:01:06 -05:00
Benjamin Peterson
cff9237d57
check after comments, too ( #13832 )
2012-01-19 17:46:13 -05:00
Meador Inge
fa21bf015d
Issue #12705 : Raise SyntaxError when compiling multiple statements as single interactive statement
2012-01-19 01:08:41 -06:00
Benjamin Peterson
43b068648e
try to use the same str object for all code filenames when compiling or unmarshalling ( #12190 )
...
This should reduce memory usage.
2011-05-27 09:08:01 -05:00
Ezio Melotti
4969f709cc
#11515 : Merge with 3.1.
2011-03-15 05:59:46 +02:00
Ezio Melotti
42da663e6f
#11515 : fix several typos. Patch by Piotr Kasprzyk.
2011-03-15 05:18:48 +02:00
Benjamin Peterson
5d2ad25252
bring back commented out test
2010-03-17 20:57:32 +00:00
Benjamin Peterson
e6dd2cb63d
Merged revisions 79034 via svnmerge from
...
svn+ssh://pythondev@svn.python.org/python/trunk
........
r79034 | benjamin.peterson | 2010-03-17 15:41:42 -0500 (Wed, 17 Mar 2010) | 1 line
prevent lambda functions from having docstrings #8164
........
2010-03-17 20:56:58 +00:00
Ezio Melotti
e96159335f
Merged revisions 77727 via svnmerge from
...
svn+ssh://pythondev@svn.python.org/python/trunk
........
r77727 | ezio.melotti | 2010-01-24 18:58:36 +0200 (Sun, 24 Jan 2010) | 1 line
use assert[Not]IsInstance where appropriate
........
2010-01-24 19:26:24 +00:00
Ezio Melotti
b58e0bd8bb
use assert[Not]In where appropriate
2010-01-23 15:40:09 +00:00
Benjamin Peterson
577473fe68
use assert[Not]In where appropriate
...
A patch from Dave Malcolm.
2010-01-19 00:09:57 +00:00
Benjamin Peterson
aeaa592516
Merged revisions 76230 via svnmerge from
...
svn+ssh://pythondev@svn.python.org/python/trunk
........
r76230 | benjamin.peterson | 2009-11-12 17:39:44 -0600 (Thu, 12 Nov 2009) | 2 lines
fix several compile() issues by translating newlines in the tokenizer
........
2009-11-13 00:17:59 +00:00