Commit Graph

105 Commits

Author SHA1 Message Date
Noah
6ed5045809 Add a CompileContext 2019-11-07 00:04:51 -06:00
coolreader18
6bc33fbca2 Add async for 2019-11-07 00:04:51 -06:00
Noah
960e8def4a Deduplicate async/normal with compilation code 2019-11-07 00:04:51 -06:00
coolreader18
5c26a25522 Add async with, reorganize how with blocks work 2019-11-07 00:04:51 -06:00
coolreader18
577cea92fe Add coroutines, async/await functionality, and gen.close() 2019-11-07 00:04:50 -06:00
Aviv Palivoda
72989cdfd1 Merge pull request #1580 from seeeturtle/doc-f
Set docstring of function as None if not declared
2019-11-02 19:18:11 +02:00
joshua1b
538181791b Set docstring of function as None if not declared
In cpython, if there is no docstring declared in function definition,
the `__doc__` attribute of the function is None.
So this implements the behavior.

Fix #1523
2019-11-02 23:47:44 +09:00
ichyo
74c02d416e Fix wrong const optimization for "1.0 / 0.0" case
In cpython, "1.0 / 0.0" raises ZeroDivisionError
```
>>> 1.0 / 0.0
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ZeroDivisionError: float division by zer
```

but RustPython doesn't
```
>>>>> 1.0 / 0.0
inf
```

This is because they emits different byte codes.

```
$ echo "1.0 / 0.0" > zero-div.py

$ python -m dis zero-div.py
  1           0 LOAD_CONST               0 (1.0)
              2 LOAD_CONST               1 (0.0)
              4 BINARY_TRUE_DIVIDE
              6 POP_TOP
              8 LOAD_CONST               2 (None)
             10 RETURN_VALUE

$ cargo run --example dis zero-div.py
zero-div.py:
                 0 LoadConst            (inf)
                 1 Pop
                 2 LoadConst            (None)
                 3 ReturnValue
```

This commit stops optimization for zero division case
to generate same byte codes.
2019-10-24 00:26:02 +09:00
coolreader18
c08f11ad1b Change FunctionOpArg to CodeFlags, stored in CodeObject 2019-10-14 20:20:52 +00:00
ChJR
ad18dfdfe1 Add build compatibility with rustc 1.36.0 since #1318 merged 2019-10-13 15:53:49 +09:00
Windel Bouwman
336364c80d Merge pull request #1318 from youknowone/ast-module
ast module
2019-10-12 12:51:26 +02:00
Seo Sanghyeon
7caeee7810 Shut up Clippy 2019-10-12 18:18:45 +09:00
Jeong YunWon
2f1fb16da1 Add mode to ast::parse 2019-10-12 18:12:36 +09:00
Seo Sanghyeon
e76edde38e Implement IndentationError 2019-10-12 02:24:12 +09:00
Chris West (Faux)
60bb597dc0 upgrade low-risk deps 2019-10-10 21:07:26 +01:00
Seo Sanghyeon
f2e04c0e2f Implement TabError 2019-10-05 10:12:02 +09:00
Seo Sanghyeon
a17456dba5 Raise TypeError for duplicate keyword arguments 2019-10-04 19:29:57 +09:00
Seo Sanghyeon
e4ec430896 Optimize BuildMap bytecode emission 2019-10-03 00:03:08 +09:00
coolreader18
d0f7b5f347 Invert the inverted boolean 2019-09-28 00:41:41 -05:00
Noah
499bf146bd Only overwrite the locals in __build_class__ if it's a class 2019-09-28 00:41:41 -05:00
Noah
d88167bb73 Bump crate versions 2019-09-25 11:57:38 -05:00
HyeockJinKim
1b141f3022 Fix global declaration error in the function
Fix Global symbol to prevent syntax error
when global declaration for same variable in function.

Fixes #1353
2019-09-18 01:57:06 +09:00
coolreader18
a878ffc678 Remove useless_const optimization
There could be jump depending on the Pop being there, and then it
breaks.
2019-09-17 08:04:11 +02:00
coolreader18
b71b4e6f14 Don't emit None, ReturnValue if the last statement in a function is a return 2019-09-17 08:04:11 +02:00
coolreader18
c09ad9a3a6 Add optimization to remove unused LoadConst operations 2019-09-17 08:04:11 +02:00
Noah
9aaf887918 Merge pull request #1367 from j30ng/syntax-err-on-star
Return SyntaxError on Invalid Star Expression
2019-09-12 08:48:57 -05:00
j30ng
a5bea47bed Remove Enum Instruction::Unpack 2019-09-12 16:30:03 +09:00
j30ng
95d57ef9c4 Format Code with rustfmt 2019-09-12 04:36:31 +09:00
j30ng
ea69be5da5 Return SyntaxError on Invalid Star Expression 2019-09-12 04:04:27 +09:00
HyeockJinKim
7695851cde nonlocal generate syntax error
If the scope depth is less than 2,
a syntax error occurs in nonlocal.

Fixes #1360
2019-09-12 01:13:47 +09:00
coolreader18
cad53c2fec Don't clone SymbolTables when analyzing 2019-09-07 18:12:02 -05:00
coolreader18
b797b51369 Fix class scopes by modifying symboltable 2019-09-07 01:29:11 -05:00
coolreader18
ae45a4a3be Fix class vs method scopes 2019-09-05 00:27:16 -05:00
Windel Bouwman
a3081c5d7b Merge pull request #1336 from RustPython/comprehension-scope
Add symboltable scope for comprehensions.
2019-09-04 15:45:55 +02:00
Adam
814260e7e4 Merge pull request #1332 from RustPython/load_global_loading_local
load_global shouldn't load outermost locals.
2019-09-02 10:13:19 +01:00
Adam Kelly
527f3ff800 Be somewhat less conservative about declaring things global. 2019-09-02 09:35:29 +01:00
Windel Bouwman
b36bbfa91c Add symboltable scope for comprehensions. Add _ast module nodes for comprehensions. 2019-09-01 22:31:16 +02:00
Adam Kelly
b087325b8d Be extremely conservative about guessing scopes when we don't know. 2019-08-31 16:39:27 +01:00
Jeong YunWon
b73f3d6b1f Remove duplicated contains_key test 2019-08-31 00:25:16 +09:00
Jeong YunWon
e9c280368a Fix scan_expression not to mark sequence as Load 2019-08-31 00:25:16 +09:00
Windel Bouwman
036f464377 Merge pull request #1325 from RustPython/scoping
Add scope type and other symboltable properties.
2019-08-30 07:08:49 +02:00
Windel Bouwman
e181826b5f Add scope type and other symboltable properties. 2019-08-29 19:16:45 +02:00
Windel Bouwman
2517207175 Make subscript its own bytecode. Remove pass bytecode. Move complex bytecodes into seperate functions to reduce complexity of dispatch function. 2019-08-28 12:06:46 +02:00
Noah
c52328608e Make bytecode::Label its own struct 2019-08-27 21:19:18 +00:00
Windel Bouwman
2ca6e5d399 Implement execution of finally block. Fixes #1306. 2019-08-27 21:16:59 +02:00
Windel Bouwman
86fc18ec6c Refactor block stack unwinding to enable finally execution. 2019-08-27 19:40:00 +02:00
Windel Bouwman
eb3771ebff Add Free enum variant to the symbol scope to be able to distuingish between true local and free variables. 2019-08-18 12:12:27 +02:00
Windel Bouwman
edf647160f Fix clippy warnings. Add proper names to symboltables. 2019-08-18 10:03:00 +02:00
Windel Bouwman
f229831629 Merge pull request #1251 from RustPython/scope-detection
Extend AST python module. Add idea for scope detection.
2019-08-18 09:14:20 +02:00
coolreader18
0f4a80eec9 Compile docstrings for modules 2019-08-15 22:25:30 -05:00