fix: jump to definition inside of a mutually inductive declaration

This commit is contained in:
Leonardo de Moura 2022-04-06 14:43:30 -07:00
parent 1107705525
commit 0bfcf434ac
2 changed files with 6 additions and 8 deletions

View file

@ -127,18 +127,14 @@ private def inductiveSyntaxToView (modifiers : Modifiers) (decl : Syntax) : Comm
let (binders, type?) := expandOptDeclSig ctor[4]
addDocString' ctorName ctorModifiers.docString?
addAuxDeclarationRanges ctorName ctor ctor[2]
pure { ref := ctor, modifiers := ctorModifiers, declName := ctorName, inferMod := inferMod, binders := binders, type? := type? : CtorView }
return { ref := ctor, modifiers := ctorModifiers, declName := ctorName, inferMod := inferMod, binders := binders, type? := type? : CtorView }
let classes ← getOptDerivingClasses decl[5]
pure {
return {
ref := decl
modifiers := modifiers
shortDeclName := name
declName := declName
levelNames := levelNames
binders := binders
type? := type?
ctors := ctors
derivingClasses := classes
declId, modifiers, declName, levelNames
binders, type?, ctors
}
private def classInductiveSyntaxToView (modifiers : Modifiers) (decl : Syntax) : CommandElabM InductiveView :=

View file

@ -49,6 +49,7 @@ structure CtorView where
structure InductiveView where
ref : Syntax
declId : Syntax
modifiers : Modifiers
shortDeclName : Name
declName : Name
@ -676,6 +677,7 @@ private def mkInductiveDecl (vars : Array Expr) (views : Array InductiveView) :
let mut indTypesArray := #[]
for i in [:views.size] do
let indFVar := indFVars[i]
Term.addTermInfo (isBinder := true) views[i].declId indFVar
let r := rs[i]
let type ← mkForallFVars params r.type
let ctors ← elabCtors indFVars indFVar params r