fix: checkAssignment must be at assignConst
Example of issue fixed by this commit: the variables `xs` may have references to `mvar`.
This commit is contained in:
parent
c86803392e
commit
e102cd4f42
1 changed files with 6 additions and 5 deletions
|
|
@ -846,17 +846,18 @@ private def assignConst (mvar : Expr) (numArgs : Nat) (v : Expr) : MetaM Bool :=
|
|||
pure false
|
||||
else
|
||||
let some v ← mkLambdaFVarsWithLetDeps xs v | pure false
|
||||
trace[Meta.isDefEq.constApprox]! "{mvar} := {v}"
|
||||
checkTypesAndAssign mvar v
|
||||
match (← checkAssignment mvar.mvarId! #[] v) with
|
||||
| none => pure false
|
||||
| some v =>
|
||||
trace[Meta.isDefEq.constApprox]! "{mvar} := {v}"
|
||||
checkTypesAndAssign mvar v
|
||||
|
||||
private def processConstApprox (mvar : Expr) (numArgs : Nat) (v : Expr) : MetaM Bool := do
|
||||
let cfg ← getConfig
|
||||
let mvarId := mvar.mvarId!
|
||||
let mvarDecl ← getMVarDecl mvarId
|
||||
if mvarDecl.numScopeArgs == numArgs || cfg.constApprox then
|
||||
match (← checkAssignment mvarId #[] v) with
|
||||
| none => pure false
|
||||
| some v => assignConst mvar numArgs v
|
||||
assignConst mvar numArgs v
|
||||
else
|
||||
pure false
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue