Skip to content
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

Implement support for rewrite constraints #2276

Merged
merged 14 commits into from
Oct 12, 2022

Conversation

zygoloid
Copy link
Contributor

Implements basic support for rewrite constraints as proposed in #2173.

Support for associated constants and complex constraints in general is also made more robust: argument deduction now properly computes and substitutes witnesses, and interface declarations track a more correct description of the constraint that they introduce than the one we previously built.

Remove old attempt to resolve witnesses; it's not needed any more.
constraints from its associated constants.

The constraint for an interface is no longer the same as the interface
itself, and may in general have multiple impl constraints.
Only enough for small-scale testing for now. The real algorithm here
will follow later.
Make it handle witnesses properly, by performing incremental resolution
of them in lexical order, and deferring all substitution until we've got
values and witnesses for all things that might be referenced.

Change syntactic GenericBindings so that their constraint type refers to
that same binding rather than having its own binding. This is necessary
to make substitution of their Self work properly.
Convert generic binding arguments to their parameter type.
@zygoloid zygoloid requested a review from jonmeow October 12, 2022 01:06
@zygoloid zygoloid added the explorer Action items related to Carbon explorer code label Oct 12, 2022
explorer/interpreter/impl_scope.cpp Outdated Show resolved Hide resolved
explorer/interpreter/impl_scope.cpp Outdated Show resolved Hide resolved
explorer/interpreter/type_checker.cpp Outdated Show resolved Hide resolved
explorer/interpreter/type_checker.cpp Outdated Show resolved Hide resolved
explorer/interpreter/type_checker.cpp Outdated Show resolved Hide resolved
@zygoloid zygoloid merged commit 9f534ae into carbon-language:trunk Oct 12, 2022
@zygoloid zygoloid deleted the explorer-assoc-const-rewrite branch October 4, 2023 23:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
explorer Action items related to Carbon explorer code
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants