Skip to content

Fix aliasAs generating wrong type for the alias variable#136

Open
dillonkearns wants to merge 1 commit intomdgriffith:mainfrom
dillonkearns:fix/aliasAs-type
Open

Fix aliasAs generating wrong type for the alias variable#136
dillonkearns wants to merge 1 commit intomdgriffith:mainfrom
dillonkearns:fix/aliasAs-type

Conversation

@dillonkearns
Copy link
Copy Markdown
Contributor

When using Elm.Arg.aliasAs on a record pattern, the alias variable was incorrectly using a fresh type variable instead of inheriting the underlying pattern's type.

For example, here's what this snippet generates:

Arg.record ... |> Arg.field "name" |> Arg.aliasAs "person"

Before:

{ name : name, age : age } -> ( name, person )

(person is wrong - should be the record type)

After:

{ name : name, age : age } -> ( name, { name : name, age : age } )

Root cause: aliasAs was calling val which creates a fresh GenericType for the alias name. The fix uses the inner pattern's annotation (the actual record/tuple/etc type) for the alias value.

When using Elm.Arg.aliasAs on a record pattern, the alias variable
was given a fresh type variable instead of inheriting the underlying
pattern's type.

Before:
  Arg.record ... |> Arg.field "name" |> Arg.aliasAs "person"
  generated: { name : name, age : age } -> ( name, person )
             (person is wrong - should be the record type)

After:
  generated: { name : name, age : age }
             -> ( name, { name : name, age : age } )

Root cause: aliasAs was calling `val` which creates a fresh
`GenericType` for the alias name. The fix uses the inner pattern's
annotation (the actual record/tuple/etc type) for the alias value.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant