When `pp.safe_shadowing` is set to true, we still use the
suggested name if the "body" does not contain a free variable with the
suggested name. This is the approach used in Lean 3, and I think it
improved the result in all affected tests.
The implementation was simple. The only nasty case was `delabAppMatch`.
The main motivation for this feature was hovering information such as
```lean
f : {α_1 : Type} → α_1 → α_1
```
when hovering over the `f` at
```lean
def g (α : Type) (a : α) :=
f a
```
With `safe_shadowing`, we get the nicer
```lean
f : {α : Type} → α → α
```
cc @Kha
8 lines
125 B
Text
8 lines
125 B
Text
f : Nat → Nat
|
|
x y z : Nat
|
|
h : x = (fun (x : Nat) => x) y
|
|
⊢ f x = f y
|
|
f : Nat → Nat
|
|
x y z : Nat
|
|
h : x = y
|
|
⊢ f x = f y
|