Commit Graph

166 Commits

Author SHA1 Message Date
K. Lange
1ac8f296b2 Invalidate caches of subclass method pointers when they change in a superclass 2022-05-27 00:05:27 +09:00
K. Lange
74e064c82c Test case for preceding fix 2022-05-24 13:33:34 +09:00
K. Lange
4a052191de Support 'else' blocks on for and while loops 2022-05-23 09:41:12 +09:00
K. Lange
ece7da299a Support = to print f-string expression alongside value 2022-05-23 08:42:40 +09:00
K. Lange
6613db6cd4 Implement slice objects, slice stepping
This is an initial implementation of slice stepping and slice objects.
The __getslice__, __setslice__, and __delslice__ methods have been removed.
Slice expressions are now turned into slice objects with the OP_SLICE instruction.
Slice objects have a start, end, and step, all of which default to None.
Slice objects are passed to __getitem__, et al., as a normal parameter.

Support for slices in list.__getitem__, str.__getitem__, and bytes.__getitem__ has
been implemented.
2022-05-03 16:49:58 +09:00
K. Lange
e24ea3d32c Fix incorrect handling of blank and comment lines before 'else', 'except', etc. 2022-02-17 09:49:24 +09:00
K. Lange
2c158f9491 Fixup bad cast when comparing int to float 2021-12-15 17:31:15 +09:00
K. Lange
abd49b93a7 Fix 'del' on table entries not updating count 2021-12-15 17:22:52 +09:00
K. Lange
6a431e9aa3 Add a test for that 2021-12-15 15:11:27 +09:00
K. Lange
3733c996bc Fix assignments to single complex assignment targets (trailing commas) 2021-04-23 14:15:14 +09:00
K. Lange
84765c1f4d Update test for change in dict ordering 2021-04-14 22:32:51 +09:00
K. Lange
40836cba21 Implement Python 3 division semantics 2021-04-02 16:02:05 +09:00
K. Lange
dc361af48b Fix incorrect binding of classmethod when called on instance of subclass 2021-04-02 12:25:07 +09:00
K. Lange
002412ecf8 Initial support for async/await 2021-03-31 19:27:13 +09:00
K. Lange
f4ea799d42 Fix generator not being popped from stack on 'yield from' 2021-03-31 19:09:06 +09:00
K. Lange
729220568e Try swapping args to __eq__ on NotImplemented 2021-03-30 17:00:23 +09:00
K. Lange
70d5f1b2b7 Implement NotImplemented, fallback operators
Adds 'NOTIMPL' as a new primitive value, available from
__builtins__.NotImplemented. Adds support for inverse /
reflected overrides for binary operators. Adds opcodes
for LESS_EQUAL and GREATER_EQUAL.
2021-03-30 16:42:29 +09:00
K. Lange
006119cc1e Support arguments to super(), support outside of classes 2021-03-30 14:18:39 +09:00
K. Lange
7a81724595 Unify more format strings 2021-03-26 12:17:14 +09:00
K. Lange
41c77de753 Implement overridable hashing and speed up property access 2021-03-25 19:49:18 +09:00
HarJIT
5c2de206b9
Codecs package (#4)
Codecs package

Co-authored-by: HarJIT <harjit@harjit.moe>
2021-03-24 04:53:02 -07:00
K Lange
2ed8e65c89 Rework KrkValue to use NaN-boxing 2021-03-24 20:49:44 +09:00
K. Lange
b5c22f77c5 Preallocate table space for krk_dict_of 2021-03-23 20:26:39 +09:00
K. Lange
6f92af28a2 Update test/day7.krk to not just be a test of list.pop 2021-03-23 12:50:04 +09:00
K. Lange
a63aef6b92 Try to make builds smaller
... by:
    - Normalizing some exception strings.
    - Putting the 'dis' module behind -DDEBUG.
2021-03-22 18:09:25 +09:00
K Lange
c68eb093e8 Fix broken stack handling in and make map,enumerate,filter object inits 2021-03-21 16:47:13 +09:00
K. Lange
a25315de92 Implement chained comparison operators 2021-03-21 12:41:54 +09:00
K. Lange
d0ea1278a6 ... and update test 2021-03-21 11:31:07 +09:00
K. Lange
1a569e36f6 README changed, update the test 2021-03-20 16:09:48 +09:00
K. Lange
cb809dd0fe 'yield' as an expression with a value; 'yield from' 2021-03-20 12:07:46 +09:00
K. Lange
2d3e7ca3d3 Fix bad pop on bare except-finally 2021-03-19 11:39:49 +09:00
K. Lange
46dada92fc Support multiple context managers in a 'with' statement 2021-03-18 21:25:19 +09:00
K. Lange
ee731257dd Support calling exit handlers for with: statements on exception 2021-03-18 20:41:11 +09:00
K. Lange
8aed1368ea Implement 'finally' 2021-03-18 19:52:30 +09:00
K. Lange
6c29be4dcf Fix up multiple assignment targets so we have some hope of nesting 2021-03-16 19:28:00 +09:00
K Lange
708ba0a481 Fix up some weird stuff with parens 2021-03-13 23:37:09 +09:00
K. Lange
b09f7b1131 Multiple arbitrary assignment 2021-03-13 20:17:45 +09:00
K Lange
9ea28e77f1 Add class and module member annotations 2021-03-13 14:22:32 +09:00
K Lange
49ee777c50 Type annotations. 2021-03-11 20:44:39 +09:00
K Lange
f655ca7f61 Fix up function, object repring and add __qualname__ to functions 2021-03-11 19:05:21 +09:00
K. Lange
6b3f8de63b Implement general __get__/__set__ descriptors
property objects are no longer a special case and have been simplified
old-style native properties can probably all be removed as well, but, todo
2021-03-10 20:24:12 +09:00
K. Lange
c9aa17e119 Rename __get__, __set__ to match Python's __getitem__, __setitem__ and make room for future addition of descriptors 2021-03-10 14:24:22 +09:00
K. Lange
05f7d9537a Add tests related to recent class method changes 2021-03-09 23:00:47 +09:00
K. Lange
84b7a37fab Remove the distinction between a class's 'fields' and 'methods' and implement actual method resolution 2021-03-09 22:35:40 +09:00
K. Lange
5dfbf8ec17 Various cleanups 2021-03-08 16:36:12 +09:00
K. Lange
1809ebf99e Okay quite a bit was wrong with that, but now it's right 2021-03-06 18:00:14 +09:00
K. Lange
35b4032de3 Support chained 'for's in generator expressions 2021-03-06 15:32:30 +09:00
K. Lange
0f6b74ff5b Generator expressions as direct function arguments 2021-03-06 11:19:34 +09:00
K. Lange
e97e42afc9 Replace tuple comprehensions with generator expressions 2021-03-06 11:13:49 +09:00
K. Lange
7aa4d3ce99 yield keyword; generator functions 2021-03-04 18:09:07 +09:00