This fix may impact performance. Note that we don't need to flush the cache if we are "adding" stuff to the environment. We only need to flush the caches if the change is not monotonic. BTW, most of the changes are monotonic. I think this is why we did not hit this bug before. We may also move all these caches to an environment extension. It is an easy way to make sure we preserve the cache when extending the environment. I tried a few benchmarks and did not notice a significant difference. cc @kha @gebner fixes #1051
72 lines
4.3 KiB
Text
72 lines
4.3 KiB
Text
1018unknowMVarIssue.lean:9:18-9:19: error: don't know how to synthesize placeholder
|
||
context:
|
||
α✝ β : Type
|
||
a✝ : α✝
|
||
x : Fam2 α✝ β
|
||
α : Type
|
||
a : α
|
||
⊢ α
|
||
[Elab.info] command @ ⟨7, 0⟩-⟨10, 19⟩ @ Lean.Elab.Command.elabDeclaration
|
||
α : Type @ ⟨7, 13⟩-⟨7, 14⟩ @ Lean.Elab.Term.elabIdent
|
||
α : Type @ ⟨7, 13⟩-⟨7, 14⟩
|
||
a (isBinder := true) : α @ ⟨7, 9⟩-⟨7, 10⟩
|
||
α : Type @ ⟨7, 13⟩-⟨7, 14⟩ @ Lean.Elab.Term.elabIdent
|
||
α : Type @ ⟨7, 13⟩-⟨7, 14⟩
|
||
a (isBinder := true) : α @ ⟨7, 9⟩-⟨7, 10⟩
|
||
Fam2 α β : Type 1 @ ⟨7, 21⟩-⟨7, 29⟩ @ Lean.Elab.Term.elabApp
|
||
[.] `Fam2 : some Sort.{?_uniq.317} @ ⟨7, 21⟩-⟨7, 25⟩
|
||
Fam2 : Type → Type → Type 1 @ ⟨7, 21⟩-⟨7, 25⟩
|
||
α : Type @ ⟨7, 26⟩-⟨7, 27⟩ @ Lean.Elab.Term.elabIdent
|
||
α : Type @ ⟨7, 26⟩-⟨7, 27⟩
|
||
β : Type @ ⟨7, 28⟩-⟨7, 29⟩ @ Lean.Elab.Term.elabIdent
|
||
β : Type @ ⟨7, 28⟩-⟨7, 29⟩
|
||
x (isBinder := true) : Fam2 α β @ ⟨7, 17⟩-⟨7, 18⟩
|
||
β : Type @ ⟨7, 33⟩-⟨7, 34⟩ @ Lean.Elab.Term.elabIdent
|
||
β : Type @ ⟨7, 33⟩-⟨7, 34⟩
|
||
a (isBinder := true) : α @ ⟨7, 9⟩-⟨7, 10⟩
|
||
x (isBinder := true) : Fam2 α β @ ⟨7, 17⟩-⟨7, 18⟩
|
||
_example.match_1 (fun α β x a => β) α β x a (fun α_1 a_1 => ?m a x α_1 a_1) fun n a =>
|
||
n : <failed-to-infer-type> @ ⟨8, 2⟩-⟨10, 19⟩ @ Lean.Elab.Term.elabMatch
|
||
x : Fam2 α β @ ⟨8, 8⟩-⟨8, 9⟩
|
||
[.] `Fam2.any : none @ ⟨9, 4⟩-⟨9, 12⟩
|
||
@Fam2.any : {α : Type} → Fam2 α α @ ⟨9, 4⟩-⟨9, 12⟩
|
||
[.] `Fam2.any : none @ ⟨9, 4⟩-⟨9, 12⟩
|
||
@Fam2.any : {α : Type} → Fam2 α α @ ⟨9, 4⟩-⟨9, 12⟩
|
||
[.] `Fam2.nat : none @ ⟨10, 4⟩-⟨10, 12⟩
|
||
Fam2.nat : Nat → Fam2 Nat Nat @ ⟨10, 4⟩-⟨10, 12⟩
|
||
[.] `n : none @ ⟨10, 13⟩-⟨10, 14⟩
|
||
[.] `Fam2.any : none @ ⟨9, 4⟩-⟨9, 12⟩
|
||
@Fam2.any : {α : Type} → Fam2 α α @ ⟨9, 4⟩-⟨9, 12⟩
|
||
[.] `Fam2.any : none @ ⟨9, 4⟩-⟨9, 12⟩
|
||
@Fam2.any : {α : Type} → Fam2 α α @ ⟨9, 4⟩-⟨9, 12⟩
|
||
a : α @ ⟨8, 2⟩†-⟨10, 19⟩†
|
||
?α : Type @ ⟨8, 2⟩†-⟨10, 19⟩† @ Lean.Elab.Term.elabInaccessible
|
||
?α : Type @ ⟨8, 2⟩†-⟨10, 19⟩† @ Lean.Elab.Term.elabSyntheticHole
|
||
?α : Type @ ⟨8, 2⟩†-⟨10, 19⟩† @ Lean.Elab.Term.elabInaccessible
|
||
?α : Type @ ⟨8, 2⟩†-⟨10, 19⟩† @ Lean.Elab.Term.elabSyntheticHole
|
||
Fam2.any : Fam2 ?α ?α @ ⟨9, 4⟩†-⟨9, 12⟩† @ Lean.Elab.Term.elabApp
|
||
[.] `Fam2.any : some Fam2 ([mdata _inaccessible:1 ?_uniq.647]) ([mdata _inaccessible:1 ?_uniq.648]) @ ⟨9, 4⟩-⟨9, 12⟩
|
||
@Fam2.any : {α : Type} → Fam2 α α @ ⟨9, 4⟩-⟨9, 12⟩
|
||
?α : Type @ ⟨9, 4⟩†-⟨9, 12⟩† @ Lean.Elab.Term.elabInaccessible
|
||
?α : Type @ ⟨9, 4⟩†-⟨9, 12⟩† @ Lean.Elab.Term.elabHole
|
||
a : ?α @ ⟨8, 2⟩†-⟨10, 19⟩† @ Lean.Elab.Term.elabIdent
|
||
a : ?α @ ⟨8, 2⟩†-⟨10, 19⟩†
|
||
?m a✝ x α a : α @ ⟨9, 18⟩-⟨9, 19⟩ @ Lean.Elab.Term.elabHole
|
||
[.] `Fam2.nat : none @ ⟨10, 4⟩-⟨10, 12⟩
|
||
Fam2.nat : Nat → Fam2 Nat Nat @ ⟨10, 4⟩-⟨10, 12⟩
|
||
[.] `n : none @ ⟨10, 13⟩-⟨10, 14⟩
|
||
a : α @ ⟨8, 2⟩†-⟨10, 19⟩†
|
||
Nat : Type @ ⟨8, 2⟩†-⟨10, 19⟩† @ Lean.Elab.Term.elabInaccessible
|
||
Nat : Type @ ⟨8, 2⟩†-⟨10, 19⟩† @ Lean.Elab.Term.elabSyntheticHole
|
||
Nat : Type @ ⟨8, 2⟩†-⟨10, 19⟩† @ Lean.Elab.Term.elabInaccessible
|
||
Nat : Type @ ⟨8, 2⟩†-⟨10, 19⟩† @ Lean.Elab.Term.elabSyntheticHole
|
||
Fam2.nat n : Fam2 Nat Nat @ ⟨10, 4⟩†-⟨10, 14⟩ @ Lean.Elab.Term.elabApp
|
||
[.] `Fam2.nat : some Fam2 ([mdata _inaccessible:1 ?_uniq.679]) ([mdata _inaccessible:1 ?_uniq.680]) @ ⟨10, 4⟩-⟨10, 12⟩
|
||
Fam2.nat : Nat → Fam2 Nat Nat @ ⟨10, 4⟩-⟨10, 12⟩
|
||
n : Nat @ ⟨10, 13⟩-⟨10, 14⟩ @ Lean.Elab.Term.elabIdent
|
||
n : Nat @ ⟨10, 13⟩-⟨10, 14⟩
|
||
a : Nat @ ⟨8, 2⟩†-⟨10, 19⟩† @ Lean.Elab.Term.elabIdent
|
||
a : Nat @ ⟨8, 2⟩†-⟨10, 19⟩†
|
||
n : Nat @ ⟨10, 18⟩-⟨10, 19⟩ @ Lean.Elab.Term.elabIdent
|
||
n : Nat @ ⟨10, 18⟩-⟨10, 19⟩
|
||
@_example (isBinder := true) : {α β : Type} → α → Fam2 α β → β @ ⟨7, 0⟩-⟨7, 7⟩
|