@@ -14,7 +14,8 @@ public section
1414
1515namespace Lean.Meta
1616
17- unsafe def evalExprCore (α) (value : Expr) (checkType : Expr → MetaM Unit) (safety := DefinitionSafety.safe) : MetaM α :=
17+ unsafe def evalExprCore (α) (value : Expr) (checkType : Expr → MetaM Unit)
18+ (safety := DefinitionSafety.safe) (checkMeta : Bool := true ) : MetaM α :=
1819 withoutModifyingEnv do
1920 -- Avoid waiting for all prior compilation if only imported constants are referenced. This is a
2021 -- very common case for tactic configurations (`Lean.Elab.Tactic.Config`).
@@ -39,16 +40,18 @@ unsafe def evalExprCore (α) (value : Expr) (checkType : Expr → MetaM Unit) (s
3940 -- `Task.get` blocking debug code
4041 withOptions (Elab.async.set · false ) do
4142 addAndCompile decl
42- evalConst α name
43+ evalConst (checkMeta := checkMeta) α name
4344
44- unsafe def evalExpr' (α) (typeName : Name) (value : Expr) (safety := DefinitionSafety.safe) : MetaM α :=
45- evalExprCore (safety := safety) α value fun type => do
45+ unsafe def evalExpr' (α) (typeName : Name) (value : Expr) (safety := DefinitionSafety.safe)
46+ (checkMeta : Bool := true ) : MetaM α :=
47+ evalExprCore (safety := safety) (checkMeta := checkMeta) α value fun type => do
4648 let type ← whnfD type
4749 unless type.isConstOf typeName do
4850 throwError "unexpected type at evalExpr{indentExpr type}"
4951
50- unsafe def evalExpr (α) (expectedType : Expr) (value : Expr) (safety := DefinitionSafety.safe) : MetaM α :=
51- evalExprCore (safety := safety) α value fun type => do
52+ unsafe def evalExpr (α) (expectedType : Expr) (value : Expr) (safety := DefinitionSafety.safe)
53+ (checkMeta : Bool := true ) : MetaM α :=
54+ evalExprCore (safety := safety) (checkMeta := checkMeta) α value fun type => do
5255 unless ← isDefEq type expectedType do
5356 throwError "unexpected type at `evalExpr` {← mkHasTypeButIsExpectedMsg type expectedType}"
5457
0 commit comments