Commit Graph

3397 Commits

Author SHA1 Message Date
Idan Dor
1e985e26da Fixed issue MRO computation in RustPython doesn't seem to implement C3 correctly #1659.
To my surprise the C3 algorithm was implemented, however I have found a few problems which cause it to appear like it isn't:
- Bad mro usage in super: starting from the current class mro instead of the original class at the index of the current class. This leads to skipping classes gotten from multiple inheritance.
- A minor error in mro c3 implementation - not keeping local precedence ordering.
- The mro c3 implementation also allowed duplicate base classes. (Not from the issue but I noticed this anyway).

To allow the fix in new class creation I added an optional vm argument.
This allows the class creation to correctly throw type errors at mro errors.
Due to classes being necessary to vm creation in the first place, this argument is optional (and should only be skipped during initial type creation) and if there is an error here, it will panic instead of returning it.
2020-02-14 15:08:47 +02:00
Jeong YunWon
8d7be94b03 PyBool 2020-02-07 11:56:31 +09:00
Aviv Palivoda
2633f9f844 Add struct.calcsize 2020-02-06 21:21:44 +02:00
Jeong YunWon
67f072dbff Merge pull request #1749 from youknowone/_vm
Remove `_vm` parameter when it is not required
2020-02-06 20:33:43 +09:00
Jeong YunWon
92cb58b163 Remove _vm parameter - remove unused functions 2020-02-06 18:54:37 +09:00
Jeong YunWon
6ddb690e09 Remove _vm parameter when it is not required 2020-02-06 11:07:51 +09:00
Jeong YunWon
844b6395ce Fix SyntaxError initial value 2020-02-06 10:39:52 +09:00
Jeong YunWon
c0b235ed66 cleanup property and get descriptor codes 2020-02-06 03:56:40 +09:00
Jeong YunWon
58744df1d5 Revert 08e66b5002
which is not required anymore
2020-02-06 03:56:40 +09:00
Jeong YunWon
facabfee1a Remove PropertyBuilder and add new_getset 2020-02-06 03:45:19 +09:00
Jeong YunWon
0aee78de18 pyproperty generates PyGetSet instead of PyProperty 2020-02-06 03:42:05 +09:00
Jeong YunWon
23381b9937 compatiibility for CPytthon descr_check 2020-02-06 03:42:01 +09:00
Jeong YunWon
226a2a6cb9 VM polymorphism for getter and setter 2020-02-06 03:36:05 +09:00
Jeong YunWon
d1f9cb4e58 PySetResult and IntoPySetResult 2020-02-06 03:33:34 +09:00
Jeong YunWon
ca557788c8 &self support for getter/setter 2020-02-06 01:47:53 +09:00
Jeong YunWon
c3d5f6c145 IntoPyGetterFunc, IntoPySetterFunc 2020-02-06 01:46:00 +09:00
Jeong YunWon
9f5cd17f2b Add getset_descriptor 2020-02-06 01:23:39 +09:00
Jeong YunWon
7d0d313aa5 &str::to_string -> &str::to_owned for variables 2020-02-05 22:55:34 +09:00
Jeong YunWon
1bac582921 &str::to_string -> &str::to_owned for literals 2020-02-05 22:55:33 +09:00
Noah
c435ba05ab Merge pull request #1731 from RustPython/feature/implement-random
Implement _random.Random
2020-02-05 07:39:27 -06:00
Noah
3595f4e1a4 Merge pull request #1730 from youknowone/type-error
Fix type() error message and BaseException.__str__
2020-02-03 19:28:25 -06:00
Noah
e46d38e6ea Merge pull request #1733 from youknowone/py-base-object
PyBaseObject
2020-02-03 19:15:35 -06:00
Noah
9abb258849 Fix clippy warnings 2020-02-03 18:38:19 -06:00
Noah
a762bf89d9 Move gen_res53 to mersenne.rs 2020-02-03 18:27:35 -06:00
Noah
a20b6bfaaa Implement _random using the MT19937 algorithm 2020-02-03 18:21:51 -06:00
malkoG
8a3fb408dc Implement random module 2020-02-03 18:21:37 -06:00
Jeong YunWon
1c2b01f894 parse_number can raise error about length 2020-02-01 21:29:01 +09:00
Jeong YunWon
3e56b3f284 PyBaseObject 2020-02-01 16:56:12 +09:00
Aviv Palivoda
9c12b95cf4 Support timeout in Popen.communicate 2020-02-01 09:54:05 +02:00
Jeong YunWon
c366c2074c Fix type() error message and BaseException.__str__ 2020-02-01 13:23:32 +09:00
Jeong YunWon
7cdaba75ab Merge pull request #1726 from youknowone/calltype-ex
Fix bytecode::CallType::Ex to raise non-str type error
2020-02-01 12:32:51 +09:00
Jeong YunWon
fc0c8fd59a Fix int.from_bytes type 2020-02-01 02:54:57 +09:00
Jeong YunWon
2a47785e6a Fix bytecode::CallType::Ex to raise non-str type error 2020-02-01 01:12:21 +09:00
Noah
ee354baf22 Merge pull request #1687 from RustPython/coolreader18/purge-ub
Purge all UB from init_type_hierarchy
2020-01-30 13:41:01 -08:00
Aviv Palivoda
3fb6fb8706 Merge pull request #1718 from youknowone/macos-whence
cleanup unused import warning for macOS
2020-01-30 15:23:53 +02:00
Aviv Palivoda
acc47ee31c Merge pull request #1717 from palaviv/dict_iterator-repr
Add repr for dict_keys, dict_values and dict_items
2020-01-30 14:45:23 +02:00
Jeong YunWon
24304a9f24 cleanup unused import warning for macOS 2020-01-30 21:14:54 +09:00
Aviv Palivoda
d1b7d658bc Fix clippy warning 2020-01-30 13:35:01 +02:00
Aviv Palivoda
9685b77cf3 Add repr for dict_keys, dict_values and dict_items 2020-01-30 12:28:14 +02:00
Jeong YunWon
7fd92fcc71 Py_TPFLAGS_BASETYPE 2020-01-30 16:32:09 +09:00
Jeong YunWon
869645203d cpython compatible type_new 2020-01-29 21:30:33 +09:00
Jeong YunWon
1ecc8228d9 PySlots::flags 2020-01-29 21:30:33 +09:00
Jeong YunWon
b2ba6b2013 objtype::class_*_attr into PyClassRef methods 2020-01-29 21:30:33 +09:00
Jeong YunWon
ad2d82c66f cleanup objtype 2020-01-29 21:30:33 +09:00
coolreader18
ff97ac5133 Fix subprocess test and byte{s,array}.{,l,r}strip 2020-01-28 11:33:11 -06:00
Noah
e6a431ad22 Merge pull request #1676 from youknowone/fix-cpytest
Fix test_bool::test_sane_len
2020-01-27 18:24:40 -08:00
Noah
ac4af12320 Merge pull request #1700 from palaviv/github-actions
GitHub actions
2020-01-27 16:22:54 -08:00
Daniel Alley
4e2afe7937 Remove wtf8 dependency 2020-01-27 08:35:58 -05:00
Noah
dc98ea671e Merge pull request #1711 from dralley/once-cell
Replace lazy_static! macro with once_cell
2020-01-27 05:33:27 -08:00
Daniel Alley
e5cac96511 Replace lazy_static! macro with once_cell 2020-01-27 01:05:53 -05:00