fix metavariable issue

pull/43/head
Alexander Bentkamp 3 years ago
parent 86f3e07b27
commit ff0adf12c8

@ -143,13 +143,17 @@ def elabHint (hidden : Bool) (binders : TSyntaxArray `Lean.Parser.Term.bracketed
liftTermElabM do withOptions (fun options => options.setBool `linter.unusedVariables false) do liftTermElabM do withOptions (fun options => options.setBool `linter.unusedVariables false) do
let (g, decls) ← elabBinders binders fun xs => do let (g, decls) ← elabBinders binders fun xs => do
let g ← mkForallFVars xs $ ← elabTermAndSynthesize goal none let g ← mkForallFVars xs $ ← elabTermAndSynthesize goal none
return (g, ← xs.mapM (fun x => x.fvarId!.getDecl)) synthesizeSyntheticMVarsNoPostponing false
return (← instantiateMVars g, ← xs.mapM (fun x => x.fvarId!.getDecl))
let varsName := `vars let varsName := `vars
let msg ← withLocalDeclD varsName (mkApp (mkConst ``Array [levelZero]) (mkConst ``Expr)) fun vars => do let msg ← withLocalDeclD varsName (mkApp (mkConst ``Array [levelZero]) (mkConst ``Expr)) fun vars => do
let mut msg ← `(m! $msg) let mut msg ← `(m! $msg)
for i in [:decls.size] do for i in [:decls.size] do
msg ← `(let $(mkIdent decls[i]!.userName) := $(mkIdent varsName)[$(quote i)]!; $msg) msg ← `(let $(mkIdent decls[i]!.userName) := $(mkIdent varsName)[$(quote i)]!; $msg)
return ← mkLambdaFVars #[vars] $ ← elabTermAndSynthesize msg none return ← mkLambdaFVars #[vars] $ ← elabTermAndSynthesize msg none
if g.hasMVar then throwError m!"Goal contains metavariables: {g}"
modifyCurLevel fun level => pure {level with hints := level.hints.push { modifyCurLevel fun level => pure {level with hints := level.hints.push {
goal := g, goal := g,
intros := decls.size, intros := decls.size,

Loading…
Cancel
Save