aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--pretyping/unification.ml2
-rw-r--r--test-suite/bugs/closed/shouldfail/2251.v5
2 files changed, 6 insertions, 1 deletions
diff --git a/pretyping/unification.ml b/pretyping/unification.ml
index 22527a1b1a..ea491b9da5 100644
--- a/pretyping/unification.ml
+++ b/pretyping/unification.ml
@@ -763,7 +763,7 @@ let w_unify_to_subterm env ?(flags=default_unify_flags) (op,cl) evd =
let rec matchrec cl =
let cl = strip_outer_cast cl in
(try
- if closed0 cl
+ if closed0 cl && not (isEvar cl)
then w_typed_unify env topconv flags op cl evd,cl
else error "Bound 1"
with ex when precatchable_exception ex ->
diff --git a/test-suite/bugs/closed/shouldfail/2251.v b/test-suite/bugs/closed/shouldfail/2251.v
new file mode 100644
index 0000000000..642717f4ac
--- /dev/null
+++ b/test-suite/bugs/closed/shouldfail/2251.v
@@ -0,0 +1,5 @@
+(* Check that rewrite does not apply to single evars *)
+
+Lemma evar_rewrite : (forall a : nat, a = 0 -> True) -> True.
+intros; eapply H. (* goal is ?30 = nil *)
+rewrite plus_n_Sm.