5539d144ed
[core] Add CodeGenContext::build_in_bounds_gep_and_load
...
For safer accesses to `gep`-able values and faster fails.
2024-08-13 15:19:03 +08:00
f5fb504a15
core/codegen/expr: Implement vararg handling in gen_call
2024-08-06 11:46:00 +08:00
6a64c9d1de
core/typecheck/typedef: Add is_vararg_ctx to TTuple
2024-08-06 11:45:54 +08:00
cbf79c5e9c
core/typecheck/typedef: Add is_vararg to FuncArg, ConcreteFuncArg
2024-08-06 11:43:13 +08:00
f5b998cd9c
core/codegen: Remove unnecessary mut from get_llvm*_type
2024-08-06 10:52:24 +08:00
fb9fe8edf2
core: reimplement assignment type inference and codegen
...
- distinguish between setitem and getitem
- allow starred assignment targets, but the assigned value would be a tuple
- allow both [...] and (...) to be target lists
2024-08-05 19:30:48 +08:00
894083c6a3
core/codegen: refactor gen_{for,comprehension} to match on iter type
2024-08-05 19:30:48 +08:00
05a8948ff2
core: Minor cleanup to use ListValue APIs
2024-07-26 13:35:40 +08:00
6d171ec284
core: Add label name and hooks to gen_for functions
2024-07-26 13:35:40 +08:00
693b2a8863
core: Add support for 32-bit size_t on 64-bit targets
2024-07-26 13:35:40 +08:00
3db3061d99
artiq/symbol_resolver: Handle type of zero-length lists
2024-07-19 14:42:14 +08:00
513d30152b
core: support raise exception short form
2024-07-12 18:58:34 +08:00
f52086b706
core: improve binop and cmpop error messages
2024-07-05 16:27:24 +08:00
0a732691c9
core: refactor typecheck/magic_methods.rs operators & add op symbol name
2024-07-05 16:27:20 +08:00
c4052b6342
core: Implement multi-operand __eq__ and __ne__ for lists
2024-07-04 16:01:15 +08:00
66c205275f
core: Implement list::__add__
2024-07-04 16:01:11 +08:00
c85e412206
core: Implement list::__mul__
2024-07-04 15:53:50 +08:00
13beeaa2bf
core: Implement handling for zero-length lists
2024-07-04 15:32:18 +08:00
2194dbddd5
core/type_annotation: Refactor List type to TObj
...
In preparation for operators on lists.
2024-07-04 15:32:18 +08:00
134af79fd6
core: add support for class attributes
2024-06-25 16:06:33 +08:00
06e9d90d57
apply clippy changes
2024-06-21 14:14:01 +08:00
0452e6de78
core: Fix codegen for tuple-index into ndarray
2024-06-20 12:50:30 +08:00
f026b48e2a
core: refactor to use TypeVarId
and TypeVar
2024-06-13 16:59:10 +08:00
23974feae7
meta: Restrict number of allowed lints
2024-06-12 16:10:57 +08:00
40a3bded36
meta: Set clippy lints in {main,lib}.rs
...
So that this does not have to be manually passed to the `cargo clippy`
command-line every single time. Also allows incrementally addressing
these lints by removing and fixing them one-by-one.
2024-06-12 16:10:57 +08:00
fd36f78005
core: refactor PrimitiveDefinitionId
into enum PrimDef
2024-06-12 15:01:01 +08:00
8168692cc3
apply cargo fmt
2024-06-12 14:45:03 +08:00
f0ab1b858a
core: Refactor class abstractions
...
- Introduce new Type abstractions
- Rearrange some functions
2024-06-06 13:45:51 +08:00
ed79d5bb9e
core/expr: Add support for multi-dim slicing of NDArrays
2024-06-03 16:40:05 +08:00
c35ad06949
core/expr: Add support for 1D slicing of NDArrays
2024-06-03 16:40:05 +08:00
a176c3eb70
core/irrt: Change handle_slice_indices to instead take length of object
...
So that all other array-like datatypes (e.g. ndarray) can also take
advantage of it.
2024-06-03 16:40:05 +08:00
b6ff75dcaf
core/irrt: Add support for calculating partial size of NDArray
2024-06-03 16:40:05 +08:00
847615fc2f
core: Implement numpy.matmul for 2D-2D ndarrays
2024-04-23 10:27:37 +08:00
5dfcc63978
core/classes: Take reference of indexes
2024-04-16 17:20:24 +08:00
e0f440040c
core/expr: Implement negative indices for ndarray
2024-04-15 12:49:42 +08:00
52c731c312
core: Implement Not/UAdd/USub for booleans
...
Not sure if this is deliberate or an oversight, but we implement it
anyway for consistency with other Python implementations.
2024-04-12 18:29:58 +08:00
00d1b9be9b
core: Fix __inv__ for i8-based boolean operands
2024-04-12 15:35:54 +08:00
a920fe0501
core: Implement elementwise comparison operators
2024-04-03 00:07:33 +08:00
727a1886b3
core: Implement elementwise unary operators
2024-04-03 00:07:33 +08:00
6af13a8261
core: Implement elementwise binary operators
...
Including immediate variants of these operators.
2024-04-03 00:07:33 +08:00
5ca2dbeec8
core/typedef: Add Type::obj_id to replace get_obj_id
2024-04-02 16:49:10 +08:00
9a98cde595
core: Extract codegen portion of gen_*op_expr
...
This allows *ops to be generated internally using LLVM values as
input. Required in a future change.
2024-04-01 16:48:25 +08:00
5ba8601b39
core: Remove ArrayValue variants of functions
...
These will be lowered and optimized away later anyways, and we have
ArrayLikeAccessor now.
2024-04-01 16:48:25 +08:00
13f06f3e29
core: Refactor VarMap to IndexMap
...
This is the only Map I can find that preserves insertion order while
also deduplicating elements by key.
2024-03-22 15:51:23 +08:00
f0da9c0283
core: Add ArrayLikeValue
...
For exposing LLVM values that can be accessed like an array.
2024-03-22 15:51:06 +08:00
2c4bf3ce59
core: Allow unsized CodeGenerator to be passed to some codegen functions
...
Enables codegen_callback to call these codegen functions as well.
2024-03-22 15:07:28 +08:00
50264e8750
core: Add missing unchecked accessors for NDArrayDimsProxy
2024-03-22 15:07:28 +08:00
c8866b1534
core/classes: Rename get_* functions to remove prefix
...
As suggested by Rust API Guidelines.
2024-03-21 15:46:10 +08:00
3292aed099
core: Fix ndarray subscript operator returning the wrong object
...
Should be returning the newly created object instead of the original
ndarray...
2024-03-07 14:59:13 +08:00
77de24ef74
core: Use BTreeMap for type variable mapping
...
There have been multiple instances where I had the need to iterate over
type variables, only to discover that the traversal order is arbitrary.
This commit fixes that by adding SortedMapping, which utilizes BTreeMap
internally to guarantee a traversal order. All instances of VarMap are
now refactored to use this to ensure that type variables are iterated in
the order of its variable ID, which should be monotonically incremented
by the unifier.
2024-03-04 23:56:04 +08:00