Skip to content

CorePrep: Refactor FloatingBind (#23442)

Sebastian Graf requested to merge wip/T23442 into master

A drastically improved architecture for local floating in CorePrep that decouples the decision of whether a float is going to be let- or case-bound from how far it can float (out of strict contexts, out of lazy contexts, to top-level).

There are a couple of new Notes describing the effort:

  • Note [Floating in CorePrep] for the overview
  • Note [BindInfo and FloatInfo] for the new classification of floats
  • Note [Floats and FloatDecision] for how FloatInfo is used to inform floating decisions

This is necessary ground work for proper treatment of Strict fields and unlifted values at top-level.

Fixes #23442 (closed).

Merge request reports