diff --git a/src/sexpr/sexpr.cpp b/src/sexpr/sexpr.cpp index 7a0cc7ce8..aa09d5804 100644 --- a/src/sexpr/sexpr.cpp +++ b/src/sexpr/sexpr.cpp @@ -168,6 +168,8 @@ unsigned length(sexpr const & s) { } bool operator==(sexpr const & a, sexpr const & b) { + if (eqp(a, b)) + return true; sexpr::kind ka = a.get_kind(); sexpr::kind kb = b.get_kind(); if (ka != kb) diff --git a/src/tests/sexpr/sexpr.cpp b/src/tests/sexpr/sexpr.cpp index 43a5e4047..7d2bb96df 100644 --- a/src/tests/sexpr/sexpr.cpp +++ b/src/tests/sexpr/sexpr.cpp @@ -69,6 +69,10 @@ static void tst1() { lean_assert(append(nil(), l) == l); lean_assert(contains(sexpr{10,20,-2,0,10}, [](sexpr e) { return to_int(e) < 0; })); lean_assert(!contains(sexpr{10,20,-2,0,10}, [](sexpr e) { return to_int(e) < -10; })); + lean_assert(eqp(s1, s1)); + sexpr s3 = s1; + lean_assert(eqp(s1, s3)); + lean_assert(!eqp(sexpr(1), sexpr(1))); } static void tst2() {