You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When we are performing SIL substitution, and we reach a type that
needs to be lowered, use an opaque abstraction pattern.
As I argue in the comment, we know that the orig type is now either
an opaque type or a type with high-level structure that is invariant
to lowering. Substitution will not change the latter property, and
an opaque abstraction pattern is correct for the former. Attempting
to create a "truer" abstraction pattern that preserves more structure
from the orig type is both pointless and problematic. The
substitutions we just did may have replaced pack references with
non-pack types if there are active expansions in progress; this cannot
be easily explained in terms of substitutions. (In theory, we could
pass a more opaque concept of substitutions through AbstractionPattern,
which might help with this. That would also make it harder to catch
bugs with signature mismatches, though.)
0 commit comments