Commit b3c446d1793463c8f2f91fba83970109347cb193 improved the ranges of the instantiate implicits error message (thank you @nikswamy) , but there are still cases where the range is the whole declaration.
It turns out that this happens because we often set the range of a term to be the dummy range, which then causes the range to be defaulted to the whole declaration. Properly setting the range of a term requires an explicit call to set_range which is easy to forget.
This PR adds sensible default ranges in the tm_pureapp etc. constructors, to ensure that we do not generate dummy ranges in the first place. Nullary constructors for fvars etc. still produce dummy ranges; we can't guess the range from the arguments there and specifying it everywhere is a lot of churn.
See testcase for an example where this PR improves an error message range.
Commit b3c446d1793463c8f2f91fba83970109347cb193 improved the ranges of the instantiate implicits error message (thank you @nikswamy) , but there are still cases where the range is the whole declaration.
It turns out that this happens because we often set the range of a term to be the dummy range, which then causes the range to be defaulted to the whole declaration. Properly setting the range of a term requires an explicit call to
set_range
which is easy to forget.This PR adds sensible default ranges in the
tm_pureapp
etc. constructors, to ensure that we do not generate dummy ranges in the first place. Nullary constructors for fvars etc. still produce dummy ranges; we can't guess the range from the arguments there and specifying it everywhere is a lot of churn.See testcase for an example where this PR improves an error message range.