Keno Fischer
f8d353313e
WIP: type system: Refactor Type{} structure
...
This refactors `Type` to be a proper kind (like Union) rather than a
magic DataType. In addition, the (also, but separately) magic Type{T}
(T free) supertype of `DataType` is replaced by a proper abstact type.
The previous design dates back to before DataType and UnionAll were
separate concepts and were essentially a hack to make `Type` behave
properly. Such hacks are no longer required. This PR is primarily
prepratory to address several long-standing soundness issues around
the subtyping of Type, but this PR itself does not address those
issues yet - it is intended to be purely the structural change that
will enable those changes in a follow on PR.
The new kind is called TypeEq, but `const Type = TypeEq{T} where T`
is retained, so users keep using `Type{}` as usual. The new supertype
of DataType is called `Kind` and `Type == Kind` (but not === of course).
`getproperty` overloads are provided for compatibility, but the
recommended accessor for new code is a (new) `Base.type_parameter`.
Written by GPT 5.5
2026-05-27 05:25:48 +00:00
..
2025-05-28 11:24:04 -04:00
2025-08-06 07:47:26 -04:00
2024-05-29 15:43:56 +02:00
2026-04-07 21:39:15 +02:00
2026-04-14 12:37:48 -03:00
2026-03-13 20:32:47 +01:00
2024-07-02 13:22:30 -04:00
2024-04-02 12:25:09 +02:00
2026-05-06 09:16:06 -04:00
2026-05-06 16:43:16 -04:00
2026-04-10 14:58:54 -04:00
2024-04-02 12:25:09 +02:00
2026-05-15 08:11:37 -04:00
2026-05-04 10:16:26 -04:00
2026-03-31 14:10:54 -04:00
2026-02-10 19:14:07 -05:00
2026-04-24 07:56:32 -04:00
2024-07-13 23:12:47 +02:00
2026-05-21 12:14:24 -04:00
2025-08-21 14:24:11 +01:00
2026-04-14 12:37:48 -03:00
2025-12-31 04:21:55 -05:00
2026-02-09 15:12:10 -03:00
2026-05-13 20:44:33 -04:00
2026-03-17 10:00:46 -07:00
2025-08-14 14:38:58 +00:00
2025-10-09 16:00:40 -04:00
2025-01-20 21:23:42 -05:00
2025-03-27 11:10:05 -04:00
2026-05-06 09:16:06 -04:00
2025-01-24 16:37:50 -03:00
2026-03-31 14:10:54 -04:00
2025-08-14 02:46:34 -04:00
2026-04-24 13:07:16 -04:00
2024-05-02 18:12:03 +09:00
2025-10-01 11:06:32 -04:00
2025-10-17 16:48:33 -04:00
2025-01-09 12:30:55 +01:00
2026-05-27 05:25:48 +00:00
2025-01-17 10:28:20 -07:00
2024-11-20 23:51:38 -05:00
2026-02-03 15:42:16 -05:00
2026-02-17 12:28:53 +01:00
2026-01-28 00:16:20 -05:00
2025-06-27 14:37:11 +09:00
2026-05-15 08:01:21 -04:00
2026-04-02 19:23:10 -04:00
2026-04-20 20:24:13 -04:00
2026-01-30 14:51:02 -05:00
2026-04-25 10:40:17 +02:00
2024-08-08 18:56:56 -04:00
2024-11-21 12:21:25 -05:00
2024-09-26 09:34:03 -05:00
2026-03-08 00:53:36 +01:00
2025-06-12 18:44:56 -03:00
2026-04-24 07:56:32 -04:00
2025-09-20 12:37:59 -05:00
2026-04-02 19:23:10 -04:00
2026-05-27 05:25:48 +00:00
2025-03-22 21:55:11 -04:00
2026-02-21 13:50:56 -05:00
2025-10-22 16:26:13 -04:00
2026-03-31 01:35:28 -04:00
2025-05-18 13:08:51 +02:00
2024-07-25 13:53:05 +00:00
2025-08-21 21:30:34 +08:00
2026-04-28 10:33:48 -04:00
2026-04-06 16:50:02 -04:00
2026-05-11 20:50:06 -04:00
2026-03-08 21:55:30 -04:00
2026-03-05 10:02:22 -05:00
2025-12-02 13:27:46 -05:00
2026-01-28 14:37:21 -05:00
2025-04-25 14:53:57 -07:00
2026-05-27 05:25:48 +00:00
2025-07-27 07:27:14 -04:00
2025-08-20 08:10:38 -04:00
2026-04-22 11:46:11 -04:00
2025-11-23 16:47:33 +01:00
2026-02-06 14:26:13 -05:00
2026-05-13 13:11:32 -04:00
2025-01-21 17:15:50 +01:00
2025-12-17 14:25:03 +01:00
2026-04-10 20:12:24 -04:00
2026-03-03 16:23:26 +01:00
2026-03-03 16:23:26 +01:00
2026-04-29 11:54:06 +02:00
2026-03-03 16:23:26 +01:00
2026-03-16 15:15:48 -04:00
2026-04-21 14:37:11 -04:00
2026-03-18 21:05:31 -04:00
2025-02-26 16:34:35 -05:00
2026-05-21 12:14:24 -04:00
2026-05-15 07:55:32 -04:00
2025-05-22 13:42:26 -05:00
2026-05-14 23:12:00 -04:00
2024-08-22 23:08:37 +05:30
2026-05-06 16:43:16 -04:00
2025-10-01 11:06:32 -04:00
2025-03-21 13:37:51 -04:00
2026-04-12 02:03:59 -04:00
2025-12-24 21:48:22 -05:00
2026-02-19 14:55:02 -05:00
2025-11-08 10:52:21 +01:00
2026-03-31 19:36:47 -04:00
2026-04-17 15:14:48 -04:00
2025-08-16 21:27:46 +01:00
2025-09-17 11:12:46 +08:00
2026-05-04 10:16:26 -04:00
2026-05-27 05:25:48 +00:00
2026-04-17 15:15:34 -04:00
2026-05-27 05:25:48 +00:00
2025-11-25 03:25:36 -05:00
2026-05-06 16:43:16 -04:00
2026-05-25 22:42:47 -04:00
2026-04-14 08:21:57 -07:00
2025-12-27 08:54:58 -05:00
2025-10-01 11:06:32 -04:00
2025-09-01 06:45:39 -04:00
2025-01-27 13:25:59 -05:00
2026-03-18 22:51:13 -04:00
2026-04-28 10:33:48 -04:00
2026-03-17 07:48:57 -04:00
2026-05-17 22:48:10 -04:00
2026-03-05 20:45:01 -05:00
2024-05-10 11:29:16 +02:00
2026-03-20 18:41:33 +10:00