snowapril
0383dede81
compiler: impl syntax error detect for global kind
...
This commit fixes `test_global_parap_err_first` test in
[test_syntax.py](https://github.com/RustPython/RustPython/blob/master/Lib/test/test_syntax.py#L678 ) and implement the other syntax errors detection as cpython 3.8 provided for global symbol.
Below syntax error conditions are added.
* name {} is parameter and global
```python
>>>>> def test(a):
..... global a
.....
SyntaxError: name 'a' is parameter and global at line 2 column 2
global a
```
* annotated name {} can't be global
```python
>>>>> def test():
..... a: int
..... global a
.....
SyntaxError: annotated name 'a' can't be global at line 3 column 2
global a
```
* name {} is assigned to before global description
```python
>>>>> a = 100
>>>>> def test():
..... a = 10
..... global a
.....
SyntaxError: name 'a' is assigned to before global declaration at line 3 column 2
global a
```
* name {} is used prior to global declaration
```python
>>>>> a = 10
>>>>> def test():
..... print(a)
..... global a
.....
SyntaxError: name 'a' is used prior to global declaration at line 3 column 2
global a
```
Signed-off-by: snowapril <sinjihng@gmail.com>
2021-08-17 21:14:13 +09:00
Jeong YunWon
9b0a82aed3
Fix unnessessary borrow
2021-07-30 02:32:16 +09:00
Padraic Fanning
5d639cc8de
Fix manual_flatten Clippy warning
2021-05-07 16:57:38 -04:00
Noah
1ab3589844
Merge pull request #2544 from RustPython/coolreader18/misc-fixes
...
Misc fixes related to IPython
2021-04-14 15:14:54 -05:00
Noah
ab1dd4e2a4
Fix async for compilation
2021-04-11 17:38:44 -05:00
Noah
b35fe39531
Add an ast optimizer
2021-04-05 09:46:30 -05:00
Noah
593a9d87dc
Merge pull request #2518 from RustPython/get-method-opt
...
Add optimized method lookup to avoid creating intermediate method objects
2021-03-27 15:05:04 -05:00
Noah
ee26bc84ec
Upgrade dependencies
2021-03-25 08:06:56 -05:00
Noah
ee0af406e2
Add LoadMethod and CallMethod* opcodes
2021-03-15 09:45:07 -05:00
Noah
da0c85d2ac
Impl Eq+Hash for ConstantData, make CodeInfo.constants an IndexSet
2021-03-11 09:58:25 -06:00
Noah
89c08246ba
Fix SetupAsyncWith stack level handling
2021-02-20 21:04:30 -06:00
Noah
2b677d0124
Merge pull request #2438 from RustPython/coolreader18/compile_call-classdef
...
Handle splat args in bases/kwargs for __build_class__
2021-02-16 17:57:26 -06:00
Noah
5d1beacefa
Handle splat args in bases/kwargs for __build_class__
2021-02-15 21:39:43 -06:00
Noah
43ea9b1542
Merge pull request #2449 from kenkoooo/os_getgrouplist
...
Implement os.getgrouplist
2021-02-12 17:08:55 -06:00
Padraic Fanning
d2b70cd5cd
Run rustfmt
2021-02-12 16:23:06 -05:00
kenkoooo
dc0cada1f3
Fix code format
2021-02-12 21:56:59 +09:00
Noah
8348417274
Implement name mangling
2021-01-26 09:59:16 -06:00
Noah
f1970bfbf9
Misc fixes
2021-01-14 12:37:37 -06:00
Noah
dc8b93a417
Update the compiler to use the new asdl ast types
2021-01-14 12:37:37 -06:00
Noah
7c2c787404
Implement asdl in the ast and parser
2021-01-14 12:37:37 -06:00
Noah
0e469eaf99
Use ahash/phf in parser
2021-01-08 17:09:09 -06:00
Noah
a0790d4906
Use ahash in the compiler
2021-01-08 17:00:23 -06:00
Noah
64fa9ccba9
Don't push something on the stack when starting a generator
2020-12-23 17:40:33 -06:00
Noah
a2c0db23f6
Don't keep a separate blockorder vec
2020-12-21 18:49:00 -06:00
Noah
d567f967e8
Use boxvec for frame.stack
2020-12-21 18:48:56 -06:00
Noah
596e338c51
Have a block-based IR for compiling, calculate max stack size
2020-12-21 18:47:58 -06:00
Noah
db041c0f6c
Update other stuff to use the root of rustpython_bytecode
2020-12-19 14:59:07 -06:00
Noah
b9875ff9bf
Make Instruction only 8 bytes
2020-12-14 15:55:47 -06:00
Noah
1575382577
Add flags to the MakeFunction instruction
2020-12-14 14:35:17 -06:00
Noah
86aa00c473
Add label_arg{,_mut} methods
2020-12-14 14:25:20 -06:00
Noah
74a917a72e
Make Continue have the target it's continuing to
2020-12-14 14:25:19 -06:00
Noah
48ca658ba0
Optimize the size of Instruction
2020-12-14 14:25:19 -06:00
Noah
281e955663
Import ConstantData in compile.rs
2020-12-14 14:25:19 -06:00
Noah
ff8512cd54
Apply review suggestions
2020-12-05 16:36:38 -06:00
Noah
9305316f69
Use a boxed slice for codeobject fields
2020-12-05 16:36:37 -06:00
Noah
8458e13e35
Fast locals part 3
2020-12-05 16:36:35 -06:00
Noah
e18275566a
Fast locals part 2
2020-12-05 16:36:00 -06:00
Noah
410bd76f38
Fast locals part 1
2020-12-05 16:36:00 -06:00
Noah
534ca2a8de
Move compiler snapshots
2020-12-05 16:36:00 -06:00
Noah
df41efed8a
Don't use a wildcard to prevent future mistakes
2020-11-24 11:57:14 -06:00
Noah
38c4c14ee3
Remove the need for a label_map in CodeObject
2020-11-23 14:41:56 -06:00
Noah
e37a55e74c
Implement string interning for variable names
2020-11-09 15:51:57 -06:00
Noah
31b884d37a
compiler/porcelain wrapper
2020-11-07 15:43:23 -06:00
Noah
e9095a741d
Split the ast from the parser, remove compiler dep on parser
2020-11-07 15:43:23 -06:00
Noah
3f88b08aaa
Capitalize boolean constants for dis
2020-10-30 14:05:53 -05:00
Noah
4afbc082ed
Use disassembly for snapshot testing
2020-10-19 23:55:56 -05:00
Noah
3f9dd3dd4c
Remove optimization unit test
2020-10-19 23:55:56 -05:00
Noah
868fdfcc36
Fix clippy lints
2020-10-19 23:55:55 -05:00
Noah
ebee651a12
Update compiler to output codeobj.constants, use insta for snapshot testing
2020-10-19 23:55:55 -05:00
Tom Schuster
6d0978226e
Basic block support in JIT
2020-10-17 17:42:02 +02:00