Fix Elm.Let.fn/fn2/fn3 missing type annotations in declarations#137
Merged
Conversation
When a let-bound function (from Elm.Let.fn, fn2, or fn3) was called
from the body of the let expression, the resulting expression had
no proper function type annotation. This caused the enclosing
declaration to be generated without a type annotation at all.
Root cause: the `return` function in each of fn/fn2/fn3 built the
call expression using `innerFnDetails` directly, which contains the
body's return type as the annotation — not a function type. When
Elm.apply then tried to type-check the call, it couldn't derive a
proper type, so the declaration got no annotation.
Fix: extract a `letFnAnnotation` helper that builds a proper function
type annotation `arg1 -> arg2 -> ... -> body` from the arg annotations
and the body's annotation. Use it from fn, fn2, and fn3.
Before:
useLetFn = -- No annotation!
let
myFn x = x + 1
in
myFn 5
After:
useLetFn : Int
useLetFn =
let
myFn x = x + 1
in
myFn 5
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This file contains hidden or 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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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 a let-bound function (from
Elm.Let.fn,fn2, orfn3) was called from the body of the let expression, the resulting expression had no proper function type annotation. This caused the enclosing declaration to be generated without a type annotation at all.Before:
After: