Commit Graph

106 Commits

Author SHA1 Message Date
yanganto
7f45ed3cca Provide caret diagnostics for SyntaxError
visualize syntax error with caret diagnostics in shell, eval, exec,
when the error statement and error location are provided.
2019-11-22 09:17:50 +08:00
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