Refactor, generics, methods, overloads and more #9

Merged
HEL merged 64 commits from feat/generics into main 2026-06-14 22:13:14 +00:00

64 Commits

Author SHA1 Message Date
635bf73531 feat(checker): add slice overloads on lists 2026-06-15 00:03:41 +02:00
bd0421b5d8 fix(checker): handle generic overloads 2026-06-15 00:03:40 +02:00
37a464d2bc feat(checker): type check slice expressions 2026-06-15 00:03:40 +02:00
1eedcff5aa feat(parser): add slice expression 2026-06-15 00:03:39 +02:00
35798e5752 tests: update with new subscript and call checks
invalid function calls now return UnknownType even if the function has a return type
2026-06-15 00:03:39 +02:00
0a35563aaf feat(checker): resolve overloads with subtypes
try to find the most specific overload if multiple matches are found
2026-06-15 00:03:38 +02:00
e1da87eaa0 doc(checker): add docstrings to new call checks 2026-06-15 00:03:38 +02:00
2a579c06b1 refactor(checker): unify call check for subscript 2026-06-15 00:03:37 +02:00
46a22797b6 chore: add examples for functions and overloads 2026-06-15 00:03:37 +02:00
7598681729 feat(checker): handle overloaded function calls 2026-06-15 00:03:36 +02:00
2df0380815 fix(types): remove unused operation structures 2026-06-15 00:03:36 +02:00
178e24cd02 feat(checker): type check subscripts 2026-06-15 00:03:35 +02:00
c92b6b5c18 feat(parser): add subscript expressions 2026-06-15 00:03:35 +02:00
6577241af9 feat(checker): handle unary operations 2026-06-15 00:03:34 +02:00
1c71badf24 fix(checker): report unsupported features 2026-06-15 00:03:34 +02:00
064702fe13 tests: update with newly reported judgements 2026-06-15 00:03:33 +02:00
890e2f035a refactor(checker): replace all accept calls
make visitor accept calls more explicit with type_of(), resolve_type_expr() and process_stmt()
2026-06-15 00:03:33 +02:00
0d0115534b tests: update tests 2026-06-15 00:03:33 +02:00
221b5ca926 fix(checker): adapt comparison to lookup method 2026-06-15 00:03:32 +02:00
9a227b6d4c fix(checker): remove in.to_bytes 2026-06-15 00:03:32 +02:00
df2e609c60 fix(checker): handle members on base type 2026-06-15 00:03:31 +02:00
3ee1161680 fix: remove unused op statement 2026-06-15 00:03:31 +02:00
eb223c6cb7 fix(checker): forward parsing errors as diagnostics 2026-06-15 00:03:30 +02:00
6f5d971c66 fix(checker): gravefully handle unknown type 2026-06-15 00:03:30 +02:00
109c8eb35a fix(parser): make name required for mixed and keyword args 2026-06-15 00:03:29 +02:00
99924ee6c2 feat(parser): add mixed arguments in midas functions 2026-06-15 00:03:29 +02:00
4c9cbd9faa feat(checker): add top type (Any) 2026-06-15 00:03:28 +02:00
84a5f41e62 fix: extend example of complex types 2026-06-15 00:03:27 +02:00
6d6bb66c54 feat(checker): define members on builtin types 2026-06-15 00:03:27 +02:00
50eaafc388 feat(tests): update serializer 2026-06-15 00:03:27 +02:00
2935c71366 fix(checker): give warning on unknown variable 2026-06-15 00:03:26 +02:00
52981f12f2 fix(checker): minor fix when using base type in generic 2026-06-15 00:03:26 +02:00
2e898ab1e9 fix(checker): update binary operation lookup 2026-06-15 00:03:25 +02:00
01ff5ca8d5 fix(checker): handle nested generic members 2026-06-15 00:03:25 +02:00
b5de28e291 feat(checker): implement lookup_member method 2026-06-15 00:03:24 +02:00
179b88bfed feat(checker): add members registry 2026-06-15 00:03:24 +02:00
b3665c6462 fix(cli): update highlighter 2026-06-15 00:03:23 +02:00
42284704de feat(parser): accept props and methods in extend 2026-06-15 00:03:23 +02:00
650f60e70c feat(cli): add option to show type judgements 2026-06-15 00:03:22 +02:00
efea1b29e7 fix(cli): show diagnostics from different files 2026-06-15 00:03:22 +02:00
ae0bd75f3b fix(checker): improve error for recursive type ref 2026-06-15 00:03:22 +02:00
d9100d8300 feat(checker): adapt typers to members and extension type 2026-06-15 00:03:21 +02:00
900be47d34 feat(parser): add new ast nodes to parser 2026-06-15 00:03:21 +02:00
3d5f97a0f4 feat(parser): add extension type and rename properties 2026-06-15 00:03:20 +02:00
9fde115016 feat: add function type to midas syntax 2026-06-15 00:03:20 +02:00
f8897dd075 feat(types): add type params to extend statement 2026-06-15 00:03:19 +02:00
380753ca7a refactor(types): extract TypeParams
also rename generic type params to type args (when calling a generic)
2026-06-15 00:03:19 +02:00
4715318913 feat(types): add human-friendly string rep
add `__str__` methods on type structures to improve readability of diagnostics
2026-06-15 00:03:18 +02:00
a78aee1639 fix(resolver): define variable on assignment
if a variable is not already defined when an assignment is visited, it is then defined in the current scope
2026-06-15 00:03:17 +02:00
3581b7600b fix(checker): use reduce_types to infer return type 2026-06-15 00:03:17 +02:00
32207c3d6f refactor(checker): extract reduce_types function 2026-06-15 00:03:16 +02:00
9474a7336a feat(types): WIP add AppliedType 2026-06-15 00:03:16 +02:00
5a6a279eaf feat(checker): WIP add lists 2026-06-15 00:03:15 +02:00
c1f95edc96 feat(types): add name to generic type 2026-06-15 00:03:15 +02:00
098bbc35c5 fix: avoid circular import in builtins.py 2026-06-15 00:03:15 +02:00
314d4d344b refactor(resolver): move resolver to checker module 2026-06-15 00:03:14 +02:00
7236749bd5 refactor(checker): unify builtins definitions 2026-06-15 00:03:14 +02:00
2ff1f27614 refactor(checker): restructure around shared registry
restructure the type checker with a shared TypesRegistry used by MidasTyper and PythonTyper

this commit also relocates some methods in more appropriate places, such as is_subtype and apply_generic (now in TypesRegistry)
2026-06-15 00:03:13 +02:00
111afe4dd4 feat(checker): add reporter class 2026-06-15 00:03:13 +02:00
c4c142482a feat(resolver): handle generic application 2026-06-15 00:03:12 +02:00
f9c15abaf4 refactor(checker): move is_subtype to resolver 2026-06-15 00:03:12 +02:00
d51d24f865 refactor(checker): move unfold_type to types.py 2026-06-15 00:03:11 +02:00
1d00875a8c feat(resolver): handle generics definition 2026-06-15 00:03:11 +02:00
f89722fad8 feat(checker): add generic type structure 2026-06-15 00:03:10 +02:00