This PR ensures info tree users such as linters and request handlers have access to info subtrees created by async elab task by introducing API to leave holes filled by such tasks. **Breaking change**: other metaprogramming users of `Command.State.infoState` may need to call `InfoState.substituteLazy` on it manually to fill all holes.
80 lines
4.6 KiB
Text
80 lines
4.6 KiB
Text
[Elab.info]
|
|
• command @ ⟨3, 0⟩-⟨3, 31⟩ @ Lean.Elab.Command.elabSetOption
|
|
• [.] (Command.set_option "set_option" `trace.Elab.info []) @ ⟨3, 0⟩-⟨3, 26⟩
|
|
• option trace.Elab.info @ ⟨3, 11⟩-⟨3, 26⟩
|
|
1 + 2 + 3 : Nat
|
|
[Elab.info]
|
|
• command @ ⟨5, 0⟩-⟨5, 16⟩ @ Lean.Elab.Command.elabCheck
|
|
• 1 + 2 + 3 : Nat @ ⟨5, 7⟩-⟨5, 16⟩ @ «_aux_Init_Notation___macroRules_term_+__2»
|
|
• Macro expansion
|
|
1 + 2 +
|
|
3
|
|
-- should propagate through multiple macro expansions
|
|
===>
|
|
binop% HAdd.hAdd✝ (1 + 2)
|
|
3
|
|
-- should propagate through multiple macro expansions
|
|
• 1 + 2 + 3 : Nat @ ⟨5, 7⟩†-⟨5, 16⟩† @ Lean.Elab.Term.Op.elabBinOp
|
|
• 1 + 2 + 3 : Nat @ ⟨5, 7⟩†-⟨5, 16⟩†
|
|
• 1 + 2 : Nat @ ⟨5, 7⟩-⟨5, 12⟩ @ «_aux_Init_Notation___macroRules_term_+__2»
|
|
• Macro expansion
|
|
1 + 2
|
|
===>
|
|
binop% HAdd.hAdd✝ 1 2
|
|
• 1 + 2 : Nat @ ⟨5, 7⟩†-⟨5, 12⟩†
|
|
• [.] HAdd.hAdd✝ : none @ ⟨5, 7⟩†-⟨5, 16⟩†
|
|
• [.] HAdd.hAdd✝ : none @ ⟨5, 7⟩†-⟨5, 12⟩†
|
|
• 1 : Nat @ ⟨5, 7⟩-⟨5, 8⟩ @ Lean.Elab.Term.elabNumLit
|
|
• 2 : Nat @ ⟨5, 11⟩-⟨5, 12⟩ @ Lean.Elab.Term.elabNumLit
|
|
• 3 : Nat @ ⟨5, 15⟩-⟨5, 16⟩ @ Lean.Elab.Term.elabNumLit
|
|
fun n m l => ↑n + (↑m + ↑l) : Nat → Nat → Nat → Int
|
|
[Elab.info]
|
|
• command @ ⟨7, 0⟩-⟨7, 48⟩ @ Lean.Elab.Command.elabCheck
|
|
• fun n m l => ↑n + (↑m + ↑l) : Nat → Nat → Nat → Int @ ⟨7, 7⟩-⟨7, 48⟩ @ Lean.Elab.Term.elabFun
|
|
• Nat : Type @ ⟨7, 20⟩-⟨7, 23⟩ @ Lean.Elab.Term.elabIdent
|
|
• [.] Nat : some Sort.{?_uniq} @ ⟨7, 20⟩-⟨7, 23⟩
|
|
• Nat : Type @ ⟨7, 20⟩-⟨7, 23⟩
|
|
• n (isBinder := true) : Nat @ ⟨7, 12⟩-⟨7, 13⟩
|
|
• Nat : Type @ ⟨7, 20⟩-⟨7, 23⟩ @ Lean.Elab.Term.elabIdent
|
|
• [.] Nat : some Sort.{?_uniq} @ ⟨7, 20⟩-⟨7, 23⟩
|
|
• Nat : Type @ ⟨7, 20⟩-⟨7, 23⟩
|
|
• m (isBinder := true) : Nat @ ⟨7, 14⟩-⟨7, 15⟩
|
|
• Nat : Type @ ⟨7, 20⟩-⟨7, 23⟩ @ Lean.Elab.Term.elabIdent
|
|
• [.] Nat : some Sort.{?_uniq} @ ⟨7, 20⟩-⟨7, 23⟩
|
|
• Nat : Type @ ⟨7, 20⟩-⟨7, 23⟩
|
|
• l (isBinder := true) : Nat @ ⟨7, 16⟩-⟨7, 17⟩
|
|
• ↑n + (↑m + ↑l) : Int @ ⟨7, 28⟩-⟨7, 48⟩ @ Lean.Elab.Term.elabTypeAscription
|
|
• Int : Type @ ⟨7, 44⟩-⟨7, 47⟩ @ Lean.Elab.Term.elabIdent
|
|
• [.] Int : some Sort.{?_uniq} @ ⟨7, 44⟩-⟨7, 47⟩
|
|
• Int : Type @ ⟨7, 44⟩-⟨7, 47⟩
|
|
• ↑n + (↑m + ↑l) : Int @ ⟨7, 29⟩-⟨7, 41⟩ @ «_aux_Init_Notation___macroRules_term_+__2»
|
|
• Macro expansion
|
|
n + (m +' l)
|
|
===>
|
|
binop% HAdd.hAdd✝ n (m +' l)
|
|
• ↑n + (↑m + ↑l) : Int @ ⟨7, 29⟩†-⟨7, 41⟩† @ Lean.Elab.Term.Op.elabBinOp
|
|
• ↑n + (↑m + ↑l) : Int @ ⟨7, 29⟩†-⟨7, 41⟩†
|
|
• [.] HAdd.hAdd✝ : none @ ⟨7, 29⟩†-⟨7, 41⟩†
|
|
• n : Nat @ ⟨7, 29⟩-⟨7, 30⟩ @ Lean.Elab.Term.elabIdent
|
|
• [.] n : none @ ⟨7, 29⟩-⟨7, 30⟩
|
|
• n : Nat @ ⟨7, 29⟩-⟨7, 30⟩
|
|
• ↑m + ↑l : Int @ ⟨7, 34⟩-⟨7, 40⟩ @ «_aux_binopInfoTree___macroRules_term_+'__1»
|
|
• Macro expansion
|
|
m +' l
|
|
===>
|
|
m + l
|
|
• ↑m + ↑l : Int @ ⟨7, 34⟩†-⟨7, 40⟩† @ «_aux_Init_Notation___macroRules_term_+__2»
|
|
• Macro expansion
|
|
m + l
|
|
===>
|
|
binop% HAdd.hAdd✝ m l
|
|
• ↑m + ↑l : Int @ ⟨7, 34⟩†-⟨7, 40⟩†
|
|
• [.] HAdd.hAdd✝ : none @ ⟨7, 34⟩†-⟨7, 40⟩†
|
|
• m : Nat @ ⟨7, 34⟩-⟨7, 35⟩ @ Lean.Elab.Term.elabIdent
|
|
• [.] m : none @ ⟨7, 34⟩-⟨7, 35⟩
|
|
• m : Nat @ ⟨7, 34⟩-⟨7, 35⟩
|
|
• l : Nat @ ⟨7, 39⟩-⟨7, 40⟩ @ Lean.Elab.Term.elabIdent
|
|
• [.] l : none @ ⟨7, 39⟩-⟨7, 40⟩
|
|
• l : Nat @ ⟨7, 39⟩-⟨7, 40⟩
|
|
[Elab.info]
|
|
• command @ ⟨8, 0⟩-⟨8, 0⟩ @ Lean.Elab.Command.elabEoi
|