diff --git a/source/rust_verify_test/tests/regression.rs b/source/rust_verify_test/tests/regression.rs index 2b42c6ccc4..59337f2d50 100644 --- a/source/rust_verify_test/tests/regression.rs +++ b/source/rust_verify_test/tests/regression.rs @@ -1209,3 +1209,25 @@ test_verify_one_file! { } } => Ok(()) } + +test_verify_one_file! { + #[test] struct_with_updater_and_tuple_type_in_field_issue857 verus_code! { + use vstd::prelude::*; + use vstd::set::*; + + pub struct S { + pub n: int, + pub s: Set<(int, int)>, + } + + pub open spec fn f(s1: S, s2: S) -> bool { + s2 == S { n: s1.n + 1, ..s1 } + } + + pub proof fn test(se: Set<(int, int)>) { + let s1 = S { n: 20, s: se }; + let s2 = S { n: 21, s: se }; + assert(f(s1, s2)); + } + } => Ok(()) +} diff --git a/source/vir/src/ast_simplify.rs b/source/vir/src/ast_simplify.rs index 5db8c8bbd2..b4114f0cb4 100644 --- a/source/vir/src/ast_simplify.rs +++ b/source/vir/src/ast_simplify.rs @@ -902,8 +902,10 @@ pub fn simplify_krate(ctx: &mut GlobalCtx, krate: &Krate) -> Result