Find the builtin TypeCanAggregateDestroy in the FacetType for facet values #6119
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
When doing impl lookup with a constraint facet type including the builtin
TypeCanAggregateDestroy
, we look at the type to see if it satisfies it. However if the type is a facet value, we need to look at the FacetType to see if the eventual concrete type is going to satisfy it.Note that we can do this check up front in the
LookupImplWitness()
function without creating a symbolic instruction to be modified by future specifics with a more precise type for the facet value, because the result ofTypeCanAggregateDestroy
does not actually provide a witness, so we don't need the final specific type.This was noticed by removing the "shortcut" in convert for converting a
FacetAccessType(<symbolic binding>)
totypeof(<symbolic binding>)
. By removing the shortcut, we go into impl lookup when checkingimpl
decls containingTypeCanAggregateDestroy
via deduce.