-
Notifications
You must be signed in to change notification settings - Fork 152
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
This PR addresses an issue whereby the Booster reverts to the old Haskell backend when it encounters a rule written using `#let` bindings. The reason for this is that the de-sugared form of `#let` is expressed in terms of an intermediate `#lambda` function that is not marked as being `total`. To address the issue, this PR adds the `total` attribute to the desugared intermediate lambda function for let-bindings and anonymous functions when the left-hand side of the original binding is a variable. Points to consider when reviewing this PR: * ~~Is the identification of when the LHS a variable correct in its handling of semantic casts and sorting? My presumption is that it is given that the "first child of `#SemanticCastTo` `KApply`" logic is replicated elsewhere.~~ * #3798 (comment) * Is there a way to integration-test this change other than "it doesn't break the rest of the test suite"? At the moment I'm not sure there is an obvious way to do so, but I'm open to suggestions. Fixes #3715 --------- Co-authored-by: rv-jenkins <[email protected]>
- Loading branch information
1 parent
0bad2c3
commit fb08dee
Showing
1 changed file
with
59 additions
and
21 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters