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
[sil-verifier] Verify correctly that lowered SIL optional types are lowered types of formal optional types.
Recently, the lowering of Optional<T> was changed to be more like the lowering
of tuples. Specifically this means that we recursively propagate types into the
optional's component type rather than treating the component type as a
standalone formal type ala other nominal types.
This patch updates the function isLoweringOf in the SILVerifier that was missed
as apart of the aforementioned updates. Specifically, previously isLoweringOf
assumed that the optional's component type was always a formal type implying
that it could just compare the lowered SIL types corresponding formal type and
the passed in formal type. Now since we are propagating types down into the
optional's component types, we need to recurse performing isLoweringOf on the
maximally abstracted version of the optional SIL type (i.e. the primitive
address form).
I would like to thank John for his patience in explaining the big picture here.
rdar://28536812
0 commit comments