25 lines
482 B
Text
25 lines
482 B
Text
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
|