lean4-htt/tests/lean/run/forInColErr.lean
Sebastian Ullrich caf815b009
feat: improve infer binder type failure message and range (#8263)
This PR improves the message and range of infer binder type failures.

---------

Co-authored-by: Joseph Rotella <7482866+jrr6@users.noreply.github.com>
2025-07-14 20:19:11 +00:00

79 lines
1.6 KiB
Text
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

set_option pp.mvars.anonymous false
/--
error: failed to construct 'ForIn' instance for collection
?_
and monad
Id
-/
#guard_msgs in
example {c} := Id.run do
for x in c do
pure ()
pure ()
/--
error: don't know how to synthesize implicit argument 'ρ'
@forIn Id (List ?_) ?_ instForInOfForIn' PUnit Id.instMonad [] PUnit.unit fun x r => do
pure ()
pure (ForInStep.yield PUnit.unit)
context:
⊢ Type _
---
error: Failed to infer type of binder `x`
---
error: don't know how to synthesize implicit argument 'α'
@List.nil ?_
context:
⊢ Type _
-/
#guard_msgs in
example : Unit := Id.run do
for x in [] do
pure ()
pure ()
/--
error: failed to construct `ForIn'` instance for collection
?_
and monad
Id
-/
#guard_msgs in
example {c} := Id.run do
for h : x in c do
pure ()
pure ()
/--
error: don't know how to synthesize implicit argument 'd'
@forIn' Id (List ?_) ?_ inferInstance List.instForIn'InferInstanceMembership PUnit Id.instMonad [] PUnit.unit
fun x h r => do
pure ()
pure (ForInStep.yield PUnit.unit)
context:
⊢ outParam (Membership ?_ (List ?_))
---
error: don't know how to synthesize implicit argument 'ρ'
@forIn' Id (List ?_) ?_ inferInstance List.instForIn'InferInstanceMembership PUnit Id.instMonad [] PUnit.unit
fun x h r => do
pure ()
pure (ForInStep.yield PUnit.unit)
context:
⊢ Type _
---
error: Failed to infer type of binder `h`
---
error: Failed to infer type of binder `x`
---
error: don't know how to synthesize implicit argument 'α'
@List.nil ?_
context:
⊢ Type _
-/
#guard_msgs in
example : Unit := Id.run do
for h : x in [] do
pure ()
pure ()