-
Notifications
You must be signed in to change notification settings - Fork 131
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[WIP] Enhance interop of generics, roles, and classes, Raku or nqp #773
base: main
Are you sure you want to change the base?
Commits on May 24, 2022
-
Add some failing role_typecheck_list tests, tweak successful old ones
- No need for nqp::eqaddr directly in the old tests. - We need to test for specializations and classes' role_typecheck_list in addition to parametric roles. Surprise! We have more work to do here.
Configuration menu - View commit details
-
Copy full SHA for 899d5b5 - Browse repository at this point
Copy the full SHA 899d5b5View commit details -
- Updating a role typecheck list should delegate to another role typecheck list at one point or another. - The role typecheck list should become part of the type cache for any given MRO-ish type. - The role typecheck list should carry a containerless `VMArray` of roles, as is the case with the MRO which, combined with the type object itself, forms the type cache of a supportive kind of type. - Because a concrete role's instance is optional as `RoleToClassApplier` depends on it, such a nullish value should not become part of the roles list. - Due to the simplicity of the various NQP HOWs' typechecks, each can carry a definitive type cache. - Curried roles need typechecking in order for Rakudo to build with each of these changes.
Configuration menu - View commit details
-
Copy full SHA for 27cc1ad - Browse repository at this point
Copy the full SHA 27cc1adView commit details
Commits on May 26, 2022
-
This is more or less a direct translation of Rakudo's `roles` metamethods as applied. Besides new parameters, the key difference is `NQPClassHOW.roles`' `:$local` parameter, which (thankfully) was required before. It should be capable of matching Rakudo's `0` default because of that.
Configuration menu - View commit details
-
Copy full SHA for 533acf9 - Browse repository at this point
Copy the full SHA 533acf9View commit details
Commits on Jun 20, 2022
-
Revert "Unify the roles metamethods"
This is a recursive algorithm, echoing problems with coercions back in the day. There's a better approach to this. This reverts commit 533acf9.
Configuration menu - View commit details
-
Copy full SHA for 3003290 - Browse repository at this point
Copy the full SHA 3003290View commit details -
Make nqp classes vaguely aware of ^mro(:concretizations|:roles)
`Metamodel::C3MRO` now expects a `:concretizations` parameter, but we lack the `Metamodel::ConcreteRoleHOW` it wants from whatever carries it; `:roles` is based off this as well.
Configuration menu - View commit details
-
Copy full SHA for f77e64e - Browse repository at this point
Copy the full SHA f77e64eView commit details -
Introduce the metamodel MonicMachine
A backport of Rakudo's. We lack its efface method here since we lack `^parents(:excl)`.
Configuration menu - View commit details
-
Copy full SHA for 319b6af - Browse repository at this point
Copy the full SHA 319b6afView commit details -
Compute C3MRO via monic beckoning, not c3_merge
Backport of Rakudo's changes. Err against recursing by depending on the MROs of parents instead.
Configuration menu - View commit details
-
Copy full SHA for e5270b5 - Browse repository at this point
Copy the full SHA e5270b5View commit details -
Fix NQPClassHOW's role typecheck list fix
Include the specialization, not a duplicate of the role that was specialized.
Configuration menu - View commit details
-
Copy full SHA for 6d8a65b - Browse repository at this point
Copy the full SHA 6d8a65bView commit details -
Call NQPClassHOW's role typecheck list what it is
For consistency with every other HOW.
Configuration menu - View commit details
-
Copy full SHA for 842b5fc - Browse repository at this point
Copy the full SHA 842b5fcView commit details -
Backport of Rakudo's changes. `NQPConcreteRoleHOW` follows MRO ordering for consistency with `Metamodel::ConcreteRoleHOW`.
Configuration menu - View commit details
-
Copy full SHA for 3a30678 - Browse repository at this point
Copy the full SHA 3a30678View commit details -
Backport of Rakudo's changes. Nothing's hidden in nqp, so nothing to `:excl`.
Configuration menu - View commit details
-
Copy full SHA for f31c499 - Browse repository at this point
Copy the full SHA f31c499View commit details