| import Lean | |
| structure A where | |
| x : Nat := 0 | |
| structure B extends A where | |
| y : Nat := 0 | |
| structure C extends B where | |
| z : Nat := 0 | |
| def c : C := {} | |
| open Lean | |
| open Lean.Elab | |
| def tst (varName structName fieldName : Name) : TermElabM Unit := do | |
| let c := mkIdent varName | |
| let some p ← Lean.Elab.Term.StructInst.mkProjStx? c structName fieldName | throwError "failed" | |
| let p ← Term.elabTerm p none | |
| logInfo s!"{p}" | |
| #eval tst `c `C `x | |
| #eval tst `c `C `y | |
| #eval tst `c `C `z |