From 64ed654bc61cb8df5468918c95d50cd7cf7344cf Mon Sep 17 00:00:00 2001 From: Lucian Popescu Date: Tue, 20 Oct 2026 13:35:47 +0100 Subject: [PATCH 01/12] Make receiver of vector objects a Ptr --- cpp2rust/converter/converter.cpp | 5 +-- cpp2rust/converter/converter.h | 5 +-- .../converter/models/converter_refcount.cpp | 23 +--------- .../converter/models/converter_refcount.h | 4 +- rules/array/tgt_refcount.rs | 8 ++-- rules/deque/tgt_refcount.rs | 8 ++-- rules/string/tgt_refcount.rs | 20 ++++----- rules/vector/tgt_refcount.rs | 44 +++++++++---------- 8 files changed, 46 insertions(+), 71 deletions(-) diff --git a/cpp2rust/converter/converter.cpp b/cpp2rust/converter/converter.cpp index 754d3a220..de802c205 100644 --- a/cpp2rust/converter/converter.cpp +++ b/cpp2rust/converter/converter.cpp @@ -219,7 +219,7 @@ std::string Converter::ConvertFreshPointer( return str; } -std::string Converter::ConvertFreshObject(clang::Expr *expr, std::string_view) { +std::string Converter::ConvertFreshObject(clang::Expr *expr) { return ConvertFreshPointer(expr); } @@ -5125,8 +5125,7 @@ std::string Converter::ConvertPlaceholder(clang::Expr *expr, clang::Expr *arg, if (ph_ctx.needs_pointer_receiver()) { auto param_type = Mapper::GetParamType(*this, expr, ph_ctx.arg_idx); - return std::format("({} as {})", ConvertFreshObject(arg, param_type), - param_type); + return std::format("({} as {})", ConvertFreshObject(arg), param_type); } if (ph_ctx.needs_object_receiver()) { diff --git a/cpp2rust/converter/converter.h b/cpp2rust/converter/converter.h index cd07a0ec8..0a3afdfc7 100644 --- a/cpp2rust/converter/converter.h +++ b/cpp2rust/converter/converter.h @@ -1076,10 +1076,7 @@ class Converter : public clang::RecursiveASTVisitor { virtual std::string ConvertFreshPointer(clang::Expr *expr, std::optional implicit_convert_to = {}); - // target_ptr_type, when known (e.g. a translation rule's parameter type), - // is the Rust pointer type the result will be used as. - virtual std::string ConvertFreshObject(clang::Expr *expr, - std::string_view target_ptr_type = {}); + virtual std::string ConvertFreshObject(clang::Expr *expr); std::string ConvertPointer(clang::Expr *expr, std::optional implicit_convert_to = {}, diff --git a/cpp2rust/converter/models/converter_refcount.cpp b/cpp2rust/converter/models/converter_refcount.cpp index 9a77c44f4..96d7d7891 100644 --- a/cpp2rust/converter/models/converter_refcount.cpp +++ b/cpp2rust/converter/models/converter_refcount.cpp @@ -392,27 +392,8 @@ std::string ConverterRefCount::ConvertObject(clang::Expr *expr, return str; } -std::string -ConverterRefCount::ConvertFreshObject(clang::Expr *expr, - std::string_view target_ptr_type) { - auto shape = ObjectShape::Whole; - if (!target_ptr_type.empty()) { - auto type = expr->getType().getNonReferenceType(); - auto pointee = type->isPointerType() ? type->getPointeeType() : type; - if (IsBoxedType(ctx_, pointee) || pointee->isArrayType()) { - auto normalize = [](std::string s) { - std::erase(s, ' '); - for (size_t pos; (pos = s.find("::<")) != std::string::npos;) - s.erase(pos, 2); - return s; - }; - if (normalize(std::string(target_ptr_type)) == - normalize(ConvertPtrType(pointee))) { - shape = ObjectShape::Element; - } - } - } - auto str = ConvertObject(expr, shape); +std::string ConverterRefCount::ConvertFreshObject(clang::Expr *expr) { + auto str = ConvertObject(expr); if (isFresh()) { return str; } diff --git a/cpp2rust/converter/models/converter_refcount.h b/cpp2rust/converter/models/converter_refcount.h index 6ccd80ada..5fffcfefb 100644 --- a/cpp2rust/converter/models/converter_refcount.h +++ b/cpp2rust/converter/models/converter_refcount.h @@ -393,9 +393,7 @@ class ConverterRefCount final : public Converter { enum class ObjectShape { Whole, Element }; std::string ConvertObject(clang::Expr *expr, ObjectShape shape = ObjectShape::Whole); - std::string - ConvertFreshObject(clang::Expr *expr, - std::string_view target_ptr_type = {}) override; + std::string ConvertFreshObject(clang::Expr *expr) override; bool WantsElementPtr() const { return object_shape_ == ObjectShape::Element; } std::string ConvertFresh(clang::Expr *expr, diff --git a/rules/array/tgt_refcount.rs b/rules/array/tgt_refcount.rs index 90b46c20f..5ce4a5301 100644 --- a/rules/array/tgt_refcount.rs +++ b/rules/array/tgt_refcount.rs @@ -5,12 +5,12 @@ use libcc2rs::*; use std::cell::RefCell; use std::rc::Rc; -fn f1(a0: Ptr) -> Ptr { - a0 +fn f1(a0: Ptr>) -> Ptr { + a0.decay() } -fn f3(a0: Ptr) -> Ptr { - a0 +fn f3(a0: Ptr>) -> Ptr { + a0.decay() } fn f5(a0: Ptr>, a1: &mut Vec) { diff --git a/rules/deque/tgt_refcount.rs b/rules/deque/tgt_refcount.rs index ef1d15801..78ab8b332 100644 --- a/rules/deque/tgt_refcount.rs +++ b/rules/deque/tgt_refcount.rs @@ -5,12 +5,12 @@ use libcc2rs::*; use std::cell::RefCell; use std::rc::Rc; -fn f1(a0: Ptr) -> Ptr { - a0.to_last() +fn f1(a0: Ptr>) -> Ptr { + a0.decay().to_last() } -fn f2(a0: Ptr) -> Ptr { - a0 +fn f2(a0: Ptr>) -> Ptr { + a0.decay() } fn f10(a0: Ptr>, a1: Vec) { diff --git a/rules/string/tgt_refcount.rs b/rules/string/tgt_refcount.rs index 3b94acee5..e4e7274ee 100644 --- a/rules/string/tgt_refcount.rs +++ b/rules/string/tgt_refcount.rs @@ -33,12 +33,12 @@ fn f4(a0: Ptr>, a1: Ptr, a2: usize) -> Ptr> { a0 } -fn f5(a0: Ptr) -> Ptr { - a0 +fn f5(a0: Ptr>) -> Ptr { + a0.decay() } -fn f6(a0: Ptr) -> Ptr { - a0 +fn f6(a0: Ptr>) -> Ptr { + a0.decay() } fn f7(a0: Ptr, a1: usize) -> Vec { @@ -54,12 +54,12 @@ fn f10(a0: Ptr) -> Vec { __bytes } -fn f11(a0: Ptr) -> Ptr { - a0 +fn f11(a0: Ptr>) -> Ptr { + a0.decay() } -fn f12(a0: Ptr) -> RandomAccessIterator { - RandomAccessIterator::Vec(a0) +fn f12(a0: Ptr>) -> RandomAccessIterator { + RandomAccessIterator::Vec(a0.decay()) } fn f14(a0: Ptr>, a1: usize, a2: usize, a3: Ptr, a4: usize) -> Ptr> { @@ -76,8 +76,8 @@ fn f14(a0: Ptr>, a1: usize, a2: usize, a3: Ptr, a4: usize) -> Ptr) -> RandomAccessIterator { - RandomAccessIterator::Vec(a0.to_last()) +fn f15(a0: Ptr>) -> RandomAccessIterator { + RandomAccessIterator::Vec(a0.decay().to_last()) } fn f16(a0: Vec, a1: Ptr) -> usize { diff --git a/rules/vector/tgt_refcount.rs b/rules/vector/tgt_refcount.rs index bdb48977e..71512b122 100644 --- a/rules/vector/tgt_refcount.rs +++ b/rules/vector/tgt_refcount.rs @@ -15,28 +15,28 @@ fn f60(a0: Ptr>, a1: RandomAccessIterator) -> RandomAc RandomAccessIterator::Vec(a0.decay() + __off) } -fn f65(a0: Ptr) -> Ptr { - a0 +fn f65(a0: Ptr>) -> Ptr { + a0.decay() } -fn f66(a0: Ptr, a1: usize) -> Ptr { - a0.offset(a1 as isize) +fn f66(a0: Ptr>, a1: usize) -> Ptr { + a0.decay().offset(a1 as isize) } -fn f68(a0: Ptr) -> Ptr { - a0 +fn f68(a0: Ptr>) -> Ptr { + a0.decay() } -fn f69(a0: Ptr) -> Ptr { - a0.to_last() +fn f69(a0: Ptr>) -> Ptr { + a0.decay().to_last() } -fn f72(a0: Ptr) -> RandomAccessIterator { - a0.begin() +fn f72(a0: Ptr>) -> RandomAccessIterator { + a0.decay().begin() } -fn f76(a0: Ptr) -> RandomAccessIterator { - a0.end() +fn f76(a0: Ptr>) -> RandomAccessIterator { + a0.decay().end() } fn f77(a0: &mut Vec, a1: RandomAccessIterator, a2: T1) -> RandomAccessIterator { @@ -61,16 +61,16 @@ fn f92, T2: Clone + ByteRepr, T3: CppInputIterator>(a0: T3, __v } -fn f93(a0: Ptr) -> Ptr { - a0 +fn f93(a0: Ptr>) -> Ptr { + a0.decay() } -fn f95(a0: Ptr) -> RandomAccessIterator { - a0.begin() +fn f95(a0: Ptr>) -> RandomAccessIterator { + a0.decay().begin() } -fn f96(a0: Ptr) -> RandomAccessIterator { - a0.end() +fn f96(a0: Ptr>) -> RandomAccessIterator { + a0.decay().end() } fn f98(a0: Ptr>, a1: usize) -> Ptr> { @@ -81,8 +81,8 @@ fn f98(a0: Ptr>, a1: usize) -> Ptr> { } } -fn f99(a0: Ptr) -> Ptr { - a0.to_last() +fn f99(a0: Ptr>) -> Ptr { + a0.decay().to_last() } fn f101>( @@ -108,8 +108,8 @@ fn f103(a0: Ptr>, a1: &mut Vec) { a0.write(std::mem::take(&mut *a1)) } -fn f104(a0: Ptr) -> RandomAccessIterator { - a0.end() +fn f104(a0: Ptr>) -> RandomAccessIterator { + a0.decay().end() } fn f105(a0: Ptr>, a1: Vec) { From f41a62a5b8cdc270d6bdc34a7ec5360179741997 Mon Sep 17 00:00:00 2001 From: Lucian Popescu Date: Tue, 20 Oct 2026 13:36:39 +0100 Subject: [PATCH 02/12] Update tests --- .../refcount/dangling-prvalue-as-lvalue.rs | 9 +- .../out/refcount/row_ptr_outlives_vector.rs | 3 +- tests/unit/out/refcount/auto.rs | 4 +- tests/unit/out/refcount/class_templates.rs | 12 +- .../unit/out/refcount/compound_assign_ref.rs | 6 +- .../refcount/elidable_iterator_copy_cxx11.rs | 47 ++++++-- tests/unit/out/refcount/find.rs | 55 ++++++--- tests/unit/out/refcount/fn_ptr_stable_sort.rs | 26 +++- tests/unit/out/refcount/foreach.rs | 4 +- .../refcount/foreach_disjoint_field_borrow.rs | 8 +- tests/unit/out/refcount/foreach_double.rs | 40 +++---- tests/unit/out/refcount/foreach_mut.rs | 32 ++--- tests/unit/out/refcount/implicit_autoref.rs | 8 +- tests/unit/out/refcount/iterator_freshness.rs | 5 +- tests/unit/out/refcount/iterators.rs | 16 +-- tests/unit/out/refcount/nested_vector.rs | 3 +- tests/unit/out/refcount/operator_traits.rs | 79 +++++++----- tests/unit/out/refcount/printfs.rs | 10 +- tests/unit/out/refcount/push_emplace_back.rs | 19 ++- .../refcount/reinterpret_cast_empty_vec.rs | 4 +- .../out/refcount/reinterpret_cast_string.rs | 4 +- .../refcount/reinterpret_cast_vec_write.rs | 4 +- tests/unit/out/refcount/sort.rs | 25 +++- .../refcount/split_binop_aliased_borrows.rs | 5 +- tests/unit/out/refcount/stdcopy_ostream.rs | 6 +- tests/unit/out/refcount/string.rs | 10 +- tests/unit/out/refcount/string2.rs | 6 +- .../refcount/unboxed_conditional_iterator.rs | 18 +-- tests/unit/out/refcount/unboxed_locals.rs | 6 +- tests/unit/out/refcount/vector.rs | 112 ++++++++++++------ tests/unit/out/refcount/vector2.rs | 4 +- tests/unit/out/refcount/vector3.rs | 24 ++-- .../unit/out/refcount/vector_addr_of_back.rs | 4 +- .../refcount/vector_deque_vector_string.rs | 98 +++++++++------ .../out/refcount/vector_iter_range_ctor.rs | 3 +- .../out/refcount/vector_with_allocator.rs | 52 ++++---- tests/unit/out/refcount/void_return.rs | 4 +- 37 files changed, 497 insertions(+), 278 deletions(-) diff --git a/tests/ub/out/refcount/dangling-prvalue-as-lvalue.rs b/tests/ub/out/refcount/dangling-prvalue-as-lvalue.rs index cff4a7e93..954331062 100644 --- a/tests/ub/out/refcount/dangling-prvalue-as-lvalue.rs +++ b/tests/ub/out/refcount/dangling-prvalue-as-lvalue.rs @@ -15,7 +15,14 @@ pub fn main() { } fn main_0() -> i32 { let v: Value> = Rc::new(RefCell::new(Vec::from([1, 2]))); - let b: Ptr = ({ foo_0((v.as_pointer() as Ptr).begin().iter_deref()) }); + let b: Ptr = ({ + foo_0( + (v.as_pointer() as Ptr>) + .decay() + .begin() + .iter_deref(), + ) + }); (*v.borrow_mut()).clear(); return (b.read()); } diff --git a/tests/ub/out/refcount/row_ptr_outlives_vector.rs b/tests/ub/out/refcount/row_ptr_outlives_vector.rs index 617533b6a..31bbe9c08 100644 --- a/tests/ub/out/refcount/row_ptr_outlives_vector.rs +++ b/tests/ub/out/refcount/row_ptr_outlives_vector.rs @@ -13,7 +13,8 @@ pub fn second_row_0() -> Ptr { ]))); return ((rows.as_pointer() as Ptr>) .offset(1_usize) - .as_pointer() as Ptr); + .as_pointer() as Ptr>) + .decay(); } pub fn main() { __cpp2rust_init_globals(); diff --git a/tests/unit/out/refcount/auto.rs b/tests/unit/out/refcount/auto.rs index 7dfe2c935..20c6fbf1e 100644 --- a/tests/unit/out/refcount/auto.rs +++ b/tests/unit/out/refcount/auto.rs @@ -25,8 +25,8 @@ fn main_0() -> i32 { }; let mut sum: i32 = 0; 'loop_: for elem in IterRange::new( - (v.as_pointer() as Ptr).begin(), - (v.as_pointer() as Ptr).end(), + (v.as_pointer() as Ptr>).decay().begin(), + (v.as_pointer() as Ptr>).decay().end(), ) { let mut elem: i32 = (elem.iter_deref().read()); sum += elem; diff --git a/tests/unit/out/refcount/class_templates.rs b/tests/unit/out/refcount/class_templates.rs index f1ae3789e..b26c7bbe9 100644 --- a/tests/unit/out/refcount/class_templates.rs +++ b/tests/unit/out/refcount/class_templates.rs @@ -231,7 +231,9 @@ impl MyContainer_char_Impl for Ptr { return (*(*self).upgrade().deref()).vec_.len(); } fn back_4(&self) -> Ptr { - return (field_ref!((*self), vec_).as_pointer() as Ptr).to_last(); + return (field_ref!((*self), vec_).as_pointer() as Ptr>) + .decay() + .to_last(); } fn pop_back(&self) { field!((*self), vec_).with_mut(|__v: &mut Vec| __v.pop()); @@ -262,7 +264,9 @@ impl MyContainer_float_Impl for Ptr { return (*(*self).upgrade().deref()).vec_.len(); } fn back_4(&self) -> Ptr { - return (field_ref!((*self), vec_).as_pointer() as Ptr).to_last(); + return (field_ref!((*self), vec_).as_pointer() as Ptr>) + .decay() + .to_last(); } fn pop_back(&self) { field!((*self), vec_).with_mut(|__v: &mut Vec| __v.pop()); @@ -293,7 +297,9 @@ impl MyContainer_int_Impl for Ptr { return (*(*self).upgrade().deref()).vec_.len(); } fn back_4(&self) -> Ptr { - return (field_ref!((*self), vec_).as_pointer() as Ptr).to_last(); + return (field_ref!((*self), vec_).as_pointer() as Ptr>) + .decay() + .to_last(); } fn pop_back(&self) { field!((*self), vec_).with_mut(|__v: &mut Vec| __v.pop()); diff --git a/tests/unit/out/refcount/compound_assign_ref.rs b/tests/unit/out/refcount/compound_assign_ref.rs index f0a3a1728..64b65eafb 100644 --- a/tests/unit/out/refcount/compound_assign_ref.rs +++ b/tests/unit/out/refcount/compound_assign_ref.rs @@ -17,9 +17,11 @@ fn main_0() -> i32 { (*v.borrow_mut()).push(__a1) }; { - (v.as_pointer() as Ptr).with_mut(|__v| *__v = *__v + 5) + (v.as_pointer() as Ptr>) + .decay() + .with_mut(|__v| *__v = *__v + 5) }; - assert!((((v.as_pointer() as Ptr).read()) == 15)); + assert!((((v.as_pointer() as Ptr>).decay().read()) == 15)); return 0; } pub fn __cpp2rust_init_globals() {} diff --git a/tests/unit/out/refcount/elidable_iterator_copy_cxx11.rs b/tests/unit/out/refcount/elidable_iterator_copy_cxx11.rs index ae79c0e9e..7cc0ae161 100644 --- a/tests/unit/out/refcount/elidable_iterator_copy_cxx11.rs +++ b/tests/unit/out/refcount/elidable_iterator_copy_cxx11.rs @@ -21,41 +21,52 @@ fn main_0() -> i32 { (*v.borrow_mut()).push(__a1) }; let it: Value> = Rc::new(RefCell::new({ - let mut __it = (v.as_pointer() as Ptr).begin(); - while __it != (v.as_pointer() as Ptr).end() && __it.iter_deref().with(|__v| *__v != 7) + let mut __it = (v.as_pointer() as Ptr>).decay().begin(); + while __it != (v.as_pointer() as Ptr>).decay().end() + && __it.iter_deref().with(|__v| *__v != 7) { __it.iter_inc(); } __it })); - assert!((*it.borrow()) != (v.as_pointer() as Ptr).end()); + assert!((*it.borrow()) != (v.as_pointer() as Ptr>).decay().end()); assert!((((*it.borrow()).iter_deref().read()) == 7)); { - let __n = (v.as_pointer() as Ptr) + let __n = (v.as_pointer() as Ptr>) + .decay() .end() - .iter_distance(&(v.as_pointer() as Ptr).begin()); + .iter_distance(&(v.as_pointer() as Ptr>).decay().begin()); let __random = std::hash::RandomState::new(); for __i in (1..__n).rev() { let __j = (std::hash::BuildHasher::hash_one(&__random, __i) % (__i + 1) as u64) as isize; - let __x = (v.as_pointer() as Ptr).begin().iter_at(__i); - let __y = (v.as_pointer() as Ptr).begin().iter_at(__j); + let __x = (v.as_pointer() as Ptr>) + .decay() + .begin() + .iter_at(__i); + let __y = (v.as_pointer() as Ptr>) + .decay() + .begin() + .iter_at(__j); let __tmp = __x.read(); __x.write(__y.read()); __y.write(__tmp); } }; { - let __n = (v.as_pointer() as Ptr) + let __n = (v.as_pointer() as Ptr>) + .decay() .end() - .iter_distance(&(v.as_pointer() as Ptr).begin()); + .iter_distance(&(v.as_pointer() as Ptr>).decay().begin()); let mut __order: Vec = (0..__n).collect(); __order.sort_by(|&__x, &__y| { - (v.as_pointer() as Ptr) + (v.as_pointer() as Ptr>) + .decay() .begin() .iter_at(__x) .with(|__a| { - (v.as_pointer() as Ptr) + (v.as_pointer() as Ptr>) + .decay() .begin() .iter_at(__y) .with(|__b| __a.cmp(__b)) @@ -63,10 +74,20 @@ fn main_0() -> i32 { }); let __values: Vec<_> = __order .iter() - .map(|&__i| (v.as_pointer() as Ptr).begin().iter_at(__i).read()) + .map(|&__i| { + (v.as_pointer() as Ptr>) + .decay() + .begin() + .iter_at(__i) + .read() + }) .collect(); for (__i, __v) in (0..__n).zip(__values) { - (v.as_pointer() as Ptr).begin().iter_at(__i).write(__v); + (v.as_pointer() as Ptr>) + .decay() + .begin() + .iter_at(__i) + .write(__v); } }; assert!(({ (*v.borrow())[0_usize] } == 4) && ({ (*v.borrow())[1_usize] } == 7)); diff --git a/tests/unit/out/refcount/find.rs b/tests/unit/out/refcount/find.rs index 314c02895..7b8a919dd 100644 --- a/tests/unit/out/refcount/find.rs +++ b/tests/unit/out/refcount/find.rs @@ -24,10 +24,12 @@ fn main_0() -> i32 { let __a1 = 3; (*v.borrow_mut()).push(__a1) }; - let v_begin: Value> = - Rc::new(RefCell::new((v.as_pointer() as Ptr).begin())); - let v_end: Value> = - Rc::new(RefCell::new((v.as_pointer() as Ptr).end())); + let v_begin: Value> = Rc::new(RefCell::new( + (v.as_pointer() as Ptr>).decay().begin(), + )); + let v_end: Value> = Rc::new(RefCell::new( + (v.as_pointer() as Ptr>).decay().end(), + )); let it: Value> = Rc::new(RefCell::new({ let mut __it = (*v_begin.borrow()).clone(); while __it != (*v_end.borrow()).clone() && __it.iter_deref().with(|__v| *__v != 2) { @@ -35,7 +37,7 @@ fn main_0() -> i32 { } __it })); - let mut v_result_true: bool = (*it.borrow()) != (v.as_pointer() as Ptr).end(); + let mut v_result_true: bool = (*it.borrow()) != (v.as_pointer() as Ptr>).decay().end(); let m: Value, Value)>> = Rc::new(RefCell::new(Map::new())); (m.as_pointer() as Ptr, Value)>>) .with_mut(|__m: &mut Map, Value)>| { @@ -88,48 +90,67 @@ fn main_0() -> i32 { assert!( ((v_result_true) && (m_result_true)) && ({ - let mut __it = (v.as_pointer() as Ptr).begin(); - while __it != (v.as_pointer() as Ptr).begin() + let mut __it = (v.as_pointer() as Ptr>).decay().begin(); + while __it != (v.as_pointer() as Ptr>).decay().begin() && __it.iter_deref().with(|__v| *__v != 2) { __it.iter_inc(); } __it - } == (v.as_pointer() as Ptr).begin()) + } == (v.as_pointer() as Ptr>).decay().begin()) ); let w: Value> = Rc::new(RefCell::new(Vec::from([1, 2, 3, 4, 5]))); assert!( { - let mut __it = (w.as_pointer() as Ptr).begin().iter_add(2_isize); - while __it != (w.as_pointer() as Ptr).end() + let mut __it = (w.as_pointer() as Ptr>) + .decay() + .begin() + .iter_add(2_isize); + while __it != (w.as_pointer() as Ptr>).decay().end() && __it.iter_deref().with(|__v| *__v != 4) { __it.iter_inc(); } __it - } == (w.as_pointer() as Ptr).begin().iter_add(3_isize) + } == (w.as_pointer() as Ptr>) + .decay() + .begin() + .iter_add(3_isize) ); assert!( { - let mut __it = (w.as_pointer() as Ptr).begin().iter_add(2_isize); - while __it != (w.as_pointer() as Ptr).end() + let mut __it = (w.as_pointer() as Ptr>) + .decay() + .begin() + .iter_add(2_isize); + while __it != (w.as_pointer() as Ptr>).decay().end() && __it.iter_deref().with(|__v| *__v != 1) { __it.iter_inc(); } __it - } == (w.as_pointer() as Ptr).end() + } == (w.as_pointer() as Ptr>).decay().end() ); assert!( { - let mut __it = (w.as_pointer() as Ptr).begin().iter_add(2_isize); - while __it != (w.as_pointer() as Ptr).begin().iter_add(4_isize) + let mut __it = (w.as_pointer() as Ptr>) + .decay() + .begin() + .iter_add(2_isize); + while __it + != (w.as_pointer() as Ptr>) + .decay() + .begin() + .iter_add(4_isize) && __it.iter_deref().with(|__v| *__v != 5) { __it.iter_inc(); } __it - } == (w.as_pointer() as Ptr).begin().iter_add(4_isize) + } == (w.as_pointer() as Ptr>) + .decay() + .begin() + .iter_add(4_isize) ); return 0; } diff --git a/tests/unit/out/refcount/fn_ptr_stable_sort.rs b/tests/unit/out/refcount/fn_ptr_stable_sort.rs index 377b0f76d..884936df6 100644 --- a/tests/unit/out/refcount/fn_ptr_stable_sort.rs +++ b/tests/unit/out/refcount/fn_ptr_stable_sort.rs @@ -36,13 +36,20 @@ fn main_0() -> i32 { (*v.borrow_mut()).push(__a1) }; { - let __n = (v.as_pointer() as Ptr) + let __n = (v.as_pointer() as Ptr>) + .decay() .end() - .iter_distance(&(v.as_pointer() as Ptr).begin()); + .iter_distance(&(v.as_pointer() as Ptr>).decay().begin()); let mut __order: Vec = (0..__n).collect(); __order.sort_by(|&__x, &__y| { - let __a = (v.as_pointer() as Ptr).begin().iter_at(__x); - let __b = (v.as_pointer() as Ptr).begin().iter_at(__y); + let __a = (v.as_pointer() as Ptr>) + .decay() + .begin() + .iter_at(__x); + let __b = (v.as_pointer() as Ptr>) + .decay() + .begin() + .iter_at(__y); if Compare_0.call(__a.clone(), __b.clone()) { std::cmp::Ordering::Less } else if Compare_0.call(__b, __a) { @@ -53,10 +60,17 @@ fn main_0() -> i32 { }); let __values: Vec<_> = __order .iter() - .map(|&__i| (v.as_pointer() as Ptr).begin().iter_at(__i).read()) + .map(|&__i| { + (v.as_pointer() as Ptr>) + .decay() + .begin() + .iter_at(__i) + .read() + }) .collect(); for (__i, __v) in (0..__n).zip(__values) { - (v.as_pointer() as Ptr) + (v.as_pointer() as Ptr>) + .decay() .begin() .iter_at(__i) .write(__v); diff --git a/tests/unit/out/refcount/foreach.rs b/tests/unit/out/refcount/foreach.rs index 06fc3977f..c215d9509 100644 --- a/tests/unit/out/refcount/foreach.rs +++ b/tests/unit/out/refcount/foreach.rs @@ -22,8 +22,8 @@ fn main_0() -> i32 { } let mut sum: i32 = 0; 'loop_: for x in IterRange::new( - (v.as_pointer() as Ptr).begin(), - (v.as_pointer() as Ptr).end(), + (v.as_pointer() as Ptr>).decay().begin(), + (v.as_pointer() as Ptr>).decay().end(), ) { let mut x: i32 = (x.iter_deref().read()); sum += x; diff --git a/tests/unit/out/refcount/foreach_disjoint_field_borrow.rs b/tests/unit/out/refcount/foreach_disjoint_field_borrow.rs index 7d7a1c25f..2b9a2b930 100644 --- a/tests/unit/out/refcount/foreach_disjoint_field_borrow.rs +++ b/tests/unit/out/refcount/foreach_disjoint_field_borrow.rs @@ -26,8 +26,12 @@ fn main_0() -> i32 { (*s.borrow_mut()).v.push(__a1) }; 'loop_: for e in IterRange::new( - (field_ref!(s.as_pointer(), v).as_pointer() as Ptr).begin(), - (field_ref!(s.as_pointer(), v).as_pointer() as Ptr).end(), + (field_ref!(s.as_pointer(), v).as_pointer() as Ptr>) + .decay() + .begin(), + (field_ref!(s.as_pointer(), v).as_pointer() as Ptr>) + .decay() + .end(), ) { let mut e: i32 = (e.iter_deref().read()); (*s.borrow_mut()).a.postfix_inc(); diff --git a/tests/unit/out/refcount/foreach_double.rs b/tests/unit/out/refcount/foreach_double.rs index b4122174c..ca45c74b8 100644 --- a/tests/unit/out/refcount/foreach_double.rs +++ b/tests/unit/out/refcount/foreach_double.rs @@ -26,52 +26,52 @@ fn main_0() -> i32 { }; let mut square: i32 = 0; 'loop_: for e1 in IterRange::new( - (v.as_pointer() as Ptr).begin(), - (v.as_pointer() as Ptr).end(), + (v.as_pointer() as Ptr>).decay().begin(), + (v.as_pointer() as Ptr>).decay().end(), ) { let mut e1: i32 = (e1.iter_deref().read()); 'loop_: for e2 in IterRange::new( - (v.as_pointer() as Ptr).begin(), - (v.as_pointer() as Ptr).end(), + (v.as_pointer() as Ptr>).decay().begin(), + (v.as_pointer() as Ptr>).decay().end(), ) { let mut e2: i32 = (e2.iter_deref().read()); square += (e1 * e2); } } 'loop_: for e1 in IterRange::new( - (v.as_pointer() as Ptr).begin(), - (v.as_pointer() as Ptr).end(), + (v.as_pointer() as Ptr>).decay().begin(), + (v.as_pointer() as Ptr>).decay().end(), ) { let e1: Ptr = e1.iter_deref(); 'loop_: for e2 in IterRange::new( - (v.as_pointer() as Ptr).begin(), - (v.as_pointer() as Ptr).end(), + (v.as_pointer() as Ptr>).decay().begin(), + (v.as_pointer() as Ptr>).decay().end(), ) { let e2: Ptr = e2.iter_deref(); square += { ({ (e1.read()) } * { (e2.read()) }) }; } } 'loop_: for e1 in IterRange::new( - (v.as_pointer() as Ptr).begin(), - (v.as_pointer() as Ptr).end(), + (v.as_pointer() as Ptr>).decay().begin(), + (v.as_pointer() as Ptr>).decay().end(), ) { let e1: Ptr = e1.iter_deref(); 'loop_: for e2 in IterRange::new( - (v.as_pointer() as Ptr).begin(), - (v.as_pointer() as Ptr).end(), + (v.as_pointer() as Ptr>).decay().begin(), + (v.as_pointer() as Ptr>).decay().end(), ) { let e2: Ptr = e2.iter_deref(); square += { ({ (e1.read()) } * { (e2.read()) }) }; } } 'loop_: for e1 in IterRange::new( - (v.as_pointer() as Ptr).begin(), - (v.as_pointer() as Ptr).end(), + (v.as_pointer() as Ptr>).decay().begin(), + (v.as_pointer() as Ptr>).decay().end(), ) { let e1: Ptr = e1.iter_deref(); 'loop_: for e2 in IterRange::new( - (v.as_pointer() as Ptr).begin(), - (v.as_pointer() as Ptr).end(), + (v.as_pointer() as Ptr>).decay().begin(), + (v.as_pointer() as Ptr>).decay().end(), ) { let e2: Ptr = e2.iter_deref(); square += { ({ (e1.read()) } * { (e2.read()) }) }; @@ -94,13 +94,13 @@ fn main_0() -> i32 { (*m.borrow_mut()).push(__a1) }; 'loop_: for row in IterRange::new( - (m.as_pointer() as Ptr>).begin(), - (m.as_pointer() as Ptr>).end(), + (m.as_pointer() as Ptr>>).decay().begin(), + (m.as_pointer() as Ptr>>).decay().end(), ) { let row: Ptr> = row.iter_deref(); 'loop_: for col in IterRange::new( - (Ptr::>::decay(&(row)) as Ptr).begin(), - (Ptr::>::decay(&(row)) as Ptr).end(), + ((row).clone() as Ptr>).decay().begin(), + ((row).clone() as Ptr>).decay().end(), ) { let col: Ptr = col.iter_deref(); square += { (col.read()) }; diff --git a/tests/unit/out/refcount/foreach_mut.rs b/tests/unit/out/refcount/foreach_mut.rs index 92f66396b..fe4209aab 100644 --- a/tests/unit/out/refcount/foreach_mut.rs +++ b/tests/unit/out/refcount/foreach_mut.rs @@ -26,22 +26,22 @@ fn main_0() -> i32 { }; let mut sum: i32 = 0; 'loop_: for x in IterRange::new( - (v1.as_pointer() as Ptr).begin(), - (v1.as_pointer() as Ptr).end(), + (v1.as_pointer() as Ptr>).decay().begin(), + (v1.as_pointer() as Ptr>).decay().end(), ) { let mut x: i32 = (x.iter_deref().read()); sum += x.prefix_inc(); } 'loop_: for x in IterRange::new( - (v1.as_pointer() as Ptr).begin(), - (v1.as_pointer() as Ptr).end(), + (v1.as_pointer() as Ptr>).decay().begin(), + (v1.as_pointer() as Ptr>).decay().end(), ) { let mut x: i32 = (x.iter_deref().read()); sum += x; } 'loop_: for x in IterRange::new( - (v1.as_pointer() as Ptr).begin(), - (v1.as_pointer() as Ptr).end(), + (v1.as_pointer() as Ptr>).decay().begin(), + (v1.as_pointer() as Ptr>).decay().end(), ) { let x: Ptr = x.iter_deref(); { @@ -49,8 +49,8 @@ fn main_0() -> i32 { }; } 'loop_: for x in IterRange::new( - (v1.as_pointer() as Ptr).begin(), - (v1.as_pointer() as Ptr).end(), + (v1.as_pointer() as Ptr>).decay().begin(), + (v1.as_pointer() as Ptr>).decay().end(), ) { let x: Ptr = x.iter_deref(); sum += { (x.read()) }; @@ -69,8 +69,8 @@ fn main_0() -> i32 { (*v2.borrow_mut()).push(__a1) }; 'loop_: for p in IterRange::new( - (v2.as_pointer() as Ptr>).begin(), - (v2.as_pointer() as Ptr>).end(), + (v2.as_pointer() as Ptr>>).decay().begin(), + (v2.as_pointer() as Ptr>>).decay().end(), ) { let mut p: Ptr = (p.iter_deref().read()); { @@ -78,15 +78,15 @@ fn main_0() -> i32 { }; } 'loop_: for p in IterRange::new( - (v2.as_pointer() as Ptr>).begin(), - (v2.as_pointer() as Ptr>).end(), + (v2.as_pointer() as Ptr>>).decay().begin(), + (v2.as_pointer() as Ptr>>).decay().end(), ) { let mut p: Ptr = (p.iter_deref().read()); sum += { (p.read()) }; } 'loop_: for p in IterRange::new( - (v2.as_pointer() as Ptr>).begin(), - (v2.as_pointer() as Ptr>).end(), + (v2.as_pointer() as Ptr>>).decay().begin(), + (v2.as_pointer() as Ptr>>).decay().end(), ) { let mut p: Ptr = (p.iter_deref().read()); { @@ -94,8 +94,8 @@ fn main_0() -> i32 { }; } 'loop_: for p in IterRange::new( - (v2.as_pointer() as Ptr>).begin(), - (v2.as_pointer() as Ptr>).end(), + (v2.as_pointer() as Ptr>>).decay().begin(), + (v2.as_pointer() as Ptr>>).decay().end(), ) { let mut p: Ptr = (p.iter_deref().read()); sum += { (p.read()) }; diff --git a/tests/unit/out/refcount/implicit_autoref.rs b/tests/unit/out/refcount/implicit_autoref.rs index 6376c26c5..22b3a4a95 100644 --- a/tests/unit/out/refcount/implicit_autoref.rs +++ b/tests/unit/out/refcount/implicit_autoref.rs @@ -49,7 +49,13 @@ fn main_0() -> i32 { assert!(((index!(p, 1_usize).read()) == 30)); assert!((b == 40)); assert!(((vec_elem!((hp), v, 1_usize).read()) == 60)); - ({ write_through_0(((Ptr::>::decay(&(p)) as Ptr).offset(0_usize as isize))) }); + ({ + write_through_0( + (((p).clone() as Ptr>) + .decay() + .offset(0_usize as isize)), + ) + }); assert!(((index!(p, 0_usize).read()) == 42)); return 0; } diff --git a/tests/unit/out/refcount/iterator_freshness.rs b/tests/unit/out/refcount/iterator_freshness.rs index f84b4b162..f0c0544f0 100644 --- a/tests/unit/out/refcount/iterator_freshness.rs +++ b/tests/unit/out/refcount/iterator_freshness.rs @@ -19,8 +19,9 @@ fn main_0() -> i32 { .map(|_| ::default()) .collect::>(), )); - let it: Value> = - Rc::new(RefCell::new((vec_.as_pointer() as Ptr).begin())); + let it: Value> = Rc::new(RefCell::new( + (vec_.as_pointer() as Ptr>).decay().begin(), + )); ({ foo_0((*it.borrow()).clone()) }); return 0; } diff --git a/tests/unit/out/refcount/iterators.rs b/tests/unit/out/refcount/iterators.rs index cba5c33a1..3a1622d17 100644 --- a/tests/unit/out/refcount/iterators.rs +++ b/tests/unit/out/refcount/iterators.rs @@ -17,22 +17,22 @@ fn main_0() -> i32 { __bytes })); 'loop_: for c in IterRange::new( - RandomAccessIterator::Vec((x.as_pointer() as Ptr)), - RandomAccessIterator::Vec((x.as_pointer() as Ptr).to_last()), + RandomAccessIterator::Vec((x.as_pointer() as Ptr>).decay()), + RandomAccessIterator::Vec((x.as_pointer() as Ptr>).decay().to_last()), ) { let c: Ptr = c.iter_deref(); c.with_mut(|__v| __v.prefix_inc()); } 'loop_: for c in IterRange::new( - RandomAccessIterator::Vec((x.as_pointer() as Ptr)), - RandomAccessIterator::Vec((x.as_pointer() as Ptr).to_last()), + RandomAccessIterator::Vec((x.as_pointer() as Ptr>).decay()), + RandomAccessIterator::Vec((x.as_pointer() as Ptr>).decay().to_last()), ) { let c: Ptr = c.iter_deref(); println!("{}", ((c.read()) as i32) as u8 as char); } 'loop_: for c in IterRange::new( - RandomAccessIterator::Vec((x.as_pointer() as Ptr)), - RandomAccessIterator::Vec((x.as_pointer() as Ptr).to_last()), + RandomAccessIterator::Vec((x.as_pointer() as Ptr>).decay()), + RandomAccessIterator::Vec((x.as_pointer() as Ptr>).decay().to_last()), ) { let mut c: i8 = (c.iter_deref().read()); println!("{}", (c as i32) as u8 as char); @@ -47,8 +47,8 @@ fn main_0() -> i32 { (*v.borrow_mut()).push(__a1) }; 'loop_: for p in IterRange::new( - (v.as_pointer() as Ptr>).begin(), - (v.as_pointer() as Ptr>).end(), + (v.as_pointer() as Ptr>>).decay().begin(), + (v.as_pointer() as Ptr>>).decay().end(), ) { let mut p: Ptr = (p.iter_deref().read()); println!("{}", (p.read())); diff --git a/tests/unit/out/refcount/nested_vector.rs b/tests/unit/out/refcount/nested_vector.rs index 5b5a6bb47..270c13c28 100644 --- a/tests/unit/out/refcount/nested_vector.rs +++ b/tests/unit/out/refcount/nested_vector.rs @@ -18,7 +18,8 @@ fn main_0() -> i32 { (*v1.borrow_mut()).push(a0_clone) }; assert!( - (((Ptr::>::decay(&((v1.as_pointer() as Ptr>).to_last())) as Ptr) + ((((v1.as_pointer() as Ptr>>).decay().to_last() as Ptr>) + .decay() .offset(0_usize as isize) .read()) == 1) diff --git a/tests/unit/out/refcount/operator_traits.rs b/tests/unit/out/refcount/operator_traits.rs index 1c69bd9c9..185ffb878 100644 --- a/tests/unit/out/refcount/operator_traits.rs +++ b/tests/unit/out/refcount/operator_traits.rs @@ -165,16 +165,19 @@ fn main_0() -> i32 { Lt { v: 2 }, ]))); { - let __n = (lts.as_pointer() as Ptr) + let __n = (lts.as_pointer() as Ptr>) + .decay() .end() - .iter_distance(&(lts.as_pointer() as Ptr).begin()); + .iter_distance(&(lts.as_pointer() as Ptr>).decay().begin()); let mut __order: Vec = (0..__n).collect(); __order.sort_by(|&__x, &__y| { - (lts.as_pointer() as Ptr) + (lts.as_pointer() as Ptr>) + .decay() .begin() .iter_at(__x) .with(|__a| { - (lts.as_pointer() as Ptr) + (lts.as_pointer() as Ptr>) + .decay() .begin() .iter_at(__y) .with(|__b| __a.cmp(__b)) @@ -182,10 +185,17 @@ fn main_0() -> i32 { }); let __values: Vec<_> = __order .iter() - .map(|&__i| (lts.as_pointer() as Ptr).begin().iter_at(__i).read()) + .map(|&__i| { + (lts.as_pointer() as Ptr>) + .decay() + .begin() + .iter_at(__i) + .read() + }) .collect(); for (__i, __v) in (0..__n).zip(__values) { - (lts.as_pointer() as Ptr) + (lts.as_pointer() as Ptr>) + .decay() .begin() .iter_at(__i) .write(__v); @@ -204,8 +214,8 @@ fn main_0() -> i32 { let mut nine: Eq = Eq { v: 9 }; assert!( ({ - let mut __it = (eqs.as_pointer() as Ptr).begin(); - while __it != (eqs.as_pointer() as Ptr).end() + let mut __it = (eqs.as_pointer() as Ptr>).decay().begin(); + while __it != (eqs.as_pointer() as Ptr>).decay().end() && __it.iter_deref().with(|__v| *__v != two) { __it.iter_inc(); @@ -218,14 +228,14 @@ fn main_0() -> i32 { ); assert!( { - let mut __it = (eqs.as_pointer() as Ptr).begin(); - while __it != (eqs.as_pointer() as Ptr).end() + let mut __it = (eqs.as_pointer() as Ptr>).decay().begin(); + while __it != (eqs.as_pointer() as Ptr>).decay().end() && __it.iter_deref().with(|__v| *__v != nine) { __it.iter_inc(); } __it - } == (eqs.as_pointer() as Ptr).end() + } == (eqs.as_pointer() as Ptr>).decay().end() ); let cmps: Value> = Rc::new(RefCell::new(Vec::from([ Cmp { v: 3 }, @@ -233,16 +243,19 @@ fn main_0() -> i32 { Cmp { v: 2 }, ]))); { - let __n = (cmps.as_pointer() as Ptr) + let __n = (cmps.as_pointer() as Ptr>) + .decay() .end() - .iter_distance(&(cmps.as_pointer() as Ptr).begin()); + .iter_distance(&(cmps.as_pointer() as Ptr>).decay().begin()); let mut __order: Vec = (0..__n).collect(); __order.sort_by(|&__x, &__y| { - (cmps.as_pointer() as Ptr) + (cmps.as_pointer() as Ptr>) + .decay() .begin() .iter_at(__x) .with(|__a| { - (cmps.as_pointer() as Ptr) + (cmps.as_pointer() as Ptr>) + .decay() .begin() .iter_at(__y) .with(|__b| __a.cmp(__b)) @@ -250,10 +263,17 @@ fn main_0() -> i32 { }); let __values: Vec<_> = __order .iter() - .map(|&__i| (cmps.as_pointer() as Ptr).begin().iter_at(__i).read()) + .map(|&__i| { + (cmps.as_pointer() as Ptr>) + .decay() + .begin() + .iter_at(__i) + .read() + }) .collect(); for (__i, __v) in (0..__n).zip(__values) { - (cmps.as_pointer() as Ptr) + (cmps.as_pointer() as Ptr>) + .decay() .begin() .iter_at(__i) .write(__v); @@ -263,8 +283,8 @@ fn main_0() -> i32 { let mut three: Cmp = Cmp { v: 3 }; assert!( ({ - let mut __it = (cmps.as_pointer() as Ptr).begin(); - while __it != (cmps.as_pointer() as Ptr).end() + let mut __it = (cmps.as_pointer() as Ptr>).decay().begin(); + while __it != (cmps.as_pointer() as Ptr>).decay().end() && __it.iter_deref().with(|__v| *__v != three) { __it.iter_inc(); @@ -277,16 +297,19 @@ fn main_0() -> i32 { ); let frees: Value> = Rc::new(RefCell::new(Vec::from([Free { v: 2 }, Free { v: 1 }]))); { - let __n = (frees.as_pointer() as Ptr) + let __n = (frees.as_pointer() as Ptr>) + .decay() .end() - .iter_distance(&(frees.as_pointer() as Ptr).begin()); + .iter_distance(&(frees.as_pointer() as Ptr>).decay().begin()); let mut __order: Vec = (0..__n).collect(); __order.sort_by(|&__x, &__y| { - (frees.as_pointer() as Ptr) + (frees.as_pointer() as Ptr>) + .decay() .begin() .iter_at(__x) .with(|__a| { - (frees.as_pointer() as Ptr) + (frees.as_pointer() as Ptr>) + .decay() .begin() .iter_at(__y) .with(|__b| __a.cmp(__b)) @@ -295,14 +318,16 @@ fn main_0() -> i32 { let __values: Vec<_> = __order .iter() .map(|&__i| { - (frees.as_pointer() as Ptr) + (frees.as_pointer() as Ptr>) + .decay() .begin() .iter_at(__i) .read() }) .collect(); for (__i, __v) in (0..__n).zip(__values) { - (frees.as_pointer() as Ptr) + (frees.as_pointer() as Ptr>) + .decay() .begin() .iter_at(__i) .write(__v); @@ -312,8 +337,8 @@ fn main_0() -> i32 { let mut ftwo: Free = Free { v: 2 }; assert!( ({ - let mut __it = (frees.as_pointer() as Ptr).begin(); - while __it != (frees.as_pointer() as Ptr).end() + let mut __it = (frees.as_pointer() as Ptr>).decay().begin(); + while __it != (frees.as_pointer() as Ptr>).decay().end() && __it.iter_deref().with(|__v| *__v != ftwo) { __it.iter_inc(); diff --git a/tests/unit/out/refcount/printfs.rs b/tests/unit/out/refcount/printfs.rs index fec81bd86..5d9976763 100644 --- a/tests/unit/out/refcount/printfs.rs +++ b/tests/unit/out/refcount/printfs.rs @@ -59,7 +59,7 @@ fn main_0() -> i32 { __bytes.push(0); __bytes })); - println!("{}", (s.as_pointer() as Ptr)); + println!("{}", (s.as_pointer() as Ptr>).decay()); println!( "{}", (Rc::new(RefCell::new( @@ -71,12 +71,10 @@ fn main_0() -> i32 { }) }) )) - .as_pointer() as Ptr) - ); - println!( - "{}", - (Ptr::>::decay(&({ fn2_1(s.as_pointer(),) })) as Ptr) + .as_pointer() as Ptr>) + .decay() ); + println!("{}", (({ fn2_1(s.as_pointer(),) }) as Ptr>).decay()); ({ log_to_2( libcc2rs::c_stdout(), diff --git a/tests/unit/out/refcount/push_emplace_back.rs b/tests/unit/out/refcount/push_emplace_back.rs index b5904e411..9f8428f1b 100644 --- a/tests/unit/out/refcount/push_emplace_back.rs +++ b/tests/unit/out/refcount/push_emplace_back.rs @@ -99,7 +99,8 @@ pub fn nested_emplace_move_5(mut bw: Ptr) { } pub fn self_ref_push_6(mut comps: Ptr>) { { - let a0_clone = (*(Ptr::>::decay(&(comps)) as Ptr) + let a0_clone = (*((comps).clone() as Ptr>) + .decay() .upgrade() .deref()) .clone(); @@ -264,15 +265,23 @@ fn main_0() -> i32 { let queue: Value> = Rc::new(RefCell::new(Vec::new())); ({ emplace_deque_8((queue.as_pointer())) }); assert!( - ((queue.as_pointer() as Ptr).with(|__s| __s.first) == 6) - && ((queue.as_pointer() as Ptr).with(|__s| __s.second) == 14) + ((queue.as_pointer() as Ptr>) + .decay() + .with(|__s| __s.first) + == 6) + && ((queue.as_pointer() as Ptr>) + .decay() + .with(|__s| __s.second) + == 14) ); assert!( - ((queue.as_pointer() as Ptr) + ((queue.as_pointer() as Ptr>) + .decay() .to_last() .with(|__s| __s.first) == -1_i32) - && ((queue.as_pointer() as Ptr) + && ((queue.as_pointer() as Ptr>) + .decay() .to_last() .with(|__s| __s.second) == -1_i32) diff --git a/tests/unit/out/refcount/reinterpret_cast_empty_vec.rs b/tests/unit/out/refcount/reinterpret_cast_empty_vec.rs index 975c38ada..c13d2cc22 100644 --- a/tests/unit/out/refcount/reinterpret_cast_empty_vec.rs +++ b/tests/unit/out/refcount/reinterpret_cast_empty_vec.rs @@ -12,7 +12,9 @@ pub fn main() { } fn main_0() -> i32 { let v: Value> = Rc::new(RefCell::new(Vec::new())); - let mut bytes: Ptr = (v.as_pointer() as Ptr).reinterpret_cast::(); + let mut bytes: Ptr = (v.as_pointer() as Ptr>) + .decay() + .reinterpret_cast::(); return 0; } pub fn __cpp2rust_init_globals() {} diff --git a/tests/unit/out/refcount/reinterpret_cast_string.rs b/tests/unit/out/refcount/reinterpret_cast_string.rs index ffc37f8c0..0bd2a15ed 100644 --- a/tests/unit/out/refcount/reinterpret_cast_string.rs +++ b/tests/unit/out/refcount/reinterpret_cast_string.rs @@ -16,7 +16,9 @@ fn main_0() -> i32 { __bytes.push(0); __bytes })); - let mut bytes: Ptr = (s.as_pointer() as Ptr).reinterpret_cast::(); + let mut bytes: Ptr = (s.as_pointer() as Ptr>) + .decay() + .reinterpret_cast::(); assert!((((elem!(bytes, 0).read()) as i32) == (('A' as i8) as i32))); assert!((((elem!(bytes, 1).read()) as i32) == (('B' as i8) as i32))); assert!((((elem!(bytes, 2).read()) as i32) == (('C' as i8) as i32))); diff --git a/tests/unit/out/refcount/reinterpret_cast_vec_write.rs b/tests/unit/out/refcount/reinterpret_cast_vec_write.rs index 2250b7499..e8efabb7a 100644 --- a/tests/unit/out/refcount/reinterpret_cast_vec_write.rs +++ b/tests/unit/out/refcount/reinterpret_cast_vec_write.rs @@ -20,7 +20,9 @@ fn main_0() -> i32 { let __a1 = 134678021_u32; (*vec_.borrow_mut()).push(__a1) }; - let mut bytes: Ptr = (vec_.as_pointer() as Ptr).reinterpret_cast::(); + let mut bytes: Ptr = (vec_.as_pointer() as Ptr>) + .decay() + .reinterpret_cast::(); assert!((((elem!(bytes, 0).read()) as i32) == 1)); assert!((((elem!(bytes, 1).read()) as i32) == 2)); assert!((((elem!(bytes, 2).read()) as i32) == 3)); diff --git a/tests/unit/out/refcount/sort.rs b/tests/unit/out/refcount/sort.rs index e04700c5c..5f300a2f4 100644 --- a/tests/unit/out/refcount/sort.rs +++ b/tests/unit/out/refcount/sort.rs @@ -53,16 +53,19 @@ fn main_0() -> i32 { (*v.borrow_mut()).push(__a1) }; { - let __n = (v.as_pointer() as Ptr) + let __n = (v.as_pointer() as Ptr>) + .decay() .end() - .iter_distance(&(v.as_pointer() as Ptr).begin()); + .iter_distance(&(v.as_pointer() as Ptr>).decay().begin()); let mut __order: Vec = (0..__n).collect(); __order.sort_by(|&__x, &__y| { - (v.as_pointer() as Ptr) + (v.as_pointer() as Ptr>) + .decay() .begin() .iter_at(__x) .with(|__a| { - (v.as_pointer() as Ptr) + (v.as_pointer() as Ptr>) + .decay() .begin() .iter_at(__y) .with(|__b| __a.cmp(__b)) @@ -70,10 +73,20 @@ fn main_0() -> i32 { }); let __values: Vec<_> = __order .iter() - .map(|&__i| (v.as_pointer() as Ptr).begin().iter_at(__i).read()) + .map(|&__i| { + (v.as_pointer() as Ptr>) + .decay() + .begin() + .iter_at(__i) + .read() + }) .collect(); for (__i, __v) in (0..__n).zip(__values) { - (v.as_pointer() as Ptr).begin().iter_at(__i).write(__v); + (v.as_pointer() as Ptr>) + .decay() + .begin() + .iter_at(__i) + .write(__v); } }; let mut i: u32 = 0_u32; diff --git a/tests/unit/out/refcount/split_binop_aliased_borrows.rs b/tests/unit/out/refcount/split_binop_aliased_borrows.rs index a748791e4..452ed2165 100644 --- a/tests/unit/out/refcount/split_binop_aliased_borrows.rs +++ b/tests/unit/out/refcount/split_binop_aliased_borrows.rs @@ -12,8 +12,9 @@ pub fn main() { } fn main_0() -> i32 { let v: Value> = Rc::new(RefCell::new(Vec::from([1, 2]))); - let p: Value> = - Rc::new(RefCell::new((v.as_pointer() as Ptr).begin())); + let p: Value> = Rc::new(RefCell::new( + (v.as_pointer() as Ptr>).decay().begin(), + )); let r: Ptr = (v.as_pointer() as Ptr).offset(1_usize); let __rhs = (r.read()); (*p.borrow()).iter_deref().write(__rhs); diff --git a/tests/unit/out/refcount/stdcopy_ostream.rs b/tests/unit/out/refcount/stdcopy_ostream.rs index 4ba7ca44a..961bed973 100644 --- a/tests/unit/out/refcount/stdcopy_ostream.rs +++ b/tests/unit/out/refcount/stdcopy_ostream.rs @@ -26,8 +26,10 @@ fn main_0() -> i32 { )); { let mut __bytes: Vec = Vec::new(); - let mut __it = RandomAccessIterator::Vec((str.as_pointer() as Ptr)); - while __it != RandomAccessIterator::Vec((str.as_pointer() as Ptr).to_last()) { + let mut __it = RandomAccessIterator::Vec((str.as_pointer() as Ptr>).decay()); + while __it + != RandomAccessIterator::Vec((str.as_pointer() as Ptr>).decay().to_last()) + { __bytes.push(__it.iter_deref().read() as u8); __it.iter_inc(); } diff --git a/tests/unit/out/refcount/string.rs b/tests/unit/out/refcount/string.rs index 69da8da79..b28440cd7 100644 --- a/tests/unit/out/refcount/string.rs +++ b/tests/unit/out/refcount/string.rs @@ -37,7 +37,7 @@ fn main_0() -> i32 { !(Ptr::::from_string_literal(b"hello") .with_c_str(|__s| (*s1.borrow())[..(*s1.borrow()).len().saturating_sub(1)] != *__s)) ); - let mut p1: Ptr = (s1.as_pointer() as Ptr); + let mut p1: Ptr = (s1.as_pointer() as Ptr>).decay(); assert!((((elem!(p1, 0).read()) as i32) == (('h' as i8) as i32))); assert!((((elem!(p1, 1).read()) as i32) == (('e' as i8) as i32))); assert!((((elem!(p1, 2).read()) as i32) == (('l' as i8) as i32))); @@ -50,7 +50,7 @@ fn main_0() -> i32 { .chain(std::iter::once(0)) .collect(), )); - let mut p2: Ptr = (s2.as_pointer() as Ptr); + let mut p2: Ptr = (s2.as_pointer() as Ptr>).decay(); let mut i: u32 = 0_u32; 'loop_: while ((i as usize) < ((*s2.borrow()).len() - 1)) { assert!( @@ -85,7 +85,7 @@ fn main_0() -> i32 { })); assert!((((*s3.borrow()).len() - 1) == 5_usize)); assert!((((*s3.borrow()).len() - 1) == ((*s3.borrow()).len() - 1))); - let mut p3: Ptr = (s3.as_pointer() as Ptr); + let mut p3: Ptr = (s3.as_pointer() as Ptr>).decay(); let mut i: u32 = 0_u32; 'loop_: while ((i as usize) < ((*s3.borrow()).len() - 1)) { assert!( @@ -112,7 +112,7 @@ fn main_0() -> i32 { })); assert!((((*s4.borrow()).len() - 1) == 3_usize)); assert!((((*s4.borrow()).len() - 1) == ((*s4.borrow()).len() - 1))); - let mut p4: Ptr = (s4.as_pointer() as Ptr); + let mut p4: Ptr = (s4.as_pointer() as Ptr>).decay(); let mut i: u32 = 0_u32; 'loop_: while ((i as usize) < ((*s4.borrow()).len() - 1)) { assert!( @@ -129,7 +129,7 @@ fn main_0() -> i32 { })); assert!((((*s5.borrow()).len() - 1) == 12_usize)); assert!((((*s5.borrow()).len() - 1) == ((*s5.borrow()).len() - 1))); - let mut p5: Ptr = (s5.as_pointer() as Ptr); + let mut p5: Ptr = (s5.as_pointer() as Ptr>).decay(); let mut i: u32 = 0_u32; 'loop_: while ((i as usize) < ((*s5.borrow()).len() - 1)) { assert!( diff --git a/tests/unit/out/refcount/string2.rs b/tests/unit/out/refcount/string2.rs index 912706f8c..a19845bb9 100644 --- a/tests/unit/out/refcount/string2.rs +++ b/tests/unit/out/refcount/string2.rs @@ -17,13 +17,15 @@ fn main_0() -> i32 { __bytes })); (*arr.borrow_mut())[1_usize] = ('b' as i8); - let mut p: Ptr = (arr.as_pointer() as Ptr).offset((1) as isize); + let mut p: Ptr = (arr.as_pointer() as Ptr>) + .decay() + .offset((1) as isize); assert!((((p.read()) as i32) == (('b' as i8) as i32))); assert!( Ptr::::from_string_literal(b"fbo") .with_c_str(|__s| (*arr.borrow())[..(*arr.borrow()).len().saturating_sub(1)] == *__s) ); - let mut names: [Ptr; 1] = [(arr.as_pointer() as Ptr)]; + let mut names: [Ptr; 1] = [(arr.as_pointer() as Ptr>).decay()]; let mut copy: Vec = { let mut __bytes = names[(0) as usize].to_c_bytes(); __bytes.push(0); diff --git a/tests/unit/out/refcount/unboxed_conditional_iterator.rs b/tests/unit/out/refcount/unboxed_conditional_iterator.rs index b1876680e..6f555f3e0 100644 --- a/tests/unit/out/refcount/unboxed_conditional_iterator.rs +++ b/tests/unit/out/refcount/unboxed_conditional_iterator.rs @@ -48,8 +48,8 @@ pub fn lehmer_2(mut sigma: Ptr, mut len: u32, mut code: Ptr) { let mut i: u32 = 0_u32; 'loop_: while (i < len) { let it: Value> = Rc::new(RefCell::new({ - let mut __it = (items.as_pointer() as Ptr).begin(); - while __it != (items.as_pointer() as Ptr).end() + let mut __it = (items.as_pointer() as Ptr>).decay().begin(); + while __it != (items.as_pointer() as Ptr>).decay().end() && __it .iter_deref() .with(|__v| *__v != (elem!(sigma, i).read())) @@ -58,9 +58,10 @@ pub fn lehmer_2(mut sigma: Ptr, mut len: u32, mut code: Ptr) { } __it })); - assert!((*it.borrow()) != (items.as_pointer() as Ptr).end()); - let __rhs = - ((*it.borrow()).iter_distance(&(items.as_pointer() as Ptr).begin()) as u32); + assert!((*it.borrow()) != (items.as_pointer() as Ptr>).decay().end()); + let __rhs = ((*it.borrow()) + .iter_distance(&(items.as_pointer() as Ptr>).decay().begin()) + as u32); elem!(code, i).write(__rhs); { let __off = >::from((*it.borrow()).clone()).index(); @@ -72,10 +73,9 @@ pub fn lehmer_2(mut sigma: Ptr, mut len: u32, mut code: Ptr) { } pub fn sum_3(v: Ptr>) -> i32 { let mut s: i32 = 0; - let it: Value> = Rc::new(RefCell::new( - (Ptr::>::decay(&(v)) as Ptr).begin(), - )); - 'loop_: while (*it.borrow()) != (Ptr::>::decay(&(v)) as Ptr).end() { + let it: Value> = + Rc::new(RefCell::new(((v).clone() as Ptr>).decay().begin())); + 'loop_: while (*it.borrow()) != ((v).clone() as Ptr>).decay().end() { s += ((*it.borrow()).iter_deref().read()); (*it.borrow_mut()).iter_inc(); } diff --git a/tests/unit/out/refcount/unboxed_locals.rs b/tests/unit/out/refcount/unboxed_locals.rs index 94e5196c4..e5fc6348a 100644 --- a/tests/unit/out/refcount/unboxed_locals.rs +++ b/tests/unit/out/refcount/unboxed_locals.rs @@ -23,8 +23,8 @@ pub struct Pair { pub fn total_2(v: Ptr>) -> i32 { let mut s: i32 = 0; 'loop_: for x in IterRange::new( - (Ptr::>::decay(&(v)) as Ptr).begin(), - (Ptr::>::decay(&(v)) as Ptr).end(), + ((v).clone() as Ptr>).decay().begin(), + ((v).clone() as Ptr>).decay().end(), ) { let mut x: i32 = (x.iter_deref().read()); s += x; @@ -160,7 +160,7 @@ fn main_0() -> i32 { ({ set_0(((elem_ptr.as_pointer() as Ptr).offset(1_usize)), 7) }); assert!(({ (*elem_ptr.borrow())[1_usize] } == 7)); let data: Value> = Rc::new(RefCell::new(vec![0; 2_usize as usize])); - ({ set_0((data.as_pointer() as Ptr), 8) }); + ({ set_0((data.as_pointer() as Ptr>).decay(), 8) }); assert!(({ (*data.borrow())[0_usize] } == 8)); let square: Value = Rc::new(RefCell::new(::default())); let mut shape: PtrDyn = (square.as_pointer()).to_dyn::(|w| w); diff --git a/tests/unit/out/refcount/vector.rs b/tests/unit/out/refcount/vector.rs index abe0cac47..5b8bf1e7f 100644 --- a/tests/unit/out/refcount/vector.rs +++ b/tests/unit/out/refcount/vector.rs @@ -56,7 +56,8 @@ fn main_0() -> i32 { assert!(((*v2.borrow()).len() == 3_usize)); { let __off = - >::from((v2.as_pointer() as Ptr).begin()).index(); + >::from((v2.as_pointer() as Ptr>).decay().begin()) + .index(); (v2.as_pointer() as Ptr>).with_mut(|__v: &mut Vec| __v.remove(__off)); RandomAccessIterator::Vec((v2.as_pointer() as Ptr>).decay() + __off) }; @@ -65,9 +66,10 @@ fn main_0() -> i32 { assert!(({ (*v2.borrow())[1_usize] } == 3)); { let __off = - >::from((v2.as_pointer() as Ptr).begin()).index(); + >::from((v2.as_pointer() as Ptr>).decay().begin()) + .index(); (*v2.borrow_mut()).insert(__off, 100); - >::from((v2.as_pointer() as Ptr).begin()) + >::from((v2.as_pointer() as Ptr>).decay().begin()) }; ({ copy_0((*v2.borrow()).clone()) }); assert!(((*v2.borrow()).len() == 3_usize)); @@ -77,31 +79,49 @@ fn main_0() -> i32 { let mut x: i32 = 7; { let __off = >::from( - (v2.as_pointer() as Ptr).begin().iter_add(1_isize), + (v2.as_pointer() as Ptr>) + .decay() + .begin() + .iter_add(1_isize), ) .index(); (*v2.borrow_mut()).insert(__off, x); - >::from((v2.as_pointer() as Ptr).begin().iter_add(1_isize)) + >::from( + (v2.as_pointer() as Ptr>) + .decay() + .begin() + .iter_add(1_isize), + ) }; assert!(((*v2.borrow()).len() == 4_usize)); assert!(({ (*v2.borrow())[0_usize] } == 100)); assert!(({ (*v2.borrow())[1_usize] } == 7)); assert!(({ (*v2.borrow())[2_usize] } == 2)); { - let __off = >::from((v2.as_pointer() as Ptr).end()).index(); + let __off = + >::from((v2.as_pointer() as Ptr>).decay().end()) + .index(); (*v2.borrow_mut()).splice(__off..__off, std::iter::repeat_n(9, 2_usize)); - >::from((v2.as_pointer() as Ptr).end()) + >::from((v2.as_pointer() as Ptr>).decay().end()) }; assert!(((*v2.borrow()).len() == 6_usize)); assert!(({ (*v2.borrow())[4_usize] } == 9)); assert!(({ (*v2.borrow())[5_usize] } == 9)); { let __off = >::from( - (v2.as_pointer() as Ptr).begin().iter_add(2_isize), + (v2.as_pointer() as Ptr>) + .decay() + .begin() + .iter_add(2_isize), ) .index(); (*v2.borrow_mut()).splice(__off..__off, Vec::from([11, 12, 13])); - >::from((v2.as_pointer() as Ptr).begin().iter_add(2_isize)) + >::from( + (v2.as_pointer() as Ptr>) + .decay() + .begin() + .iter_add(2_isize), + ) }; assert!(((*v2.borrow()).len() == 9_usize)); assert!(({ (*v2.borrow())[1_usize] } == 7)); @@ -113,10 +133,11 @@ fn main_0() -> i32 { let src: Value> = Rc::new(RefCell::new(Vec::from([21, 22]))); { let start_idx = - >::from((v2.as_pointer() as Ptr).begin()).index(); + >::from((v2.as_pointer() as Ptr>).decay().begin()) + .index(); let mut temp_vec: Vec = Vec::new(); - let mut __it = (src.as_pointer() as Ptr).begin(); - while __it != (src.as_pointer() as Ptr).end() { + let mut __it = (src.as_pointer() as Ptr>).decay().begin(); + while __it != (src.as_pointer() as Ptr>).decay().end() { temp_vec.push(__it.iter_deref().read()); __it.iter_inc(); } @@ -131,13 +152,15 @@ fn main_0() -> i32 { assert!(({ (*v2.borrow())[2_usize] } == 100)); { let __off = - >::from((v2.as_pointer() as Ptr).begin()).index(); + >::from((v2.as_pointer() as Ptr>).decay().begin()) + .index(); (v2.as_pointer() as Ptr>).with_mut(|__v: &mut Vec| __v.remove(__off)); RandomAccessIterator::Vec((v2.as_pointer() as Ptr>).decay() + __off) }; { let __off = - >::from((v2.as_pointer() as Ptr).begin()).index(); + >::from((v2.as_pointer() as Ptr>).decay().begin()) + .index(); (v2.as_pointer() as Ptr>).with_mut(|__v: &mut Vec| __v.remove(__off)); RandomAccessIterator::Vec((v2.as_pointer() as Ptr>).decay() + __off) }; @@ -145,7 +168,10 @@ fn main_0() -> i32 { 'loop_: while (i < 4) { { let __off = >::from( - (v2.as_pointer() as Ptr).begin().iter_add(1_isize), + (v2.as_pointer() as Ptr>) + .decay() + .begin() + .iter_add(1_isize), ) .index(); (v2.as_pointer() as Ptr>).with_mut(|__v: &mut Vec| __v.remove(__off)); @@ -210,9 +236,9 @@ fn main_0() -> i32 { ); i.prefix_inc(); } - let mut p1: Ptr = (v6.as_pointer() as Ptr); + let mut p1: Ptr = (v6.as_pointer() as Ptr>).decay(); assert!(((p1.read()) == 2_f64)); - let mut p2: Ptr = (v3.as_pointer() as Ptr); + let mut p2: Ptr = (v3.as_pointer() as Ptr>).decay(); assert!(((p2.read()) == 1)); assert!(({ (*v3.borrow())[0_usize] } == 1)); assert!(({ (*v3.borrow())[1_usize] } == 1)); @@ -250,55 +276,75 @@ fn main_0() -> i32 { }; assert!(((*v3.borrow()).capacity() == 201_usize)); assert!(((*v3.borrow()).len() == 100_usize)); - assert!((((v2.as_pointer() as Ptr).to_last().read()) == 3)); - assert!((((v3.as_pointer() as Ptr).to_last().read()) == 1)); - assert!(((v4.as_pointer() as Ptr>).to_last().read()).is_null()); - assert!(((v5.as_pointer() as Ptr>).to_last().read()).is_null()); - assert!((((v6.as_pointer() as Ptr).to_last().read()) == 2_f64)); - let ref0: Ptr = (v6.as_pointer() as Ptr).to_last(); + assert!((((v2.as_pointer() as Ptr>).decay().to_last().read()) == 3)); + assert!((((v3.as_pointer() as Ptr>).decay().to_last().read()) == 1)); + assert!( + ((v4.as_pointer() as Ptr>>) + .decay() + .to_last() + .read()) + .is_null() + ); + assert!( + ((v5.as_pointer() as Ptr>>) + .decay() + .to_last() + .read()) + .is_null() + ); + assert!((((v6.as_pointer() as Ptr>).decay().to_last().read()) == 2_f64)); + let ref0: Ptr = (v6.as_pointer() as Ptr>).decay().to_last(); ref0.write(5_f64); - assert!((((v6.as_pointer() as Ptr).to_last().read()) == 5_f64)); - let mut x0: f64 = ((v6.as_pointer() as Ptr).to_last().read()); + assert!((((v6.as_pointer() as Ptr>).decay().to_last().read()) == 5_f64)); + let mut x0: f64 = ((v6.as_pointer() as Ptr>).decay().to_last().read()); assert!((x0 == 5_f64)); x0 = 6_f64; - assert!((((v6.as_pointer() as Ptr).to_last().read()) == 5_f64)); + assert!((((v6.as_pointer() as Ptr>).decay().to_last().read()) == 5_f64)); let mut idx: i32 = 0; assert!( - (((v6.as_pointer() as Ptr) + (((v6.as_pointer() as Ptr>) + .decay() .offset((idx as usize) as isize) .read()) == 2_f64) ); assert!( - (((v6.as_pointer() as Ptr) + (((v6.as_pointer() as Ptr>) + .decay() .offset((s2).wrapping_sub(1_usize) as isize) .read()) == 5_f64) ); - let ref1: Ptr = (v6.as_pointer() as Ptr).offset((s2).wrapping_sub(1_usize) as isize); + let ref1: Ptr = (v6.as_pointer() as Ptr>) + .decay() + .offset((s2).wrapping_sub(1_usize) as isize); { ref1.with_mut(|__v| *__v = *__v + 1.5_f64) }; assert!( - (((v6.as_pointer() as Ptr) + (((v6.as_pointer() as Ptr>) + .decay() .offset((s2).wrapping_sub(1_usize) as isize) .read()) == 6.5_f64) ); - let mut x1: f64 = ((v6.as_pointer() as Ptr) + let mut x1: f64 = ((v6.as_pointer() as Ptr>) + .decay() .offset((s2).wrapping_sub(1_usize) as isize) .read()); assert!((x1 == 6.5_f64)); x1 -= 1.5_f64; assert!( - (((v6.as_pointer() as Ptr) + (((v6.as_pointer() as Ptr>) + .decay() .offset((s2).wrapping_sub(1_usize) as isize) .read()) == 6.5_f64) ); assert!( (((s1).wrapping_add(s2)).wrapping_add( - (((v2.as_pointer() as Ptr) + (((v2.as_pointer() as Ptr>) + .decay() .offset(0_usize as isize) .read()) as usize) ) == 103_usize) diff --git a/tests/unit/out/refcount/vector2.rs b/tests/unit/out/refcount/vector2.rs index 06cc6d01b..208b4465d 100644 --- a/tests/unit/out/refcount/vector2.rs +++ b/tests/unit/out/refcount/vector2.rs @@ -41,10 +41,10 @@ pub fn fn_0(v: Ptr>, v3: Vec) { (v2.as_pointer() as Ptr>).write((*v.upgrade().deref()).clone()); index!(v4, 1_usize).write(13); assert!((x == 6)); - assert!((((Ptr::>::decay(&(v)) as Ptr).read()) == 4)); + assert!(((((v).clone() as Ptr>).decay().read()) == 4)); assert!(((index!(v, 1_usize).read()) == 5)); assert!(((index!(v, 2_usize).read()) == 6)); - assert!((((Ptr::>::decay(&(v)) as Ptr).to_last().read()) == 20)); + assert!(((((v).clone() as Ptr>).decay().to_last().read()) == 20)); assert!(({ (*v2.borrow())[0_usize] } == 4)); assert!(({ (*v2.borrow())[1_usize] } == 5)); assert!(({ (*v2.borrow())[2_usize] } == 6)); diff --git a/tests/unit/out/refcount/vector3.rs b/tests/unit/out/refcount/vector3.rs index f29da1f9a..ae30e3550 100644 --- a/tests/unit/out/refcount/vector3.rs +++ b/tests/unit/out/refcount/vector3.rs @@ -30,40 +30,40 @@ fn main_0() -> i32 { index!(elem!((v.as_pointer() as Ptr>), 0_usize), 1_usize).write(5); index!(elem!((v.as_pointer() as Ptr>), 1_usize), 0_usize).write(6); 'loop_: for v2 in IterRange::new( - (v.as_pointer() as Ptr>).begin(), - (v.as_pointer() as Ptr>).end(), + (v.as_pointer() as Ptr>>).decay().begin(), + (v.as_pointer() as Ptr>>).decay().end(), ) { let v2: Ptr> = v2.iter_deref(); 'loop_: for i in IterRange::new( - (Ptr::>::decay(&(v2)) as Ptr).begin(), - (Ptr::>::decay(&(v2)) as Ptr).end(), + ((v2).clone() as Ptr>).decay().begin(), + ((v2).clone() as Ptr>).decay().end(), ) { let i: Ptr = i.iter_deref(); i.with_mut(|__v| __v.prefix_inc()); } } 'loop_: for v2 in IterRange::new( - (v.as_pointer() as Ptr>).begin(), - (v.as_pointer() as Ptr>).end(), + (v.as_pointer() as Ptr>>).decay().begin(), + (v.as_pointer() as Ptr>>).decay().end(), ) { let v2: Ptr> = v2.iter_deref(); 'loop_: for i in IterRange::new( - (Ptr::>::decay(&(v2)) as Ptr).begin(), - (Ptr::>::decay(&(v2)) as Ptr).end(), + ((v2).clone() as Ptr>).decay().begin(), + ((v2).clone() as Ptr>).decay().end(), ) { let mut i: i32 = (i.iter_deref().read()); println!("{}", (i + 3)); } } 'loop_: for v2 in IterRange::new( - (v.as_pointer() as Ptr>).begin(), - (v.as_pointer() as Ptr>).end(), + (v.as_pointer() as Ptr>>).decay().begin(), + (v.as_pointer() as Ptr>>).decay().end(), ) { let v2: Value> = Rc::new(RefCell::new((*v2.iter_deref().upgrade().deref()).clone())); 'loop_: for i in IterRange::new( - (v2.as_pointer() as Ptr).begin(), - (v2.as_pointer() as Ptr).end(), + (v2.as_pointer() as Ptr>).decay().begin(), + (v2.as_pointer() as Ptr>).decay().end(), ) { let mut i: i32 = (i.iter_deref().read()); println!("{}", i); diff --git a/tests/unit/out/refcount/vector_addr_of_back.rs b/tests/unit/out/refcount/vector_addr_of_back.rs index 3a8c6b25a..850298298 100644 --- a/tests/unit/out/refcount/vector_addr_of_back.rs +++ b/tests/unit/out/refcount/vector_addr_of_back.rs @@ -17,10 +17,10 @@ fn main_0() -> i32 { let a0_clone = inner.clone(); (*outer.borrow_mut()).push(a0_clone) }; - let mut sink: Ptr> = ((outer.as_pointer() as Ptr>).to_last()); + let mut sink: Ptr> = ((outer.as_pointer() as Ptr>>).decay().to_last()); assert!(((*sink.upgrade().deref()).len() == 0_usize)); let mut p: Ptr>> = (outer.as_pointer()); - sink = ((Ptr::>>::decay(&(p)) as Ptr>).to_last()); + sink = (((p).clone() as Ptr>>).decay().to_last()); assert!(((*sink.upgrade().deref()).len() == 0_usize)); return 0; } diff --git a/tests/unit/out/refcount/vector_deque_vector_string.rs b/tests/unit/out/refcount/vector_deque_vector_string.rs index ee5cda203..1257e7cbe 100644 --- a/tests/unit/out/refcount/vector_deque_vector_string.rs +++ b/tests/unit/out/refcount/vector_deque_vector_string.rs @@ -57,9 +57,10 @@ fn main_0() -> i32 { { let __a1 = { let mut r = (*((Ptr::>>::decay( - &((v.as_pointer() as Ptr>>>) + &(((v.as_pointer() as Ptr>>>) .offset(0_usize) - .as_pointer() as Ptr>>), + .as_pointer() as Ptr>>>) + .decay()), ) as Ptr>) .offset(1_usize) .as_pointer() as Ptr>) @@ -73,14 +74,16 @@ fn main_0() -> i32 { }; ((v.as_pointer() as Ptr>>>) .offset(1_usize) - .as_pointer() as Ptr>>) + .as_pointer() as Ptr>>>) + .decay() .to_last() .with_mut(|__v: &mut Vec>| __v.push(__a1)) }; assert!( ((*((v.as_pointer() as Ptr>>>) .offset(0_usize) - .as_pointer() as Ptr>>) + .as_pointer() as Ptr>>>) + .decay() .upgrade() .deref()) .len() @@ -89,24 +92,27 @@ fn main_0() -> i32 { assert!( ((*((v.as_pointer() as Ptr>>>) .offset(1_usize) - .as_pointer() as Ptr>>) + .as_pointer() as Ptr>>>) + .decay() .upgrade() .deref()) .len() == 3_usize) && (Ptr::::from_string_literal(b"def").with_c_str(|__s| { (*((Ptr::>>::decay( - &((v.as_pointer() as Ptr>>>) + &(((v.as_pointer() as Ptr>>>) .offset(1_usize) - .as_pointer() as Ptr>>), + .as_pointer() as Ptr>>>) + .decay()), ) as Ptr>) .offset(2_usize) .as_pointer() as Ptr>) .upgrade() .deref())[..(*((Ptr::>>::decay( - &((v.as_pointer() as Ptr>>>) + &(((v.as_pointer() as Ptr>>>) .offset(1_usize) - .as_pointer() as Ptr>>), + .as_pointer() as Ptr>>>) + .decay()), ) as Ptr>) .offset(2_usize) .as_pointer() as Ptr>) @@ -121,7 +127,8 @@ fn main_0() -> i32 { (*((Ptr::>>::decay( &(((v.as_pointer() as Ptr>>>) .offset(1_usize) - .as_pointer() as Ptr>>) + .as_pointer() as Ptr>>>) + .decay() .to_last()), ) as Ptr>) .offset(0_usize) @@ -130,7 +137,8 @@ fn main_0() -> i32 { .deref())[..(*((Ptr::>>::decay( &(((v.as_pointer() as Ptr>>>) .offset(1_usize) - .as_pointer() as Ptr>>) + .as_pointer() as Ptr>>>) + .decay() .to_last()), ) as Ptr>) .offset(0_usize) @@ -143,9 +151,10 @@ fn main_0() -> i32 { })); let copy: Value>>>> = Rc::new(RefCell::new((*v.borrow()).clone())); ((Ptr::>>::decay( - &((copy.as_pointer() as Ptr>>>) + &(((copy.as_pointer() as Ptr>>>) .offset(0_usize) - .as_pointer() as Ptr>>), + .as_pointer() as Ptr>>>) + .decay()), ) as Ptr>) .offset(0_usize) .as_pointer() as Ptr>) @@ -156,9 +165,10 @@ fn main_0() -> i32 { }); if 0_usize as usize >= (*((Ptr::>>::decay( - &((v.as_pointer() as Ptr>>>) + &(((v.as_pointer() as Ptr>>>) .offset(0_usize) - .as_pointer() as Ptr>>), + .as_pointer() as Ptr>>>) + .decay()), ) as Ptr>) .offset(1_usize) .as_pointer() as Ptr>) @@ -170,9 +180,10 @@ fn main_0() -> i32 { panic!("out of bounds access") } else { ((Ptr::>>::decay( - &((v.as_pointer() as Ptr>>>) + &(((v.as_pointer() as Ptr>>>) .offset(0_usize) - .as_pointer() as Ptr>>), + .as_pointer() as Ptr>>>) + .decay()), ) as Ptr>) .offset(1_usize) .as_pointer() as Ptr>) @@ -182,18 +193,20 @@ fn main_0() -> i32 { .write(('B' as i8)); assert!( (Ptr::::from_string_literal(b"a").with_c_str(|__s| (*((Ptr::>>::decay( - &((v.as_pointer() as Ptr>>>) + &(((v.as_pointer() as Ptr>>>) .offset(0_usize) - .as_pointer() as Ptr>>) + .as_pointer() as Ptr>>>) + .decay()) ) as Ptr>) .offset(0_usize) .as_pointer() as Ptr>) .upgrade() .deref())[..(*((Ptr::>>::decay( - &((v.as_pointer() as Ptr>>>) + &(((v.as_pointer() as Ptr>>>) .offset(0_usize) - .as_pointer() as Ptr>>) + .as_pointer() as Ptr>>>) + .decay()) ) as Ptr>) .offset(0_usize) .as_pointer() as Ptr>) @@ -204,17 +217,19 @@ fn main_0() -> i32 { == *__s)) && (Ptr::::from_string_literal(b"z").with_c_str(|__s| { (*((Ptr::>>::decay( - &((copy.as_pointer() as Ptr>>>) + &(((copy.as_pointer() as Ptr>>>) .offset(0_usize) - .as_pointer() as Ptr>>), + .as_pointer() as Ptr>>>) + .decay()), ) as Ptr>) .offset(0_usize) .as_pointer() as Ptr>) .upgrade() .deref())[..(*((Ptr::>>::decay( - &((copy.as_pointer() as Ptr>>>) + &(((copy.as_pointer() as Ptr>>>) .offset(0_usize) - .as_pointer() as Ptr>>), + .as_pointer() as Ptr>>>) + .decay()), ) as Ptr>) .offset(0_usize) .as_pointer() as Ptr>) @@ -227,18 +242,20 @@ fn main_0() -> i32 { ); assert!( (Ptr::::from_string_literal(b"Bc").with_c_str(|__s| (*((Ptr::>>::decay( - &((v.as_pointer() as Ptr>>>) + &(((v.as_pointer() as Ptr>>>) .offset(0_usize) - .as_pointer() as Ptr>>) + .as_pointer() as Ptr>>>) + .decay()) ) as Ptr>) .offset(1_usize) .as_pointer() as Ptr>) .upgrade() .deref())[..(*((Ptr::>>::decay( - &((v.as_pointer() as Ptr>>>) + &(((v.as_pointer() as Ptr>>>) .offset(0_usize) - .as_pointer() as Ptr>>) + .as_pointer() as Ptr>>>) + .decay()) ) as Ptr>) .offset(1_usize) .as_pointer() as Ptr>) @@ -249,17 +266,19 @@ fn main_0() -> i32 { == *__s)) && (Ptr::::from_string_literal(b"bc").with_c_str(|__s| { (*((Ptr::>>::decay( - &((copy.as_pointer() as Ptr>>>) + &(((copy.as_pointer() as Ptr>>>) .offset(0_usize) - .as_pointer() as Ptr>>), + .as_pointer() as Ptr>>>) + .decay()), ) as Ptr>) .offset(1_usize) .as_pointer() as Ptr>) .upgrade() .deref())[..(*((Ptr::>>::decay( - &((copy.as_pointer() as Ptr>>>) + &(((copy.as_pointer() as Ptr>>>) .offset(0_usize) - .as_pointer() as Ptr>>), + .as_pointer() as Ptr>>>) + .decay()), ) as Ptr>) .offset(1_usize) .as_pointer() as Ptr>) @@ -274,17 +293,19 @@ fn main_0() -> i32 { .with_mut(|__v: &mut Vec>>| __v.remove(0)); assert!(Ptr::::from_string_literal(b"bcx").with_c_str(|__s| { (*((Ptr::>>::decay( - &((v.as_pointer() as Ptr>>>) + &(((v.as_pointer() as Ptr>>>) .offset(1_usize) - .as_pointer() as Ptr>>), + .as_pointer() as Ptr>>>) + .decay()), ) as Ptr>) .offset(0_usize) .as_pointer() as Ptr>) .upgrade() .deref())[..(*((Ptr::>>::decay( - &((v.as_pointer() as Ptr>>>) + &(((v.as_pointer() as Ptr>>>) .offset(1_usize) - .as_pointer() as Ptr>>), + .as_pointer() as Ptr>>>) + .decay()), ) as Ptr>) .offset(0_usize) .as_pointer() as Ptr>) @@ -297,7 +318,8 @@ fn main_0() -> i32 { assert!( ((*((copy.as_pointer() as Ptr>>>) .offset(1_usize) - .as_pointer() as Ptr>>) + .as_pointer() as Ptr>>>) + .decay() .upgrade() .deref()) .len() diff --git a/tests/unit/out/refcount/vector_iter_range_ctor.rs b/tests/unit/out/refcount/vector_iter_range_ctor.rs index 0ed61aa43..c25155822 100644 --- a/tests/unit/out/refcount/vector_iter_range_ctor.rs +++ b/tests/unit/out/refcount/vector_iter_range_ctor.rs @@ -140,7 +140,8 @@ fn main_0() -> i32 { ); { let start_idx = , Value)>>::from( - (v6.as_pointer() as Ptr<(Value, Value)>) + (v6.as_pointer() as Ptr, Value)>>) + .decay() .begin() .iter_add(1_isize), ) diff --git a/tests/unit/out/refcount/vector_with_allocator.rs b/tests/unit/out/refcount/vector_with_allocator.rs index 51daeadb8..9fa53a67a 100644 --- a/tests/unit/out/refcount/vector_with_allocator.rs +++ b/tests/unit/out/refcount/vector_with_allocator.rs @@ -47,10 +47,10 @@ pub fn fn_1(v: Ptr>, v3: Vec) { .write(7); index!(v4, 1_usize).write(13); assert!((x == 6)); - assert!((((Ptr::>::decay(&(v)) as Ptr).read()) == 4)); + assert!(((((v).clone() as Ptr>).decay().read()) == 4)); assert!(((index!(v, 1_usize).read()) == 5)); assert!(((index!(v, 2_usize).read()) == 6)); - assert!((((Ptr::>::decay(&(v)) as Ptr).to_last().read()) == 20)); + assert!(((((v).clone() as Ptr>).decay().to_last().read()) == 20)); assert!(({ (*v3.borrow())[0_usize] } == 7)); assert!(({ (*v3.borrow())[1_usize] } == 13)); { @@ -101,7 +101,8 @@ fn main_0() -> i32 { assert!(((*v2.borrow()).len() == 3_usize)); { let __off = - >::from((v2.as_pointer() as Ptr).begin()).index(); + >::from((v2.as_pointer() as Ptr>).decay().begin()) + .index(); (v2.as_pointer() as Ptr>).with_mut(|__v: &mut Vec| __v.remove(__off)); RandomAccessIterator::Vec((v2.as_pointer() as Ptr>).decay() + __off) }; @@ -110,9 +111,10 @@ fn main_0() -> i32 { assert!(({ (*v2.borrow())[1_usize] } == 3)); { let __off = - >::from((v2.as_pointer() as Ptr).begin()).index(); + >::from((v2.as_pointer() as Ptr>).decay().begin()) + .index(); (*v2.borrow_mut()).insert(__off, 100); - >::from((v2.as_pointer() as Ptr).begin()) + >::from((v2.as_pointer() as Ptr>).decay().begin()) }; ({ copy_0((*v2.borrow()).clone()) }); assert!(((*v2.borrow()).len() == 3_usize)); @@ -134,9 +136,9 @@ fn main_0() -> i32 { assert!(({ (*v6.borrow())[(i as usize)] } == 2_f64)); i.prefix_inc(); } - let mut p1: Ptr = (v6.as_pointer() as Ptr); + let mut p1: Ptr = (v6.as_pointer() as Ptr>).decay(); assert!(((p1.read()) == 2_f64)); - let mut p2: Ptr = (v3.as_pointer() as Ptr); + let mut p2: Ptr = (v3.as_pointer() as Ptr>).decay(); assert!(((p2.read()) == 1)); assert!(({ (*v3.borrow())[0_usize] } == 1)); assert!(({ (*v3.borrow())[1_usize] } == 1)); @@ -174,46 +176,53 @@ fn main_0() -> i32 { }; assert!(((*v3.borrow()).capacity() == 201_usize)); assert!(((*v3.borrow()).len() == 100_usize)); - assert!((((v2.as_pointer() as Ptr).to_last().read()) == 3)); - assert!((((v3.as_pointer() as Ptr).to_last().read()) == 1)); - assert!((((v6.as_pointer() as Ptr).to_last().read()) == 2_f64)); - let ref0: Ptr = (v6.as_pointer() as Ptr).to_last(); + assert!((((v2.as_pointer() as Ptr>).decay().to_last().read()) == 3)); + assert!((((v3.as_pointer() as Ptr>).decay().to_last().read()) == 1)); + assert!((((v6.as_pointer() as Ptr>).decay().to_last().read()) == 2_f64)); + let ref0: Ptr = (v6.as_pointer() as Ptr>).decay().to_last(); ref0.write(5_f64); - assert!((((v6.as_pointer() as Ptr).to_last().read()) == 5_f64)); - let mut x0: f64 = ((v6.as_pointer() as Ptr).to_last().read()); + assert!((((v6.as_pointer() as Ptr>).decay().to_last().read()) == 5_f64)); + let mut x0: f64 = ((v6.as_pointer() as Ptr>).decay().to_last().read()); assert!((x0 == 5_f64)); x0 = 6_f64; - assert!((((v6.as_pointer() as Ptr).to_last().read()) == 5_f64)); + assert!((((v6.as_pointer() as Ptr>).decay().to_last().read()) == 5_f64)); let mut idx: i32 = 0; assert!( - (((v6.as_pointer() as Ptr) + (((v6.as_pointer() as Ptr>) + .decay() .offset((idx as usize) as isize) .read()) == 2_f64) ); assert!( - (((v6.as_pointer() as Ptr) + (((v6.as_pointer() as Ptr>) + .decay() .offset((s2).wrapping_sub(1_usize) as isize) .read()) == 5_f64) ); - let ref1: Ptr = (v6.as_pointer() as Ptr).offset((s2).wrapping_sub(1_usize) as isize); + let ref1: Ptr = (v6.as_pointer() as Ptr>) + .decay() + .offset((s2).wrapping_sub(1_usize) as isize); { ref1.with_mut(|__v| *__v = *__v + 1.5_f64) }; assert!( - (((v6.as_pointer() as Ptr) + (((v6.as_pointer() as Ptr>) + .decay() .offset((s2).wrapping_sub(1_usize) as isize) .read()) == 6.5_f64) ); - let mut x1: f64 = ((v6.as_pointer() as Ptr) + let mut x1: f64 = ((v6.as_pointer() as Ptr>) + .decay() .offset((s2).wrapping_sub(1_usize) as isize) .read()); assert!((x1 == 6.5_f64)); x1 -= 1.5_f64; assert!( - (((v6.as_pointer() as Ptr) + (((v6.as_pointer() as Ptr>) + .decay() .offset((s2).wrapping_sub(1_usize) as isize) .read()) == 6.5_f64) @@ -304,7 +313,8 @@ fn main_0() -> i32 { assert!(((v13[0_usize] as i32) == 10) && ((v13[4_usize] as i32) == 50)); assert!( (((s1).wrapping_add(s2)).wrapping_add( - (((v2.as_pointer() as Ptr) + (((v2.as_pointer() as Ptr>) + .decay() .offset(0_usize as isize) .read()) as usize) ) == 103_usize) diff --git a/tests/unit/out/refcount/void_return.rs b/tests/unit/out/refcount/void_return.rs index 7a852ca37..f755ba78c 100644 --- a/tests/unit/out/refcount/void_return.rs +++ b/tests/unit/out/refcount/void_return.rs @@ -58,8 +58,8 @@ pub fn main() { fn main_0() -> i32 { let v: Value> = Rc::new(RefCell::new(Vec::from([1, 3, 0, 2, 8, 7]))); ({ - let _first: RandomAccessIterator = (v.as_pointer() as Ptr).begin(); - let _last: RandomAccessIterator = (v.as_pointer() as Ptr).end(); + let _first: RandomAccessIterator = (v.as_pointer() as Ptr>).decay().begin(); + let _last: RandomAccessIterator = (v.as_pointer() as Ptr>).decay().end(); f1_0(_first, _last) }); let a: Value> = Rc::new(RefCell::new(Box::new([1, 2, 3]))); From 1db740f32841c7f479dd7bef93c01f6216e806f3 Mon Sep 17 00:00:00 2001 From: Lucian Popescu Date: Tue, 20 Oct 2026 13:53:51 +0100 Subject: [PATCH 03/12] Update tests --- .../out/refcount/defaulted_move_cross_tu.rs | 3 +- .../refcount/dangling-prvalue-as-lvalue.rs | 9 +- .../out/refcount/row_ptr_outlives_vector.rs | 6 +- tests/unit/out/refcount/07_unique.rs | 5 +- tests/unit/out/refcount/11_move.rs | 2 +- tests/unit/out/refcount/alloc_array.rs | 2 +- tests/unit/out/refcount/auto.rs | 6 +- tests/unit/out/refcount/class_templates.rs | 12 +- tests/unit/out/refcount/clone_vs_move.rs | 66 ++-- .../unit/out/refcount/compound_assign_ref.rs | 6 +- .../unit/out/refcount/copy_move_defaulted.rs | 23 +- .../refcount/elidable_iterator_copy_cxx11.rs | 60 ++-- tests/unit/out/refcount/find.rs | 69 ++--- tests/unit/out/refcount/fn_ptr_stable_sort.rs | 29 +- tests/unit/out/refcount/foreach.rs | 5 +- .../refcount/foreach_disjoint_field_borrow.rs | 8 +- tests/unit/out/refcount/foreach_double.rs | 61 ++-- tests/unit/out/refcount/foreach_map.rs | 18 +- tests/unit/out/refcount/foreach_mut.rs | 38 +-- tests/unit/out/refcount/huffman.rs | 4 +- tests/unit/out/refcount/implicit_autoref.rs | 8 +- tests/unit/out/refcount/inet_pton_ntop.rs | 87 ++---- .../out/refcount/inline_container_fields.rs | 29 +- tests/unit/out/refcount/iterator_freshness.rs | 5 +- tests/unit/out/refcount/iterators.rs | 17 +- tests/unit/out/refcount/kruskal.rs | 6 +- tests/unit/out/refcount/map-reallocation.rs | 14 +- tests/unit/out/refcount/map.rs | 130 ++++---- tests/unit/out/refcount/map_copy.rs | 12 +- tests/unit/out/refcount/map_key_identity.rs | 289 ++++++++++-------- tests/unit/out/refcount/matmul.rs | 4 +- tests/unit/out/refcount/move_assign.rs | 7 +- tests/unit/out/refcount/nested_vector.rs | 4 +- tests/unit/out/refcount/operator_traits.rs | 139 ++++----- tests/unit/out/refcount/printfs.rs | 10 +- tests/unit/out/refcount/push_emplace_back.rs | 40 +-- .../refcount/redundant_copy_in_conversion.rs | 6 +- tests/unit/out/refcount/references2.rs | 2 +- .../refcount/reinterpret_cast_empty_vec.rs | 4 +- .../out/refcount/reinterpret_cast_string.rs | 4 +- .../refcount/reinterpret_cast_vec_write.rs | 4 +- tests/unit/out/refcount/sort.rs | 37 +-- .../refcount/split_binop_aliased_borrows.rs | 6 +- tests/unit/out/refcount/stdcopy_ostream.rs | 6 +- tests/unit/out/refcount/string.rs | 12 +- tests/unit/out/refcount/string2.rs | 6 +- .../refcount/structured_binding_move_ctor.rs | 4 +- tests/unit/out/refcount/sys_stat.rs | 46 ++- .../refcount/unboxed_conditional_iterator.rs | 21 +- tests/unit/out/refcount/unboxed_locals.rs | 9 +- tests/unit/out/refcount/unique_ptr.rs | 13 +- .../out/refcount/unique_ptr_const_deref.rs | 5 +- .../out/refcount/unique_ptr_field_reset.rs | 6 +- tests/unit/out/refcount/unique_ptr_nested.rs | 2 +- tests/unit/out/refcount/unique_ptr_small.rs | 2 +- tests/unit/out/refcount/vector.rs | 152 ++++----- tests/unit/out/refcount/vector2.rs | 10 +- tests/unit/out/refcount/vector3.rs | 39 +-- .../unit/out/refcount/vector_addr_of_back.rs | 4 +- .../refcount/vector_deque_vector_string.rs | 279 ++++++++--------- .../out/refcount/vector_iter_range_ctor.rs | 32 +- .../out/refcount/vector_subscript_borrow.rs | 10 +- .../out/refcount/vector_subscript_direct.rs | 74 ++--- .../out/refcount/vector_with_allocator.rs | 64 ++-- tests/unit/out/refcount/void_cast.rs | 2 +- tests/unit/out/refcount/void_return.rs | 4 +- 66 files changed, 871 insertions(+), 1227 deletions(-) diff --git a/tests/multi-file/defaulted_move_cross_tu/out/refcount/defaulted_move_cross_tu.rs b/tests/multi-file/defaulted_move_cross_tu/out/refcount/defaulted_move_cross_tu.rs index eb7112d27..158702ba8 100644 --- a/tests/multi-file/defaulted_move_cross_tu/out/refcount/defaulted_move_cross_tu.rs +++ b/tests/multi-file/defaulted_move_cross_tu/out/refcount/defaulted_move_cross_tu.rs @@ -70,7 +70,8 @@ pub trait SImpl { } impl SImpl for Ptr { fn move_assign(&self, _a0: Ptr) -> Ptr { - (field_ref!((*self), v).as_pointer() as Ptr>) + field_ref!((*self), v) + .as_pointer() .write(field!(_a0, v).with_mut(std::mem::take)); { ((array_field_ptr!((*self), n)) as Ptr) diff --git a/tests/ub/out/refcount/dangling-prvalue-as-lvalue.rs b/tests/ub/out/refcount/dangling-prvalue-as-lvalue.rs index 954331062..99e76cf95 100644 --- a/tests/ub/out/refcount/dangling-prvalue-as-lvalue.rs +++ b/tests/ub/out/refcount/dangling-prvalue-as-lvalue.rs @@ -15,14 +15,7 @@ pub fn main() { } fn main_0() -> i32 { let v: Value> = Rc::new(RefCell::new(Vec::from([1, 2]))); - let b: Ptr = ({ - foo_0( - (v.as_pointer() as Ptr>) - .decay() - .begin() - .iter_deref(), - ) - }); + let b: Ptr = ({ foo_0(v.as_pointer().decay().begin().iter_deref()) }); (*v.borrow_mut()).clear(); return (b.read()); } diff --git a/tests/ub/out/refcount/row_ptr_outlives_vector.rs b/tests/ub/out/refcount/row_ptr_outlives_vector.rs index 31bbe9c08..6c953df4c 100644 --- a/tests/ub/out/refcount/row_ptr_outlives_vector.rs +++ b/tests/ub/out/refcount/row_ptr_outlives_vector.rs @@ -11,9 +11,11 @@ pub fn second_row_0() -> Ptr { Vec::from([1, 2, 3]), Vec::from([4, 5, 6]), ]))); - return ((rows.as_pointer() as Ptr>) + return rows + .as_pointer() + .decay() .offset(1_usize) - .as_pointer() as Ptr>) + .as_pointer() .decay(); } pub fn main() { diff --git a/tests/unit/out/refcount/07_unique.rs b/tests/unit/out/refcount/07_unique.rs index 0a5cee656..86a855182 100644 --- a/tests/unit/out/refcount/07_unique.rs +++ b/tests/unit/out/refcount/07_unique.rs @@ -21,8 +21,9 @@ fn main_0() -> i32 { f_ptr1.write(10); let mut f_ptr2: Ptr = ((*f.borrow()).as_pointer()); f_ptr2.write(11); - (f.as_pointer() as Ptr>>).write(Some(Rc::new(RefCell::new(9))).take()); - (f.as_pointer() as Ptr>>).write(({ fn_0((*f.borrow_mut()).take()) }).take()); + f.as_pointer().write(Some(Rc::new(RefCell::new(9))).take()); + f.as_pointer() + .write(({ fn_0((*f.borrow_mut()).take()) }).take()); assert!((((*f.borrow()).as_pointer().read()) == 10)); return 0; } diff --git a/tests/unit/out/refcount/11_move.rs b/tests/unit/out/refcount/11_move.rs index 18219cb7f..e4f6d18f9 100644 --- a/tests/unit/out/refcount/11_move.rs +++ b/tests/unit/out/refcount/11_move.rs @@ -8,7 +8,7 @@ use std::os::fd::AsFd; use std::rc::{Rc, Weak}; pub fn change_0(n: Ptr>>) { let m: Value>> = Rc::new(RefCell::new(Some(Rc::new(RefCell::new(20))))); - ((n).clone() as Ptr>>).write((*m.borrow_mut()).take()); + (n).clone().write((*m.borrow_mut()).take()); assert!(((*m.borrow()).as_pointer()).is_null()); } pub fn main() { diff --git a/tests/unit/out/refcount/alloc_array.rs b/tests/unit/out/refcount/alloc_array.rs index 6e42ca74e..7db2e87ce 100644 --- a/tests/unit/out/refcount/alloc_array.rs +++ b/tests/unit/out/refcount/alloc_array.rs @@ -19,7 +19,7 @@ pub fn All_0(arr: Ptr>>>, mut N: i32, mut element: i32) .write(element); i.prefix_inc(); } - ((arr).clone() as Ptr>>>).write((*all.borrow_mut()).take()); + (arr).clone().write((*all.borrow_mut()).take()); } pub fn Consume_1(mut arr: Option>>, mut N: i32) -> i32 { let mut sum: i32 = 0; diff --git a/tests/unit/out/refcount/auto.rs b/tests/unit/out/refcount/auto.rs index 20c6fbf1e..8358e2952 100644 --- a/tests/unit/out/refcount/auto.rs +++ b/tests/unit/out/refcount/auto.rs @@ -24,10 +24,8 @@ fn main_0() -> i32 { (*v.borrow_mut()).push(__a1) }; let mut sum: i32 = 0; - 'loop_: for elem in IterRange::new( - (v.as_pointer() as Ptr>).decay().begin(), - (v.as_pointer() as Ptr>).decay().end(), - ) { + 'loop_: for elem in IterRange::new(v.as_pointer().decay().begin(), v.as_pointer().decay().end()) + { let mut elem: i32 = (elem.iter_deref().read()); sum += elem; } diff --git a/tests/unit/out/refcount/class_templates.rs b/tests/unit/out/refcount/class_templates.rs index b26c7bbe9..03f32dca7 100644 --- a/tests/unit/out/refcount/class_templates.rs +++ b/tests/unit/out/refcount/class_templates.rs @@ -231,9 +231,7 @@ impl MyContainer_char_Impl for Ptr { return (*(*self).upgrade().deref()).vec_.len(); } fn back_4(&self) -> Ptr { - return (field_ref!((*self), vec_).as_pointer() as Ptr>) - .decay() - .to_last(); + return field_ref!((*self), vec_).as_pointer().decay().to_last(); } fn pop_back(&self) { field!((*self), vec_).with_mut(|__v: &mut Vec| __v.pop()); @@ -264,9 +262,7 @@ impl MyContainer_float_Impl for Ptr { return (*(*self).upgrade().deref()).vec_.len(); } fn back_4(&self) -> Ptr { - return (field_ref!((*self), vec_).as_pointer() as Ptr>) - .decay() - .to_last(); + return field_ref!((*self), vec_).as_pointer().decay().to_last(); } fn pop_back(&self) { field!((*self), vec_).with_mut(|__v: &mut Vec| __v.pop()); @@ -297,9 +293,7 @@ impl MyContainer_int_Impl for Ptr { return (*(*self).upgrade().deref()).vec_.len(); } fn back_4(&self) -> Ptr { - return (field_ref!((*self), vec_).as_pointer() as Ptr>) - .decay() - .to_last(); + return field_ref!((*self), vec_).as_pointer().decay().to_last(); } fn pop_back(&self) { field!((*self), vec_).with_mut(|__v: &mut Vec| __v.pop()); diff --git a/tests/unit/out/refcount/clone_vs_move.rs b/tests/unit/out/refcount/clone_vs_move.rs index 56bae56d0..b6ee1a62e 100644 --- a/tests/unit/out/refcount/clone_vs_move.rs +++ b/tests/unit/out/refcount/clone_vs_move.rs @@ -161,18 +161,14 @@ fn main_0() -> i32 { let mut i: i32 = 0; 'loop_: while (i < N) { assert!( - ((*((m1.as_pointer() as Ptr>) - .offset((i as usize)) - .as_pointer() as Ptr>) + ((*(m1.as_pointer().decay().offset((i as usize)).as_pointer() as Ptr>) .upgrade() .deref()) .len() == 10_usize) ); assert!( - ((*((m2.as_pointer() as Ptr>) - .offset((i as usize)) - .as_pointer() as Ptr>) + ((*(m2.as_pointer().decay().offset((i as usize)).as_pointer() as Ptr>) .upgrade() .deref()) .len() @@ -181,20 +177,10 @@ fn main_0() -> i32 { let mut j: i32 = 0; 'loop_: while (j < 10) { assert!( - ((index!( - elem!((m1.as_pointer() as Ptr>), (i as usize)), - (j as usize) - ) - .read()) - == 0) + ((index!(elem!(m1.as_pointer().decay(), (i as usize)), (j as usize)).read()) == 0) ); assert!( - ((index!( - elem!((m2.as_pointer() as Ptr>), (i as usize)), - (j as usize) - ) - .read()) - == 0) + ((index!(elem!(m2.as_pointer().decay(), (i as usize)), (j as usize)).read()) == 0) ); j.prefix_inc(); } @@ -204,11 +190,8 @@ fn main_0() -> i32 { 'loop_: while (i < N) { let mut j: i32 = 0; 'loop_: while (j < 10) { - index!( - elem!((m2.as_pointer() as Ptr>), (i as usize)), - (j as usize) - ) - .with_mut(|__v| __v.postfix_inc()); + index!(elem!(m2.as_pointer().decay(), (i as usize)), (j as usize)) + .with_mut(|__v| __v.postfix_inc()); j.prefix_inc(); } i.prefix_inc(); @@ -216,18 +199,14 @@ fn main_0() -> i32 { let mut i: i32 = 0; 'loop_: while (i < N) { assert!( - ((*((m1.as_pointer() as Ptr>) - .offset((i as usize)) - .as_pointer() as Ptr>) + ((*(m1.as_pointer().decay().offset((i as usize)).as_pointer() as Ptr>) .upgrade() .deref()) .len() == 10_usize) ); assert!( - ((*((m2.as_pointer() as Ptr>) - .offset((i as usize)) - .as_pointer() as Ptr>) + ((*(m2.as_pointer().decay().offset((i as usize)).as_pointer() as Ptr>) .upgrade() .deref()) .len() @@ -236,20 +215,10 @@ fn main_0() -> i32 { let mut j: i32 = 0; 'loop_: while (j < 10) { assert!( - ((index!( - elem!((m1.as_pointer() as Ptr>), (i as usize)), - (j as usize) - ) - .read()) - == 0) + ((index!(elem!(m1.as_pointer().decay(), (i as usize)), (j as usize)).read()) == 0) ); assert!( - ((index!( - elem!((m2.as_pointer() as Ptr>), (i as usize)), - (j as usize) - ) - .read()) - == 1) + ((index!(elem!(m2.as_pointer().decay(), (i as usize)), (j as usize)).read()) == 1) ); j.prefix_inc(); } @@ -259,7 +228,7 @@ fn main_0() -> i32 { let mut i: i32 = 0; 'loop_: while (i < N) { let __rhs = i; - (map1.as_pointer() as Ptr, Value)>>) + map1.as_pointer() .with_mut(|__m: &mut Map, Value)>| { __m.get_or_insert_with(i.clone(), || { ( @@ -279,7 +248,8 @@ fn main_0() -> i32 { let mut i: i32 = 0; 'loop_: while (i < N) { assert!( - (((map2.as_pointer() as Ptr, Value)>>) + ((map2 + .as_pointer() .with_mut(|__m: &mut Map, Value)>| { __m.get_or_insert_with(i.clone(), || { ( @@ -294,7 +264,7 @@ fn main_0() -> i32 { .read()) == i) ); - (map2.as_pointer() as Ptr, Value)>>) + map2.as_pointer() .with_mut(|__m: &mut Map, Value)>| { __m.get_or_insert_with(i.clone(), || { ( @@ -312,7 +282,8 @@ fn main_0() -> i32 { let mut i: i32 = 0; 'loop_: while (i < N) { assert!( - (((map1.as_pointer() as Ptr, Value)>>) + ((map1 + .as_pointer() .with_mut(|__m: &mut Map, Value)>| { __m.get_or_insert_with(i.clone(), || { ( @@ -328,7 +299,8 @@ fn main_0() -> i32 { == i) ); assert!( - (((map2.as_pointer() as Ptr, Value)>>) + ((map2 + .as_pointer() .with_mut(|__m: &mut Map, Value)>| { __m.get_or_insert_with(i.clone(), || { ( @@ -404,7 +376,7 @@ fn main_0() -> i32 { assert!((b1.w == 1)); assert!((b2.w == 2)); let v4: Value> = Rc::new(RefCell::new(Vec::new())); - (v4.as_pointer() as Ptr>).write((v2).clone()); + v4.as_pointer().write((v2).clone()); let mut i: i32 = 0; 'loop_: while (i < N) { assert!(({ (*v4.borrow())[(i as usize)] } == (i + 1))); diff --git a/tests/unit/out/refcount/compound_assign_ref.rs b/tests/unit/out/refcount/compound_assign_ref.rs index 64b65eafb..c00bc8aba 100644 --- a/tests/unit/out/refcount/compound_assign_ref.rs +++ b/tests/unit/out/refcount/compound_assign_ref.rs @@ -17,11 +17,9 @@ fn main_0() -> i32 { (*v.borrow_mut()).push(__a1) }; { - (v.as_pointer() as Ptr>) - .decay() - .with_mut(|__v| *__v = *__v + 5) + v.as_pointer().decay().with_mut(|__v| *__v = *__v + 5) }; - assert!((((v.as_pointer() as Ptr>).decay().read()) == 15)); + assert!(((v.as_pointer().decay().read()) == 15)); return 0; } pub fn __cpp2rust_init_globals() {} diff --git a/tests/unit/out/refcount/copy_move_defaulted.rs b/tests/unit/out/refcount/copy_move_defaulted.rs index 087a0e844..6bdaff3dc 100644 --- a/tests/unit/out/refcount/copy_move_defaulted.rs +++ b/tests/unit/out/refcount/copy_move_defaulted.rs @@ -340,7 +340,9 @@ fn main_0() -> i32 { ); assert!( (((*r.borrow()).rows.len() == 1_usize) - && ((*((field_ref!(r.as_pointer(), rows).as_pointer() as Ptr>) + && ((*(field_ref!(r.as_pointer(), rows) + .as_pointer() + .decay() .offset(0_usize) .as_pointer() as Ptr>) .upgrade() @@ -355,7 +357,7 @@ fn main_0() -> i32 { (*bufs.borrow_mut()).push(__a1) }; { - let __init = Buffer::move_from({ (bufs.as_pointer() as Ptr).offset(0_usize) }); + let __init = Buffer::move_from({ bufs.as_pointer().decay().offset(0_usize) }); (*bufs.borrow_mut()).push(__init) }; assert!( @@ -373,7 +375,7 @@ fn main_0() -> i32 { array_elem!(o1.as_pointer(), arr, 1).write(6); { let _p: Ptr<_> = Ptr::alloc(7); - (field_ptr!(o1.as_pointer(), p) as Ptr>>).write(_p.to_owned_opt()) + field_ptr!(o1.as_pointer(), p).write(_p.to_owned_opt()) }; let o2: Value = Rc::new(RefCell::new(Owner::move_from({ o1.as_pointer() }))); assert!( @@ -399,7 +401,7 @@ fn main_0() -> i32 { let _dtor_h1 = ScopedDestructor::new(&h1, |__p| __p.destructor()); { let _p: Ptr<_> = Ptr::alloc(9); - (field_ptr!(h1.as_pointer(), p) as Ptr>>).write(_p.to_owned_opt()) + field_ptr!(h1.as_pointer(), p).write(_p.to_owned_opt()) }; let h2: Value = Rc::new(RefCell::new(Holder::move_from({ h1.as_pointer() }))); let _dtor_h2 = ScopedDestructor::new(&h2, |__p| __p.destructor()); @@ -424,9 +426,11 @@ pub trait BufferImpl { } impl BufferImpl for Ptr { fn move_assign(&self, _a0: Ptr) -> Ptr { - (field_ref!((*self), data).as_pointer() as Ptr>) + field_ref!((*self), data) + .as_pointer() .write(field!(_a0, data).with_mut(std::mem::take)); - (field_ref!((*self), rows).as_pointer() as Ptr>>) + field_ref!((*self), rows) + .as_pointer() .write(field!(_a0, rows).with_mut(std::mem::take)); field!((*self), n).write({ { (*_a0.upgrade().deref()).n } }); { @@ -465,7 +469,7 @@ impl HolderImpl for Ptr { fn move_assign(&self, _a0: Ptr) -> Ptr { field!((*self), inner).write({ { (*_a0.upgrade().deref()).inner.clone() } }); field!((*self), e).write({ { (*_a0.upgrade().deref()).e.clone() } }); - (field_ptr!((*self), p) as Ptr>>) + field_ptr!((*self), p) .write(field!(_a0, p).with_mut(|__v: &mut Option>| __v.take())); return (*self).clone(); } @@ -478,7 +482,8 @@ pub trait OwnerImpl { } impl OwnerImpl for Ptr { fn move_assign(&self, _a0: Ptr) -> Ptr { - (field_ref!((*self), data).as_pointer() as Ptr>) + field_ref!((*self), data) + .as_pointer() .write(field!(_a0, data).with_mut(std::mem::take)); field!((*self), n).write({ { (*_a0.upgrade().deref()).n } }); { @@ -490,7 +495,7 @@ impl OwnerImpl for Ptr { ); ((array_field_ptr!((*self), arr)) as Ptr).to_any() }; - (field_ptr!((*self), p) as Ptr>>) + field_ptr!((*self), p) .write(field!(_a0, p).with_mut(|__v: &mut Option>| __v.take())); return (*self).clone(); } diff --git a/tests/unit/out/refcount/elidable_iterator_copy_cxx11.rs b/tests/unit/out/refcount/elidable_iterator_copy_cxx11.rs index 7cc0ae161..f456817fe 100644 --- a/tests/unit/out/refcount/elidable_iterator_copy_cxx11.rs +++ b/tests/unit/out/refcount/elidable_iterator_copy_cxx11.rs @@ -21,73 +21,53 @@ fn main_0() -> i32 { (*v.borrow_mut()).push(__a1) }; let it: Value> = Rc::new(RefCell::new({ - let mut __it = (v.as_pointer() as Ptr>).decay().begin(); - while __it != (v.as_pointer() as Ptr>).decay().end() - && __it.iter_deref().with(|__v| *__v != 7) - { + let mut __it = v.as_pointer().decay().begin(); + while __it != v.as_pointer().decay().end() && __it.iter_deref().with(|__v| *__v != 7) { __it.iter_inc(); } __it })); - assert!((*it.borrow()) != (v.as_pointer() as Ptr>).decay().end()); + assert!((*it.borrow()) != v.as_pointer().decay().end()); assert!((((*it.borrow()).iter_deref().read()) == 7)); { - let __n = (v.as_pointer() as Ptr>) + let __n = v + .as_pointer() .decay() .end() - .iter_distance(&(v.as_pointer() as Ptr>).decay().begin()); + .iter_distance(&v.as_pointer().decay().begin()); let __random = std::hash::RandomState::new(); for __i in (1..__n).rev() { let __j = (std::hash::BuildHasher::hash_one(&__random, __i) % (__i + 1) as u64) as isize; - let __x = (v.as_pointer() as Ptr>) - .decay() - .begin() - .iter_at(__i); - let __y = (v.as_pointer() as Ptr>) - .decay() - .begin() - .iter_at(__j); + let __x = v.as_pointer().decay().begin().iter_at(__i); + let __y = v.as_pointer().decay().begin().iter_at(__j); let __tmp = __x.read(); __x.write(__y.read()); __y.write(__tmp); } }; { - let __n = (v.as_pointer() as Ptr>) + let __n = v + .as_pointer() .decay() .end() - .iter_distance(&(v.as_pointer() as Ptr>).decay().begin()); + .iter_distance(&v.as_pointer().decay().begin()); let mut __order: Vec = (0..__n).collect(); __order.sort_by(|&__x, &__y| { - (v.as_pointer() as Ptr>) - .decay() - .begin() - .iter_at(__x) - .with(|__a| { - (v.as_pointer() as Ptr>) - .decay() - .begin() - .iter_at(__y) - .with(|__b| __a.cmp(__b)) - }) - }); - let __values: Vec<_> = __order - .iter() - .map(|&__i| { - (v.as_pointer() as Ptr>) + v.as_pointer().decay().begin().iter_at(__x).with(|__a| { + v.as_pointer() .decay() .begin() - .iter_at(__i) - .read() + .iter_at(__y) + .with(|__b| __a.cmp(__b)) }) + }); + let __values: Vec<_> = __order + .iter() + .map(|&__i| v.as_pointer().decay().begin().iter_at(__i).read()) .collect(); for (__i, __v) in (0..__n).zip(__values) { - (v.as_pointer() as Ptr>) - .decay() - .begin() - .iter_at(__i) - .write(__v); + v.as_pointer().decay().begin().iter_at(__i).write(__v); } }; assert!(({ (*v.borrow())[0_usize] } == 4) && ({ (*v.borrow())[1_usize] } == 7)); diff --git a/tests/unit/out/refcount/find.rs b/tests/unit/out/refcount/find.rs index 7b8a919dd..1a9f868e3 100644 --- a/tests/unit/out/refcount/find.rs +++ b/tests/unit/out/refcount/find.rs @@ -24,12 +24,10 @@ fn main_0() -> i32 { let __a1 = 3; (*v.borrow_mut()).push(__a1) }; - let v_begin: Value> = Rc::new(RefCell::new( - (v.as_pointer() as Ptr>).decay().begin(), - )); - let v_end: Value> = Rc::new(RefCell::new( - (v.as_pointer() as Ptr>).decay().end(), - )); + let v_begin: Value> = + Rc::new(RefCell::new(v.as_pointer().decay().begin())); + let v_end: Value> = + Rc::new(RefCell::new(v.as_pointer().decay().end())); let it: Value> = Rc::new(RefCell::new({ let mut __it = (*v_begin.borrow()).clone(); while __it != (*v_end.borrow()).clone() && __it.iter_deref().with(|__v| *__v != 2) { @@ -37,9 +35,9 @@ fn main_0() -> i32 { } __it })); - let mut v_result_true: bool = (*it.borrow()) != (v.as_pointer() as Ptr>).decay().end(); + let mut v_result_true: bool = (*it.borrow()) != v.as_pointer().decay().end(); let m: Value, Value)>> = Rc::new(RefCell::new(Map::new())); - (m.as_pointer() as Ptr, Value)>>) + m.as_pointer() .with_mut(|__m: &mut Map, Value)>| { __m.get_or_insert_with(1.clone(), || { ( @@ -52,7 +50,7 @@ fn main_0() -> i32 { .as_pointer() }) .write(1_f64); - (m.as_pointer() as Ptr, Value)>>) + m.as_pointer() .with_mut(|__m: &mut Map, Value)>| { __m.get_or_insert_with(2.clone(), || { ( @@ -65,7 +63,7 @@ fn main_0() -> i32 { .as_pointer() }) .write(2_f64); - (m.as_pointer() as Ptr, Value)>>) + m.as_pointer() .with_mut(|__m: &mut Map, Value)>| { __m.get_or_insert_with(3.clone(), || { ( @@ -79,78 +77,55 @@ fn main_0() -> i32 { }) .write(3_f64); let m_begin: Value, Value)>> = Rc::new(RefCell::new( - (m.as_pointer() as Ptr, Value)>>) + m.as_pointer() .with(|__m: &Map, Value)>| __m.begin()), )); let m_end: Value, Value)>> = Rc::new(RefCell::new( - (m.as_pointer() as Ptr, Value)>>) + m.as_pointer() .with(|__m: &Map, Value)>| __m.end()), )); let mut m_result_true: bool = (*m_begin.borrow()) != (*m_end.borrow()); assert!( ((v_result_true) && (m_result_true)) && ({ - let mut __it = (v.as_pointer() as Ptr>).decay().begin(); - while __it != (v.as_pointer() as Ptr>).decay().begin() + let mut __it = v.as_pointer().decay().begin(); + while __it != v.as_pointer().decay().begin() && __it.iter_deref().with(|__v| *__v != 2) { __it.iter_inc(); } __it - } == (v.as_pointer() as Ptr>).decay().begin()) + } == v.as_pointer().decay().begin()) ); let w: Value> = Rc::new(RefCell::new(Vec::from([1, 2, 3, 4, 5]))); assert!( { - let mut __it = (w.as_pointer() as Ptr>) - .decay() - .begin() - .iter_add(2_isize); - while __it != (w.as_pointer() as Ptr>).decay().end() - && __it.iter_deref().with(|__v| *__v != 4) - { + let mut __it = w.as_pointer().decay().begin().iter_add(2_isize); + while __it != w.as_pointer().decay().end() && __it.iter_deref().with(|__v| *__v != 4) { __it.iter_inc(); } __it - } == (w.as_pointer() as Ptr>) - .decay() - .begin() - .iter_add(3_isize) + } == w.as_pointer().decay().begin().iter_add(3_isize) ); assert!( { - let mut __it = (w.as_pointer() as Ptr>) - .decay() - .begin() - .iter_add(2_isize); - while __it != (w.as_pointer() as Ptr>).decay().end() - && __it.iter_deref().with(|__v| *__v != 1) - { + let mut __it = w.as_pointer().decay().begin().iter_add(2_isize); + while __it != w.as_pointer().decay().end() && __it.iter_deref().with(|__v| *__v != 1) { __it.iter_inc(); } __it - } == (w.as_pointer() as Ptr>).decay().end() + } == w.as_pointer().decay().end() ); assert!( { - let mut __it = (w.as_pointer() as Ptr>) - .decay() - .begin() - .iter_add(2_isize); - while __it - != (w.as_pointer() as Ptr>) - .decay() - .begin() - .iter_add(4_isize) + let mut __it = w.as_pointer().decay().begin().iter_add(2_isize); + while __it != w.as_pointer().decay().begin().iter_add(4_isize) && __it.iter_deref().with(|__v| *__v != 5) { __it.iter_inc(); } __it - } == (w.as_pointer() as Ptr>) - .decay() - .begin() - .iter_add(4_isize) + } == w.as_pointer().decay().begin().iter_add(4_isize) ); return 0; } diff --git a/tests/unit/out/refcount/fn_ptr_stable_sort.rs b/tests/unit/out/refcount/fn_ptr_stable_sort.rs index 884936df6..c03cdeeb6 100644 --- a/tests/unit/out/refcount/fn_ptr_stable_sort.rs +++ b/tests/unit/out/refcount/fn_ptr_stable_sort.rs @@ -36,20 +36,15 @@ fn main_0() -> i32 { (*v.borrow_mut()).push(__a1) }; { - let __n = (v.as_pointer() as Ptr>) + let __n = v + .as_pointer() .decay() .end() - .iter_distance(&(v.as_pointer() as Ptr>).decay().begin()); + .iter_distance(&v.as_pointer().decay().begin()); let mut __order: Vec = (0..__n).collect(); __order.sort_by(|&__x, &__y| { - let __a = (v.as_pointer() as Ptr>) - .decay() - .begin() - .iter_at(__x); - let __b = (v.as_pointer() as Ptr>) - .decay() - .begin() - .iter_at(__y); + let __a = v.as_pointer().decay().begin().iter_at(__x); + let __b = v.as_pointer().decay().begin().iter_at(__y); if Compare_0.call(__a.clone(), __b.clone()) { std::cmp::Ordering::Less } else if Compare_0.call(__b, __a) { @@ -60,20 +55,10 @@ fn main_0() -> i32 { }); let __values: Vec<_> = __order .iter() - .map(|&__i| { - (v.as_pointer() as Ptr>) - .decay() - .begin() - .iter_at(__i) - .read() - }) + .map(|&__i| v.as_pointer().decay().begin().iter_at(__i).read()) .collect(); for (__i, __v) in (0..__n).zip(__values) { - (v.as_pointer() as Ptr>) - .decay() - .begin() - .iter_at(__i) - .write(__v); + v.as_pointer().decay().begin().iter_at(__i).write(__v); } }; assert!(({ (*v.borrow())[0_usize].key } == 1)); diff --git a/tests/unit/out/refcount/foreach.rs b/tests/unit/out/refcount/foreach.rs index c215d9509..77a834b88 100644 --- a/tests/unit/out/refcount/foreach.rs +++ b/tests/unit/out/refcount/foreach.rs @@ -21,10 +21,7 @@ fn main_0() -> i32 { i.prefix_inc(); } let mut sum: i32 = 0; - 'loop_: for x in IterRange::new( - (v.as_pointer() as Ptr>).decay().begin(), - (v.as_pointer() as Ptr>).decay().end(), - ) { + 'loop_: for x in IterRange::new(v.as_pointer().decay().begin(), v.as_pointer().decay().end()) { let mut x: i32 = (x.iter_deref().read()); sum += x; } diff --git a/tests/unit/out/refcount/foreach_disjoint_field_borrow.rs b/tests/unit/out/refcount/foreach_disjoint_field_borrow.rs index 2b9a2b930..5df20e2b1 100644 --- a/tests/unit/out/refcount/foreach_disjoint_field_borrow.rs +++ b/tests/unit/out/refcount/foreach_disjoint_field_borrow.rs @@ -26,12 +26,8 @@ fn main_0() -> i32 { (*s.borrow_mut()).v.push(__a1) }; 'loop_: for e in IterRange::new( - (field_ref!(s.as_pointer(), v).as_pointer() as Ptr>) - .decay() - .begin(), - (field_ref!(s.as_pointer(), v).as_pointer() as Ptr>) - .decay() - .end(), + field_ref!(s.as_pointer(), v).as_pointer().decay().begin(), + field_ref!(s.as_pointer(), v).as_pointer().decay().end(), ) { let mut e: i32 = (e.iter_deref().read()); (*s.borrow_mut()).a.postfix_inc(); diff --git a/tests/unit/out/refcount/foreach_double.rs b/tests/unit/out/refcount/foreach_double.rs index ca45c74b8..a98d9eae3 100644 --- a/tests/unit/out/refcount/foreach_double.rs +++ b/tests/unit/out/refcount/foreach_double.rs @@ -25,54 +25,38 @@ fn main_0() -> i32 { (*v.borrow_mut()).push(__a1) }; let mut square: i32 = 0; - 'loop_: for e1 in IterRange::new( - (v.as_pointer() as Ptr>).decay().begin(), - (v.as_pointer() as Ptr>).decay().end(), - ) { + 'loop_: for e1 in IterRange::new(v.as_pointer().decay().begin(), v.as_pointer().decay().end()) { let mut e1: i32 = (e1.iter_deref().read()); - 'loop_: for e2 in IterRange::new( - (v.as_pointer() as Ptr>).decay().begin(), - (v.as_pointer() as Ptr>).decay().end(), - ) { + 'loop_: for e2 in + IterRange::new(v.as_pointer().decay().begin(), v.as_pointer().decay().end()) + { let mut e2: i32 = (e2.iter_deref().read()); square += (e1 * e2); } } - 'loop_: for e1 in IterRange::new( - (v.as_pointer() as Ptr>).decay().begin(), - (v.as_pointer() as Ptr>).decay().end(), - ) { + 'loop_: for e1 in IterRange::new(v.as_pointer().decay().begin(), v.as_pointer().decay().end()) { let e1: Ptr = e1.iter_deref(); - 'loop_: for e2 in IterRange::new( - (v.as_pointer() as Ptr>).decay().begin(), - (v.as_pointer() as Ptr>).decay().end(), - ) { + 'loop_: for e2 in + IterRange::new(v.as_pointer().decay().begin(), v.as_pointer().decay().end()) + { let e2: Ptr = e2.iter_deref(); square += { ({ (e1.read()) } * { (e2.read()) }) }; } } - 'loop_: for e1 in IterRange::new( - (v.as_pointer() as Ptr>).decay().begin(), - (v.as_pointer() as Ptr>).decay().end(), - ) { + 'loop_: for e1 in IterRange::new(v.as_pointer().decay().begin(), v.as_pointer().decay().end()) { let e1: Ptr = e1.iter_deref(); - 'loop_: for e2 in IterRange::new( - (v.as_pointer() as Ptr>).decay().begin(), - (v.as_pointer() as Ptr>).decay().end(), - ) { + 'loop_: for e2 in + IterRange::new(v.as_pointer().decay().begin(), v.as_pointer().decay().end()) + { let e2: Ptr = e2.iter_deref(); square += { ({ (e1.read()) } * { (e2.read()) }) }; } } - 'loop_: for e1 in IterRange::new( - (v.as_pointer() as Ptr>).decay().begin(), - (v.as_pointer() as Ptr>).decay().end(), - ) { + 'loop_: for e1 in IterRange::new(v.as_pointer().decay().begin(), v.as_pointer().decay().end()) { let e1: Ptr = e1.iter_deref(); - 'loop_: for e2 in IterRange::new( - (v.as_pointer() as Ptr>).decay().begin(), - (v.as_pointer() as Ptr>).decay().end(), - ) { + 'loop_: for e2 in + IterRange::new(v.as_pointer().decay().begin(), v.as_pointer().decay().end()) + { let e2: Ptr = e2.iter_deref(); square += { ({ (e1.read()) } * { (e2.read()) }) }; } @@ -93,15 +77,12 @@ fn main_0() -> i32 { let __a1 = std::mem::take(&mut (*v3.borrow_mut())); (*m.borrow_mut()).push(__a1) }; - 'loop_: for row in IterRange::new( - (m.as_pointer() as Ptr>>).decay().begin(), - (m.as_pointer() as Ptr>>).decay().end(), - ) { + 'loop_: for row in IterRange::new(m.as_pointer().decay().begin(), m.as_pointer().decay().end()) + { let row: Ptr> = row.iter_deref(); - 'loop_: for col in IterRange::new( - ((row).clone() as Ptr>).decay().begin(), - ((row).clone() as Ptr>).decay().end(), - ) { + 'loop_: for col in + IterRange::new((row).clone().decay().begin(), (row).clone().decay().end()) + { let col: Ptr = col.iter_deref(); square += { (col.read()) }; } diff --git a/tests/unit/out/refcount/foreach_map.rs b/tests/unit/out/refcount/foreach_map.rs index f5a23ac6c..a32f88b97 100644 --- a/tests/unit/out/refcount/foreach_map.rs +++ b/tests/unit/out/refcount/foreach_map.rs @@ -15,7 +15,7 @@ fn main_0() -> i32 { let mut i: i32 = 0; let mut k: i32 = 100; 'loop_: while (i < 100) { - (m.as_pointer() as Ptr, Value)>>) + m.as_pointer() .with_mut(|__m: &mut Map, Value)>| { __m.get_or_insert_with(i.clone(), || { ( @@ -35,18 +35,18 @@ fn main_0() -> i32 { } let mut sum: f64 = 0_f64; 'loop_: for i in IterRange::new( - (m.as_pointer() as Ptr, Value)>>) + m.as_pointer() .with(|__m: &Map, Value)>| __m.begin()), - (m.as_pointer() as Ptr, Value)>>) + m.as_pointer() .with(|__m: &Map, Value)>| __m.end()), ) { let i: Ptr<(Value, Value)> = i.iter_deref(); sum += (*(*i.upgrade().deref()).1.borrow()); } 'loop_: for i in IterRange::new( - (m.as_pointer() as Ptr, Value)>>) + m.as_pointer() .with(|__m: &Map, Value)>| __m.begin()), - (m.as_pointer() as Ptr, Value)>>) + m.as_pointer() .with(|__m: &Map, Value)>| __m.end()), ) { let i: Value<(Value, Value)> = Rc::new(RefCell::new(( @@ -61,9 +61,9 @@ fn main_0() -> i32 { } assert!((sum == 7475_f64)); 'loop_: for i in IterRange::new( - (m.as_pointer() as Ptr, Value)>>) + m.as_pointer() .with(|__m: &Map, Value)>| __m.begin()), - (m.as_pointer() as Ptr, Value)>>) + m.as_pointer() .with(|__m: &Map, Value)>| __m.end()), ) { let i: Value<(Value, Value)> = Rc::new(RefCell::new(( @@ -78,9 +78,9 @@ fn main_0() -> i32 { assert!(((*(*i.borrow()).1.borrow()) == (-1_i32 as f64))); } 'loop_: for i in IterRange::new( - (m.as_pointer() as Ptr, Value)>>) + m.as_pointer() .with(|__m: &Map, Value)>| __m.begin()), - (m.as_pointer() as Ptr, Value)>>) + m.as_pointer() .with(|__m: &Map, Value)>| __m.end()), ) { let i: Ptr<(Value, Value)> = i.iter_deref(); diff --git a/tests/unit/out/refcount/foreach_mut.rs b/tests/unit/out/refcount/foreach_mut.rs index fe4209aab..bc30288a0 100644 --- a/tests/unit/out/refcount/foreach_mut.rs +++ b/tests/unit/out/refcount/foreach_mut.rs @@ -26,22 +26,22 @@ fn main_0() -> i32 { }; let mut sum: i32 = 0; 'loop_: for x in IterRange::new( - (v1.as_pointer() as Ptr>).decay().begin(), - (v1.as_pointer() as Ptr>).decay().end(), + v1.as_pointer().decay().begin(), + v1.as_pointer().decay().end(), ) { let mut x: i32 = (x.iter_deref().read()); sum += x.prefix_inc(); } 'loop_: for x in IterRange::new( - (v1.as_pointer() as Ptr>).decay().begin(), - (v1.as_pointer() as Ptr>).decay().end(), + v1.as_pointer().decay().begin(), + v1.as_pointer().decay().end(), ) { let mut x: i32 = (x.iter_deref().read()); sum += x; } 'loop_: for x in IterRange::new( - (v1.as_pointer() as Ptr>).decay().begin(), - (v1.as_pointer() as Ptr>).decay().end(), + v1.as_pointer().decay().begin(), + v1.as_pointer().decay().end(), ) { let x: Ptr = x.iter_deref(); { @@ -49,28 +49,28 @@ fn main_0() -> i32 { }; } 'loop_: for x in IterRange::new( - (v1.as_pointer() as Ptr>).decay().begin(), - (v1.as_pointer() as Ptr>).decay().end(), + v1.as_pointer().decay().begin(), + v1.as_pointer().decay().end(), ) { let x: Ptr = x.iter_deref(); sum += { (x.read()) }; } let v2: Value>> = Rc::new(RefCell::new(Vec::new())); { - let __a1 = ((v1.as_pointer() as Ptr).offset(0_usize)); + let __a1 = (v1.as_pointer().decay().offset(0_usize)); (*v2.borrow_mut()).push(__a1) }; { - let __a1 = ((v1.as_pointer() as Ptr).offset(1_usize)); + let __a1 = (v1.as_pointer().decay().offset(1_usize)); (*v2.borrow_mut()).push(__a1) }; { - let __a1 = ((v1.as_pointer() as Ptr).offset(2_usize)); + let __a1 = (v1.as_pointer().decay().offset(2_usize)); (*v2.borrow_mut()).push(__a1) }; 'loop_: for p in IterRange::new( - (v2.as_pointer() as Ptr>>).decay().begin(), - (v2.as_pointer() as Ptr>>).decay().end(), + v2.as_pointer().decay().begin(), + v2.as_pointer().decay().end(), ) { let mut p: Ptr = (p.iter_deref().read()); { @@ -78,15 +78,15 @@ fn main_0() -> i32 { }; } 'loop_: for p in IterRange::new( - (v2.as_pointer() as Ptr>>).decay().begin(), - (v2.as_pointer() as Ptr>>).decay().end(), + v2.as_pointer().decay().begin(), + v2.as_pointer().decay().end(), ) { let mut p: Ptr = (p.iter_deref().read()); sum += { (p.read()) }; } 'loop_: for p in IterRange::new( - (v2.as_pointer() as Ptr>>).decay().begin(), - (v2.as_pointer() as Ptr>>).decay().end(), + v2.as_pointer().decay().begin(), + v2.as_pointer().decay().end(), ) { let mut p: Ptr = (p.iter_deref().read()); { @@ -94,8 +94,8 @@ fn main_0() -> i32 { }; } 'loop_: for p in IterRange::new( - (v2.as_pointer() as Ptr>>).decay().begin(), - (v2.as_pointer() as Ptr>>).decay().end(), + v2.as_pointer().decay().begin(), + v2.as_pointer().decay().end(), ) { let mut p: Ptr = (p.iter_deref().read()); sum += { (p.read()) }; diff --git a/tests/unit/out/refcount/huffman.rs b/tests/unit/out/refcount/huffman.rs index 92ba55003..8ba642d07 100644 --- a/tests/unit/out/refcount/huffman.rs +++ b/tests/unit/out/refcount/huffman.rs @@ -439,12 +439,12 @@ impl MinHeapImpl for Ptr { fn move_assign(&self, _a0: Ptr) -> Ptr { field!((*self), size).write({ { (*_a0.upgrade().deref()).size } }); field!((*self), capacity).write({ { (*_a0.upgrade().deref()).capacity } }); - (field_ptr!((*self), arr) as Ptr]>>>>).write( + field_ptr!((*self), arr).write( field!(_a0, arr) .with_mut(|__v: &mut Option]>>>| __v.take()), ); field!((*self), next).write({ { (*_a0.upgrade().deref()).next } }); - (field_ptr!((*self), alloc) as Ptr>>>).write( + field_ptr!((*self), alloc).write( field!(_a0, alloc).with_mut(|__v: &mut Option>>| __v.take()), ); return (*self).clone(); diff --git a/tests/unit/out/refcount/implicit_autoref.rs b/tests/unit/out/refcount/implicit_autoref.rs index 22b3a4a95..6865f2549 100644 --- a/tests/unit/out/refcount/implicit_autoref.rs +++ b/tests/unit/out/refcount/implicit_autoref.rs @@ -49,13 +49,7 @@ fn main_0() -> i32 { assert!(((index!(p, 1_usize).read()) == 30)); assert!((b == 40)); assert!(((vec_elem!((hp), v, 1_usize).read()) == 60)); - ({ - write_through_0( - (((p).clone() as Ptr>) - .decay() - .offset(0_usize as isize)), - ) - }); + ({ write_through_0(((p).clone().decay().offset(0_usize as isize))) }); assert!(((index!(p, 0_usize).read()) == 42)); return 0; } diff --git a/tests/unit/out/refcount/inet_pton_ntop.rs b/tests/unit/out/refcount/inet_pton_ntop.rs index b8ca2ddcb..f62541cec 100644 --- a/tests/unit/out/refcount/inet_pton_ntop.rs +++ b/tests/unit/out/refcount/inet_pton_ntop.rs @@ -14,16 +14,16 @@ pub fn test_s6_addr_access_0() { let addr: Value = Rc::new(RefCell::new(Default::default())); let mut ap: Ptr = (addr.as_pointer()); { - ((In6Addr::s6_addr((addr.as_pointer() as Ptr)) as Ptr) as Ptr) + ((In6Addr::s6_addr(addr.as_pointer()) as Ptr) as Ptr) .to_any() .memcpy( &((loopback.as_pointer() as Ptr) as Ptr).to_any(), 16_usize as usize, ); - ((In6Addr::s6_addr((addr.as_pointer() as Ptr)) as Ptr) as Ptr).to_any() + ((In6Addr::s6_addr(addr.as_pointer()) as Ptr) as Ptr).to_any() }; assert!( - (((((In6Addr::s6_addr(((ap).clone() as Ptr)) as Ptr::) as Ptr) + (((((In6Addr::s6_addr((ap).clone()) as Ptr::) as Ptr) .to_any() .memcmp( &((loopback.as_pointer() as Ptr::) as Ptr).to_any(), @@ -32,93 +32,50 @@ pub fn test_s6_addr_access_0() { == 0) as i32) != 0) ); - elem!( - (In6Addr::s6_addr((addr.as_pointer() as Ptr)) as Ptr::), - 0 - ) - .write(32_u8); - elem!( - (In6Addr::s6_addr(((ap).clone() as Ptr)) as Ptr::), - 1 - ) - .write(1_u8); + elem!((In6Addr::s6_addr(addr.as_pointer()) as Ptr::), 0).write(32_u8); + elem!((In6Addr::s6_addr((ap).clone()) as Ptr::), 1).write(1_u8); assert!( - ((((((((elem!( - (In6Addr::s6_addr((addr.as_pointer() as Ptr)) as Ptr::), - 0 - ) - .read()) as i32) - == 32) as i32) + ((((((((elem!((In6Addr::s6_addr(addr.as_pointer()) as Ptr::), 0).read()) as i32) == 32) + as i32) != 0) - && (((((elem!( - (In6Addr::s6_addr(((ap).clone() as Ptr)) as Ptr::), - 1 - ) - .read()) as i32) - == 1) as i32) + && (((((elem!((In6Addr::s6_addr((ap).clone()) as Ptr::), 1).read()) as i32) == 1) + as i32) != 0)) as i32) != 0) ); - elem!( - (In6Addr::s6_addr((addr.as_pointer() as Ptr)) as Ptr::), - 15 - ) - .write({ - (((elem!( - (In6Addr::s6_addr((addr.as_pointer() as Ptr)) as Ptr::), - 15 - ) - .read()) as i32) - + 4) as u8 + elem!((In6Addr::s6_addr(addr.as_pointer()) as Ptr::), 15).write({ + (((elem!((In6Addr::s6_addr(addr.as_pointer()) as Ptr::), 15).read()) as i32) + 4) as u8 }); - elem!( - (In6Addr::s6_addr(((ap).clone() as Ptr)) as Ptr::), - 15 - ) - .with_mut(|__v| __v.postfix_inc()); + elem!((In6Addr::s6_addr((ap).clone()) as Ptr::), 15).with_mut(|__v| __v.postfix_inc()); assert!( - (((((elem!( - (In6Addr::s6_addr((addr.as_pointer() as Ptr)) as Ptr::), - 15 - ) - .read()) as i32) - == 6) as i32) + (((((elem!((In6Addr::s6_addr(addr.as_pointer()) as Ptr::), 15).read()) as i32) == 6) + as i32) != 0) ); - let mut bytes: Ptr = (In6Addr::s6_addr((addr.as_pointer() as Ptr)) as Ptr); + let mut bytes: Ptr = (In6Addr::s6_addr(addr.as_pointer()) as Ptr); elem!(bytes, 2).write(7_u8); assert!( - (((((elem!( - (In6Addr::s6_addr(((ap).clone() as Ptr)) as Ptr::), - 2 - ) - .read()) as i32) - == 7) as i32) + (((((elem!((In6Addr::s6_addr((ap).clone()) as Ptr::), 2).read()) as i32) == 7) as i32) != 0) ); - let mut fourth: Ptr = - ((In6Addr::s6_addr(((ap).clone() as Ptr)) as Ptr).offset((3) as isize)); + let mut fourth: Ptr = ((In6Addr::s6_addr((ap).clone()) as Ptr).offset((3) as isize)); fourth.write(8_u8); assert!( - (((((elem!( - (In6Addr::s6_addr((addr.as_pointer() as Ptr)) as Ptr::), - 3 - ) - .read()) as i32) - == 8) as i32) + (((((elem!((In6Addr::s6_addr(addr.as_pointer()) as Ptr::), 3).read()) as i32) == 8) + as i32) != 0) ); { - ((In6Addr::s6_addr(((ap).clone() as Ptr)) as Ptr) as Ptr) + ((In6Addr::s6_addr((ap).clone()) as Ptr) as Ptr) .to_any() .memcpy( &((loopback.as_pointer() as Ptr) as Ptr).to_any(), 16_usize as usize, ); - ((In6Addr::s6_addr(((ap).clone() as Ptr)) as Ptr) as Ptr).to_any() + ((In6Addr::s6_addr((ap).clone()) as Ptr) as Ptr).to_any() }; assert!( - (((((In6Addr::s6_addr((addr.as_pointer() as Ptr)) as Ptr::) as Ptr) + (((((In6Addr::s6_addr(addr.as_pointer()) as Ptr::) as Ptr) .to_any() .memcmp( &((loopback.as_pointer() as Ptr::) as Ptr).to_any(), diff --git a/tests/unit/out/refcount/inline_container_fields.rs b/tests/unit/out/refcount/inline_container_fields.rs index b94ff34a9..2d589974b 100644 --- a/tests/unit/out/refcount/inline_container_fields.rs +++ b/tests/unit/out/refcount/inline_container_fields.rs @@ -123,12 +123,17 @@ fn main_0() -> i32 { }) == 12) ); assert!(((vec_elem!(s.as_pointer(), arr, 1_usize).read()) == 7)); - let mut e: Ptr = - ((field_ref!(s.as_pointer(), elems).as_pointer() as Ptr).offset(2_usize)); + let mut e: Ptr = (field_ref!(s.as_pointer(), elems) + .as_pointer() + .decay() + .offset(2_usize)); let mut h: Ptr = (array_field_ptr!(e, hist) as Ptr); - let mut c: Ptr = ((field_ref!(e, coeffs).as_pointer() as Ptr).offset(1_usize)); + let mut c: Ptr = (field_ref!(e, coeffs).as_pointer().decay().offset(1_usize)); let mut id: Ptr = (field_ptr!( - (field_ref!(s.as_pointer(), elems).as_pointer() as Ptr).offset(1_usize), + field_ref!(s.as_pointer(), elems) + .as_pointer() + .decay() + .offset(1_usize), id )); let mut k: i32 = 0; @@ -146,7 +151,10 @@ fn main_0() -> i32 { (({ sum_0( (array_field_ptr!( - (field_ref!(s.as_pointer(), elems).as_pointer() as Ptr).offset(2_usize), + field_ref!(s.as_pointer(), elems) + .as_pointer() + .decay() + .offset(2_usize), hist ) as Ptr), 4, @@ -163,15 +171,20 @@ fn main_0() -> i32 { (vec_elem!(s.as_pointer(), elems, 1_usize).with(|__s| __s.id) == 11) && ({ h.offset((3) as isize) } == { ((array_field_ptr!( - (field_ref!(s.as_pointer(), elems).as_pointer() as Ptr).offset(2_usize), + field_ref!(s.as_pointer(), elems) + .as_pointer() + .decay() + .offset(2_usize), hist ) as Ptr) .offset((3) as isize)) }) ); - let mut row: Ptr = (((field_ref!(s.as_pointer(), rows).as_pointer() as Ptr>) + let mut row: Ptr = (field_ref!(s.as_pointer(), rows) + .as_pointer() + .decay() .offset(0_usize) - .as_pointer() as Ptr) + .as_pointer() .offset(0_usize)); elem!(row, 2).write(9); assert!(((index!(vec_elem!(s.as_pointer(), rows, 0_usize), 2_usize).read()) == 9)); diff --git a/tests/unit/out/refcount/iterator_freshness.rs b/tests/unit/out/refcount/iterator_freshness.rs index f0c0544f0..3c09ad6da 100644 --- a/tests/unit/out/refcount/iterator_freshness.rs +++ b/tests/unit/out/refcount/iterator_freshness.rs @@ -19,9 +19,8 @@ fn main_0() -> i32 { .map(|_| ::default()) .collect::>(), )); - let it: Value> = Rc::new(RefCell::new( - (vec_.as_pointer() as Ptr>).decay().begin(), - )); + let it: Value> = + Rc::new(RefCell::new(vec_.as_pointer().decay().begin())); ({ foo_0((*it.borrow()).clone()) }); return 0; } diff --git a/tests/unit/out/refcount/iterators.rs b/tests/unit/out/refcount/iterators.rs index 3a1622d17..206cb3afc 100644 --- a/tests/unit/out/refcount/iterators.rs +++ b/tests/unit/out/refcount/iterators.rs @@ -17,22 +17,22 @@ fn main_0() -> i32 { __bytes })); 'loop_: for c in IterRange::new( - RandomAccessIterator::Vec((x.as_pointer() as Ptr>).decay()), - RandomAccessIterator::Vec((x.as_pointer() as Ptr>).decay().to_last()), + RandomAccessIterator::Vec(x.as_pointer().decay()), + RandomAccessIterator::Vec(x.as_pointer().decay().to_last()), ) { let c: Ptr = c.iter_deref(); c.with_mut(|__v| __v.prefix_inc()); } 'loop_: for c in IterRange::new( - RandomAccessIterator::Vec((x.as_pointer() as Ptr>).decay()), - RandomAccessIterator::Vec((x.as_pointer() as Ptr>).decay().to_last()), + RandomAccessIterator::Vec(x.as_pointer().decay()), + RandomAccessIterator::Vec(x.as_pointer().decay().to_last()), ) { let c: Ptr = c.iter_deref(); println!("{}", ((c.read()) as i32) as u8 as char); } 'loop_: for c in IterRange::new( - RandomAccessIterator::Vec((x.as_pointer() as Ptr>).decay()), - RandomAccessIterator::Vec((x.as_pointer() as Ptr>).decay().to_last()), + RandomAccessIterator::Vec(x.as_pointer().decay()), + RandomAccessIterator::Vec(x.as_pointer().decay().to_last()), ) { let mut c: i8 = (c.iter_deref().read()); println!("{}", (c as i32) as u8 as char); @@ -46,10 +46,7 @@ fn main_0() -> i32 { let __a1 = Ptr::alloc(3); (*v.borrow_mut()).push(__a1) }; - 'loop_: for p in IterRange::new( - (v.as_pointer() as Ptr>>).decay().begin(), - (v.as_pointer() as Ptr>>).decay().end(), - ) { + 'loop_: for p in IterRange::new(v.as_pointer().decay().begin(), v.as_pointer().decay().end()) { let mut p: Ptr = (p.iter_deref().read()); println!("{}", (p.read())); } diff --git a/tests/unit/out/refcount/kruskal.rs b/tests/unit/out/refcount/kruskal.rs index 1c5aebeaf..9c9339f6f 100644 --- a/tests/unit/out/refcount/kruskal.rs +++ b/tests/unit/out/refcount/kruskal.rs @@ -364,9 +364,9 @@ impl DisjointSetImpl for Ptr { } } fn move_assign(&self, _a0: Ptr) -> Ptr { - (field_ptr!((*self), rank) as Ptr>>>) + field_ptr!((*self), rank) .write(field!(_a0, rank).with_mut(|__v: &mut Option>>| __v.take())); - (field_ptr!((*self), parent) as Ptr>>>) + field_ptr!((*self), parent) .write(field!(_a0, parent).with_mut(|__v: &mut Option>>| __v.take())); field!((*self), n).write({ { (*_a0.upgrade().deref()).n } }); return (*self).clone(); @@ -377,7 +377,7 @@ pub trait GraphImpl { } impl GraphImpl for Ptr { fn move_assign(&self, _a0: Ptr) -> Ptr { - (field_ptr!((*self), edges) as Ptr>>>) + field_ptr!((*self), edges) .write(field!(_a0, edges).with_mut(|__v: &mut Option>>| __v.take())); field!((*self), V).write({ { (*_a0.upgrade().deref()).V } }); field!((*self), E).write({ { (*_a0.upgrade().deref()).E } }); diff --git a/tests/unit/out/refcount/map-reallocation.rs b/tests/unit/out/refcount/map-reallocation.rs index 5f407c2bd..eb1468d1c 100644 --- a/tests/unit/out/refcount/map-reallocation.rs +++ b/tests/unit/out/refcount/map-reallocation.rs @@ -15,7 +15,7 @@ fn main_0() -> i32 { let mut sentinel: i32 = (N / 2); let m: Value, Value)>> = Rc::new(RefCell::new(Map::new())); let __rhs = sentinel; - (m.as_pointer() as Ptr, Value)>>) + m.as_pointer() .with_mut(|__m: &mut Map, Value)>| { __m.get_or_insert_with(sentinel.clone(), || { ( @@ -29,7 +29,7 @@ fn main_0() -> i32 { }) .write(__rhs); let it: Value, Value)>> = Rc::new(RefCell::new( - (m.as_pointer() as Ptr, Value)>>) + m.as_pointer() .with(|__m: &Map, Value)>| __m.find(&sentinel)), )); let mut p: Ptr = ((*(*it.borrow()).iter_deref().upgrade().deref()) @@ -52,7 +52,7 @@ fn main_0() -> i32 { let mut i: i32 = 0; 'loop_: while (i < sentinel) { let __rhs = i; - (m.as_pointer() as Ptr, Value)>>) + m.as_pointer() .with_mut(|__m: &mut Map, Value)>| { __m.get_or_insert_with(i.clone(), || { ( @@ -70,7 +70,7 @@ fn main_0() -> i32 { let mut i: i32 = (sentinel + 1); 'loop_: while (i <= N) { let __rhs = i; - (m.as_pointer() as Ptr, Value)>>) + m.as_pointer() .with_mut(|__m: &mut Map, Value)>| { __m.get_or_insert_with(i.clone(), || { ( @@ -110,7 +110,7 @@ fn main_0() -> i32 { .1 .borrow_mut()) = 57005; assert!( - (((m.as_pointer() as Ptr, Value)>>) + ((m.as_pointer() .with_mut(|__m: &mut Map, Value)>| { __m.get_or_insert_with(sentinel.clone(), || { ( @@ -129,9 +129,9 @@ fn main_0() -> i32 { assert!(((*m.borrow()).len() == (((N + 1) as u32) as usize))); let mut prev: i32 = -1_i32; 'loop_: for pair in IterRange::new( - (m.as_pointer() as Ptr, Value)>>) + m.as_pointer() .with(|__m: &Map, Value)>| __m.begin()), - (m.as_pointer() as Ptr, Value)>>) + m.as_pointer() .with(|__m: &Map, Value)>| __m.end()), ) { let pair: Ptr<(Value, Value)> = pair.iter_deref(); diff --git a/tests/unit/out/refcount/map.rs b/tests/unit/out/refcount/map.rs index 490a32f41..fae8aff22 100644 --- a/tests/unit/out/refcount/map.rs +++ b/tests/unit/out/refcount/map.rs @@ -18,7 +18,7 @@ pub fn main() { } fn main_0() -> i32 { let m: Value, Value)>> = Rc::new(RefCell::new(Map::new())); - (m.as_pointer() as Ptr, Value)>>) + m.as_pointer() .with_mut(|__m: &mut Map, Value)>| { __m.get_or_insert_with(0_i16.clone(), || { ( @@ -31,7 +31,7 @@ fn main_0() -> i32 { .as_pointer() }) .write(1_u32); - (m.as_pointer() as Ptr, Value)>>) + m.as_pointer() .with_mut(|__m: &mut Map, Value)>| { __m.get_or_insert_with(1_i16.clone(), || { ( @@ -44,7 +44,7 @@ fn main_0() -> i32 { .as_pointer() }) .write(2_u32); - (m.as_pointer() as Ptr, Value)>>) + m.as_pointer() .with_mut(|__m: &mut Map, Value)>| { __m.get_or_insert_with(2_i16.clone(), || { ( @@ -59,7 +59,7 @@ fn main_0() -> i32 { .write(3_u32); assert!(((*m.borrow()).len() == 3_usize)); assert!( - (((m.as_pointer() as Ptr, Value)>>) + ((m.as_pointer() .with_mut(|__m: &mut Map, Value)>| { __m.get_or_insert_with(0_i16.clone(), || { ( @@ -75,7 +75,7 @@ fn main_0() -> i32 { == 1_u32) ); assert!( - (((m.as_pointer() as Ptr, Value)>>) + ((m.as_pointer() .with_mut(|__m: &mut Map, Value)>| { __m.get_or_insert_with(1_i16.clone(), || { ( @@ -91,7 +91,7 @@ fn main_0() -> i32 { == 2_u32) ); assert!( - (((m.as_pointer() as Ptr, Value)>>) + ((m.as_pointer() .with_mut(|__m: &mut Map, Value)>| { __m.get_or_insert_with(2_i16.clone(), || { ( @@ -107,7 +107,7 @@ fn main_0() -> i32 { == 3_u32) ); let mut x: i32 = 4; - (m.as_pointer() as Ptr, Value)>>) + m.as_pointer() .with_mut(|__m: &mut Map, Value)>| { __m.get_or_insert_with(1_i16.clone(), || { ( @@ -122,7 +122,7 @@ fn main_0() -> i32 { .write((x as u32)); assert!(((*m.borrow()).len() == 3_usize)); assert!( - (((m.as_pointer() as Ptr, Value)>>) + ((m.as_pointer() .with_mut(|__m: &mut Map, Value)>| { __m.get_or_insert_with(0_i16.clone(), || { ( @@ -138,7 +138,7 @@ fn main_0() -> i32 { == 1_u32) ); assert!( - (((m.as_pointer() as Ptr, Value)>>) + ((m.as_pointer() .with_mut(|__m: &mut Map, Value)>| { __m.get_or_insert_with(1_i16.clone(), || { ( @@ -154,7 +154,7 @@ fn main_0() -> i32 { == 4_u32) ); assert!( - (((m.as_pointer() as Ptr, Value)>>) + ((m.as_pointer() .with_mut(|__m: &mut Map, Value)>| { __m.get_or_insert_with(2_i16.clone(), || { ( @@ -171,7 +171,7 @@ fn main_0() -> i32 { ); ({ foo_0( - ((m.as_pointer() as Ptr, Value)>>) + (m.as_pointer() .with_mut(|__m: &mut Map, Value)>| { __m.get_or_insert_with(0_i16.clone(), || { ( @@ -187,7 +187,7 @@ fn main_0() -> i32 { ) }); assert!( - (((m.as_pointer() as Ptr, Value)>>) + ((m.as_pointer() .with_mut(|__m: &mut Map, Value)>| { __m.get_or_insert_with(0_i16.clone(), || { ( @@ -204,8 +204,8 @@ fn main_0() -> i32 { ); ({ bar_1( - (m.as_pointer() as Ptr, Value)>>).with_mut( - |__m: &mut Map, Value)>| { + m.as_pointer() + .with_mut(|__m: &mut Map, Value)>| { __m.get_or_insert_with(2_i16.clone(), || { ( Rc::new(RefCell::new(2_i16)), @@ -215,12 +215,11 @@ fn main_0() -> i32 { .borrow() .1 .as_pointer() - }, - ), + }), ) }); assert!( - (((m.as_pointer() as Ptr, Value)>>) + ((m.as_pointer() .with_mut(|__m: &mut Map, Value)>| { __m.get_or_insert_with(2_i16.clone(), || { ( @@ -235,7 +234,8 @@ fn main_0() -> i32 { .read()) == 4_u32) ); - let __rhs = ((m.as_pointer() as Ptr, Value)>>) + let __rhs = (m + .as_pointer() .with_mut(|__m: &mut Map, Value)>| { __m.get_or_insert_with(0_i16.clone(), || { ( @@ -249,7 +249,7 @@ fn main_0() -> i32 { }) .read()) .wrapping_add( - ((m.as_pointer() as Ptr, Value)>>) + (m.as_pointer() .with_mut(|__m: &mut Map, Value)>| { __m.get_or_insert_with(2_i16.clone(), || { ( @@ -263,7 +263,7 @@ fn main_0() -> i32 { }) .read()), ); - (m.as_pointer() as Ptr, Value)>>) + m.as_pointer() .with_mut(|__m: &mut Map, Value)>| { __m.get_or_insert_with(0_i16.clone(), || { ( @@ -277,7 +277,7 @@ fn main_0() -> i32 { }) .write(__rhs); assert!( - (((m.as_pointer() as Ptr, Value)>>) + ((m.as_pointer() .with_mut(|__m: &mut Map, Value)>| { __m.get_or_insert_with(0_i16.clone(), || { ( @@ -293,16 +293,16 @@ fn main_0() -> i32 { == 5_u32) ); let end: Value, Value)>> = Rc::new(RefCell::new( - (m.as_pointer() as Ptr, Value)>>) + m.as_pointer() .with(|__m: &Map, Value)>| __m.end()), )); let it: Value, Value)>> = Rc::new(RefCell::new( - (m.as_pointer() as Ptr, Value)>>) + m.as_pointer() .with(|__m: &Map, Value)>| __m.find(&1_i16)), )); let const_it: Value, Value)>> = Rc::new(RefCell::new( , Value)>>::from( - (m.as_pointer() as Ptr, Value)>>) + m.as_pointer() .with(|__m: &Map, Value)>| __m.find(&10_i16)), ), )); @@ -323,7 +323,7 @@ fn main_0() -> i32 { }; assert!((x2 == 0_u32)); let mut x3: u32 = if (*it.borrow()) - == (m.as_pointer() as Ptr, Value)>>) + == m.as_pointer() .with(|__m: &Map, Value)>| __m.end()) { 0_u32 @@ -333,7 +333,7 @@ fn main_0() -> i32 { assert!((x3 == 4_u32)); let mut x4: u32 = if (*const_it.borrow()) == , Value)>>::from( - (m.as_pointer() as Ptr, Value)>>) + m.as_pointer() .with(|__m: &Map, Value)>| __m.end()), ) { 0_u32 @@ -343,7 +343,7 @@ fn main_0() -> i32 { .borrow()) }; assert!((x4 == 0_u32)); - (m.as_pointer() as Ptr, Value)>>) + m.as_pointer() .with_mut(|__m: &mut Map, Value)>| { __m.get_or_insert_with(4_i16.clone(), || { ( @@ -357,7 +357,7 @@ fn main_0() -> i32 { }) .write(5_u32); let it4: Value, Value)>> = Rc::new(RefCell::new( - (m.as_pointer() as Ptr, Value)>>) + m.as_pointer() .with(|__m: &Map, Value)>| __m.find(&4_i16)), )); let mut p: Ptr = ((*(*it4.borrow()).iter_deref().upgrade().deref()) @@ -365,7 +365,7 @@ fn main_0() -> i32 { .as_pointer()); let mut x5: u32 = (p.read()); assert!( - (((m.as_pointer() as Ptr, Value)>>) + ((m.as_pointer() .with_mut(|__m: &mut Map, Value)>| { __m.get_or_insert_with(4_i16.clone(), || { ( @@ -385,7 +385,7 @@ fn main_0() -> i32 { assert!((x5 == 5_u32)); p.with_mut(|__v| __v.prefix_inc()); assert!( - (((m.as_pointer() as Ptr, Value)>>) + ((m.as_pointer() .with_mut(|__m: &mut Map, Value)>| { __m.get_or_insert_with(4_i16.clone(), || { ( @@ -405,7 +405,7 @@ fn main_0() -> i32 { assert!((x5 == 5_u32)); let const_it4: Value, Value)>> = Rc::new(RefCell::new( , Value)>>::from( - (m.as_pointer() as Ptr, Value)>>) + m.as_pointer() .with(|__m: &Map, Value)>| __m.find(&4_i16)), ), )); @@ -418,22 +418,23 @@ fn main_0() -> i32 { let r: Ptr, Value)>> = m.as_pointer(); assert!(((*r.upgrade().deref()).len() == 4_usize)); assert!( - (m.as_pointer() as Ptr, Value)>>) + m.as_pointer() .with(|__m: &Map, Value)>| __m.find(&4_i16)) - != (m.as_pointer() as Ptr, Value)>>) + != m.as_pointer() .with(|__m: &Map, Value)>| __m.end()) ); - ((r).clone() as Ptr, Value)>>).with_mut( - |__m: &mut Map, Value)>| __m.erase(&(*it4.borrow()).clone()), - ); + (r).clone() + .with_mut(|__m: &mut Map, Value)>| { + __m.erase(&(*it4.borrow()).clone()) + }); assert!(((*r.upgrade().deref()).len() == 3_usize)); assert!( - (m.as_pointer() as Ptr, Value)>>) + m.as_pointer() .with(|__m: &Map, Value)>| __m.find(&4_i16)) - == (m.as_pointer() as Ptr, Value)>>) + == m.as_pointer() .with(|__m: &Map, Value)>| __m.end()) ); - (m.as_pointer() as Ptr, Value)>>) + m.as_pointer() .with_mut(|__m: &mut Map, Value)>| { __m.get_or_insert_with(7_i16.clone(), || { ( @@ -446,7 +447,7 @@ fn main_0() -> i32 { .as_pointer() }) .write(7_u32); - (m.as_pointer() as Ptr, Value)>>) + m.as_pointer() .with_mut(|__m: &mut Map, Value)>| { __m.get_or_insert_with(8_i16.clone(), || { ( @@ -459,7 +460,7 @@ fn main_0() -> i32 { .as_pointer() }) .write(8_u32); - (m.as_pointer() as Ptr, Value)>>) + m.as_pointer() .with_mut(|__m: &mut Map, Value)>| { __m.get_or_insert_with(9_i16.clone(), || { ( @@ -474,46 +475,47 @@ fn main_0() -> i32 { .write(9_u32); assert!(((*r.upgrade().deref()).len() == 6_usize)); assert!( - ((m.as_pointer() as Ptr, Value)>>) + (m.as_pointer() .with_mut(|__m: &mut Map, Value)>| __m.erase_key(&10_i16)) == 0_usize) ); let mut key9: i32 = 9; assert!( - ((m.as_pointer() as Ptr, Value)>>) + (m.as_pointer() .with_mut(|__m: &mut Map, Value)>| __m.erase_key(&(key9 as i16))) == 1_usize) ); assert!(((*r.upgrade().deref()).len() == 5_usize)); let cit: Value, Value)>> = Rc::new(RefCell::new( , Value)>>::from( - (m.as_pointer() as Ptr, Value)>>) + m.as_pointer() .with(|__m: &Map, Value)>| __m.find(&7_i16)), ), )); - let next: Value, Value)>> = Rc::new(RefCell::new( - (m.as_pointer() as Ptr, Value)>>).with_mut( + let next: Value, Value)>> = + Rc::new(RefCell::new(m.as_pointer().with_mut( |__m: &mut Map, Value)>| __m.erase(&(*cit.borrow()).clone()), - ), - )); + ))); assert!( (*next.borrow()) - == (m.as_pointer() as Ptr, Value)>>) + == m.as_pointer() .with(|__m: &Map, Value)>| __m.find(&8_i16)) ); - (*next.borrow_mut()) = (m.as_pointer() as Ptr, Value)>>).with_mut( - |__m: &mut Map, Value)>| __m.erase(&(*next.borrow()).clone()), - ); + (*next.borrow_mut()) = + m.as_pointer() + .with_mut(|__m: &mut Map, Value)>| { + __m.erase(&(*next.borrow()).clone()) + }); assert!( (*next.borrow()) - == (m.as_pointer() as Ptr, Value)>>) + == m.as_pointer() .with(|__m: &Map, Value)>| __m.end()) ); assert!(((*r.upgrade().deref()).len() == 3_usize)); assert!( - (m.as_pointer() as Ptr, Value)>>) + m.as_pointer() .with(|__m: &Map, Value)>| __m.find(&8_i16)) - == (m.as_pointer() as Ptr, Value)>>) + == m.as_pointer() .with(|__m: &Map, Value)>| __m.end()) ); let other_map: Value< @@ -525,8 +527,8 @@ fn main_0() -> i32 { Rc::new(RefCell::new(1.try_into().expect("failed conversion"))), ))); let mut value: f64 = 2_f64; - (other_map.as_pointer() - as Ptr, Value), (Value<(Value, Value)>, Value)>>) + other_map + .as_pointer() .with_mut( |__m: &mut Map< (Value, Value), @@ -544,8 +546,8 @@ fn main_0() -> i32 { }, ) .write(value); - value = ((other_map.as_pointer() - as Ptr, Value), (Value<(Value, Value)>, Value)>>) + value = (other_map + .as_pointer() .with_mut( |__m: &mut Map< (Value, Value), @@ -565,8 +567,8 @@ fn main_0() -> i32 { .read()); assert!(((*other_map.borrow()).len() == 1_usize)); assert!( - (((other_map.as_pointer() - as Ptr, Value), (Value<(Value, Value)>, Value)>>) + ((other_map + .as_pointer() .with_mut( |__m: &mut Map< (Value, Value), @@ -650,7 +652,7 @@ fn main_0() -> i32 { let mut i: u32 = 0_u32; 'loop_: while ((i as usize) < indexes.len()) { let __rhs = ((i).wrapping_rem(2_u32) != 0); - (m2.as_pointer() as Ptr, Value)>>) + m2.as_pointer() .with_mut(|__m: &mut Map, Value)>| { __m.get_or_insert_with(indexes[(i as usize)].clone(), || { ( @@ -668,9 +670,9 @@ fn main_0() -> i32 { assert!(((*m2.borrow()).len() == indexes.len())); let mut last: i32 = -1_i32; 'loop_: for pair in IterRange::new( - (m2.as_pointer() as Ptr, Value)>>) + m2.as_pointer() .with(|__m: &Map, Value)>| __m.begin()), - (m2.as_pointer() as Ptr, Value)>>) + m2.as_pointer() .with(|__m: &Map, Value)>| __m.end()), ) { let pair: Ptr<(Value, Value)> = pair.iter_deref(); diff --git a/tests/unit/out/refcount/map_copy.rs b/tests/unit/out/refcount/map_copy.rs index a67d174ea..a7d991eb7 100644 --- a/tests/unit/out/refcount/map_copy.rs +++ b/tests/unit/out/refcount/map_copy.rs @@ -12,7 +12,7 @@ pub fn main() { } fn main_0() -> i32 { let a: Value, Value)>> = Rc::new(RefCell::new(Map::new())); - (a.as_pointer() as Ptr, Value)>>) + a.as_pointer() .with_mut(|__m: &mut Map, Value)>| { __m.get_or_insert_with(1.clone(), || { ( @@ -26,7 +26,7 @@ fn main_0() -> i32 { }) .write(10); let b: Value, Value)>> = Rc::new(RefCell::new((*a.borrow()).clone())); - (b.as_pointer() as Ptr, Value)>>) + b.as_pointer() .with_mut(|__m: &mut Map, Value)>| { __m.get_or_insert_with(1.clone(), || { ( @@ -40,7 +40,7 @@ fn main_0() -> i32 { }) .write(20); assert!( - (((a.as_pointer() as Ptr, Value)>>) + ((a.as_pointer() .with_mut(|__m: &mut Map, Value)>| { __m.get_or_insert_with(1.clone(), || { ( @@ -56,7 +56,7 @@ fn main_0() -> i32 { == 10) ); let x: Value, Value)>> = Rc::new(RefCell::new(Map::new())); - (x.as_pointer() as Ptr, Value)>>) + x.as_pointer() .with_mut(|__m: &mut Map, Value)>| { __m.get_or_insert_with(2.clone(), || { ( @@ -70,7 +70,7 @@ fn main_0() -> i32 { }) .write(3); let y: Value, Value)>> = Rc::new(RefCell::new((*x.borrow()).clone())); - (y.as_pointer() as Ptr, Value)>>) + y.as_pointer() .with_mut(|__m: &mut Map, Value)>| { __m.get_or_insert_with(2.clone(), || { ( @@ -84,7 +84,7 @@ fn main_0() -> i32 { }) .write(4); assert!( - (((x.as_pointer() as Ptr, Value)>>) + ((x.as_pointer() .with_mut(|__m: &mut Map, Value)>| { __m.get_or_insert_with(2.clone(), || { ( diff --git a/tests/unit/out/refcount/map_key_identity.rs b/tests/unit/out/refcount/map_key_identity.rs index d6c75770b..f119e145a 100644 --- a/tests/unit/out/refcount/map_key_identity.rs +++ b/tests/unit/out/refcount/map_key_identity.rs @@ -124,44 +124,48 @@ fn main_0() -> i32 { ok = rhs_0 }; let distinct: Value, Value)>> = Rc::new(RefCell::new(Map::new())); - let a: Ptr = (distinct.as_pointer() as Ptr, Value)>>) - .with_mut(|__m: &mut Map, Value)>| { - __m.get_or_insert_with((*distinct_a.borrow()).clone(), || { - ( - Rc::new(RefCell::new((*distinct_a.borrow()).clone())), - Rc::new(RefCell::new(::default())), - ) - }) - .borrow() - .1 + let a: Ptr = + distinct .as_pointer() - }); + .with_mut(|__m: &mut Map, Value)>| { + __m.get_or_insert_with((*distinct_a.borrow()).clone(), || { + ( + Rc::new(RefCell::new((*distinct_a.borrow()).clone())), + Rc::new(RefCell::new(::default())), + ) + }) + .borrow() + .1 + .as_pointer() + }); field!(a, value).write(11); - let a_it: Value, Value)>> = Rc::new(RefCell::new( - (distinct.as_pointer() as Ptr, Value)>>) - .with(|__m: &Map, Value)>| __m.find(&(*distinct_a.borrow()))), - )); + let a_it: Value, Value)>> = + Rc::new(RefCell::new(distinct.as_pointer().with( + |__m: &Map, Value)>| __m.find(&(*distinct_a.borrow())), + ))); let mut a_value: Ptr = ((*(*a_it.borrow()).iter_deref().upgrade().deref()) .1 .as_pointer()); ok = { ((ok as i32) & ((default_constructions_0.with(|rc| *rc.borrow()) == 1) as i32)) != 0 }; - let b: Ptr = (distinct.as_pointer() as Ptr, Value)>>) - .with_mut(|__m: &mut Map, Value)>| { - __m.get_or_insert_with((*distinct_b.borrow()).clone(), || { - ( - Rc::new(RefCell::new((*distinct_b.borrow()).clone())), - Rc::new(RefCell::new(::default())), - ) - }) - .borrow() - .1 + let b: Ptr = + distinct .as_pointer() - }); + .with_mut(|__m: &mut Map, Value)>| { + __m.get_or_insert_with((*distinct_b.borrow()).clone(), || { + ( + Rc::new(RefCell::new((*distinct_b.borrow()).clone())), + Rc::new(RefCell::new(::default())), + ) + }) + .borrow() + .1 + .as_pointer() + }); field!(b, value).write(22); - let b_it: Value, Value)>> = Rc::new(RefCell::new( - (distinct.as_pointer() as Ptr, Value)>>) - .with(|__m: &Map, Value)>| __m.find(&(*distinct_b.borrow()))), - )); + let b_it: Value, Value)>> = + Rc::new(RefCell::new(distinct.as_pointer().with( + |__m: &Map, Value)>| __m.find(&(*distinct_b.borrow())), + ))); ok = { ((ok as i32) & ((default_constructions_0.with(|rc| *rc.borrow()) == 2) as i32)) != 0 }; { let rhs_0 = ((ok as i32) & (((*distinct.borrow()).len() == 2_usize) as i32)) != 0; @@ -176,25 +180,30 @@ fn main_0() -> i32 { { let rhs_0 = ((ok as i32) & (((*a_it.borrow()) - == (distinct.as_pointer() as Ptr, Value)>>).with( - |__m: &Map, Value)>| __m.find(&(*distinct_a.borrow())), - )) as i32)) + == distinct + .as_pointer() + .with(|__m: &Map, Value)>| { + __m.find(&(*distinct_a.borrow())) + })) as i32)) != 0; ok = rhs_0 }; { let rhs_0 = ((ok as i32) & (((*b_it.borrow()) - == (distinct.as_pointer() as Ptr, Value)>>).with( - |__m: &Map, Value)>| __m.find(&(*distinct_b.borrow())), - )) as i32)) + == distinct + .as_pointer() + .with(|__m: &Map, Value)>| { + __m.find(&(*distinct_b.borrow())) + })) as i32)) != 0; ok = rhs_0 }; { let rhs_0 = ((ok as i32) & (((*b_it.borrow()) - != (distinct.as_pointer() as Ptr, Value)>>) + != distinct + .as_pointer() .with(|__m: &Map, Value)>| __m.end())) as i32)) != 0; @@ -230,9 +239,11 @@ fn main_0() -> i32 { }; let mut distinct_count: usize = 0_usize; 'loop_: for entry in IterRange::new( - (distinct.as_pointer() as Ptr, Value)>>) + distinct + .as_pointer() .with(|__m: &Map, Value)>| __m.begin()), - (distinct.as_pointer() as Ptr, Value)>>) + distinct + .as_pointer() .with(|__m: &Map, Value)>| __m.end()), ) { let entry: Ptr<(Value, Value)> = entry.iter_deref(); @@ -276,26 +287,25 @@ fn main_0() -> i32 { let equivalent: Value, Value)>> = Rc::new(RefCell::new(Map::new())); let mut before_equivalent: i32 = default_constructions_0.with(|rc| *rc.borrow()); - let first: Ptr = (equivalent.as_pointer() - as Ptr, Value)>>) - .with_mut(|__m: &mut Map, Value)>| { - __m.get_or_insert_with((*equivalent_a.borrow()).clone(), || { - ( - Rc::new(RefCell::new((*equivalent_a.borrow()).clone())), - Rc::new(RefCell::new(::default())), - ) - }) - .borrow() - .1 + let first: Ptr = + equivalent .as_pointer() - }); + .with_mut(|__m: &mut Map, Value)>| { + __m.get_or_insert_with((*equivalent_a.borrow()).clone(), || { + ( + Rc::new(RefCell::new((*equivalent_a.borrow()).clone())), + Rc::new(RefCell::new(::default())), + ) + }) + .borrow() + .1 + .as_pointer() + }); field!(first, value).write(31); let first_it: Value, Value)>> = - Rc::new(RefCell::new( - (equivalent.as_pointer() as Ptr, Value)>>).with( - |__m: &Map, Value)>| __m.find(&(*equivalent_a.borrow())), - ), - )); + Rc::new(RefCell::new(equivalent.as_pointer().with( + |__m: &Map, Value)>| __m.find(&(*equivalent_a.borrow())), + ))); let mut first_value: Ptr = ((*(*first_it.borrow()).iter_deref().upgrade().deref()) .1 .as_pointer()); @@ -304,19 +314,20 @@ fn main_0() -> i32 { & ((default_constructions_0.with(|rc| *rc.borrow()) == (before_equivalent + 1)) as i32)) != 0 }; - let second: Ptr = (equivalent.as_pointer() - as Ptr, Value)>>) - .with_mut(|__m: &mut Map, Value)>| { - __m.get_or_insert_with((*equivalent_b.borrow()).clone(), || { - ( - Rc::new(RefCell::new((*equivalent_b.borrow()).clone())), - Rc::new(RefCell::new(::default())), - ) - }) - .borrow() - .1 + let second: Ptr = + equivalent .as_pointer() - }); + .with_mut(|__m: &mut Map, Value)>| { + __m.get_or_insert_with((*equivalent_b.borrow()).clone(), || { + ( + Rc::new(RefCell::new((*equivalent_b.borrow()).clone())), + Rc::new(RefCell::new(::default())), + ) + }) + .borrow() + .1 + .as_pointer() + }); let mut reused: bool = (default_constructions_0.with(|rc| *rc.borrow()) == (before_equivalent + 1)); ok = { ((ok as i32) & (reused as i32)) != 0 }; @@ -328,7 +339,8 @@ fn main_0() -> i32 { { let rhs_0 = ((ok as i32) & (((*first_it.borrow()) - != (equivalent.as_pointer() as Ptr, Value)>>) + != equivalent + .as_pointer() .with(|__m: &Map, Value)>| __m.end())) as i32)) != 0; @@ -338,20 +350,22 @@ fn main_0() -> i32 { { let rhs_0 = ((ok as i32) & (((*first_it.borrow()) - == (equivalent.as_pointer() as Ptr, Value)>>) - .with(|__m: &Map, Value)>| { + == equivalent.as_pointer().with( + |__m: &Map, Value)>| { __m.find(&(*equivalent_a.borrow())) - })) as i32)) + }, + )) as i32)) != 0; ok = rhs_0 }; { let rhs_0 = ((ok as i32) & (((*first_it.borrow()) - == (equivalent.as_pointer() as Ptr, Value)>>) - .with(|__m: &Map, Value)>| { + == equivalent.as_pointer().with( + |__m: &Map, Value)>| { __m.find(&(*equivalent_b.borrow())) - })) as i32)) + }, + )) as i32)) != 0; ok = rhs_0 }; @@ -377,9 +391,11 @@ fn main_0() -> i32 { }; let mut equivalent_count: usize = 0_usize; 'loop_: for entry in IterRange::new( - (equivalent.as_pointer() as Ptr, Value)>>) + equivalent + .as_pointer() .with(|__m: &Map, Value)>| __m.begin()), - (equivalent.as_pointer() as Ptr, Value)>>) + equivalent + .as_pointer() .with(|__m: &Map, Value)>| __m.end()), ) { let entry: Ptr<(Value, Value)> = entry.iter_deref(); @@ -407,19 +423,20 @@ fn main_0() -> i32 { order: 4, identity: 10, }; - let later: Ptr = (equivalent.as_pointer() - as Ptr, Value)>>) - .with_mut(|__m: &mut Map, Value)>| { - __m.get_or_insert_with(later_key.clone(), || { - ( - Rc::new(RefCell::new((later_key).clone())), - Rc::new(RefCell::new(::default())), - ) - }) - .borrow() - .1 + let later: Ptr = + equivalent .as_pointer() - }); + .with_mut(|__m: &mut Map, Value)>| { + __m.get_or_insert_with(later_key.clone(), || { + ( + Rc::new(RefCell::new((later_key).clone())), + Rc::new(RefCell::new(::default())), + ) + }) + .borrow() + .1 + .as_pointer() + }); field!(later, value).write(41); ok = { ((ok as i32) @@ -434,10 +451,11 @@ fn main_0() -> i32 { { let rhs_0 = ((ok as i32) & (((*first_it.borrow()) - == (equivalent.as_pointer() as Ptr, Value)>>) - .with(|__m: &Map, Value)>| { + == equivalent.as_pointer().with( + |__m: &Map, Value)>| { __m.find(&(*equivalent_a.borrow())) - })) as i32)) + }, + )) as i32)) != 0; ok = rhs_0 }; @@ -475,25 +493,25 @@ fn main_0() -> i32 { }; let mut before_matching: i32 = default_constructions_0.with(|rc| *rc.borrow()); let matching: Value, Value)>> = Rc::new(RefCell::new(Map::new())); - let matched: Ptr = (matching.as_pointer() - as Ptr, Value)>>) - .with_mut(|__m: &mut Map, Value)>| { - __m.get_or_insert_with(matching_a.clone(), || { - ( - Rc::new(RefCell::new((matching_a).clone())), - Rc::new(RefCell::new(::default())), - ) - }) - .borrow() - .1 + let matched: Ptr = + matching .as_pointer() - }); + .with_mut(|__m: &mut Map, Value)>| { + __m.get_or_insert_with(matching_a.clone(), || { + ( + Rc::new(RefCell::new((matching_a).clone())), + Rc::new(RefCell::new(::default())), + ) + }) + .borrow() + .1 + .as_pointer() + }); field!(matched, value).write(51); let matched_it: Value, Value)>> = - Rc::new(RefCell::new( - (matching.as_pointer() as Ptr, Value)>>) - .with(|__m: &Map, Value)>| __m.find(&matching_a)), - )); + Rc::new(RefCell::new(matching.as_pointer().with( + |__m: &Map, Value)>| __m.find(&matching_a), + ))); let mut matched_value: Ptr = ((*(*matched_it.borrow()).iter_deref().upgrade().deref()) .1 .as_pointer()); @@ -502,19 +520,20 @@ fn main_0() -> i32 { & ((default_constructions_0.with(|rc| *rc.borrow()) == (before_matching + 1)) as i32)) != 0 }; - let matched_again: Ptr = (matching.as_pointer() - as Ptr, Value)>>) - .with_mut(|__m: &mut Map, Value)>| { - __m.get_or_insert_with(matching_b.clone(), || { - ( - Rc::new(RefCell::new((matching_b).clone())), - Rc::new(RefCell::new(::default())), - ) - }) - .borrow() - .1 + let matched_again: Ptr = + matching .as_pointer() - }); + .with_mut(|__m: &mut Map, Value)>| { + __m.get_or_insert_with(matching_b.clone(), || { + ( + Rc::new(RefCell::new((matching_b).clone())), + Rc::new(RefCell::new(::default())), + ) + }) + .borrow() + .1 + .as_pointer() + }); ok = { ((ok as i32) & ((default_constructions_0.with(|rc| *rc.borrow()) == (before_matching + 1)) as i32)) @@ -528,7 +547,8 @@ fn main_0() -> i32 { { let rhs_0 = ((ok as i32) & (((*matched_it.borrow()) - == (matching.as_pointer() as Ptr, Value)>>) + == matching + .as_pointer() .with(|__m: &Map, Value)>| __m.find(&matching_b))) as i32)) != 0; @@ -553,18 +573,20 @@ fn main_0() -> i32 { != 0; ok = rhs_0 }; - let other: Ptr = (matching.as_pointer() as Ptr, Value)>>) - .with_mut(|__m: &mut Map, Value)>| { - __m.get_or_insert_with(matching_c.clone(), || { - ( - Rc::new(RefCell::new((matching_c).clone())), - Rc::new(RefCell::new(::default())), - ) - }) - .borrow() - .1 + let other: Ptr = + matching .as_pointer() - }); + .with_mut(|__m: &mut Map, Value)>| { + __m.get_or_insert_with(matching_c.clone(), || { + ( + Rc::new(RefCell::new((matching_c).clone())), + Rc::new(RefCell::new(::default())), + ) + }) + .borrow() + .1 + .as_pointer() + }); field!(other, value).write(61); ok = { ((ok as i32) @@ -578,7 +600,8 @@ fn main_0() -> i32 { { let rhs_0 = ((ok as i32) & (((*matched_it.borrow()) - == (matching.as_pointer() as Ptr, Value)>>) + == matching + .as_pointer() .with(|__m: &Map, Value)>| __m.find(&matching_a))) as i32)) != 0; diff --git a/tests/unit/out/refcount/matmul.rs b/tests/unit/out/refcount/matmul.rs index ab520533e..9d608c98d 100644 --- a/tests/unit/out/refcount/matmul.rs +++ b/tests/unit/out/refcount/matmul.rs @@ -18,8 +18,8 @@ pub fn matalloc_0( ))); let mut i: i32 = 0; 'loop_: while (i < n) { - ((m.as_pointer() as Ptr>>>).offset((i as usize) as isize) - as Ptr>>>) + (m.as_pointer() as Ptr>>>) + .offset((i as usize) as isize) .write( Some(Rc::new(RefCell::new( (0..(p as usize)) diff --git a/tests/unit/out/refcount/move_assign.rs b/tests/unit/out/refcount/move_assign.rs index 284faacb3..2de3d784d 100644 --- a/tests/unit/out/refcount/move_assign.rs +++ b/tests/unit/out/refcount/move_assign.rs @@ -89,12 +89,7 @@ fn main_0() -> i32 { (*vec_.borrow_mut()).push(__a1) }; let d: Value = Rc::new(RefCell::new(MoveOnly::new({ 8 }))); - ({ - MoveOnlyImpl::move_assign( - &(vec_.as_pointer() as Ptr).offset(0_usize), - d.as_pointer(), - ) - }); + ({ MoveOnlyImpl::move_assign(&vec_.as_pointer().decay().offset(0_usize), d.as_pointer()) }); assert!(({ (*vec_.borrow())[0_usize].v } == 8)); assert!(({ (*d.borrow()).v } == 0)); let m: Value = Rc::new(RefCell::new(ConstMoveAssign::new())); diff --git a/tests/unit/out/refcount/nested_vector.rs b/tests/unit/out/refcount/nested_vector.rs index 270c13c28..9029fd410 100644 --- a/tests/unit/out/refcount/nested_vector.rs +++ b/tests/unit/out/refcount/nested_vector.rs @@ -18,7 +18,9 @@ fn main_0() -> i32 { (*v1.borrow_mut()).push(a0_clone) }; assert!( - ((((v1.as_pointer() as Ptr>>).decay().to_last() as Ptr>) + ((v1.as_pointer() + .decay() + .to_last() .decay() .offset(0_usize as isize) .read()) diff --git a/tests/unit/out/refcount/operator_traits.rs b/tests/unit/out/refcount/operator_traits.rs index 185ffb878..edc8d7f60 100644 --- a/tests/unit/out/refcount/operator_traits.rs +++ b/tests/unit/out/refcount/operator_traits.rs @@ -165,40 +165,27 @@ fn main_0() -> i32 { Lt { v: 2 }, ]))); { - let __n = (lts.as_pointer() as Ptr>) + let __n = lts + .as_pointer() .decay() .end() - .iter_distance(&(lts.as_pointer() as Ptr>).decay().begin()); + .iter_distance(<s.as_pointer().decay().begin()); let mut __order: Vec = (0..__n).collect(); __order.sort_by(|&__x, &__y| { - (lts.as_pointer() as Ptr>) - .decay() - .begin() - .iter_at(__x) - .with(|__a| { - (lts.as_pointer() as Ptr>) - .decay() - .begin() - .iter_at(__y) - .with(|__b| __a.cmp(__b)) - }) - }); - let __values: Vec<_> = __order - .iter() - .map(|&__i| { - (lts.as_pointer() as Ptr>) + lts.as_pointer().decay().begin().iter_at(__x).with(|__a| { + lts.as_pointer() .decay() .begin() - .iter_at(__i) - .read() + .iter_at(__y) + .with(|__b| __a.cmp(__b)) }) + }); + let __values: Vec<_> = __order + .iter() + .map(|&__i| lts.as_pointer().decay().begin().iter_at(__i).read()) .collect(); for (__i, __v) in (0..__n).zip(__values) { - (lts.as_pointer() as Ptr>) - .decay() - .begin() - .iter_at(__i) - .write(__v); + lts.as_pointer().decay().begin().iter_at(__i).write(__v); } }; assert!( @@ -214,8 +201,8 @@ fn main_0() -> i32 { let mut nine: Eq = Eq { v: 9 }; assert!( ({ - let mut __it = (eqs.as_pointer() as Ptr>).decay().begin(); - while __it != (eqs.as_pointer() as Ptr>).decay().end() + let mut __it = eqs.as_pointer().decay().begin(); + while __it != eqs.as_pointer().decay().end() && __it.iter_deref().with(|__v| *__v != two) { __it.iter_inc(); @@ -228,14 +215,14 @@ fn main_0() -> i32 { ); assert!( { - let mut __it = (eqs.as_pointer() as Ptr>).decay().begin(); - while __it != (eqs.as_pointer() as Ptr>).decay().end() + let mut __it = eqs.as_pointer().decay().begin(); + while __it != eqs.as_pointer().decay().end() && __it.iter_deref().with(|__v| *__v != nine) { __it.iter_inc(); } __it - } == (eqs.as_pointer() as Ptr>).decay().end() + } == eqs.as_pointer().decay().end() ); let cmps: Value> = Rc::new(RefCell::new(Vec::from([ Cmp { v: 3 }, @@ -243,48 +230,35 @@ fn main_0() -> i32 { Cmp { v: 2 }, ]))); { - let __n = (cmps.as_pointer() as Ptr>) + let __n = cmps + .as_pointer() .decay() .end() - .iter_distance(&(cmps.as_pointer() as Ptr>).decay().begin()); + .iter_distance(&cmps.as_pointer().decay().begin()); let mut __order: Vec = (0..__n).collect(); __order.sort_by(|&__x, &__y| { - (cmps.as_pointer() as Ptr>) - .decay() - .begin() - .iter_at(__x) - .with(|__a| { - (cmps.as_pointer() as Ptr>) - .decay() - .begin() - .iter_at(__y) - .with(|__b| __a.cmp(__b)) - }) - }); - let __values: Vec<_> = __order - .iter() - .map(|&__i| { - (cmps.as_pointer() as Ptr>) + cmps.as_pointer().decay().begin().iter_at(__x).with(|__a| { + cmps.as_pointer() .decay() .begin() - .iter_at(__i) - .read() + .iter_at(__y) + .with(|__b| __a.cmp(__b)) }) + }); + let __values: Vec<_> = __order + .iter() + .map(|&__i| cmps.as_pointer().decay().begin().iter_at(__i).read()) .collect(); for (__i, __v) in (0..__n).zip(__values) { - (cmps.as_pointer() as Ptr>) - .decay() - .begin() - .iter_at(__i) - .write(__v); + cmps.as_pointer().decay().begin().iter_at(__i).write(__v); } }; assert!(({ (*cmps.borrow())[0_usize].v } == 1) && ({ (*cmps.borrow())[2_usize].v } == 3)); let mut three: Cmp = Cmp { v: 3 }; assert!( ({ - let mut __it = (cmps.as_pointer() as Ptr>).decay().begin(); - while __it != (cmps.as_pointer() as Ptr>).decay().end() + let mut __it = cmps.as_pointer().decay().begin(); + while __it != cmps.as_pointer().decay().end() && __it.iter_deref().with(|__v| *__v != three) { __it.iter_inc(); @@ -297,48 +271,36 @@ fn main_0() -> i32 { ); let frees: Value> = Rc::new(RefCell::new(Vec::from([Free { v: 2 }, Free { v: 1 }]))); { - let __n = (frees.as_pointer() as Ptr>) + let __n = frees + .as_pointer() .decay() .end() - .iter_distance(&(frees.as_pointer() as Ptr>).decay().begin()); + .iter_distance(&frees.as_pointer().decay().begin()); let mut __order: Vec = (0..__n).collect(); __order.sort_by(|&__x, &__y| { - (frees.as_pointer() as Ptr>) - .decay() - .begin() - .iter_at(__x) - .with(|__a| { - (frees.as_pointer() as Ptr>) - .decay() - .begin() - .iter_at(__y) - .with(|__b| __a.cmp(__b)) - }) - }); - let __values: Vec<_> = __order - .iter() - .map(|&__i| { - (frees.as_pointer() as Ptr>) + frees.as_pointer().decay().begin().iter_at(__x).with(|__a| { + frees + .as_pointer() .decay() .begin() - .iter_at(__i) - .read() + .iter_at(__y) + .with(|__b| __a.cmp(__b)) }) + }); + let __values: Vec<_> = __order + .iter() + .map(|&__i| frees.as_pointer().decay().begin().iter_at(__i).read()) .collect(); for (__i, __v) in (0..__n).zip(__values) { - (frees.as_pointer() as Ptr>) - .decay() - .begin() - .iter_at(__i) - .write(__v); + frees.as_pointer().decay().begin().iter_at(__i).write(__v); } }; assert!(({ (*frees.borrow())[0_usize].v } == 1)); let mut ftwo: Free = Free { v: 2 }; assert!( ({ - let mut __it = (frees.as_pointer() as Ptr>).decay().begin(); - while __it != (frees.as_pointer() as Ptr>).decay().end() + let mut __it = frees.as_pointer().decay().begin(); + while __it != frees.as_pointer().decay().end() && __it.iter_deref().with(|__v| *__v != ftwo) { __it.iter_inc(); @@ -350,7 +312,7 @@ fn main_0() -> i32 { == 2) ); let m: Value, Value)>> = Rc::new(RefCell::new(Map::new())); - (m.as_pointer() as Ptr, Value)>>) + m.as_pointer() .with_mut(|__m: &mut Map, Value)>| { __m.get_or_insert_with(Lt { v: 2 }.clone(), || { ( @@ -363,7 +325,7 @@ fn main_0() -> i32 { .as_pointer() }) .write(20); - (m.as_pointer() as Ptr, Value)>>) + m.as_pointer() .with_mut(|__m: &mut Map, Value)>| { __m.get_or_insert_with(Lt { v: 1 }.clone(), || { ( @@ -377,7 +339,8 @@ fn main_0() -> i32 { }) .write(10); assert!( - ((*(*(m.as_pointer() as Ptr, Value)>>) + ((*(*m + .as_pointer() .with(|__m: &Map, Value)>| __m.begin()) .iter_deref() .upgrade() @@ -387,7 +350,7 @@ fn main_0() -> i32 { == 10) ); assert!( - (((m.as_pointer() as Ptr, Value)>>) + ((m.as_pointer() .with_mut(|__m: &mut Map, Value)>| { __m.get_or_insert_with(Lt { v: 2 }.clone(), || { ( diff --git a/tests/unit/out/refcount/printfs.rs b/tests/unit/out/refcount/printfs.rs index 5d9976763..df60baaad 100644 --- a/tests/unit/out/refcount/printfs.rs +++ b/tests/unit/out/refcount/printfs.rs @@ -59,10 +59,10 @@ fn main_0() -> i32 { __bytes.push(0); __bytes })); - println!("{}", (s.as_pointer() as Ptr>).decay()); + println!("{}", s.as_pointer().decay()); println!( "{}", - (Rc::new(RefCell::new( + Rc::new(RefCell::new( ({ fn_0({ let mut __bytes = Ptr::::from_string_literal(b"foo").to_c_bytes(); @@ -71,10 +71,10 @@ fn main_0() -> i32 { }) }) )) - .as_pointer() as Ptr>) - .decay() + .as_pointer() + .decay() ); - println!("{}", (({ fn2_1(s.as_pointer(),) }) as Ptr>).decay()); + println!("{}", ({ fn2_1(s.as_pointer(),) }).decay()); ({ log_to_2( libcc2rs::c_stdout(), diff --git a/tests/unit/out/refcount/push_emplace_back.rs b/tests/unit/out/refcount/push_emplace_back.rs index 9f8428f1b..5e7c65300 100644 --- a/tests/unit/out/refcount/push_emplace_back.rs +++ b/tests/unit/out/refcount/push_emplace_back.rs @@ -99,11 +99,7 @@ pub fn nested_emplace_move_5(mut bw: Ptr) { } pub fn self_ref_push_6(mut comps: Ptr>) { { - let a0_clone = (*((comps).clone() as Ptr>) - .decay() - .upgrade() - .deref()) - .clone(); + let a0_clone = (*(comps).clone().decay().upgrade().deref()).clone(); comps.with_mut(|__v: &mut Vec| __v.push(a0_clone)) }; } @@ -184,9 +180,7 @@ fn main_0() -> i32 { ({ push_param_0((vecs.as_pointer())) }); assert!(((*vecs.borrow()).len() == 1_usize)); assert!( - (*((vecs.as_pointer() as Ptr>) - .offset(0_usize) - .as_pointer() as Ptr>) + (*(vecs.as_pointer().decay().offset(0_usize).as_pointer() as Ptr>) .upgrade() .deref()) .is_empty() @@ -195,7 +189,9 @@ fn main_0() -> i32 { ({ push_local_from_field_1((jpg.as_pointer()), true) }); assert!(((*jpg.borrow()).com_data.len() == 1_usize)); assert!( - ((*((field_ref!(jpg.as_pointer(), com_data).as_pointer() as Ptr>) + ((*(field_ref!(jpg.as_pointer(), com_data) + .as_pointer() + .decay() .offset(0_usize) .as_pointer() as Ptr>) .upgrade() @@ -225,7 +221,9 @@ fn main_0() -> i32 { ({ emplace_local_from_field_4((jpg.as_pointer()), false) }); assert!(((*jpg.borrow()).app_data.len() == 1_usize)); assert!( - ((*((field_ref!(jpg.as_pointer(), app_data).as_pointer() as Ptr>) + ((*(field_ref!(jpg.as_pointer(), app_data) + .as_pointer() + .decay() .offset(0_usize) .as_pointer() as Ptr>) .upgrade() @@ -265,26 +263,12 @@ fn main_0() -> i32 { let queue: Value> = Rc::new(RefCell::new(Vec::new())); ({ emplace_deque_8((queue.as_pointer())) }); assert!( - ((queue.as_pointer() as Ptr>) - .decay() - .with(|__s| __s.first) - == 6) - && ((queue.as_pointer() as Ptr>) - .decay() - .with(|__s| __s.second) - == 14) + (queue.as_pointer().decay().with(|__s| __s.first) == 6) + && (queue.as_pointer().decay().with(|__s| __s.second) == 14) ); assert!( - ((queue.as_pointer() as Ptr>) - .decay() - .to_last() - .with(|__s| __s.first) - == -1_i32) - && ((queue.as_pointer() as Ptr>) - .decay() - .to_last() - .with(|__s| __s.second) - == -1_i32) + (queue.as_pointer().decay().to_last().with(|__s| __s.first) == -1_i32) + && (queue.as_pointer().decay().to_last().with(|__s| __s.second) == -1_i32) ); let values: Value> = Rc::new(RefCell::new(Vec::new())); ({ emplace_scalar_9((values.as_pointer()), 7) }); diff --git a/tests/unit/out/refcount/redundant_copy_in_conversion.rs b/tests/unit/out/refcount/redundant_copy_in_conversion.rs index 4fcafd8d3..87e87a765 100644 --- a/tests/unit/out/refcount/redundant_copy_in_conversion.rs +++ b/tests/unit/out/refcount/redundant_copy_in_conversion.rs @@ -25,7 +25,7 @@ pub fn main() { } fn main_0() -> i32 { let m: Value, Value)>> = Rc::new(RefCell::new(Map::new())); - (m.as_pointer() as Ptr, Value)>>) + m.as_pointer() .with_mut(|__m: &mut Map, Value)>| { __m.get_or_insert_with(0.clone(), || { ( @@ -39,11 +39,11 @@ fn main_0() -> i32 { }) .write(1); let end: Value, Value)>> = Rc::new(RefCell::new( - (m.as_pointer() as Ptr, Value)>>) + m.as_pointer() .with(|__m: &Map, Value)>| __m.end()), )); let it0: Value, Value)>> = Rc::new(RefCell::new( - (m.as_pointer() as Ptr, Value)>>) + m.as_pointer() .with(|__m: &Map, Value)>| __m.find(&0)), )); let const_it: Value, Value)>> = Rc::new(RefCell::new( diff --git a/tests/unit/out/refcount/references2.rs b/tests/unit/out/refcount/references2.rs index 6012a885e..ec8cc4078 100644 --- a/tests/unit/out/refcount/references2.rs +++ b/tests/unit/out/refcount/references2.rs @@ -8,7 +8,7 @@ use std::os::fd::AsFd; use std::rc::{Rc, Weak}; pub fn change_0(p: Ptr>>) { let q: Value>> = Rc::new(RefCell::new(Some(Rc::new(RefCell::new(7))))); - ((p).clone() as Ptr>>).write((*q.borrow_mut()).take()); + (p).clone().write((*q.borrow_mut()).take()); } pub fn main() { __cpp2rust_init_globals(); diff --git a/tests/unit/out/refcount/reinterpret_cast_empty_vec.rs b/tests/unit/out/refcount/reinterpret_cast_empty_vec.rs index c13d2cc22..e5b35bd20 100644 --- a/tests/unit/out/refcount/reinterpret_cast_empty_vec.rs +++ b/tests/unit/out/refcount/reinterpret_cast_empty_vec.rs @@ -12,9 +12,7 @@ pub fn main() { } fn main_0() -> i32 { let v: Value> = Rc::new(RefCell::new(Vec::new())); - let mut bytes: Ptr = (v.as_pointer() as Ptr>) - .decay() - .reinterpret_cast::(); + let mut bytes: Ptr = v.as_pointer().decay().reinterpret_cast::(); return 0; } pub fn __cpp2rust_init_globals() {} diff --git a/tests/unit/out/refcount/reinterpret_cast_string.rs b/tests/unit/out/refcount/reinterpret_cast_string.rs index 0bd2a15ed..702e1de36 100644 --- a/tests/unit/out/refcount/reinterpret_cast_string.rs +++ b/tests/unit/out/refcount/reinterpret_cast_string.rs @@ -16,9 +16,7 @@ fn main_0() -> i32 { __bytes.push(0); __bytes })); - let mut bytes: Ptr = (s.as_pointer() as Ptr>) - .decay() - .reinterpret_cast::(); + let mut bytes: Ptr = s.as_pointer().decay().reinterpret_cast::(); assert!((((elem!(bytes, 0).read()) as i32) == (('A' as i8) as i32))); assert!((((elem!(bytes, 1).read()) as i32) == (('B' as i8) as i32))); assert!((((elem!(bytes, 2).read()) as i32) == (('C' as i8) as i32))); diff --git a/tests/unit/out/refcount/reinterpret_cast_vec_write.rs b/tests/unit/out/refcount/reinterpret_cast_vec_write.rs index e8efabb7a..b83990551 100644 --- a/tests/unit/out/refcount/reinterpret_cast_vec_write.rs +++ b/tests/unit/out/refcount/reinterpret_cast_vec_write.rs @@ -20,9 +20,7 @@ fn main_0() -> i32 { let __a1 = 134678021_u32; (*vec_.borrow_mut()).push(__a1) }; - let mut bytes: Ptr = (vec_.as_pointer() as Ptr>) - .decay() - .reinterpret_cast::(); + let mut bytes: Ptr = vec_.as_pointer().decay().reinterpret_cast::(); assert!((((elem!(bytes, 0).read()) as i32) == 1)); assert!((((elem!(bytes, 1).read()) as i32) == 2)); assert!((((elem!(bytes, 2).read()) as i32) == 3)); diff --git a/tests/unit/out/refcount/sort.rs b/tests/unit/out/refcount/sort.rs index 5f300a2f4..c065f8ea2 100644 --- a/tests/unit/out/refcount/sort.rs +++ b/tests/unit/out/refcount/sort.rs @@ -53,40 +53,27 @@ fn main_0() -> i32 { (*v.borrow_mut()).push(__a1) }; { - let __n = (v.as_pointer() as Ptr>) + let __n = v + .as_pointer() .decay() .end() - .iter_distance(&(v.as_pointer() as Ptr>).decay().begin()); + .iter_distance(&v.as_pointer().decay().begin()); let mut __order: Vec = (0..__n).collect(); __order.sort_by(|&__x, &__y| { - (v.as_pointer() as Ptr>) - .decay() - .begin() - .iter_at(__x) - .with(|__a| { - (v.as_pointer() as Ptr>) - .decay() - .begin() - .iter_at(__y) - .with(|__b| __a.cmp(__b)) - }) - }); - let __values: Vec<_> = __order - .iter() - .map(|&__i| { - (v.as_pointer() as Ptr>) + v.as_pointer().decay().begin().iter_at(__x).with(|__a| { + v.as_pointer() .decay() .begin() - .iter_at(__i) - .read() + .iter_at(__y) + .with(|__b| __a.cmp(__b)) }) + }); + let __values: Vec<_> = __order + .iter() + .map(|&__i| v.as_pointer().decay().begin().iter_at(__i).read()) .collect(); for (__i, __v) in (0..__n).zip(__values) { - (v.as_pointer() as Ptr>) - .decay() - .begin() - .iter_at(__i) - .write(__v); + v.as_pointer().decay().begin().iter_at(__i).write(__v); } }; let mut i: u32 = 0_u32; diff --git a/tests/unit/out/refcount/split_binop_aliased_borrows.rs b/tests/unit/out/refcount/split_binop_aliased_borrows.rs index 452ed2165..dff87f776 100644 --- a/tests/unit/out/refcount/split_binop_aliased_borrows.rs +++ b/tests/unit/out/refcount/split_binop_aliased_borrows.rs @@ -12,10 +12,8 @@ pub fn main() { } fn main_0() -> i32 { let v: Value> = Rc::new(RefCell::new(Vec::from([1, 2]))); - let p: Value> = Rc::new(RefCell::new( - (v.as_pointer() as Ptr>).decay().begin(), - )); - let r: Ptr = (v.as_pointer() as Ptr).offset(1_usize); + let p: Value> = Rc::new(RefCell::new(v.as_pointer().decay().begin())); + let r: Ptr = v.as_pointer().decay().offset(1_usize); let __rhs = (r.read()); (*p.borrow()).iter_deref().write(__rhs); assert!(({ (*v.borrow())[0_usize] } == 2)); diff --git a/tests/unit/out/refcount/stdcopy_ostream.rs b/tests/unit/out/refcount/stdcopy_ostream.rs index 961bed973..476343928 100644 --- a/tests/unit/out/refcount/stdcopy_ostream.rs +++ b/tests/unit/out/refcount/stdcopy_ostream.rs @@ -26,10 +26,8 @@ fn main_0() -> i32 { )); { let mut __bytes: Vec = Vec::new(); - let mut __it = RandomAccessIterator::Vec((str.as_pointer() as Ptr>).decay()); - while __it - != RandomAccessIterator::Vec((str.as_pointer() as Ptr>).decay().to_last()) - { + let mut __it = RandomAccessIterator::Vec(str.as_pointer().decay()); + while __it != RandomAccessIterator::Vec(str.as_pointer().decay().to_last()) { __bytes.push(__it.iter_deref().read() as u8); __it.iter_inc(); } diff --git a/tests/unit/out/refcount/string.rs b/tests/unit/out/refcount/string.rs index b28440cd7..dd9392010 100644 --- a/tests/unit/out/refcount/string.rs +++ b/tests/unit/out/refcount/string.rs @@ -37,7 +37,7 @@ fn main_0() -> i32 { !(Ptr::::from_string_literal(b"hello") .with_c_str(|__s| (*s1.borrow())[..(*s1.borrow()).len().saturating_sub(1)] != *__s)) ); - let mut p1: Ptr = (s1.as_pointer() as Ptr>).decay(); + let mut p1: Ptr = s1.as_pointer().decay(); assert!((((elem!(p1, 0).read()) as i32) == (('h' as i8) as i32))); assert!((((elem!(p1, 1).read()) as i32) == (('e' as i8) as i32))); assert!((((elem!(p1, 2).read()) as i32) == (('l' as i8) as i32))); @@ -50,7 +50,7 @@ fn main_0() -> i32 { .chain(std::iter::once(0)) .collect(), )); - let mut p2: Ptr = (s2.as_pointer() as Ptr>).decay(); + let mut p2: Ptr = s2.as_pointer().decay(); let mut i: u32 = 0_u32; 'loop_: while ((i as usize) < ((*s2.borrow()).len() - 1)) { assert!( @@ -85,7 +85,7 @@ fn main_0() -> i32 { })); assert!((((*s3.borrow()).len() - 1) == 5_usize)); assert!((((*s3.borrow()).len() - 1) == ((*s3.borrow()).len() - 1))); - let mut p3: Ptr = (s3.as_pointer() as Ptr>).decay(); + let mut p3: Ptr = s3.as_pointer().decay(); let mut i: u32 = 0_u32; 'loop_: while ((i as usize) < ((*s3.borrow()).len() - 1)) { assert!( @@ -112,7 +112,7 @@ fn main_0() -> i32 { })); assert!((((*s4.borrow()).len() - 1) == 3_usize)); assert!((((*s4.borrow()).len() - 1) == ((*s4.borrow()).len() - 1))); - let mut p4: Ptr = (s4.as_pointer() as Ptr>).decay(); + let mut p4: Ptr = s4.as_pointer().decay(); let mut i: u32 = 0_u32; 'loop_: while ((i as usize) < ((*s4.borrow()).len() - 1)) { assert!( @@ -129,7 +129,7 @@ fn main_0() -> i32 { })); assert!((((*s5.borrow()).len() - 1) == 12_usize)); assert!((((*s5.borrow()).len() - 1) == ((*s5.borrow()).len() - 1))); - let mut p5: Ptr = (s5.as_pointer() as Ptr>).decay(); + let mut p5: Ptr = s5.as_pointer().decay(); let mut i: u32 = 0_u32; 'loop_: while ((i as usize) < ((*s5.borrow()).len() - 1)) { assert!( @@ -298,7 +298,7 @@ fn main_0() -> i32 { __bytes })); let mut output_data: Ptr = - ((string_to_cast.as_pointer() as Ptr).offset(0_usize)).reinterpret_cast::(); + (string_to_cast.as_pointer().decay().offset(0_usize)).reinterpret_cast::(); assert!((((output_data.read()) as i32) == (('c' as i8) as i32))); assert!((((elem!(output_data, 1).read()) as i32) == (('a' as i8) as i32))); assert!((((elem!(output_data, 2).read()) as i32) == (('s' as i8) as i32))); diff --git a/tests/unit/out/refcount/string2.rs b/tests/unit/out/refcount/string2.rs index a19845bb9..c712c9d97 100644 --- a/tests/unit/out/refcount/string2.rs +++ b/tests/unit/out/refcount/string2.rs @@ -17,15 +17,13 @@ fn main_0() -> i32 { __bytes })); (*arr.borrow_mut())[1_usize] = ('b' as i8); - let mut p: Ptr = (arr.as_pointer() as Ptr>) - .decay() - .offset((1) as isize); + let mut p: Ptr = arr.as_pointer().decay().offset((1) as isize); assert!((((p.read()) as i32) == (('b' as i8) as i32))); assert!( Ptr::::from_string_literal(b"fbo") .with_c_str(|__s| (*arr.borrow())[..(*arr.borrow()).len().saturating_sub(1)] == *__s) ); - let mut names: [Ptr; 1] = [(arr.as_pointer() as Ptr>).decay()]; + let mut names: [Ptr; 1] = [arr.as_pointer().decay()]; let mut copy: Vec = { let mut __bytes = names[(0) as usize].to_c_bytes(); __bytes.push(0); diff --git a/tests/unit/out/refcount/structured_binding_move_ctor.rs b/tests/unit/out/refcount/structured_binding_move_ctor.rs index 31d62f788..3694df503 100644 --- a/tests/unit/out/refcount/structured_binding_move_ctor.rs +++ b/tests/unit/out/refcount/structured_binding_move_ctor.rs @@ -85,7 +85,7 @@ fn main_0() -> i32 { assert!(((*__decomp_3.borrow()).ys.len() == 2_usize)); assert!( ((elem!( - (field_ref!(__decomp_3.as_pointer(), xs).as_pointer() as Ptr), + field_ref!(__decomp_3.as_pointer(), xs).as_pointer().decay(), 2_usize ) .read()) @@ -93,7 +93,7 @@ fn main_0() -> i32 { ); assert!( ((elem!( - (field_ref!(__decomp_3.as_pointer(), ys).as_pointer() as Ptr), + field_ref!(__decomp_3.as_pointer(), ys).as_pointer().decay(), 0_usize ) .read()) diff --git a/tests/unit/out/refcount/sys_stat.rs b/tests/unit/out/refcount/sys_stat.rs index 4f8e92c3c..5d8ebde46 100644 --- a/tests/unit/out/refcount/sys_stat.rs +++ b/tests/unit/out/refcount/sys_stat.rs @@ -45,9 +45,7 @@ pub fn test_stat_0() { != 0) ); assert!(((({ (*st.borrow()).st_size } == 5_i64) as i32) != 0)); - assert!( - ((((field_ptr!((st.as_pointer() as Ptr), st_mtime).read()) > 0_i64) as i32) != 0) - ); + assert!(((((field_ptr!(st.as_pointer(), st_mtime).read()) > 0_i64) as i32) != 0)); match nix::unistd::unlink(path.to_rust_string().as_str()) { Ok(()) => 0, Err(__e) => { @@ -89,9 +87,7 @@ pub fn test_fstat_1() { != 0) ); assert!(((({ (*st.borrow()).st_size } == 11_i64) as i32) != 0)); - assert!( - ((((field_ptr!((st.as_pointer() as Ptr), st_mtime).read()) > 0_i64) as i32) != 0) - ); + assert!(((((field_ptr!(st.as_pointer(), st_mtime).read()) > 0_i64) as i32) != 0)); assert!( ((({ let __r = fp.with(|__f| __f.close()); @@ -111,36 +107,28 @@ pub fn test_fstat_1() { pub fn test_st_mtime_access_2() { let st: Value = Rc::new(RefCell::new(Default::default())); let mut sp: Ptr = (st.as_pointer()); - field_ptr!((st.as_pointer() as Ptr), st_mtime).write(5_i64); - assert!( - ((((field_ptr!((st.as_pointer() as Ptr), st_mtime).read()) == 5_i64) as i32) != 0) - ); - field_ptr!(((sp).clone() as Ptr), st_mtime).write(6_i64); - assert!(((((field_ptr!(((sp).clone() as Ptr), st_mtime).read()) == 6_i64) as i32) != 0)); + field_ptr!(st.as_pointer(), st_mtime).write(5_i64); + assert!(((((field_ptr!(st.as_pointer(), st_mtime).read()) == 5_i64) as i32) != 0)); + field_ptr!((sp).clone(), st_mtime).write(6_i64); + assert!(((((field_ptr!((sp).clone(), st_mtime).read()) == 6_i64) as i32) != 0)); { - field_ptr!((st.as_pointer() as Ptr), st_mtime).with_mut(|__v| *__v = *__v + 2_i64) + field_ptr!(st.as_pointer(), st_mtime).with_mut(|__v| *__v = *__v + 2_i64) }; - assert!( - ((((field_ptr!((st.as_pointer() as Ptr), st_mtime).read()) == 8_i64) as i32) != 0) - ); + assert!(((((field_ptr!(st.as_pointer(), st_mtime).read()) == 8_i64) as i32) != 0)); { - field_ptr!(((sp).clone() as Ptr), st_mtime).with_mut(|__v| *__v = *__v - 1_i64) + field_ptr!((sp).clone(), st_mtime).with_mut(|__v| *__v = *__v - 1_i64) }; - assert!(((((field_ptr!(((sp).clone() as Ptr), st_mtime).read()) == 7_i64) as i32) != 0)); - field_ptr!((st.as_pointer() as Ptr), st_mtime).with_mut(|__v| __v.postfix_inc()); - field_ptr!(((sp).clone() as Ptr), st_mtime).with_mut(|__v| __v.prefix_inc()); - assert!( - ((((field_ptr!((st.as_pointer() as Ptr), st_mtime).read()) == 9_i64) as i32) != 0) - ); - let mut mtime: Ptr = (field_ptr!((st.as_pointer() as Ptr), st_mtime)); + assert!(((((field_ptr!((sp).clone(), st_mtime).read()) == 7_i64) as i32) != 0)); + field_ptr!(st.as_pointer(), st_mtime).with_mut(|__v| __v.postfix_inc()); + field_ptr!((sp).clone(), st_mtime).with_mut(|__v| __v.prefix_inc()); + assert!(((((field_ptr!(st.as_pointer(), st_mtime).read()) == 9_i64) as i32) != 0)); + let mut mtime: Ptr = (field_ptr!(st.as_pointer(), st_mtime)); mtime.write(10_i64); - assert!( - ((((field_ptr!((st.as_pointer() as Ptr), st_mtime).read()) == 10_i64) as i32) != 0) - ); - let mut mtime_via_ptr: Ptr = (field_ptr!(((sp).clone() as Ptr), st_mtime)); + assert!(((((field_ptr!(st.as_pointer(), st_mtime).read()) == 10_i64) as i32) != 0)); + let mut mtime_via_ptr: Ptr = (field_ptr!((sp).clone(), st_mtime)); mtime_via_ptr.write(11_i64); assert!(((((mtime.read()) == 11_i64) as i32) != 0)); - let mut copy: i64 = (field_ptr!(((sp).clone() as Ptr), st_mtime).read()); + let mut copy: i64 = (field_ptr!((sp).clone(), st_mtime).read()); assert!((((copy == 11_i64) as i32) != 0)); } pub fn main() { diff --git a/tests/unit/out/refcount/unboxed_conditional_iterator.rs b/tests/unit/out/refcount/unboxed_conditional_iterator.rs index 6f555f3e0..b1bd73fe2 100644 --- a/tests/unit/out/refcount/unboxed_conditional_iterator.rs +++ b/tests/unit/out/refcount/unboxed_conditional_iterator.rs @@ -48,8 +48,8 @@ pub fn lehmer_2(mut sigma: Ptr, mut len: u32, mut code: Ptr) { let mut i: u32 = 0_u32; 'loop_: while (i < len) { let it: Value> = Rc::new(RefCell::new({ - let mut __it = (items.as_pointer() as Ptr>).decay().begin(); - while __it != (items.as_pointer() as Ptr>).decay().end() + let mut __it = items.as_pointer().decay().begin(); + while __it != items.as_pointer().decay().end() && __it .iter_deref() .with(|__v| *__v != (elem!(sigma, i).read())) @@ -58,24 +58,23 @@ pub fn lehmer_2(mut sigma: Ptr, mut len: u32, mut code: Ptr) { } __it })); - assert!((*it.borrow()) != (items.as_pointer() as Ptr>).decay().end()); - let __rhs = ((*it.borrow()) - .iter_distance(&(items.as_pointer() as Ptr>).decay().begin()) - as u32); + assert!((*it.borrow()) != items.as_pointer().decay().end()); + let __rhs = ((*it.borrow()).iter_distance(&items.as_pointer().decay().begin()) as u32); elem!(code, i).write(__rhs); { let __off = >::from((*it.borrow()).clone()).index(); - (items.as_pointer() as Ptr>).with_mut(|__v: &mut Vec| __v.remove(__off)); - RandomAccessIterator::Vec((items.as_pointer() as Ptr>).decay() + __off) + items + .as_pointer() + .with_mut(|__v: &mut Vec| __v.remove(__off)); + RandomAccessIterator::Vec(items.as_pointer().decay() + __off) }; i.prefix_inc(); } } pub fn sum_3(v: Ptr>) -> i32 { let mut s: i32 = 0; - let it: Value> = - Rc::new(RefCell::new(((v).clone() as Ptr>).decay().begin())); - 'loop_: while (*it.borrow()) != ((v).clone() as Ptr>).decay().end() { + let it: Value> = Rc::new(RefCell::new((v).clone().decay().begin())); + 'loop_: while (*it.borrow()) != (v).clone().decay().end() { s += ((*it.borrow()).iter_deref().read()); (*it.borrow_mut()).iter_inc(); } diff --git a/tests/unit/out/refcount/unboxed_locals.rs b/tests/unit/out/refcount/unboxed_locals.rs index e5fc6348a..a2f7e957e 100644 --- a/tests/unit/out/refcount/unboxed_locals.rs +++ b/tests/unit/out/refcount/unboxed_locals.rs @@ -22,10 +22,7 @@ pub struct Pair { } pub fn total_2(v: Ptr>) -> i32 { let mut s: i32 = 0; - 'loop_: for x in IterRange::new( - ((v).clone() as Ptr>).decay().begin(), - ((v).clone() as Ptr>).decay().end(), - ) { + 'loop_: for x in IterRange::new((v).clone().decay().begin(), (v).clone().decay().end()) { let mut x: i32 = (x.iter_deref().read()); s += x; } @@ -157,10 +154,10 @@ fn main_0() -> i32 { let by_ref: Value> = Rc::new(RefCell::new(vec![3; 2_usize as usize])); assert!((({ total_2(by_ref.as_pointer(),) }) == 6)); let elem_ptr: Value> = Rc::new(RefCell::new(vec![0; 2_usize as usize])); - ({ set_0(((elem_ptr.as_pointer() as Ptr).offset(1_usize)), 7) }); + ({ set_0((elem_ptr.as_pointer().decay().offset(1_usize)), 7) }); assert!(({ (*elem_ptr.borrow())[1_usize] } == 7)); let data: Value> = Rc::new(RefCell::new(vec![0; 2_usize as usize])); - ({ set_0((data.as_pointer() as Ptr>).decay(), 8) }); + ({ set_0(data.as_pointer().decay(), 8) }); assert!(({ (*data.borrow())[0_usize] } == 8)); let square: Value = Rc::new(RefCell::new(::default())); let mut shape: PtrDyn = (square.as_pointer()).to_dyn::(|w| w); diff --git a/tests/unit/out/refcount/unique_ptr.rs b/tests/unit/out/refcount/unique_ptr.rs index c24143f43..b9a35a73d 100644 --- a/tests/unit/out/refcount/unique_ptr.rs +++ b/tests/unit/out/refcount/unique_ptr.rs @@ -32,18 +32,17 @@ pub fn DoStuffWithSafePointer_0(safe_ptr: Ptr>>) { let x1: Value>> = Rc::new(RefCell::new(Some(Rc::new(RefCell::new(0))))); let x2: Value>> = Rc::new(RefCell::new(Some(Rc::new(RefCell::new(0))))); (*x2.borrow()).as_pointer().write(1); - (x1.as_pointer() as Ptr>>).write((*x2.borrow_mut()).take()); + x1.as_pointer().write((*x2.borrow_mut()).take()); let mut raw_ptr1: Ptr = ((*x1.borrow()).as_pointer()); raw_ptr1.with_mut(|__v| __v.prefix_inc()); - (field_ptr!(((*safe_ptr.upgrade().deref()).as_pointer()), ptr) as Ptr>>) - .write((*x1.borrow_mut()).take()); + field_ptr!(((*safe_ptr.upgrade().deref()).as_pointer()), ptr).write((*x1.borrow_mut()).take()); ({ SafePointerImpl::inc(&((*safe_ptr.upgrade().deref()).as_pointer())) }); ({ SafePointerImpl::inc(&((*safe_ptr.upgrade().deref()).as_pointer())) }); let x3: Value>> = Rc::new(RefCell::new(Some(Rc::new(RefCell::new(10))))); let x4: Value>> = Rc::new(RefCell::new(Some(Rc::new(RefCell::new(20))))); let __rhs = (((*x3.borrow()).as_pointer().read()) + ((*x4.borrow()).as_pointer().read())); (*x3.borrow()).as_pointer().write(__rhs); - (x4.as_pointer() as Ptr>>).write((*x3.borrow_mut()).take()); + x4.as_pointer().write((*x3.borrow_mut()).take()); let mut raw_ptr2: Ptr = ((*x4.borrow()).as_pointer()); { raw_ptr2.with_mut(|__v| *__v = *__v + 1) @@ -91,7 +90,7 @@ pub fn RndStuff_2() { .write(1); i.prefix_inc(); } - (x2.as_pointer() as Ptr>>>).write( + x2.as_pointer().write( Ptr::alloc_array((0..200_usize).map(|_| 0_i32).collect::>()).to_owned_opt(), ); let mut i: i32 = 0; @@ -134,7 +133,7 @@ pub fn RndStuff_2() { assert!((elem!(p3_0, i).with(|__s| __s.y) == 12)); i.prefix_inc(); } - (x3.as_pointer() as Ptr>>>).write( + x3.as_pointer().write( Ptr::alloc_array( (0..50_usize) .map(|_| ::default()) @@ -210,7 +209,7 @@ impl SafePointerImpl for Ptr { .with_mut(|__v| __v.prefix_inc()); } fn move_assign(&self, _a0: Ptr) -> Ptr { - (field_ptr!((*self), ptr) as Ptr>>) + field_ptr!((*self), ptr) .write(field!(_a0, ptr).with_mut(|__v: &mut Option>| __v.take())); return (*self).clone(); } diff --git a/tests/unit/out/refcount/unique_ptr_const_deref.rs b/tests/unit/out/refcount/unique_ptr_const_deref.rs index 9ad07cc00..6989ed101 100644 --- a/tests/unit/out/refcount/unique_ptr_const_deref.rs +++ b/tests/unit/out/refcount/unique_ptr_const_deref.rs @@ -32,8 +32,7 @@ pub fn main() { } fn main_0() -> i32 { let h: Value = Rc::new(RefCell::new(::default())); - (field_ptr!(h.as_pointer(), val) as Ptr>>) - .write(Some(Rc::new(RefCell::new(10))).take()); + field_ptr!(h.as_pointer(), val).write(Some(Rc::new(RefCell::new(10))).take()); ({ write_val_1((h.as_pointer()), 42) }); assert!((({ read_val_0((h.as_pointer()),) }) == 42)); return 0; @@ -43,7 +42,7 @@ pub trait HolderImpl { } impl HolderImpl for Ptr { fn move_assign(&self, _a0: Ptr) -> Ptr { - (field_ptr!((*self), val) as Ptr>>) + field_ptr!((*self), val) .write(field!(_a0, val).with_mut(|__v: &mut Option>| __v.take())); return (*self).clone(); } diff --git a/tests/unit/out/refcount/unique_ptr_field_reset.rs b/tests/unit/out/refcount/unique_ptr_field_reset.rs index 6db12088d..b880e4ffb 100644 --- a/tests/unit/out/refcount/unique_ptr_field_reset.rs +++ b/tests/unit/out/refcount/unique_ptr_field_reset.rs @@ -39,7 +39,7 @@ fn main_0() -> i32 { let mut hp: Ptr = (h.as_pointer()); { let _p: Ptr<_> = Ptr::alloc(Data { v: 3 }); - (field_ptr!(hp, data) as Ptr>>).write(_p.to_owned_opt()) + field_ptr!(hp, data).write(_p.to_owned_opt()) }; assert!( ({ (*h.borrow()).data.clone() } @@ -74,11 +74,11 @@ impl HolderImpl for Ptr { fn set(&self, mut p: Ptr) { { let _p: Ptr<_> = (p).clone(); - (field_ptr!((*self), data) as Ptr>>).write(_p.to_owned_opt()) + field_ptr!((*self), data).write(_p.to_owned_opt()) }; } fn move_assign(&self, _a0: Ptr) -> Ptr { - (field_ptr!((*self), data) as Ptr>>) + field_ptr!((*self), data) .write(field!(_a0, data).with_mut(|__v: &mut Option>| __v.take())); field!((*self), n).write({ { (*_a0.upgrade().deref()).n } }); return (*self).clone(); diff --git a/tests/unit/out/refcount/unique_ptr_nested.rs b/tests/unit/out/refcount/unique_ptr_nested.rs index 6969fc19a..6e867ab1b 100644 --- a/tests/unit/out/refcount/unique_ptr_nested.rs +++ b/tests/unit/out/refcount/unique_ptr_nested.rs @@ -61,7 +61,7 @@ pub trait OuterImpl { } impl OuterImpl for Ptr { fn move_assign(&self, _a0: Ptr) -> Ptr { - (field_ptr!((*self), inner) as Ptr>>) + field_ptr!((*self), inner) .write(field!(_a0, inner).with_mut(|__v: &mut Option>| __v.take())); return (*self).clone(); } diff --git a/tests/unit/out/refcount/unique_ptr_small.rs b/tests/unit/out/refcount/unique_ptr_small.rs index 1898f63bb..23fd513da 100644 --- a/tests/unit/out/refcount/unique_ptr_small.rs +++ b/tests/unit/out/refcount/unique_ptr_small.rs @@ -8,7 +8,7 @@ use std::os::fd::AsFd; use std::rc::{Rc, Weak}; pub fn change_0(n: Ptr>>) { let m: Value>> = Rc::new(RefCell::new(Some(Rc::new(RefCell::new(20))))); - ((n).clone() as Ptr>>).write((*m.borrow_mut()).take()); + (n).clone().write((*m.borrow_mut()).take()); } pub fn main() { __cpp2rust_init_globals(); diff --git a/tests/unit/out/refcount/vector.rs b/tests/unit/out/refcount/vector.rs index 5b8bf1e7f..3a981103c 100644 --- a/tests/unit/out/refcount/vector.rs +++ b/tests/unit/out/refcount/vector.rs @@ -55,21 +55,18 @@ fn main_0() -> i32 { }; assert!(((*v2.borrow()).len() == 3_usize)); { - let __off = - >::from((v2.as_pointer() as Ptr>).decay().begin()) - .index(); - (v2.as_pointer() as Ptr>).with_mut(|__v: &mut Vec| __v.remove(__off)); - RandomAccessIterator::Vec((v2.as_pointer() as Ptr>).decay() + __off) + let __off = >::from(v2.as_pointer().decay().begin()).index(); + v2.as_pointer() + .with_mut(|__v: &mut Vec| __v.remove(__off)); + RandomAccessIterator::Vec(v2.as_pointer().decay() + __off) }; assert!(((*v2.borrow()).len() == 2_usize)); assert!(({ (*v2.borrow())[0_usize] } == 2)); assert!(({ (*v2.borrow())[1_usize] } == 3)); { - let __off = - >::from((v2.as_pointer() as Ptr>).decay().begin()) - .index(); + let __off = >::from(v2.as_pointer().decay().begin()).index(); (*v2.borrow_mut()).insert(__off, 100); - >::from((v2.as_pointer() as Ptr>).decay().begin()) + >::from(v2.as_pointer().decay().begin()) }; ({ copy_0((*v2.borrow()).clone()) }); assert!(((*v2.borrow()).len() == 3_usize)); @@ -78,50 +75,30 @@ fn main_0() -> i32 { assert!(({ (*v2.borrow())[2_usize] } == 3)); let mut x: i32 = 7; { - let __off = >::from( - (v2.as_pointer() as Ptr>) - .decay() - .begin() - .iter_add(1_isize), - ) - .index(); + let __off = + >::from(v2.as_pointer().decay().begin().iter_add(1_isize)) + .index(); (*v2.borrow_mut()).insert(__off, x); - >::from( - (v2.as_pointer() as Ptr>) - .decay() - .begin() - .iter_add(1_isize), - ) + >::from(v2.as_pointer().decay().begin().iter_add(1_isize)) }; assert!(((*v2.borrow()).len() == 4_usize)); assert!(({ (*v2.borrow())[0_usize] } == 100)); assert!(({ (*v2.borrow())[1_usize] } == 7)); assert!(({ (*v2.borrow())[2_usize] } == 2)); { - let __off = - >::from((v2.as_pointer() as Ptr>).decay().end()) - .index(); + let __off = >::from(v2.as_pointer().decay().end()).index(); (*v2.borrow_mut()).splice(__off..__off, std::iter::repeat_n(9, 2_usize)); - >::from((v2.as_pointer() as Ptr>).decay().end()) + >::from(v2.as_pointer().decay().end()) }; assert!(((*v2.borrow()).len() == 6_usize)); assert!(({ (*v2.borrow())[4_usize] } == 9)); assert!(({ (*v2.borrow())[5_usize] } == 9)); { - let __off = >::from( - (v2.as_pointer() as Ptr>) - .decay() - .begin() - .iter_add(2_isize), - ) - .index(); + let __off = + >::from(v2.as_pointer().decay().begin().iter_add(2_isize)) + .index(); (*v2.borrow_mut()).splice(__off..__off, Vec::from([11, 12, 13])); - >::from( - (v2.as_pointer() as Ptr>) - .decay() - .begin() - .iter_add(2_isize), - ) + >::from(v2.as_pointer().decay().begin().iter_add(2_isize)) }; assert!(((*v2.borrow()).len() == 9_usize)); assert!(({ (*v2.borrow())[1_usize] } == 7)); @@ -132,50 +109,44 @@ fn main_0() -> i32 { assert!(({ (*v2.borrow())[8_usize] } == 9)); let src: Value> = Rc::new(RefCell::new(Vec::from([21, 22]))); { - let start_idx = - >::from((v2.as_pointer() as Ptr>).decay().begin()) - .index(); + let start_idx = >::from(v2.as_pointer().decay().begin()).index(); let mut temp_vec: Vec = Vec::new(); - let mut __it = (src.as_pointer() as Ptr>).decay().begin(); - while __it != (src.as_pointer() as Ptr>).decay().end() { + let mut __it = src.as_pointer().decay().begin(); + while __it != src.as_pointer().decay().end() { temp_vec.push(__it.iter_deref().read()); __it.iter_inc(); } - (v2.as_pointer() as Ptr>).with_mut(|v: &mut Vec| { + v2.as_pointer().with_mut(|v: &mut Vec| { v.splice(start_idx..start_idx, temp_vec); }); - RandomAccessIterator::Vec((v2.as_pointer() as Ptr>).decay() + start_idx) + RandomAccessIterator::Vec(v2.as_pointer().decay() + start_idx) }; assert!(((*v2.borrow()).len() == 11_usize)); assert!(({ (*v2.borrow())[0_usize] } == 21)); assert!(({ (*v2.borrow())[1_usize] } == 22)); assert!(({ (*v2.borrow())[2_usize] } == 100)); { - let __off = - >::from((v2.as_pointer() as Ptr>).decay().begin()) - .index(); - (v2.as_pointer() as Ptr>).with_mut(|__v: &mut Vec| __v.remove(__off)); - RandomAccessIterator::Vec((v2.as_pointer() as Ptr>).decay() + __off) + let __off = >::from(v2.as_pointer().decay().begin()).index(); + v2.as_pointer() + .with_mut(|__v: &mut Vec| __v.remove(__off)); + RandomAccessIterator::Vec(v2.as_pointer().decay() + __off) }; { - let __off = - >::from((v2.as_pointer() as Ptr>).decay().begin()) - .index(); - (v2.as_pointer() as Ptr>).with_mut(|__v: &mut Vec| __v.remove(__off)); - RandomAccessIterator::Vec((v2.as_pointer() as Ptr>).decay() + __off) + let __off = >::from(v2.as_pointer().decay().begin()).index(); + v2.as_pointer() + .with_mut(|__v: &mut Vec| __v.remove(__off)); + RandomAccessIterator::Vec(v2.as_pointer().decay() + __off) }; let mut i: i32 = 0; 'loop_: while (i < 4) { { let __off = >::from( - (v2.as_pointer() as Ptr>) - .decay() - .begin() - .iter_add(1_isize), + v2.as_pointer().decay().begin().iter_add(1_isize), ) .index(); - (v2.as_pointer() as Ptr>).with_mut(|__v: &mut Vec| __v.remove(__off)); - RandomAccessIterator::Vec((v2.as_pointer() as Ptr>).decay() + __off) + v2.as_pointer() + .with_mut(|__v: &mut Vec| __v.remove(__off)); + RandomAccessIterator::Vec(v2.as_pointer().decay() + __off) }; i.prefix_inc(); } @@ -236,9 +207,9 @@ fn main_0() -> i32 { ); i.prefix_inc(); } - let mut p1: Ptr = (v6.as_pointer() as Ptr>).decay(); + let mut p1: Ptr = v6.as_pointer().decay(); assert!(((p1.read()) == 2_f64)); - let mut p2: Ptr = (v3.as_pointer() as Ptr>).decay(); + let mut p2: Ptr = v3.as_pointer().decay(); assert!(((p2.read()) == 1)); assert!(({ (*v3.borrow())[0_usize] } == 1)); assert!(({ (*v3.borrow())[1_usize] } == 1)); @@ -276,78 +247,65 @@ fn main_0() -> i32 { }; assert!(((*v3.borrow()).capacity() == 201_usize)); assert!(((*v3.borrow()).len() == 100_usize)); - assert!((((v2.as_pointer() as Ptr>).decay().to_last().read()) == 3)); - assert!((((v3.as_pointer() as Ptr>).decay().to_last().read()) == 1)); - assert!( - ((v4.as_pointer() as Ptr>>) - .decay() - .to_last() - .read()) - .is_null() - ); - assert!( - ((v5.as_pointer() as Ptr>>) - .decay() - .to_last() - .read()) - .is_null() - ); - assert!((((v6.as_pointer() as Ptr>).decay().to_last().read()) == 2_f64)); - let ref0: Ptr = (v6.as_pointer() as Ptr>).decay().to_last(); + assert!(((v2.as_pointer().decay().to_last().read()) == 3)); + assert!(((v3.as_pointer().decay().to_last().read()) == 1)); + assert!((v4.as_pointer().decay().to_last().read()).is_null()); + assert!((v5.as_pointer().decay().to_last().read()).is_null()); + assert!(((v6.as_pointer().decay().to_last().read()) == 2_f64)); + let ref0: Ptr = v6.as_pointer().decay().to_last(); ref0.write(5_f64); - assert!((((v6.as_pointer() as Ptr>).decay().to_last().read()) == 5_f64)); - let mut x0: f64 = ((v6.as_pointer() as Ptr>).decay().to_last().read()); + assert!(((v6.as_pointer().decay().to_last().read()) == 5_f64)); + let mut x0: f64 = (v6.as_pointer().decay().to_last().read()); assert!((x0 == 5_f64)); x0 = 6_f64; - assert!((((v6.as_pointer() as Ptr>).decay().to_last().read()) == 5_f64)); + assert!(((v6.as_pointer().decay().to_last().read()) == 5_f64)); let mut idx: i32 = 0; assert!( - (((v6.as_pointer() as Ptr>) + ((v6.as_pointer() .decay() .offset((idx as usize) as isize) .read()) == 2_f64) ); assert!( - (((v6.as_pointer() as Ptr>) + ((v6.as_pointer() .decay() .offset((s2).wrapping_sub(1_usize) as isize) .read()) == 5_f64) ); - let ref1: Ptr = (v6.as_pointer() as Ptr>) + let ref1: Ptr = v6 + .as_pointer() .decay() .offset((s2).wrapping_sub(1_usize) as isize); { ref1.with_mut(|__v| *__v = *__v + 1.5_f64) }; assert!( - (((v6.as_pointer() as Ptr>) + ((v6.as_pointer() .decay() .offset((s2).wrapping_sub(1_usize) as isize) .read()) == 6.5_f64) ); - let mut x1: f64 = ((v6.as_pointer() as Ptr>) + let mut x1: f64 = (v6 + .as_pointer() .decay() .offset((s2).wrapping_sub(1_usize) as isize) .read()); assert!((x1 == 6.5_f64)); x1 -= 1.5_f64; assert!( - (((v6.as_pointer() as Ptr>) + ((v6.as_pointer() .decay() .offset((s2).wrapping_sub(1_usize) as isize) .read()) == 6.5_f64) ); assert!( - (((s1).wrapping_add(s2)).wrapping_add( - (((v2.as_pointer() as Ptr>) - .decay() - .offset(0_usize as isize) - .read()) as usize) - ) == 103_usize) + (((s1).wrapping_add(s2)) + .wrapping_add(((v2.as_pointer().decay().offset(0_usize as isize).read()) as usize)) + == 103_usize) ); let a: Value = Rc::new(RefCell::new(S { x: 1 })); let pa: Value> = Rc::new(RefCell::new((a.as_pointer()))); diff --git a/tests/unit/out/refcount/vector2.rs b/tests/unit/out/refcount/vector2.rs index 208b4465d..d1f430268 100644 --- a/tests/unit/out/refcount/vector2.rs +++ b/tests/unit/out/refcount/vector2.rs @@ -30,21 +30,21 @@ pub fn fn_0(v: Ptr>, v3: Vec) { x = (index!(v, 2_usize).read()); (*v2.borrow_mut())[0_usize] = 1; elem!( - ((if true { + (if true { (Ptr::>::decay(&(v3.as_pointer()))) } else { (Ptr::>::decay(&(v))) - }) as Ptr), + }), 0_usize ) .write(7); - (v2.as_pointer() as Ptr>).write((*v.upgrade().deref()).clone()); + v2.as_pointer().write((*v.upgrade().deref()).clone()); index!(v4, 1_usize).write(13); assert!((x == 6)); - assert!(((((v).clone() as Ptr>).decay().read()) == 4)); + assert!((((v).clone().decay().read()) == 4)); assert!(((index!(v, 1_usize).read()) == 5)); assert!(((index!(v, 2_usize).read()) == 6)); - assert!(((((v).clone() as Ptr>).decay().to_last().read()) == 20)); + assert!((((v).clone().decay().to_last().read()) == 20)); assert!(({ (*v2.borrow())[0_usize] } == 4)); assert!(({ (*v2.borrow())[1_usize] } == 5)); assert!(({ (*v2.borrow())[2_usize] } == 6)); diff --git a/tests/unit/out/refcount/vector3.rs b/tests/unit/out/refcount/vector3.rs index ae30e3550..e20d9a2a8 100644 --- a/tests/unit/out/refcount/vector3.rs +++ b/tests/unit/out/refcount/vector3.rs @@ -18,52 +18,37 @@ fn main_0() -> i32 { }; { let __a0 = 2_usize as usize; - elem!((v.as_pointer() as Ptr>), 0_usize) + elem!(v.as_pointer().decay(), 0_usize) .with_mut(|__v: &mut Vec| __v.resize_with(__a0, || ::default())) }; { let __a0 = 1_usize as usize; - elem!((v.as_pointer() as Ptr>), 1_usize) + elem!(v.as_pointer().decay(), 1_usize) .with_mut(|__v: &mut Vec| __v.resize_with(__a0, || ::default())) }; - index!(elem!((v.as_pointer() as Ptr>), 0_usize), 0_usize).write(1); - index!(elem!((v.as_pointer() as Ptr>), 0_usize), 1_usize).write(5); - index!(elem!((v.as_pointer() as Ptr>), 1_usize), 0_usize).write(6); - 'loop_: for v2 in IterRange::new( - (v.as_pointer() as Ptr>>).decay().begin(), - (v.as_pointer() as Ptr>>).decay().end(), - ) { + index!(elem!(v.as_pointer().decay(), 0_usize), 0_usize).write(1); + index!(elem!(v.as_pointer().decay(), 0_usize), 1_usize).write(5); + index!(elem!(v.as_pointer().decay(), 1_usize), 0_usize).write(6); + 'loop_: for v2 in IterRange::new(v.as_pointer().decay().begin(), v.as_pointer().decay().end()) { let v2: Ptr> = v2.iter_deref(); - 'loop_: for i in IterRange::new( - ((v2).clone() as Ptr>).decay().begin(), - ((v2).clone() as Ptr>).decay().end(), - ) { + 'loop_: for i in IterRange::new((v2).clone().decay().begin(), (v2).clone().decay().end()) { let i: Ptr = i.iter_deref(); i.with_mut(|__v| __v.prefix_inc()); } } - 'loop_: for v2 in IterRange::new( - (v.as_pointer() as Ptr>>).decay().begin(), - (v.as_pointer() as Ptr>>).decay().end(), - ) { + 'loop_: for v2 in IterRange::new(v.as_pointer().decay().begin(), v.as_pointer().decay().end()) { let v2: Ptr> = v2.iter_deref(); - 'loop_: for i in IterRange::new( - ((v2).clone() as Ptr>).decay().begin(), - ((v2).clone() as Ptr>).decay().end(), - ) { + 'loop_: for i in IterRange::new((v2).clone().decay().begin(), (v2).clone().decay().end()) { let mut i: i32 = (i.iter_deref().read()); println!("{}", (i + 3)); } } - 'loop_: for v2 in IterRange::new( - (v.as_pointer() as Ptr>>).decay().begin(), - (v.as_pointer() as Ptr>>).decay().end(), - ) { + 'loop_: for v2 in IterRange::new(v.as_pointer().decay().begin(), v.as_pointer().decay().end()) { let v2: Value> = Rc::new(RefCell::new((*v2.iter_deref().upgrade().deref()).clone())); 'loop_: for i in IterRange::new( - (v2.as_pointer() as Ptr>).decay().begin(), - (v2.as_pointer() as Ptr>).decay().end(), + v2.as_pointer().decay().begin(), + v2.as_pointer().decay().end(), ) { let mut i: i32 = (i.iter_deref().read()); println!("{}", i); diff --git a/tests/unit/out/refcount/vector_addr_of_back.rs b/tests/unit/out/refcount/vector_addr_of_back.rs index 850298298..f43a4b604 100644 --- a/tests/unit/out/refcount/vector_addr_of_back.rs +++ b/tests/unit/out/refcount/vector_addr_of_back.rs @@ -17,10 +17,10 @@ fn main_0() -> i32 { let a0_clone = inner.clone(); (*outer.borrow_mut()).push(a0_clone) }; - let mut sink: Ptr> = ((outer.as_pointer() as Ptr>>).decay().to_last()); + let mut sink: Ptr> = (outer.as_pointer().decay().to_last()); assert!(((*sink.upgrade().deref()).len() == 0_usize)); let mut p: Ptr>> = (outer.as_pointer()); - sink = (((p).clone() as Ptr>>).decay().to_last()); + sink = ((p).clone().decay().to_last()); assert!(((*sink.upgrade().deref()).len() == 0_usize)); return 0; } diff --git a/tests/unit/out/refcount/vector_deque_vector_string.rs b/tests/unit/out/refcount/vector_deque_vector_string.rs index 1257e7cbe..1bb035d48 100644 --- a/tests/unit/out/refcount/vector_deque_vector_string.rs +++ b/tests/unit/out/refcount/vector_deque_vector_string.rs @@ -37,7 +37,7 @@ fn main_0() -> i32 { }; (*row.borrow_mut()).push(__a1) }; - elem!((v.as_pointer() as Ptr>>>), 0_usize) + elem!(v.as_pointer().decay(), 0_usize) .with_mut(|__v: &mut Vec>>| __v.push((*row.borrow()).clone())); { let __a1 = { @@ -47,23 +47,20 @@ fn main_0() -> i32 { }; (*row.borrow_mut()).push(__a1) }; - elem!((v.as_pointer() as Ptr>>>), 1_usize) + elem!(v.as_pointer().decay(), 1_usize) .with_mut(|__v: &mut Vec>>| __v.push((*row.borrow()).clone())); { let __init = Vec::new(); - elem!((v.as_pointer() as Ptr>>>), 1_usize) + elem!(v.as_pointer().decay(), 1_usize) .with_mut(|__v: &mut Vec>>| __v.push(__init)) }; { let __a1 = { - let mut r = (*((Ptr::>>::decay( - &(((v.as_pointer() as Ptr>>>) - .offset(0_usize) - .as_pointer() as Ptr>>>) - .decay()), - ) as Ptr>) - .offset(1_usize) - .as_pointer() as Ptr>) + let mut r = (*(Ptr::>>::decay( + &(v.as_pointer().decay().offset(0_usize).as_pointer().decay()), + ) + .offset(1_usize) + .as_pointer() as Ptr>) .upgrade() .deref()) .clone(); @@ -72,17 +69,19 @@ fn main_0() -> i32 { r.push(0); r }; - ((v.as_pointer() as Ptr>>>) + v.as_pointer() + .decay() .offset(1_usize) - .as_pointer() as Ptr>>>) + .as_pointer() .decay() .to_last() .with_mut(|__v: &mut Vec>| __v.push(__a1)) }; assert!( - ((*((v.as_pointer() as Ptr>>>) + ((*v.as_pointer() + .decay() .offset(0_usize) - .as_pointer() as Ptr>>>) + .as_pointer() .decay() .upgrade() .deref()) @@ -90,32 +89,27 @@ fn main_0() -> i32 { == 2_usize) ); assert!( - ((*((v.as_pointer() as Ptr>>>) + ((*v.as_pointer() + .decay() .offset(1_usize) - .as_pointer() as Ptr>>>) + .as_pointer() .decay() .upgrade() .deref()) .len() == 3_usize) && (Ptr::::from_string_literal(b"def").with_c_str(|__s| { - (*((Ptr::>>::decay( - &(((v.as_pointer() as Ptr>>>) - .offset(1_usize) - .as_pointer() as Ptr>>>) - .decay()), - ) as Ptr>) - .offset(2_usize) - .as_pointer() as Ptr>) + (*(Ptr::>>::decay( + &(v.as_pointer().decay().offset(1_usize).as_pointer().decay()), + ) + .offset(2_usize) + .as_pointer() as Ptr>) .upgrade() - .deref())[..(*((Ptr::>>::decay( - &(((v.as_pointer() as Ptr>>>) - .offset(1_usize) - .as_pointer() as Ptr>>>) - .decay()), - ) as Ptr>) - .offset(2_usize) - .as_pointer() as Ptr>) + .deref())[..(*(Ptr::>>::decay( + &(v.as_pointer().decay().offset(1_usize).as_pointer().decay()), + ) + .offset(2_usize) + .as_pointer() as Ptr>) .upgrade() .deref()) .len() @@ -124,25 +118,27 @@ fn main_0() -> i32 { })) ); assert!(Ptr::::from_string_literal(b"bcx").with_c_str(|__s| { - (*((Ptr::>>::decay( - &(((v.as_pointer() as Ptr>>>) + (*(Ptr::>>::decay( + &(v.as_pointer() + .decay() .offset(1_usize) - .as_pointer() as Ptr>>>) + .as_pointer() .decay() .to_last()), - ) as Ptr>) - .offset(0_usize) - .as_pointer() as Ptr>) + ) + .offset(0_usize) + .as_pointer() as Ptr>) .upgrade() - .deref())[..(*((Ptr::>>::decay( - &(((v.as_pointer() as Ptr>>>) + .deref())[..(*(Ptr::>>::decay( + &(v.as_pointer() + .decay() .offset(1_usize) - .as_pointer() as Ptr>>>) + .as_pointer() .decay() .to_last()), - ) as Ptr>) - .offset(0_usize) - .as_pointer() as Ptr>) + ) + .offset(0_usize) + .as_pointer() as Ptr>) .upgrade() .deref()) .len() @@ -150,89 +146,81 @@ fn main_0() -> i32 { == *__s })); let copy: Value>>>> = Rc::new(RefCell::new((*v.borrow()).clone())); - ((Ptr::>>::decay( - &(((copy.as_pointer() as Ptr>>>) + Ptr::>>::decay( + &(copy + .as_pointer() + .decay() .offset(0_usize) - .as_pointer() as Ptr>>>) + .as_pointer() .decay()), - ) as Ptr>) - .offset(0_usize) - .as_pointer() as Ptr>) - .write({ - let mut __bytes = Ptr::::from_string_literal(b"z").to_c_bytes(); - __bytes.push(0); - __bytes - }); + ) + .offset(0_usize) + .as_pointer() + .write({ + let mut __bytes = Ptr::::from_string_literal(b"z").to_c_bytes(); + __bytes.push(0); + __bytes + }); if 0_usize as usize - >= (*((Ptr::>>::decay( - &(((v.as_pointer() as Ptr>>>) - .offset(0_usize) - .as_pointer() as Ptr>>>) - .decay()), - ) as Ptr>) - .offset(1_usize) - .as_pointer() as Ptr>) - .upgrade() - .deref()) + >= (*Ptr::>>::decay( + &(v.as_pointer().decay().offset(0_usize).as_pointer().decay()), + ) + .offset(1_usize) + .as_pointer() + .upgrade() + .deref()) .len() .saturating_sub(1) { panic!("out of bounds access") } else { - ((Ptr::>>::decay( - &(((v.as_pointer() as Ptr>>>) - .offset(0_usize) - .as_pointer() as Ptr>>>) - .decay()), - ) as Ptr>) + Ptr::>>::decay(&(v.as_pointer().decay().offset(0_usize).as_pointer().decay())) .offset(1_usize) - .as_pointer() as Ptr>) + .as_pointer() .decay() .offset(0_usize as isize) } .write(('B' as i8)); assert!( - (Ptr::::from_string_literal(b"a").with_c_str(|__s| (*((Ptr::>>::decay( - &(((v.as_pointer() as Ptr>>>) - .offset(0_usize) - .as_pointer() as Ptr>>>) - .decay()) - ) as Ptr>) - .offset(0_usize) - .as_pointer() + (Ptr::::from_string_literal(b"a").with_c_str(|__s| (*(Ptr::>>::decay( + &(v.as_pointer().decay().offset(0_usize).as_pointer().decay()) + ) + .offset(0_usize) + .as_pointer() as Ptr>) .upgrade() - .deref())[..(*((Ptr::>>::decay( - &(((v.as_pointer() as Ptr>>>) - .offset(0_usize) - .as_pointer() as Ptr>>>) - .decay()) - ) as Ptr>) - .offset(0_usize) - .as_pointer() as Ptr>) + .deref())[..(*(Ptr::>>::decay( + &(v.as_pointer().decay().offset(0_usize).as_pointer().decay()) + ) + .offset(0_usize) + .as_pointer() as Ptr>) .upgrade() .deref()) .len() .saturating_sub(1)] == *__s)) && (Ptr::::from_string_literal(b"z").with_c_str(|__s| { - (*((Ptr::>>::decay( - &(((copy.as_pointer() as Ptr>>>) + (*(Ptr::>>::decay( + &(copy + .as_pointer() + .decay() .offset(0_usize) - .as_pointer() as Ptr>>>) + .as_pointer() .decay()), - ) as Ptr>) - .offset(0_usize) - .as_pointer() as Ptr>) + ) + .offset(0_usize) + .as_pointer() as Ptr>) .upgrade() - .deref())[..(*((Ptr::>>::decay( - &(((copy.as_pointer() as Ptr>>>) + .deref())[..(*(Ptr::>>::decay( + &(copy + .as_pointer() + .decay() .offset(0_usize) - .as_pointer() as Ptr>>>) + .as_pointer() .decay()), - ) as Ptr>) - .offset(0_usize) - .as_pointer() as Ptr>) + ) + .offset(0_usize) + .as_pointer() as Ptr>) .upgrade() .deref()) .len() @@ -241,47 +229,45 @@ fn main_0() -> i32 { })) ); assert!( - (Ptr::::from_string_literal(b"Bc").with_c_str(|__s| (*((Ptr::>>::decay( - &(((v.as_pointer() as Ptr>>>) - .offset(0_usize) - .as_pointer() as Ptr>>>) - .decay()) - ) as Ptr>) - .offset(1_usize) - .as_pointer() + (Ptr::::from_string_literal(b"Bc").with_c_str(|__s| (*(Ptr::>>::decay( + &(v.as_pointer().decay().offset(0_usize).as_pointer().decay()) + ) + .offset(1_usize) + .as_pointer() as Ptr>) .upgrade() - .deref())[..(*((Ptr::>>::decay( - &(((v.as_pointer() as Ptr>>>) - .offset(0_usize) - .as_pointer() as Ptr>>>) - .decay()) - ) as Ptr>) - .offset(1_usize) - .as_pointer() as Ptr>) + .deref())[..(*(Ptr::>>::decay( + &(v.as_pointer().decay().offset(0_usize).as_pointer().decay()) + ) + .offset(1_usize) + .as_pointer() as Ptr>) .upgrade() .deref()) .len() .saturating_sub(1)] == *__s)) && (Ptr::::from_string_literal(b"bc").with_c_str(|__s| { - (*((Ptr::>>::decay( - &(((copy.as_pointer() as Ptr>>>) + (*(Ptr::>>::decay( + &(copy + .as_pointer() + .decay() .offset(0_usize) - .as_pointer() as Ptr>>>) + .as_pointer() .decay()), - ) as Ptr>) - .offset(1_usize) - .as_pointer() as Ptr>) + ) + .offset(1_usize) + .as_pointer() as Ptr>) .upgrade() - .deref())[..(*((Ptr::>>::decay( - &(((copy.as_pointer() as Ptr>>>) + .deref())[..(*(Ptr::>>::decay( + &(copy + .as_pointer() + .decay() .offset(0_usize) - .as_pointer() as Ptr>>>) + .as_pointer() .decay()), - ) as Ptr>) - .offset(1_usize) - .as_pointer() as Ptr>) + ) + .offset(1_usize) + .as_pointer() as Ptr>) .upgrade() .deref()) .len() @@ -289,26 +275,19 @@ fn main_0() -> i32 { == *__s })) ); - elem!((v.as_pointer() as Ptr>>>), 1_usize) - .with_mut(|__v: &mut Vec>>| __v.remove(0)); + elem!(v.as_pointer().decay(), 1_usize).with_mut(|__v: &mut Vec>>| __v.remove(0)); assert!(Ptr::::from_string_literal(b"bcx").with_c_str(|__s| { - (*((Ptr::>>::decay( - &(((v.as_pointer() as Ptr>>>) - .offset(1_usize) - .as_pointer() as Ptr>>>) - .decay()), - ) as Ptr>) - .offset(0_usize) - .as_pointer() as Ptr>) + (*(Ptr::>>::decay( + &(v.as_pointer().decay().offset(1_usize).as_pointer().decay()), + ) + .offset(0_usize) + .as_pointer() as Ptr>) .upgrade() - .deref())[..(*((Ptr::>>::decay( - &(((v.as_pointer() as Ptr>>>) - .offset(1_usize) - .as_pointer() as Ptr>>>) - .decay()), - ) as Ptr>) - .offset(0_usize) - .as_pointer() as Ptr>) + .deref())[..(*(Ptr::>>::decay( + &(v.as_pointer().decay().offset(1_usize).as_pointer().decay()), + ) + .offset(0_usize) + .as_pointer() as Ptr>) .upgrade() .deref()) .len() @@ -316,9 +295,11 @@ fn main_0() -> i32 { == *__s })); assert!( - ((*((copy.as_pointer() as Ptr>>>) + ((*copy + .as_pointer() + .decay() .offset(1_usize) - .as_pointer() as Ptr>>>) + .as_pointer() .decay() .upgrade() .deref()) diff --git a/tests/unit/out/refcount/vector_iter_range_ctor.rs b/tests/unit/out/refcount/vector_iter_range_ctor.rs index c25155822..b0a7a829c 100644 --- a/tests/unit/out/refcount/vector_iter_range_ctor.rs +++ b/tests/unit/out/refcount/vector_iter_range_ctor.rs @@ -73,7 +73,7 @@ fn main_0() -> i32 { assert!((v5.len() == 5_usize)); assert!(((v5[0_usize] as i32) == 10) && ((v5[4_usize] as i32) == 50)); let m: Value, Value)>> = Rc::new(RefCell::new(Map::new())); - (m.as_pointer() as Ptr, Value)>>) + m.as_pointer() .with_mut(|__m: &mut Map, Value)>| { __m.get_or_insert_with(1.clone(), || { ( @@ -86,7 +86,7 @@ fn main_0() -> i32 { .as_pointer() }) .write(10); - (m.as_pointer() as Ptr, Value)>>) + m.as_pointer() .with_mut(|__m: &mut Map, Value)>| { __m.get_or_insert_with(2.clone(), || { ( @@ -99,7 +99,7 @@ fn main_0() -> i32 { .as_pointer() }) .write(20); - (m.as_pointer() as Ptr, Value)>>) + m.as_pointer() .with_mut(|__m: &mut Map, Value)>| { __m.get_or_insert_with(3.clone(), || { ( @@ -114,10 +114,11 @@ fn main_0() -> i32 { .write(30); let v6: Value, Value)>> = Rc::new(RefCell::new({ let mut __v = Vec::new(); - let mut __it = (m.as_pointer() as Ptr, Value)>>) + let mut __it = m + .as_pointer() .with(|__m: &Map, Value)>| __m.begin()); while __it - != (m.as_pointer() as Ptr, Value)>>) + != m.as_pointer() .with(|__m: &Map, Value)>| __m.end()) { __v.push( @@ -140,30 +141,25 @@ fn main_0() -> i32 { ); { let start_idx = , Value)>>::from( - (v6.as_pointer() as Ptr, Value)>>) - .decay() - .begin() - .iter_add(1_isize), + v6.as_pointer().decay().begin().iter_add(1_isize), ) .index(); let mut temp_vec: Vec<(Value, Value)> = Vec::new(); - let mut __it = (m.as_pointer() as Ptr, Value)>>) + let mut __it = m + .as_pointer() .with(|__m: &Map, Value)>| __m.begin()); while __it - != (m.as_pointer() as Ptr, Value)>>) + != m.as_pointer() .with(|__m: &Map, Value)>| __m.end()) { temp_vec.push(__it.iter_deref().read()); __it.iter_inc(); } - (v6.as_pointer() as Ptr, Value)>>).with_mut( - |v: &mut Vec<(Value, Value)>| { + v6.as_pointer() + .with_mut(|v: &mut Vec<(Value, Value)>| { v.splice(start_idx..start_idx, temp_vec); - }, - ); - RandomAccessIterator::Vec( - (v6.as_pointer() as Ptr, Value)>>).decay() + start_idx, - ) + }); + RandomAccessIterator::Vec(v6.as_pointer().decay() + start_idx) }; assert!(((*v6.borrow()).len() == 6_usize)); assert!( diff --git a/tests/unit/out/refcount/vector_subscript_borrow.rs b/tests/unit/out/refcount/vector_subscript_borrow.rs index b64d0e5ec..72499bfd6 100644 --- a/tests/unit/out/refcount/vector_subscript_borrow.rs +++ b/tests/unit/out/refcount/vector_subscript_borrow.rs @@ -38,22 +38,22 @@ fn main_0() -> i32 { items[2_usize].postfix_inc(); assert!(((items[0_usize] == 0_u32) && (items[1_usize] == 7_u32)) && (items[2_usize] == 5_u32)); elem!( - (v.as_pointer() as Ptr), + v.as_pointer().decay(), ({ (*v.borrow())[0_usize] } as usize) ) .write(3); let __rhs = ({ (*v.borrow())[1_usize] } + 4); elem!( - (v.as_pointer() as Ptr), + v.as_pointer().decay(), ({ (*v.borrow())[1_usize] } as usize) ) .write(__rhs); assert!(({ (*v.borrow())[1_usize] } == 3) && ({ (*v.borrow())[3_usize] } == 7)); - let mut p: Ptr = ((v.as_pointer() as Ptr).offset(0_usize)); - elem!((v.as_pointer() as Ptr), ((p.read()) as usize)).write(9); + let mut p: Ptr = (v.as_pointer().decay().offset(0_usize)); + elem!(v.as_pointer().decay(), ((p.read()) as usize)).write(9); assert!(({ (*v.borrow())[1_usize] } == 9)); elem!( - (v.as_pointer() as Ptr), + v.as_pointer().decay(), (({ bump_1((v.as_pointer()), 10,) }) as usize) ) .write(2); diff --git a/tests/unit/out/refcount/vector_subscript_direct.rs b/tests/unit/out/refcount/vector_subscript_direct.rs index a4429087c..3bb1e60cf 100644 --- a/tests/unit/out/refcount/vector_subscript_direct.rs +++ b/tests/unit/out/refcount/vector_subscript_direct.rs @@ -57,30 +57,30 @@ fn main_0() -> i32 { (*v.borrow_mut())[1_usize] = 0; assert!( ((elem!( - (v.as_pointer() as Ptr), + v.as_pointer().decay(), ({ (*v.borrow())[1_usize] } as usize) ) .read()) == 7) ); let mut i: i32 = 0; - elem!((v.as_pointer() as Ptr), (i.postfix_inc() as usize)).write(3); + elem!(v.as_pointer().decay(), (i.postfix_inc() as usize)).write(3); assert!((i == 1) && ({ (*v.borrow())[0_usize] } == 3)); assert!( ((elem!( - (v.as_pointer() as Ptr), + v.as_pointer().decay(), (({ push_and_index_0(v.as_pointer(),) }) as usize) ) .read()) == 42) ); elem!( - (v.as_pointer() as Ptr), + v.as_pointer().decay(), (({ push_and_index_0(v.as_pointer(),) }) as usize) ) .write(5); assert!(((*v.borrow()).len() == 5_usize) && ({ (*v.borrow())[4_usize] } == 5)); - let mut p: Ptr = ((v.as_pointer() as Ptr).offset(2_usize)); + let mut p: Ptr = (v.as_pointer().decay().offset(2_usize)); p.write(9); assert!(({ (*v.borrow())[2_usize] } == 9)); assert!((({ sum_ref_1(v.as_pointer(),) }) == ((((3 + 0) + 9) + 42) + 5))); @@ -101,7 +101,10 @@ fn main_0() -> i32 { assert!( (({ PointImpl::sum( - &(field_ref!(h.as_pointer(), points).as_pointer() as Ptr).offset(0_usize), + &field_ref!(h.as_pointer(), points) + .as_pointer() + .decay() + .offset(0_usize), ) }) == 6) ); @@ -126,60 +129,21 @@ fn main_0() -> i32 { let __a1 = vec![0; 3_usize as usize]; (*grid.borrow_mut()).push(__a1) }; - index!( - elem!((grid.as_pointer() as Ptr>), 1_usize), - 2_usize - ) - .write(8); + index!(elem!(grid.as_pointer().decay(), 1_usize), 2_usize).write(8); assert!( - ((index!( - elem!((grid.as_pointer() as Ptr>), 1_usize), - 2_usize - ) - .read()) - == 8) - && ((index!( - elem!((grid.as_pointer() as Ptr>), 0_usize), - 2_usize - ) - .read()) - == 0) + ((index!(elem!(grid.as_pointer().decay(), 1_usize), 2_usize).read()) == 8) + && ((index!(elem!(grid.as_pointer().decay(), 0_usize), 2_usize).read()) == 0) ); - let __rhs = (index!( - elem!((grid.as_pointer() as Ptr>), 1_usize), - 2_usize - ) - .read()); - index!( - elem!((grid.as_pointer() as Ptr>), 0_usize), - 1_usize - ) - .write(__rhs); - let __rhs = (index!( - elem!((grid.as_pointer() as Ptr>), 0_usize), - 1_usize - ) - .read()); + let __rhs = (index!(elem!(grid.as_pointer().decay(), 1_usize), 2_usize).read()); + index!(elem!(grid.as_pointer().decay(), 0_usize), 1_usize).write(__rhs); + let __rhs = (index!(elem!(grid.as_pointer().decay(), 0_usize), 1_usize).read()); { - index!( - elem!((grid.as_pointer() as Ptr>), 1_usize), - 0_usize - ) - .with_mut(|__v| *__v = *__v + __rhs) + index!(elem!(grid.as_pointer().decay(), 1_usize), 0_usize) + .with_mut(|__v| *__v = *__v + __rhs) }; assert!( - ((index!( - elem!((grid.as_pointer() as Ptr>), 0_usize), - 1_usize - ) - .read()) - == 8) - && ((index!( - elem!((grid.as_pointer() as Ptr>), 1_usize), - 0_usize - ) - .read()) - == 8) + ((index!(elem!(grid.as_pointer().decay(), 0_usize), 1_usize).read()) == 8) + && ((index!(elem!(grid.as_pointer().decay(), 1_usize), 0_usize).read()) == 8) ); let a: Value> = Rc::new(RefCell::new(Vec::from([4, 5, 6]))); let __rhs = ({ (*a.borrow())[0_usize] } + { (*a.borrow())[2_usize] }); diff --git a/tests/unit/out/refcount/vector_with_allocator.rs b/tests/unit/out/refcount/vector_with_allocator.rs index 9fa53a67a..1939bb3b5 100644 --- a/tests/unit/out/refcount/vector_with_allocator.rs +++ b/tests/unit/out/refcount/vector_with_allocator.rs @@ -37,20 +37,20 @@ pub fn fn_1(v: Ptr>, v3: Vec) { x = (index!(v, 2_usize).read()); v2[0_usize] = 1; elem!( - ((if true { + (if true { (Ptr::>::decay(&(v3.as_pointer()))) } else { (Ptr::>::decay(&(v))) - }) as Ptr), + }), 0_usize ) .write(7); index!(v4, 1_usize).write(13); assert!((x == 6)); - assert!(((((v).clone() as Ptr>).decay().read()) == 4)); + assert!((((v).clone().decay().read()) == 4)); assert!(((index!(v, 1_usize).read()) == 5)); assert!(((index!(v, 2_usize).read()) == 6)); - assert!(((((v).clone() as Ptr>).decay().to_last().read()) == 20)); + assert!((((v).clone().decay().to_last().read()) == 20)); assert!(({ (*v3.borrow())[0_usize] } == 7)); assert!(({ (*v3.borrow())[1_usize] } == 13)); { @@ -100,21 +100,18 @@ fn main_0() -> i32 { }; assert!(((*v2.borrow()).len() == 3_usize)); { - let __off = - >::from((v2.as_pointer() as Ptr>).decay().begin()) - .index(); - (v2.as_pointer() as Ptr>).with_mut(|__v: &mut Vec| __v.remove(__off)); - RandomAccessIterator::Vec((v2.as_pointer() as Ptr>).decay() + __off) + let __off = >::from(v2.as_pointer().decay().begin()).index(); + v2.as_pointer() + .with_mut(|__v: &mut Vec| __v.remove(__off)); + RandomAccessIterator::Vec(v2.as_pointer().decay() + __off) }; assert!(((*v2.borrow()).len() == 2_usize)); assert!(({ (*v2.borrow())[0_usize] } == 2)); assert!(({ (*v2.borrow())[1_usize] } == 3)); { - let __off = - >::from((v2.as_pointer() as Ptr>).decay().begin()) - .index(); + let __off = >::from(v2.as_pointer().decay().begin()).index(); (*v2.borrow_mut()).insert(__off, 100); - >::from((v2.as_pointer() as Ptr>).decay().begin()) + >::from(v2.as_pointer().decay().begin()) }; ({ copy_0((*v2.borrow()).clone()) }); assert!(((*v2.borrow()).len() == 3_usize)); @@ -136,9 +133,9 @@ fn main_0() -> i32 { assert!(({ (*v6.borrow())[(i as usize)] } == 2_f64)); i.prefix_inc(); } - let mut p1: Ptr = (v6.as_pointer() as Ptr>).decay(); + let mut p1: Ptr = v6.as_pointer().decay(); assert!(((p1.read()) == 2_f64)); - let mut p2: Ptr = (v3.as_pointer() as Ptr>).decay(); + let mut p2: Ptr = v3.as_pointer().decay(); assert!(((p2.read()) == 1)); assert!(({ (*v3.borrow())[0_usize] } == 1)); assert!(({ (*v3.borrow())[1_usize] } == 1)); @@ -176,52 +173,54 @@ fn main_0() -> i32 { }; assert!(((*v3.borrow()).capacity() == 201_usize)); assert!(((*v3.borrow()).len() == 100_usize)); - assert!((((v2.as_pointer() as Ptr>).decay().to_last().read()) == 3)); - assert!((((v3.as_pointer() as Ptr>).decay().to_last().read()) == 1)); - assert!((((v6.as_pointer() as Ptr>).decay().to_last().read()) == 2_f64)); - let ref0: Ptr = (v6.as_pointer() as Ptr>).decay().to_last(); + assert!(((v2.as_pointer().decay().to_last().read()) == 3)); + assert!(((v3.as_pointer().decay().to_last().read()) == 1)); + assert!(((v6.as_pointer().decay().to_last().read()) == 2_f64)); + let ref0: Ptr = v6.as_pointer().decay().to_last(); ref0.write(5_f64); - assert!((((v6.as_pointer() as Ptr>).decay().to_last().read()) == 5_f64)); - let mut x0: f64 = ((v6.as_pointer() as Ptr>).decay().to_last().read()); + assert!(((v6.as_pointer().decay().to_last().read()) == 5_f64)); + let mut x0: f64 = (v6.as_pointer().decay().to_last().read()); assert!((x0 == 5_f64)); x0 = 6_f64; - assert!((((v6.as_pointer() as Ptr>).decay().to_last().read()) == 5_f64)); + assert!(((v6.as_pointer().decay().to_last().read()) == 5_f64)); let mut idx: i32 = 0; assert!( - (((v6.as_pointer() as Ptr>) + ((v6.as_pointer() .decay() .offset((idx as usize) as isize) .read()) == 2_f64) ); assert!( - (((v6.as_pointer() as Ptr>) + ((v6.as_pointer() .decay() .offset((s2).wrapping_sub(1_usize) as isize) .read()) == 5_f64) ); - let ref1: Ptr = (v6.as_pointer() as Ptr>) + let ref1: Ptr = v6 + .as_pointer() .decay() .offset((s2).wrapping_sub(1_usize) as isize); { ref1.with_mut(|__v| *__v = *__v + 1.5_f64) }; assert!( - (((v6.as_pointer() as Ptr>) + ((v6.as_pointer() .decay() .offset((s2).wrapping_sub(1_usize) as isize) .read()) == 6.5_f64) ); - let mut x1: f64 = ((v6.as_pointer() as Ptr>) + let mut x1: f64 = (v6 + .as_pointer() .decay() .offset((s2).wrapping_sub(1_usize) as isize) .read()); assert!((x1 == 6.5_f64)); x1 -= 1.5_f64; assert!( - (((v6.as_pointer() as Ptr>) + ((v6.as_pointer() .decay() .offset((s2).wrapping_sub(1_usize) as isize) .read()) @@ -312,12 +311,9 @@ fn main_0() -> i32 { assert!((v13.len() == 5_usize)); assert!(((v13[0_usize] as i32) == 10) && ((v13[4_usize] as i32) == 50)); assert!( - (((s1).wrapping_add(s2)).wrapping_add( - (((v2.as_pointer() as Ptr>) - .decay() - .offset(0_usize as isize) - .read()) as usize) - ) == 103_usize) + (((s1).wrapping_add(s2)) + .wrapping_add(((v2.as_pointer().decay().offset(0_usize as isize).read()) as usize)) + == 103_usize) ); return 0; } diff --git a/tests/unit/out/refcount/void_cast.rs b/tests/unit/out/refcount/void_cast.rs index 96d41f5b1..42236d076 100644 --- a/tests/unit/out/refcount/void_cast.rs +++ b/tests/unit/out/refcount/void_cast.rs @@ -130,7 +130,7 @@ pub trait NonCopyableImpl { } impl NonCopyableImpl for Ptr { fn move_assign(&self, _a0: Ptr) -> Ptr { - (field_ptr!((*self), value) as Ptr>>) + field_ptr!((*self), value) .write(field!(_a0, value).with_mut(|__v: &mut Option>| __v.take())); return (*self).clone(); } diff --git a/tests/unit/out/refcount/void_return.rs b/tests/unit/out/refcount/void_return.rs index f755ba78c..9328709cb 100644 --- a/tests/unit/out/refcount/void_return.rs +++ b/tests/unit/out/refcount/void_return.rs @@ -58,8 +58,8 @@ pub fn main() { fn main_0() -> i32 { let v: Value> = Rc::new(RefCell::new(Vec::from([1, 3, 0, 2, 8, 7]))); ({ - let _first: RandomAccessIterator = (v.as_pointer() as Ptr>).decay().begin(); - let _last: RandomAccessIterator = (v.as_pointer() as Ptr>).decay().end(); + let _first: RandomAccessIterator = v.as_pointer().decay().begin(); + let _last: RandomAccessIterator = v.as_pointer().decay().end(); f1_0(_first, _last) }); let a: Value> = Rc::new(RefCell::new(Box::new([1, 2, 3]))); From c2c8bfec6bd67ad0ba07ee1e4dad507b3c6bee0f Mon Sep 17 00:00:00 2001 From: Lucian Popescu Date: Tue, 20 Oct 2026 13:54:19 +0100 Subject: [PATCH 04/12] Drop unneeded casts on ptr --- cpp2rust/converter/converter.cpp | 7 ++- cpp2rust/converter/converter.h | 3 ++ .../converter/models/converter_refcount.cpp | 47 ++++++++++--------- .../converter/models/converter_refcount.h | 5 ++ 4 files changed, 40 insertions(+), 22 deletions(-) diff --git a/cpp2rust/converter/converter.cpp b/cpp2rust/converter/converter.cpp index de802c205..b8f827436 100644 --- a/cpp2rust/converter/converter.cpp +++ b/cpp2rust/converter/converter.cpp @@ -223,6 +223,11 @@ std::string Converter::ConvertFreshObject(clang::Expr *expr) { return ConvertFreshPointer(expr); } +std::string Converter::ConvertPointerReceiver(clang::Expr *arg, + std::string_view param_type) { + return std::format("({} as {})", ConvertFreshObject(arg), param_type); +} + std::string Converter::ConvertLValue(clang::Expr *expr) { PushExprKind push(*this, ExprKind::LValue); return ToString(expr); @@ -5125,7 +5130,7 @@ std::string Converter::ConvertPlaceholder(clang::Expr *expr, clang::Expr *arg, if (ph_ctx.needs_pointer_receiver()) { auto param_type = Mapper::GetParamType(*this, expr, ph_ctx.arg_idx); - return std::format("({} as {})", ConvertFreshObject(arg), param_type); + return ConvertPointerReceiver(arg, param_type); } if (ph_ctx.needs_object_receiver()) { diff --git a/cpp2rust/converter/converter.h b/cpp2rust/converter/converter.h index 0a3afdfc7..2787bd7bf 100644 --- a/cpp2rust/converter/converter.h +++ b/cpp2rust/converter/converter.h @@ -1077,6 +1077,9 @@ class Converter : public clang::RecursiveASTVisitor { ConvertFreshPointer(clang::Expr *expr, std::optional implicit_convert_to = {}); virtual std::string ConvertFreshObject(clang::Expr *expr); + + virtual std::string ConvertPointerReceiver(clang::Expr *arg, + std::string_view param_type); std::string ConvertPointer(clang::Expr *expr, std::optional implicit_convert_to = {}, diff --git a/cpp2rust/converter/models/converter_refcount.cpp b/cpp2rust/converter/models/converter_refcount.cpp index 96d7d7891..0315b3293 100644 --- a/cpp2rust/converter/models/converter_refcount.cpp +++ b/cpp2rust/converter/models/converter_refcount.cpp @@ -392,6 +392,18 @@ std::string ConverterRefCount::ConvertObject(clang::Expr *expr, return str; } +std::string ConverterRefCount::AsPointerMethod(clang::QualType type) const { + return isObject() && WantsElementPtr() && + type.getNonReferenceType()->isRecordType() + ? ".as_pointer().decay()" + : ".as_pointer()"; +} + +std::string ConverterRefCount::ConvertPointerReceiver(clang::Expr *arg, + std::string_view) { + return ConvertFreshObject(arg); +} + std::string ConverterRefCount::ConvertFreshObject(clang::Expr *expr) { auto str = ConvertObject(expr); if (isFresh()) { @@ -1047,11 +1059,12 @@ void ConverterRefCount::ConvertDeclRefValue(clang::Expr *expr, if (isAddrOf()) { if (is_global_value) { - StrCat(std::format("{}.with(|v| v.as_pointer())", std::move(str))); + StrCat(std::format("{}.with(|v| v{})", std::move(str), + AsPointerMethod(decl_t))); } else if (is_global_ptr) { StrCat(str); } else { - StrCat(str, ".as_pointer()"); + StrCat(str, AsPointerMethod(decl_t)); } computed_expr_type_ = ComputedExprType::FreshPointer; return; @@ -1328,7 +1341,7 @@ bool ConverterRefCount::VisitCallExpr(clang::CallExpr *expr) { if (isAddrOf() && !ty->isReferenceType() && !IsPointerType(ctx_, ty)) { PushConversionKind push(*this, ConversionKind::FullRefCount); - StrCat(BoxValue(std::move(str)), ".as_pointer()"); + StrCat(BoxValue(std::move(str)), AsPointerMethod(ty)); return false; } @@ -2065,7 +2078,7 @@ bool ConverterRefCount::VisitMemberExpr(clang::MemberExpr *expr) { if (member->getType()->isReferenceType()) { computed_expr_type_ = ComputedExprType::Pointer; } else { - StrCat(".as_pointer()"); + StrCat(AsPointerMethod(member->getType())); computed_expr_type_ = ComputedExprType::FreshPointer; } return false; @@ -2100,8 +2113,8 @@ void ConverterRefCount::ConvertInlineField(clang::MemberExpr *expr) { StrCat(std::format("array_field_ptr!({}, {})", ConvertRecordPtr(expr), name)); } else if (IsBoxedType(ctx_, type)) { - StrCat(std::format("field_ref!({}, {}).as_pointer()", - ConvertRecordPtr(expr), name)); + StrCat(std::format("field_ref!({}, {}){}", ConvertRecordPtr(expr), name, + AsPointerMethod(type))); } else { StrCat(std::format("field_ptr!({}, {})", ConvertRecordPtr(expr), name)); } @@ -2804,25 +2817,17 @@ bool ConverterRefCount::ConvertCXXOperatorCallExpr( StrCat(GetPointerDerefPrefix(expr->getType())); } - if (is_inner_boxed && !isObject()) { - StrCat('('); - } - PushConversionKind push(*this, ConversionKind::Unboxed); if (deref && !is_inner_boxed) { StrCat(ConvertElemPlace(expr->getArg(0), expr->getArg(1))); } else { - StrCat(std::format("({} as {}).offset({})", + StrCat(std::format("{}.offset({})", ConvertObject(expr->getArg(0), ObjectShape::Element), - ConvertPtrType(expr->getArg(0)->getType()), ConvertSubscriptIndex(expr->getArg(1)))); } if (is_inner_boxed) { - StrCat(".as_pointer()"); - if (!isObject()) { - StrCat(std::format("as Ptr<{}>)", ToString(expr->getType()))); - } + StrCat(".decay()"); } if (isAddrOf()) { @@ -2881,10 +2886,9 @@ std::string ConverterRefCount::ConvertElemPlace(clang::Expr *container, return std::format("index!({}, {})", place, ConvertSubscriptIndex(idx)); } } - auto ptr = - std::format("({} as {})", ConvertObject(container, ObjectShape::Element), - ConvertPtrType(container->getType())); - return std::format("elem!({}, {})", ptr, ConvertSubscriptIndex(idx)); + return std::format("elem!({}, {})", + ConvertObject(container, ObjectShape::Element), + ConvertSubscriptIndex(idx)); } void ConverterRefCount::ConvertFunctionParameters(clang::FunctionDecl *decl) { @@ -3384,7 +3388,8 @@ void ConverterRefCount::SetUFCSReceiver(clang::Expr *base, bool is_arrow, !IsReferenceType(base->IgnoreImplicit())) { PushConversionKind push(*this, ConversionKind::FullRefCount); ufcs_receiver_ = - token::kRef + BoxValue(ConvertRValue(base)) + ".as_pointer()"; + token::kRef + BoxValue(ConvertRValue(base)) + + AsPointerMethod(base->getType()); return; } ufcs_receiver_ = token::kRef + (base_is_pointer ? ConvertRValue(base) diff --git a/cpp2rust/converter/models/converter_refcount.h b/cpp2rust/converter/models/converter_refcount.h index 5fffcfefb..2c5716e76 100644 --- a/cpp2rust/converter/models/converter_refcount.h +++ b/cpp2rust/converter/models/converter_refcount.h @@ -394,6 +394,11 @@ class ConverterRefCount final : public Converter { std::string ConvertObject(clang::Expr *expr, ObjectShape shape = ObjectShape::Whole); std::string ConvertFreshObject(clang::Expr *expr) override; + + std::string ConvertPointerReceiver(clang::Expr *arg, + std::string_view param_type) override; + + std::string AsPointerMethod(clang::QualType type) const; bool WantsElementPtr() const { return object_shape_ == ObjectShape::Element; } std::string ConvertFresh(clang::Expr *expr, From 955cf952601233c024e82ed578e74a9c44b2f8f5 Mon Sep 17 00:00:00 2001 From: Lucian Popescu Date: Tue, 20 Oct 2026 13:55:44 +0100 Subject: [PATCH 05/12] Delete AsPointer for Vec --- libcc2rs/src/field.rs | 21 --------------------- libcc2rs/src/rc.rs | 17 ----------------- 2 files changed, 38 deletions(-) diff --git a/libcc2rs/src/field.rs b/libcc2rs/src/field.rs index 260a8945c..efc04dd4d 100644 --- a/libcc2rs/src/field.rs +++ b/libcc2rs/src/field.rs @@ -442,27 +442,6 @@ where } } -impl AsPointer for FieldRef, G, M> -where - S: Record, - T: ByteRepr, - G: Fn(&S) -> &Vec + Copy + 'static, - M: Fn(&mut S) -> &mut Vec + Copy + 'static, -{ - #[inline] - fn as_pointer(&self) -> Ptr { - match &self.base.kind { - PtrKind::Field(_, _, FieldShape::Single) => self - .base - .field_ptr(self.get, self.get_mut, self.offset) - .decay(), - _ => self - .base - .elems_of(self.get, self.get_mut, (self.offset)(&S::OFFSETS), false), - } - } -} - // The sequence that `get` gives in the struct that `base` points to, which is // reached through `base`: a field, as a sequence of one element, or the // elements of an array or vector field. It is the parent of the pointers into diff --git a/libcc2rs/src/rc.rs b/libcc2rs/src/rc.rs index f0742fe5f..a38ac1a29 100644 --- a/libcc2rs/src/rc.rs +++ b/libcc2rs/src/rc.rs @@ -1402,16 +1402,6 @@ impl AsPointer for Option>>> { } } -impl AsPointer for Rc>> { - #[inline] - fn as_pointer(&self) -> Ptr { - Ptr { - offset: 0, - kind: PtrKind::StackVec(Rc::downgrade(self)), - } - } -} - impl AsPointer> for Ptr> { #[inline] fn as_pointer(&self) -> Ptr> { @@ -1419,13 +1409,6 @@ impl AsPointer> for Ptr> { } } -impl AsPointer for Ptr> { - #[inline] - fn as_pointer(&self) -> Ptr { - self.decay() - } -} - impl Ptr> { #[inline] pub fn decay(&self) -> Ptr { From 8b002b12ccbc49dd508a4558afab07fe4530c0e9 Mon Sep 17 00:00:00 2001 From: Lucian Popescu Date: Tue, 20 Oct 2026 14:01:06 +0100 Subject: [PATCH 06/12] Fix decay --- .../converter/models/converter_refcount.cpp | 2 +- .../out/refcount/row_ptr_outlives_vector.rs | 7 +- tests/unit/out/refcount/clone_vs_move.rs | 20 +- .../unit/out/refcount/copy_move_defaulted.rs | 3 +- .../out/refcount/inline_container_fields.rs | 2 +- tests/unit/out/refcount/push_emplace_back.rs | 13 +- .../refcount/vector_deque_vector_string.rs | 202 ++++++------------ 7 files changed, 88 insertions(+), 161 deletions(-) diff --git a/cpp2rust/converter/models/converter_refcount.cpp b/cpp2rust/converter/models/converter_refcount.cpp index 0315b3293..5afe7c363 100644 --- a/cpp2rust/converter/models/converter_refcount.cpp +++ b/cpp2rust/converter/models/converter_refcount.cpp @@ -2826,7 +2826,7 @@ bool ConverterRefCount::ConvertCXXOperatorCallExpr( ConvertSubscriptIndex(expr->getArg(1)))); } - if (is_inner_boxed) { + if (is_inner_boxed && isObject() && WantsElementPtr()) { StrCat(".decay()"); } diff --git a/tests/ub/out/refcount/row_ptr_outlives_vector.rs b/tests/ub/out/refcount/row_ptr_outlives_vector.rs index 6c953df4c..84c1d725e 100644 --- a/tests/ub/out/refcount/row_ptr_outlives_vector.rs +++ b/tests/ub/out/refcount/row_ptr_outlives_vector.rs @@ -11,12 +11,7 @@ pub fn second_row_0() -> Ptr { Vec::from([1, 2, 3]), Vec::from([4, 5, 6]), ]))); - return rows - .as_pointer() - .decay() - .offset(1_usize) - .as_pointer() - .decay(); + return rows.as_pointer().decay().offset(1_usize).decay(); } pub fn main() { __cpp2rust_init_globals(); diff --git a/tests/unit/out/refcount/clone_vs_move.rs b/tests/unit/out/refcount/clone_vs_move.rs index b6ee1a62e..90888f52f 100644 --- a/tests/unit/out/refcount/clone_vs_move.rs +++ b/tests/unit/out/refcount/clone_vs_move.rs @@ -161,14 +161,20 @@ fn main_0() -> i32 { let mut i: i32 = 0; 'loop_: while (i < N) { assert!( - ((*(m1.as_pointer().decay().offset((i as usize)).as_pointer() as Ptr>) + ((*m1 + .as_pointer() + .decay() + .offset((i as usize)) .upgrade() .deref()) .len() == 10_usize) ); assert!( - ((*(m2.as_pointer().decay().offset((i as usize)).as_pointer() as Ptr>) + ((*m2 + .as_pointer() + .decay() + .offset((i as usize)) .upgrade() .deref()) .len() @@ -199,14 +205,20 @@ fn main_0() -> i32 { let mut i: i32 = 0; 'loop_: while (i < N) { assert!( - ((*(m1.as_pointer().decay().offset((i as usize)).as_pointer() as Ptr>) + ((*m1 + .as_pointer() + .decay() + .offset((i as usize)) .upgrade() .deref()) .len() == 10_usize) ); assert!( - ((*(m2.as_pointer().decay().offset((i as usize)).as_pointer() as Ptr>) + ((*m2 + .as_pointer() + .decay() + .offset((i as usize)) .upgrade() .deref()) .len() diff --git a/tests/unit/out/refcount/copy_move_defaulted.rs b/tests/unit/out/refcount/copy_move_defaulted.rs index 6bdaff3dc..2423c64aa 100644 --- a/tests/unit/out/refcount/copy_move_defaulted.rs +++ b/tests/unit/out/refcount/copy_move_defaulted.rs @@ -340,11 +340,10 @@ fn main_0() -> i32 { ); assert!( (((*r.borrow()).rows.len() == 1_usize) - && ((*(field_ref!(r.as_pointer(), rows) + && ((*field_ref!(r.as_pointer(), rows) .as_pointer() .decay() .offset(0_usize) - .as_pointer() as Ptr>) .upgrade() .deref()) .len() diff --git a/tests/unit/out/refcount/inline_container_fields.rs b/tests/unit/out/refcount/inline_container_fields.rs index 2d589974b..5474cbf60 100644 --- a/tests/unit/out/refcount/inline_container_fields.rs +++ b/tests/unit/out/refcount/inline_container_fields.rs @@ -184,7 +184,7 @@ fn main_0() -> i32 { .as_pointer() .decay() .offset(0_usize) - .as_pointer() + .decay() .offset(0_usize)); elem!(row, 2).write(9); assert!(((index!(vec_elem!(s.as_pointer(), rows, 0_usize), 2_usize).read()) == 9)); diff --git a/tests/unit/out/refcount/push_emplace_back.rs b/tests/unit/out/refcount/push_emplace_back.rs index 5e7c65300..13ac9e7bf 100644 --- a/tests/unit/out/refcount/push_emplace_back.rs +++ b/tests/unit/out/refcount/push_emplace_back.rs @@ -179,21 +179,15 @@ fn main_0() -> i32 { let vecs: Value>> = Rc::new(RefCell::new(Vec::new())); ({ push_param_0((vecs.as_pointer())) }); assert!(((*vecs.borrow()).len() == 1_usize)); - assert!( - (*(vecs.as_pointer().decay().offset(0_usize).as_pointer() as Ptr>) - .upgrade() - .deref()) - .is_empty() - ); + assert!((*vecs.as_pointer().decay().offset(0_usize).upgrade().deref()).is_empty()); let jpg: Value = Rc::new(RefCell::new(::default())); ({ push_local_from_field_1((jpg.as_pointer()), true) }); assert!(((*jpg.borrow()).com_data.len() == 1_usize)); assert!( - ((*(field_ref!(jpg.as_pointer(), com_data) + ((*field_ref!(jpg.as_pointer(), com_data) .as_pointer() .decay() .offset(0_usize) - .as_pointer() as Ptr>) .upgrade() .deref()) .len() @@ -221,11 +215,10 @@ fn main_0() -> i32 { ({ emplace_local_from_field_4((jpg.as_pointer()), false) }); assert!(((*jpg.borrow()).app_data.len() == 1_usize)); assert!( - ((*(field_ref!(jpg.as_pointer(), app_data) + ((*field_ref!(jpg.as_pointer(), app_data) .as_pointer() .decay() .offset(0_usize) - .as_pointer() as Ptr>) .upgrade() .deref()) .len() diff --git a/tests/unit/out/refcount/vector_deque_vector_string.rs b/tests/unit/out/refcount/vector_deque_vector_string.rs index 1bb035d48..334c682fe 100644 --- a/tests/unit/out/refcount/vector_deque_vector_string.rs +++ b/tests/unit/out/refcount/vector_deque_vector_string.rs @@ -56,14 +56,12 @@ fn main_0() -> i32 { }; { let __a1 = { - let mut r = (*(Ptr::>>::decay( - &(v.as_pointer().decay().offset(0_usize).as_pointer().decay()), - ) - .offset(1_usize) - .as_pointer() as Ptr>) - .upgrade() - .deref()) - .clone(); + let mut r = + (*Ptr::>>::decay(&(v.as_pointer().decay().offset(0_usize).decay())) + .offset(1_usize) + .upgrade() + .deref()) + .clone(); r.pop(); Ptr::::from_string_literal(b"x").with_c_str(|__s| r.extend_from_slice(__s)); r.push(0); @@ -72,7 +70,6 @@ fn main_0() -> i32 { v.as_pointer() .decay() .offset(1_usize) - .as_pointer() .decay() .to_last() .with_mut(|__v: &mut Vec>| __v.push(__a1)) @@ -81,7 +78,6 @@ fn main_0() -> i32 { ((*v.as_pointer() .decay() .offset(0_usize) - .as_pointer() .decay() .upgrade() .deref()) @@ -92,184 +88,121 @@ fn main_0() -> i32 { ((*v.as_pointer() .decay() .offset(1_usize) - .as_pointer() .decay() .upgrade() .deref()) .len() == 3_usize) && (Ptr::::from_string_literal(b"def").with_c_str(|__s| { - (*(Ptr::>>::decay( - &(v.as_pointer().decay().offset(1_usize).as_pointer().decay()), - ) - .offset(2_usize) - .as_pointer() as Ptr>) + (*Ptr::>>::decay(&(v.as_pointer().decay().offset(1_usize).decay())) + .offset(2_usize) .upgrade() - .deref())[..(*(Ptr::>>::decay( - &(v.as_pointer().decay().offset(1_usize).as_pointer().decay()), + .deref())[..(*Ptr::>>::decay( + &(v.as_pointer().decay().offset(1_usize).decay()), ) .offset(2_usize) - .as_pointer() as Ptr>) - .upgrade() - .deref()) + .upgrade() + .deref()) .len() .saturating_sub(1)] == *__s })) ); assert!(Ptr::::from_string_literal(b"bcx").with_c_str(|__s| { - (*(Ptr::>>::decay( - &(v.as_pointer() - .decay() - .offset(1_usize) - .as_pointer() - .decay() - .to_last()), - ) - .offset(0_usize) - .as_pointer() as Ptr>) + (*Ptr::>>::decay(&(v.as_pointer().decay().offset(1_usize).decay().to_last())) + .offset(0_usize) .upgrade() - .deref())[..(*(Ptr::>>::decay( - &(v.as_pointer() - .decay() - .offset(1_usize) - .as_pointer() - .decay() - .to_last()), + .deref())[..(*Ptr::>>::decay( + &(v.as_pointer().decay().offset(1_usize).decay().to_last()), ) .offset(0_usize) - .as_pointer() as Ptr>) - .upgrade() - .deref()) + .upgrade() + .deref()) .len() .saturating_sub(1)] == *__s })); let copy: Value>>>> = Rc::new(RefCell::new((*v.borrow()).clone())); - Ptr::>>::decay( - &(copy - .as_pointer() - .decay() - .offset(0_usize) - .as_pointer() - .decay()), - ) - .offset(0_usize) - .as_pointer() - .write({ - let mut __bytes = Ptr::::from_string_literal(b"z").to_c_bytes(); - __bytes.push(0); - __bytes - }); + Ptr::>>::decay(&(copy.as_pointer().decay().offset(0_usize).decay())) + .offset(0_usize) + .write({ + let mut __bytes = Ptr::::from_string_literal(b"z").to_c_bytes(); + __bytes.push(0); + __bytes + }); if 0_usize as usize - >= (*Ptr::>>::decay( - &(v.as_pointer().decay().offset(0_usize).as_pointer().decay()), - ) - .offset(1_usize) - .as_pointer() - .upgrade() - .deref()) + >= (*Ptr::>>::decay(&(v.as_pointer().decay().offset(0_usize).decay())) + .offset(1_usize) + .upgrade() + .deref()) .len() .saturating_sub(1) { panic!("out of bounds access") } else { - Ptr::>>::decay(&(v.as_pointer().decay().offset(0_usize).as_pointer().decay())) + Ptr::>>::decay(&(v.as_pointer().decay().offset(0_usize).decay())) .offset(1_usize) - .as_pointer() .decay() .offset(0_usize as isize) } .write(('B' as i8)); assert!( - (Ptr::::from_string_literal(b"a").with_c_str(|__s| (*(Ptr::>>::decay( - &(v.as_pointer().decay().offset(0_usize).as_pointer().decay()) + (Ptr::::from_string_literal(b"a").with_c_str(|__s| (*Ptr::>>::decay( + &(v.as_pointer().decay().offset(0_usize).decay()) ) .offset(0_usize) - .as_pointer() - as Ptr>) - .upgrade() - .deref())[..(*(Ptr::>>::decay( - &(v.as_pointer().decay().offset(0_usize).as_pointer().decay()) + .upgrade() + .deref())[..(*Ptr::>>::decay( + &(v.as_pointer().decay().offset(0_usize).decay()) ) .offset(0_usize) - .as_pointer() as Ptr>) - .upgrade() - .deref()) + .upgrade() + .deref()) .len() .saturating_sub(1)] == *__s)) - && (Ptr::::from_string_literal(b"z").with_c_str(|__s| { - (*(Ptr::>>::decay( - &(copy - .as_pointer() - .decay() - .offset(0_usize) - .as_pointer() - .decay()), + && (Ptr::::from_string_literal(b"z").with_c_str( + |__s| (*Ptr::>>::decay( + &(copy.as_pointer().decay().offset(0_usize).decay()) ) .offset(0_usize) - .as_pointer() as Ptr>) - .upgrade() - .deref())[..(*(Ptr::>>::decay( - &(copy - .as_pointer() - .decay() - .offset(0_usize) - .as_pointer() - .decay()), + .upgrade() + .deref())[..(*Ptr::>>::decay( + &(copy.as_pointer().decay().offset(0_usize).decay()) ) .offset(0_usize) - .as_pointer() as Ptr>) - .upgrade() - .deref()) + .upgrade() + .deref()) .len() .saturating_sub(1)] == *__s - })) + )) ); assert!( - (Ptr::::from_string_literal(b"Bc").with_c_str(|__s| (*(Ptr::>>::decay( - &(v.as_pointer().decay().offset(0_usize).as_pointer().decay()) + (Ptr::::from_string_literal(b"Bc").with_c_str(|__s| (*Ptr::>>::decay( + &(v.as_pointer().decay().offset(0_usize).decay()) ) .offset(1_usize) - .as_pointer() - as Ptr>) - .upgrade() - .deref())[..(*(Ptr::>>::decay( - &(v.as_pointer().decay().offset(0_usize).as_pointer().decay()) + .upgrade() + .deref())[..(*Ptr::>>::decay( + &(v.as_pointer().decay().offset(0_usize).decay()) ) .offset(1_usize) - .as_pointer() as Ptr>) - .upgrade() - .deref()) + .upgrade() + .deref()) .len() .saturating_sub(1)] == *__s)) && (Ptr::::from_string_literal(b"bc").with_c_str(|__s| { - (*(Ptr::>>::decay( - &(copy - .as_pointer() - .decay() - .offset(0_usize) - .as_pointer() - .decay()), - ) - .offset(1_usize) - .as_pointer() as Ptr>) + (*Ptr::>>::decay(&(copy.as_pointer().decay().offset(0_usize).decay())) + .offset(1_usize) .upgrade() - .deref())[..(*(Ptr::>>::decay( - &(copy - .as_pointer() - .decay() - .offset(0_usize) - .as_pointer() - .decay()), + .deref())[..(*Ptr::>>::decay( + &(copy.as_pointer().decay().offset(0_usize).decay()), ) .offset(1_usize) - .as_pointer() as Ptr>) - .upgrade() - .deref()) + .upgrade() + .deref()) .len() .saturating_sub(1)] == *__s @@ -277,19 +210,15 @@ fn main_0() -> i32 { ); elem!(v.as_pointer().decay(), 1_usize).with_mut(|__v: &mut Vec>>| __v.remove(0)); assert!(Ptr::::from_string_literal(b"bcx").with_c_str(|__s| { - (*(Ptr::>>::decay( - &(v.as_pointer().decay().offset(1_usize).as_pointer().decay()), - ) - .offset(0_usize) - .as_pointer() as Ptr>) + (*Ptr::>>::decay(&(v.as_pointer().decay().offset(1_usize).decay())) + .offset(0_usize) .upgrade() - .deref())[..(*(Ptr::>>::decay( - &(v.as_pointer().decay().offset(1_usize).as_pointer().decay()), + .deref())[..(*Ptr::>>::decay( + &(v.as_pointer().decay().offset(1_usize).decay()), ) .offset(0_usize) - .as_pointer() as Ptr>) - .upgrade() - .deref()) + .upgrade() + .deref()) .len() .saturating_sub(1)] == *__s @@ -299,7 +228,6 @@ fn main_0() -> i32 { .as_pointer() .decay() .offset(1_usize) - .as_pointer() .decay() .upgrade() .deref()) From 1e8d2c811466be0b1e385065d6138d3a9c206d7f Mon Sep 17 00:00:00 2001 From: Lucian Popescu Date: Tue, 20 Oct 2026 14:06:52 +0100 Subject: [PATCH 07/12] format --- cpp2rust/converter/models/converter_refcount.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/cpp2rust/converter/models/converter_refcount.cpp b/cpp2rust/converter/models/converter_refcount.cpp index 5afe7c363..53d218549 100644 --- a/cpp2rust/converter/models/converter_refcount.cpp +++ b/cpp2rust/converter/models/converter_refcount.cpp @@ -3387,9 +3387,8 @@ void ConverterRefCount::SetUFCSReceiver(clang::Expr *base, bool is_arrow, if (IsTemporaryObject(base) && base->getType()->isRecordType() && !IsReferenceType(base->IgnoreImplicit())) { PushConversionKind push(*this, ConversionKind::FullRefCount); - ufcs_receiver_ = - token::kRef + BoxValue(ConvertRValue(base)) + - AsPointerMethod(base->getType()); + ufcs_receiver_ = token::kRef + BoxValue(ConvertRValue(base)) + + AsPointerMethod(base->getType()); return; } ufcs_receiver_ = token::kRef + (base_is_pointer ? ConvertRValue(base) From ec164bcfb246db59165e43cf7533f8a73beb5a5d Mon Sep 17 00:00:00 2001 From: Lucian Popescu Date: Tue, 20 Oct 2026 14:07:17 +0100 Subject: [PATCH 08/12] Use field pointer instead of elem pointer --- libcc2rs/src/cstr.rs | 2 +- libcc2rs/src/field.rs | 16 +++++++++------- libcc2rs/src/rc.rs | 12 +++++++----- 3 files changed, 17 insertions(+), 13 deletions(-) diff --git a/libcc2rs/src/cstr.rs b/libcc2rs/src/cstr.rs index 7022930a8..3810c2793 100644 --- a/libcc2rs/src/cstr.rs +++ b/libcc2rs/src/cstr.rs @@ -357,7 +357,7 @@ mod tests { #[test] fn stops_at_first_nul_in_vec() { let v = std::rc::Rc::new(RefCell::new(EMBEDDED_NUL.to_vec())); - check(&v.as_pointer()); + check(&v.as_pointer().decay()); } #[test] diff --git a/libcc2rs/src/field.rs b/libcc2rs/src/field.rs index efc04dd4d..cb397fe6d 100644 --- a/libcc2rs/src/field.rs +++ b/libcc2rs/src/field.rs @@ -568,7 +568,7 @@ macro_rules! array_field_ptr { // Field `field` of the struct that a Ptr or a Value holds, to make a pointer // to with as_pointer(), e.g., `field_ref!(p, v).as_pointer()` for a vector -// field `v`, which gives a pointer to the vector or to its first element. +// field `v`, which gives a pointer to the vector. #[macro_export] macro_rules! field_ref { ($base:expr, $field:ident) => {{ @@ -1006,7 +1006,8 @@ impl VecElem<'_, S, T> { let elems: Ptr = self .base .field_ref(self.get, self.get_mut, self.offset) - .as_pointer(); + .as_pointer() + .decay(); elems.offset(self.idx).upgrade() } } @@ -1561,10 +1562,11 @@ mod tests { } #[test] - #[should_panic(expected = "too large for a pointer to its elements")] fn far_vector_field_ptr() { - let far: Ptr = field_ptr!(holds_far(), far); - let _: Ptr = field_ref!(far, v).as_pointer(); + let holder = holds_far(); + let far: Ptr = field_ptr!(holder, far); + let v: Ptr = field_ref!(far, v).as_pointer().decay(); + assert_eq!(v.offset(1).read(), 6); } #[test] @@ -1574,7 +1576,7 @@ mod tests { let s: Value = Rc::new(RefCell::new(holds_far().borrow().far.clone())); let arr: Ptr = array_field_ptr!(s, arr); assert_eq!(arr.offset(2).read(), 3); - let v: Ptr = field_ref!(s, v).as_pointer(); + let v: Ptr = field_ref!(s, v).as_pointer().decay(); assert_eq!(v.offset(1).read(), 6); } @@ -1623,7 +1625,7 @@ mod tests { assert_ne!(a.offset(1), b); assert_eq!(b.offset(-2), a); // The elements of a vector are not in the struct. - let v: Ptr = field_ref!(s, v).as_pointer(); + let v: Ptr = field_ref!(s, v).as_pointer().decay(); assert_ne!(v.offset(6), field_ptr!(s, c)); } diff --git a/libcc2rs/src/rc.rs b/libcc2rs/src/rc.rs index a38ac1a29..97bdf0132 100644 --- a/libcc2rs/src/rc.rs +++ b/libcc2rs/src/rc.rs @@ -1423,10 +1423,12 @@ impl Ptr> { kind: PtrKind::HeapVec(weak.clone()), }, // The elements of a field are reached through the struct. - PtrKind::Field(root, _, FieldShape::Single) => Ptr { - offset: 0, - kind: PtrKind::Field(root.clone(), field_offset(self.offset), FieldShape::Vec), - }, + PtrKind::Field(root, _, FieldShape::Single) if u32::try_from(self.offset).is_ok() => { + Ptr { + offset: 0, + kind: PtrKind::Field(root.clone(), self.offset as u32, FieldShape::Vec), + } + } PtrKind::StackVec(_) | PtrKind::HeapVec(_) | PtrKind::StackArray(_) @@ -1654,7 +1656,7 @@ mod tests { assert_eq!(pp.borrow().read(), 3); pp_ptr.read().write(7); assert_eq!(a.borrow()[2], 7); - pp_ptr.write(v.as_pointer().offset(1)); + pp_ptr.write(v.as_pointer().decay().offset(1)); pp_ptr.read().write(8); assert_eq!(*v.borrow(), vec![4, 8]); } From a4f46de980e54d9fa5cf7744b3b3fd818d9fafe7 Mon Sep 17 00:00:00 2001 From: Lucian Popescu Date: Tue, 20 Oct 2026 14:37:05 +0100 Subject: [PATCH 09/12] Drop useless clones for receiver --- cpp2rust/converter/converter.cpp | 3 +++ cpp2rust/converter/models/converter_refcount.cpp | 2 +- rule-preprocessor/src/syntactic.rs | 13 ++++++++----- tests/unit/out/refcount/11_move.rs | 2 +- tests/unit/out/refcount/alloc_array.rs | 2 +- tests/unit/out/refcount/foreach_double.rs | 4 +--- tests/unit/out/refcount/implicit_autoref.rs | 2 +- tests/unit/out/refcount/map.rs | 5 +---- tests/unit/out/refcount/push_emplace_back.rs | 2 +- tests/unit/out/refcount/references2.rs | 2 +- tests/unit/out/refcount/sys_stat.rs | 14 +++++++------- .../out/refcount/unboxed_conditional_iterator.rs | 4 ++-- tests/unit/out/refcount/unboxed_locals.rs | 2 +- tests/unit/out/refcount/unique_ptr_small.rs | 2 +- tests/unit/out/refcount/vector2.rs | 4 ++-- tests/unit/out/refcount/vector3.rs | 4 ++-- tests/unit/out/refcount/vector_addr_of_back.rs | 2 +- tests/unit/out/refcount/vector_with_allocator.rs | 4 ++-- 18 files changed, 37 insertions(+), 36 deletions(-) diff --git a/cpp2rust/converter/converter.cpp b/cpp2rust/converter/converter.cpp index b8f827436..ead4ca34e 100644 --- a/cpp2rust/converter/converter.cpp +++ b/cpp2rust/converter/converter.cpp @@ -5130,6 +5130,9 @@ std::string Converter::ConvertPlaceholder(clang::Expr *expr, clang::Expr *arg, if (ph_ctx.needs_pointer_receiver()) { auto param_type = Mapper::GetParamType(*this, expr, ph_ctx.arg_idx); + bool borrowed = ph_ctx.access == TranslationRule::Access::kBorrow || + ph_ctx.access == TranslationRule::Access::kBorrowMut; + PushExprKind push(*this, borrowed ? ExprKind::Object : ExprKind::XValue); return ConvertPointerReceiver(arg, param_type); } diff --git a/cpp2rust/converter/models/converter_refcount.cpp b/cpp2rust/converter/models/converter_refcount.cpp index 53d218549..f6425008b 100644 --- a/cpp2rust/converter/models/converter_refcount.cpp +++ b/cpp2rust/converter/models/converter_refcount.cpp @@ -401,7 +401,7 @@ std::string ConverterRefCount::AsPointerMethod(clang::QualType type) const { std::string ConverterRefCount::ConvertPointerReceiver(clang::Expr *arg, std::string_view) { - return ConvertFreshObject(arg); + return isObject() ? ConvertObject(arg) : ConvertFreshObject(arg); } std::string ConverterRefCount::ConvertFreshObject(clang::Expr *expr) { diff --git a/rule-preprocessor/src/syntactic.rs b/rule-preprocessor/src/syntactic.rs index b3f6ad797..5788207a3 100644 --- a/rule-preprocessor/src/syntactic.rs +++ b/rule-preprocessor/src/syntactic.rs @@ -216,7 +216,9 @@ impl<'a> FragmentCtx<'a> { }); return; } - let mut access = self.builder.classify_access(token); + let mut access = self + .builder + .classify_access(token, param.is_refcount_pointer); if param.is_mut_ref && self.text_buf.ends_with('*') { self.text_buf.pop(); } @@ -392,7 +394,7 @@ impl<'a> FnIrBuilder<'a> { generics } - fn classify_rw_from_name_ref(&self, name_ref: &ast::NameRef) -> Access { + fn classify_rw_from_name_ref(&self, name_ref: &ast::NameRef, is_ptr: bool) -> Access { name_ref .syntax() .ancestors() @@ -425,7 +427,8 @@ impl<'a> FnIrBuilder<'a> { { return None; } - Some(Access::Unknown) + // Every Ptr method takes &self. + Some(if is_ptr { Access::Borrow } else { Access::Unknown }) }, ast::ReturnExpr(_) => { panic!("return statements are not supported in rule bodies"); @@ -461,12 +464,12 @@ impl<'a> FnIrBuilder<'a> { .is_some_and(|ty| matches!(ty, ast::Type::RefType(r) if r.mut_token().is_some())) } - fn classify_access(&self, token: &ra_ap_syntax::SyntaxToken) -> Access { + fn classify_access(&self, token: &ra_ap_syntax::SyntaxToken, is_ptr: bool) -> Access { let Some(name_ref) = token.parent().and_then(ast::NameRef::cast) else { // Inside a macro invocation. Phase 2 will resolve this. return Access::Unknown; }; - self.classify_rw_from_name_ref(&name_ref) + self.classify_rw_from_name_ref(&name_ref, is_ptr) } fn trim_whitespaces(fragments: &mut Vec) { diff --git a/tests/unit/out/refcount/11_move.rs b/tests/unit/out/refcount/11_move.rs index e4f6d18f9..d26c363c8 100644 --- a/tests/unit/out/refcount/11_move.rs +++ b/tests/unit/out/refcount/11_move.rs @@ -8,7 +8,7 @@ use std::os::fd::AsFd; use std::rc::{Rc, Weak}; pub fn change_0(n: Ptr>>) { let m: Value>> = Rc::new(RefCell::new(Some(Rc::new(RefCell::new(20))))); - (n).clone().write((*m.borrow_mut()).take()); + n.write((*m.borrow_mut()).take()); assert!(((*m.borrow()).as_pointer()).is_null()); } pub fn main() { diff --git a/tests/unit/out/refcount/alloc_array.rs b/tests/unit/out/refcount/alloc_array.rs index 7db2e87ce..23ccbe4b2 100644 --- a/tests/unit/out/refcount/alloc_array.rs +++ b/tests/unit/out/refcount/alloc_array.rs @@ -19,7 +19,7 @@ pub fn All_0(arr: Ptr>>>, mut N: i32, mut element: i32) .write(element); i.prefix_inc(); } - (arr).clone().write((*all.borrow_mut()).take()); + arr.write((*all.borrow_mut()).take()); } pub fn Consume_1(mut arr: Option>>, mut N: i32) -> i32 { let mut sum: i32 = 0; diff --git a/tests/unit/out/refcount/foreach_double.rs b/tests/unit/out/refcount/foreach_double.rs index a98d9eae3..e9968e095 100644 --- a/tests/unit/out/refcount/foreach_double.rs +++ b/tests/unit/out/refcount/foreach_double.rs @@ -80,9 +80,7 @@ fn main_0() -> i32 { 'loop_: for row in IterRange::new(m.as_pointer().decay().begin(), m.as_pointer().decay().end()) { let row: Ptr> = row.iter_deref(); - 'loop_: for col in - IterRange::new((row).clone().decay().begin(), (row).clone().decay().end()) - { + 'loop_: for col in IterRange::new(row.decay().begin(), row.decay().end()) { let col: Ptr = col.iter_deref(); square += { (col.read()) }; } diff --git a/tests/unit/out/refcount/implicit_autoref.rs b/tests/unit/out/refcount/implicit_autoref.rs index 6865f2549..02a1b2ea5 100644 --- a/tests/unit/out/refcount/implicit_autoref.rs +++ b/tests/unit/out/refcount/implicit_autoref.rs @@ -49,7 +49,7 @@ fn main_0() -> i32 { assert!(((index!(p, 1_usize).read()) == 30)); assert!((b == 40)); assert!(((vec_elem!((hp), v, 1_usize).read()) == 60)); - ({ write_through_0(((p).clone().decay().offset(0_usize as isize))) }); + ({ write_through_0((p.decay().offset(0_usize as isize))) }); assert!(((index!(p, 0_usize).read()) == 42)); return 0; } diff --git a/tests/unit/out/refcount/map.rs b/tests/unit/out/refcount/map.rs index fae8aff22..7c4a13b67 100644 --- a/tests/unit/out/refcount/map.rs +++ b/tests/unit/out/refcount/map.rs @@ -423,10 +423,7 @@ fn main_0() -> i32 { != m.as_pointer() .with(|__m: &Map, Value)>| __m.end()) ); - (r).clone() - .with_mut(|__m: &mut Map, Value)>| { - __m.erase(&(*it4.borrow()).clone()) - }); + r.with_mut(|__m: &mut Map, Value)>| __m.erase(&(*it4.borrow()).clone())); assert!(((*r.upgrade().deref()).len() == 3_usize)); assert!( m.as_pointer() diff --git a/tests/unit/out/refcount/push_emplace_back.rs b/tests/unit/out/refcount/push_emplace_back.rs index 13ac9e7bf..69597b478 100644 --- a/tests/unit/out/refcount/push_emplace_back.rs +++ b/tests/unit/out/refcount/push_emplace_back.rs @@ -99,7 +99,7 @@ pub fn nested_emplace_move_5(mut bw: Ptr) { } pub fn self_ref_push_6(mut comps: Ptr>) { { - let a0_clone = (*(comps).clone().decay().upgrade().deref()).clone(); + let a0_clone = (*comps.decay().upgrade().deref()).clone(); comps.with_mut(|__v: &mut Vec| __v.push(a0_clone)) }; } diff --git a/tests/unit/out/refcount/references2.rs b/tests/unit/out/refcount/references2.rs index ec8cc4078..1c9d579e0 100644 --- a/tests/unit/out/refcount/references2.rs +++ b/tests/unit/out/refcount/references2.rs @@ -8,7 +8,7 @@ use std::os::fd::AsFd; use std::rc::{Rc, Weak}; pub fn change_0(p: Ptr>>) { let q: Value>> = Rc::new(RefCell::new(Some(Rc::new(RefCell::new(7))))); - (p).clone().write((*q.borrow_mut()).take()); + p.write((*q.borrow_mut()).take()); } pub fn main() { __cpp2rust_init_globals(); diff --git a/tests/unit/out/refcount/sys_stat.rs b/tests/unit/out/refcount/sys_stat.rs index 5d8ebde46..25445bb2c 100644 --- a/tests/unit/out/refcount/sys_stat.rs +++ b/tests/unit/out/refcount/sys_stat.rs @@ -109,26 +109,26 @@ pub fn test_st_mtime_access_2() { let mut sp: Ptr = (st.as_pointer()); field_ptr!(st.as_pointer(), st_mtime).write(5_i64); assert!(((((field_ptr!(st.as_pointer(), st_mtime).read()) == 5_i64) as i32) != 0)); - field_ptr!((sp).clone(), st_mtime).write(6_i64); - assert!(((((field_ptr!((sp).clone(), st_mtime).read()) == 6_i64) as i32) != 0)); + field_ptr!(sp, st_mtime).write(6_i64); + assert!(((((field_ptr!(sp, st_mtime).read()) == 6_i64) as i32) != 0)); { field_ptr!(st.as_pointer(), st_mtime).with_mut(|__v| *__v = *__v + 2_i64) }; assert!(((((field_ptr!(st.as_pointer(), st_mtime).read()) == 8_i64) as i32) != 0)); { - field_ptr!((sp).clone(), st_mtime).with_mut(|__v| *__v = *__v - 1_i64) + field_ptr!(sp, st_mtime).with_mut(|__v| *__v = *__v - 1_i64) }; - assert!(((((field_ptr!((sp).clone(), st_mtime).read()) == 7_i64) as i32) != 0)); + assert!(((((field_ptr!(sp, st_mtime).read()) == 7_i64) as i32) != 0)); field_ptr!(st.as_pointer(), st_mtime).with_mut(|__v| __v.postfix_inc()); - field_ptr!((sp).clone(), st_mtime).with_mut(|__v| __v.prefix_inc()); + field_ptr!(sp, st_mtime).with_mut(|__v| __v.prefix_inc()); assert!(((((field_ptr!(st.as_pointer(), st_mtime).read()) == 9_i64) as i32) != 0)); let mut mtime: Ptr = (field_ptr!(st.as_pointer(), st_mtime)); mtime.write(10_i64); assert!(((((field_ptr!(st.as_pointer(), st_mtime).read()) == 10_i64) as i32) != 0)); - let mut mtime_via_ptr: Ptr = (field_ptr!((sp).clone(), st_mtime)); + let mut mtime_via_ptr: Ptr = (field_ptr!(sp, st_mtime)); mtime_via_ptr.write(11_i64); assert!(((((mtime.read()) == 11_i64) as i32) != 0)); - let mut copy: i64 = (field_ptr!((sp).clone(), st_mtime).read()); + let mut copy: i64 = (field_ptr!(sp, st_mtime).read()); assert!((((copy == 11_i64) as i32) != 0)); } pub fn main() { diff --git a/tests/unit/out/refcount/unboxed_conditional_iterator.rs b/tests/unit/out/refcount/unboxed_conditional_iterator.rs index b1bd73fe2..7d2ecb313 100644 --- a/tests/unit/out/refcount/unboxed_conditional_iterator.rs +++ b/tests/unit/out/refcount/unboxed_conditional_iterator.rs @@ -73,8 +73,8 @@ pub fn lehmer_2(mut sigma: Ptr, mut len: u32, mut code: Ptr) { } pub fn sum_3(v: Ptr>) -> i32 { let mut s: i32 = 0; - let it: Value> = Rc::new(RefCell::new((v).clone().decay().begin())); - 'loop_: while (*it.borrow()) != (v).clone().decay().end() { + let it: Value> = Rc::new(RefCell::new(v.decay().begin())); + 'loop_: while (*it.borrow()) != v.decay().end() { s += ((*it.borrow()).iter_deref().read()); (*it.borrow_mut()).iter_inc(); } diff --git a/tests/unit/out/refcount/unboxed_locals.rs b/tests/unit/out/refcount/unboxed_locals.rs index a2f7e957e..76b2e4137 100644 --- a/tests/unit/out/refcount/unboxed_locals.rs +++ b/tests/unit/out/refcount/unboxed_locals.rs @@ -22,7 +22,7 @@ pub struct Pair { } pub fn total_2(v: Ptr>) -> i32 { let mut s: i32 = 0; - 'loop_: for x in IterRange::new((v).clone().decay().begin(), (v).clone().decay().end()) { + 'loop_: for x in IterRange::new(v.decay().begin(), v.decay().end()) { let mut x: i32 = (x.iter_deref().read()); s += x; } diff --git a/tests/unit/out/refcount/unique_ptr_small.rs b/tests/unit/out/refcount/unique_ptr_small.rs index 23fd513da..7396d8d7f 100644 --- a/tests/unit/out/refcount/unique_ptr_small.rs +++ b/tests/unit/out/refcount/unique_ptr_small.rs @@ -8,7 +8,7 @@ use std::os::fd::AsFd; use std::rc::{Rc, Weak}; pub fn change_0(n: Ptr>>) { let m: Value>> = Rc::new(RefCell::new(Some(Rc::new(RefCell::new(20))))); - (n).clone().write((*m.borrow_mut()).take()); + n.write((*m.borrow_mut()).take()); } pub fn main() { __cpp2rust_init_globals(); diff --git a/tests/unit/out/refcount/vector2.rs b/tests/unit/out/refcount/vector2.rs index d1f430268..ee6a0c4e0 100644 --- a/tests/unit/out/refcount/vector2.rs +++ b/tests/unit/out/refcount/vector2.rs @@ -41,10 +41,10 @@ pub fn fn_0(v: Ptr>, v3: Vec) { v2.as_pointer().write((*v.upgrade().deref()).clone()); index!(v4, 1_usize).write(13); assert!((x == 6)); - assert!((((v).clone().decay().read()) == 4)); + assert!(((v.decay().read()) == 4)); assert!(((index!(v, 1_usize).read()) == 5)); assert!(((index!(v, 2_usize).read()) == 6)); - assert!((((v).clone().decay().to_last().read()) == 20)); + assert!(((v.decay().to_last().read()) == 20)); assert!(({ (*v2.borrow())[0_usize] } == 4)); assert!(({ (*v2.borrow())[1_usize] } == 5)); assert!(({ (*v2.borrow())[2_usize] } == 6)); diff --git a/tests/unit/out/refcount/vector3.rs b/tests/unit/out/refcount/vector3.rs index e20d9a2a8..2cede07ce 100644 --- a/tests/unit/out/refcount/vector3.rs +++ b/tests/unit/out/refcount/vector3.rs @@ -31,14 +31,14 @@ fn main_0() -> i32 { index!(elem!(v.as_pointer().decay(), 1_usize), 0_usize).write(6); 'loop_: for v2 in IterRange::new(v.as_pointer().decay().begin(), v.as_pointer().decay().end()) { let v2: Ptr> = v2.iter_deref(); - 'loop_: for i in IterRange::new((v2).clone().decay().begin(), (v2).clone().decay().end()) { + 'loop_: for i in IterRange::new(v2.decay().begin(), v2.decay().end()) { let i: Ptr = i.iter_deref(); i.with_mut(|__v| __v.prefix_inc()); } } 'loop_: for v2 in IterRange::new(v.as_pointer().decay().begin(), v.as_pointer().decay().end()) { let v2: Ptr> = v2.iter_deref(); - 'loop_: for i in IterRange::new((v2).clone().decay().begin(), (v2).clone().decay().end()) { + 'loop_: for i in IterRange::new(v2.decay().begin(), v2.decay().end()) { let mut i: i32 = (i.iter_deref().read()); println!("{}", (i + 3)); } diff --git a/tests/unit/out/refcount/vector_addr_of_back.rs b/tests/unit/out/refcount/vector_addr_of_back.rs index f43a4b604..ddd402c05 100644 --- a/tests/unit/out/refcount/vector_addr_of_back.rs +++ b/tests/unit/out/refcount/vector_addr_of_back.rs @@ -20,7 +20,7 @@ fn main_0() -> i32 { let mut sink: Ptr> = (outer.as_pointer().decay().to_last()); assert!(((*sink.upgrade().deref()).len() == 0_usize)); let mut p: Ptr>> = (outer.as_pointer()); - sink = ((p).clone().decay().to_last()); + sink = (p.decay().to_last()); assert!(((*sink.upgrade().deref()).len() == 0_usize)); return 0; } diff --git a/tests/unit/out/refcount/vector_with_allocator.rs b/tests/unit/out/refcount/vector_with_allocator.rs index 1939bb3b5..9ca0b0f17 100644 --- a/tests/unit/out/refcount/vector_with_allocator.rs +++ b/tests/unit/out/refcount/vector_with_allocator.rs @@ -47,10 +47,10 @@ pub fn fn_1(v: Ptr>, v3: Vec) { .write(7); index!(v4, 1_usize).write(13); assert!((x == 6)); - assert!((((v).clone().decay().read()) == 4)); + assert!(((v.decay().read()) == 4)); assert!(((index!(v, 1_usize).read()) == 5)); assert!(((index!(v, 2_usize).read()) == 6)); - assert!((((v).clone().decay().to_last().read()) == 20)); + assert!(((v.decay().to_last().read()) == 20)); assert!(({ (*v3.borrow())[0_usize] } == 7)); assert!(({ (*v3.borrow())[1_usize] } == 13)); { From 1ff1653906d3c05da39bd9c81b5332cfa8442f29 Mon Sep 17 00:00:00 2001 From: Lucian Popescu Date: Tue, 20 Oct 2026 17:18:03 +0100 Subject: [PATCH 10/12] Update tests --- tests/unit/out/refcount/swap_map_no_copy.rs | 120 ++++++++------------ 1 file changed, 50 insertions(+), 70 deletions(-) diff --git a/tests/unit/out/refcount/swap_map_no_copy.rs b/tests/unit/out/refcount/swap_map_no_copy.rs index 1df9abce1..4365874b6 100644 --- a/tests/unit/out/refcount/swap_map_no_copy.rs +++ b/tests/unit/out/refcount/swap_map_no_copy.rs @@ -226,8 +226,8 @@ fn main_0() -> i32 { ({ let _o: Value = Rc::new(RefCell::new(Tracked::new_2({ 10 }))); TrackedImpl::move_assign( - &(m1.as_pointer() as Ptr, Value)>>).with_mut( - |__m: &mut Map, Value)>| { + &m1.as_pointer() + .with_mut(|__m: &mut Map, Value)>| { __m.get_or_insert_with(1.clone(), || { ( Rc::new(RefCell::new(1)), @@ -237,16 +237,15 @@ fn main_0() -> i32 { .borrow() .1 .as_pointer() - }, - ), + }), _o.as_pointer(), ) }); ({ let _o: Value = Rc::new(RefCell::new(Tracked::new_2({ 20 }))); TrackedImpl::move_assign( - &(m1.as_pointer() as Ptr, Value)>>).with_mut( - |__m: &mut Map, Value)>| { + &m1.as_pointer() + .with_mut(|__m: &mut Map, Value)>| { __m.get_or_insert_with(2.clone(), || { ( Rc::new(RefCell::new(2)), @@ -256,8 +255,7 @@ fn main_0() -> i32 { .borrow() .1 .as_pointer() - }, - ), + }), _o.as_pointer(), ) }); @@ -265,8 +263,8 @@ fn main_0() -> i32 { ({ let _o: Value = Rc::new(RefCell::new(Tracked::new_2({ 30 }))); TrackedImpl::move_assign( - &(m2.as_pointer() as Ptr, Value)>>).with_mut( - |__m: &mut Map, Value)>| { + &m2.as_pointer() + .with_mut(|__m: &mut Map, Value)>| { __m.get_or_insert_with(3.clone(), || { ( Rc::new(RefCell::new(3)), @@ -276,15 +274,14 @@ fn main_0() -> i32 { .borrow() .1 .as_pointer() - }, - ), + }), _o.as_pointer(), ) }); assert!((copies_0.with(|rc| *rc.borrow()) == 0)); cpp_swap!( - (m1.as_pointer() as Ptr, Value)>>).with_mut( - |__m: &mut Map, Value)>| { + m1.as_pointer() + .with_mut(|__m: &mut Map, Value)>| { __m.get_or_insert_with(1.clone(), || { ( Rc::new(RefCell::new(1)), @@ -294,10 +291,9 @@ fn main_0() -> i32 { .borrow() .1 .as_pointer() - } - ), - (m1.as_pointer() as Ptr, Value)>>).with_mut( - |__m: &mut Map, Value)>| { + }), + m1.as_pointer() + .with_mut(|__m: &mut Map, Value)>| { __m.get_or_insert_with(2.clone(), || { ( Rc::new(RefCell::new(2)), @@ -307,11 +303,10 @@ fn main_0() -> i32 { .borrow() .1 .as_pointer() - } - ) + }) ); assert!( - ((m1.as_pointer() as Ptr, Value)>>) + (m1.as_pointer() .with_mut(|__m: &mut Map, Value)>| { __m.get_or_insert_with(1.clone(), || { ( @@ -325,7 +320,8 @@ fn main_0() -> i32 { }) .with(|__s| __s.v) == 20) - && ((m1.as_pointer() as Ptr, Value)>>) + && (m1 + .as_pointer() .with_mut(|__m: &mut Map, Value)>| { __m.get_or_insert_with(2.clone(), || { ( @@ -344,7 +340,8 @@ fn main_0() -> i32 { cpp_swap!(m1.as_pointer(), m2.as_pointer()); assert!( ((*m1.borrow()).len() == 1_usize) - && ((m1.as_pointer() as Ptr, Value)>>) + && (m1 + .as_pointer() .with_mut(|__m: &mut Map, Value)>| { __m.get_or_insert_with(3.clone(), || { ( @@ -361,7 +358,8 @@ fn main_0() -> i32 { ); assert!( (((*m2.borrow()).len() == 2_usize) - && ((m2.as_pointer() as Ptr, Value)>>) + && (m2 + .as_pointer() .with_mut(|__m: &mut Map, Value)>| { __m.get_or_insert_with(1.clone(), || { ( @@ -375,7 +373,8 @@ fn main_0() -> i32 { }) .with(|__s| __s.v) == 20)) - && ((m2.as_pointer() as Ptr, Value)>>) + && (m2 + .as_pointer() .with_mut(|__m: &mut Map, Value)>| { __m.get_or_insert_with(2.clone(), || { ( @@ -419,8 +418,8 @@ fn main_0() -> i32 { (*vec_.borrow_mut()).push(__init) }; cpp_swap!( - (vec_.as_pointer() as Ptr).offset(0_usize), - (vec_.as_pointer() as Ptr).offset(1_usize) + vec_.as_pointer().decay().offset(0_usize), + vec_.as_pointer().decay().offset(1_usize) ); assert!(({ (*vec_.borrow())[0_usize].v } == 5) && ({ (*vec_.borrow())[1_usize].v } == 4)); assert!((copies_0.with(|rc| *rc.borrow()) == 0)); @@ -490,61 +489,42 @@ fn main_0() -> i32 { )); { let __init = Tracked::new_2({ 1 }); - elem!((grid.as_pointer() as Ptr>), 0_usize) + elem!(grid.as_pointer().decay(), 0_usize) .with_mut(|__v: &mut Vec| __v.push(__init)) }; { let __init = Tracked::new_2({ 2 }); - elem!((grid.as_pointer() as Ptr>), 0_usize) + elem!(grid.as_pointer().decay(), 0_usize) .with_mut(|__v: &mut Vec| __v.push(__init)) }; { let __init = Tracked::new_2({ 3 }); - elem!((grid.as_pointer() as Ptr>), 1_usize) + elem!(grid.as_pointer().decay(), 1_usize) .with_mut(|__v: &mut Vec| __v.push(__init)) }; cpp_swap!( - ((grid.as_pointer() as Ptr>) + grid.as_pointer() + .decay() .offset(0_usize) - .as_pointer() as Ptr) + .decay() .offset(1_usize), - ((grid.as_pointer() as Ptr>) + grid.as_pointer() + .decay() .offset(1_usize) - .as_pointer() as Ptr) + .decay() .offset(0_usize) ); assert!( - (index!( - elem!((grid.as_pointer() as Ptr>), 0_usize), - 1_usize - ) - .with(|__s| __s.v) - == 3) - && (index!( - elem!((grid.as_pointer() as Ptr>), 1_usize), - 0_usize - ) - .with(|__s| __s.v) - == 2) + (index!(elem!(grid.as_pointer().decay(), 0_usize), 1_usize).with(|__s| __s.v) == 3) + && (index!(elem!(grid.as_pointer().decay(), 1_usize), 0_usize).with(|__s| __s.v) == 2) ); cpp_swap!( - (grid.as_pointer() as Ptr>).offset(0_usize), - (grid.as_pointer() as Ptr>).offset(1_usize) + grid.as_pointer().decay().offset(0_usize), + grid.as_pointer().decay().offset(1_usize) ); assert!( - ((*((grid.as_pointer() as Ptr>) - .offset(0_usize) - .as_pointer() as Ptr>) - .upgrade() - .deref()) - .len() - == 1_usize) - && (index!( - elem!((grid.as_pointer() as Ptr>), 0_usize), - 0_usize - ) - .with(|__s| __s.v) - == 2) + ((*grid.as_pointer().decay().offset(0_usize).upgrade().deref()).len() == 1_usize) + && (index!(elem!(grid.as_pointer().decay(), 0_usize), 0_usize).with(|__s| __s.v) == 2) ); assert!((copies_0.with(|rc| *rc.borrow()) == 0)); let maps: Value, Value)>]>> = Rc::new(RefCell::new( @@ -555,8 +535,8 @@ fn main_0() -> i32 { ({ let _o: Value = Rc::new(RefCell::new(Tracked::new_2({ 1 }))); TrackedImpl::move_assign( - &((maps.as_pointer() as Ptr, Value)>>).offset(0) - as Ptr, Value)>>) + &(maps.as_pointer() as Ptr, Value)>>) + .offset(0) .with_mut(|__m: &mut Map, Value)>| { __m.get_or_insert_with(1.clone(), || { ( @@ -574,8 +554,8 @@ fn main_0() -> i32 { ({ let _o: Value = Rc::new(RefCell::new(Tracked::new_2({ 2 }))); TrackedImpl::move_assign( - &((maps.as_pointer() as Ptr, Value)>>).offset(1) - as Ptr, Value)>>) + &(maps.as_pointer() as Ptr, Value)>>) + .offset(1) .with_mut(|__m: &mut Map, Value)>| { __m.get_or_insert_with(2.clone(), || { ( @@ -596,8 +576,8 @@ fn main_0() -> i32 { ); assert!( ((*maps.borrow())[(0) as usize].len() == 1_usize) - && (((maps.as_pointer() as Ptr, Value)>>).offset(0) - as Ptr, Value)>>) + && ((maps.as_pointer() as Ptr, Value)>>) + .offset(0) .with_mut(|__m: &mut Map, Value)>| { __m.get_or_insert_with(2.clone(), || { ( @@ -614,8 +594,8 @@ fn main_0() -> i32 { ); assert!( ((*maps.borrow())[(1) as usize].len() == 1_usize) - && (((maps.as_pointer() as Ptr, Value)>>).offset(1) - as Ptr, Value)>>) + && ((maps.as_pointer() as Ptr, Value)>>) + .offset(1) .with_mut(|__m: &mut Map, Value)>| { __m.get_or_insert_with(1.clone(), || { ( @@ -831,7 +811,7 @@ pub trait OwnerImpl { } impl OwnerImpl for Ptr { fn move_assign(&self, _a0: Ptr) -> Ptr { - (field_ptr!((*self), p) as Ptr>>) + field_ptr!((*self), p) .write(field!(_a0, p).with_mut(|__v: &mut Option>| __v.take())); return (*self).clone(); } From 0f95023e400fa9104b9add3209ae3f2e5228f4cd Mon Sep 17 00:00:00 2001 From: Lucian Popescu Date: Tue, 20 Oct 2026 18:43:36 +0100 Subject: [PATCH 11/12] Panic on large offsets --- libcc2rs/src/field.rs | 9 +++------ libcc2rs/src/rc.rs | 10 ++++------ 2 files changed, 7 insertions(+), 12 deletions(-) diff --git a/libcc2rs/src/field.rs b/libcc2rs/src/field.rs index cb397fe6d..a6ae6d050 100644 --- a/libcc2rs/src/field.rs +++ b/libcc2rs/src/field.rs @@ -1562,11 +1562,10 @@ mod tests { } #[test] + #[should_panic(expected = "too large for a pointer to its elements")] fn far_vector_field_ptr() { - let holder = holds_far(); - let far: Ptr = field_ptr!(holder, far); - let v: Ptr = field_ref!(far, v).as_pointer().decay(); - assert_eq!(v.offset(1).read(), 6); + let far: Ptr = field_ptr!(holds_far(), far); + let _: Ptr = field_ref!(far, v).as_pointer().decay(); } #[test] @@ -1576,8 +1575,6 @@ mod tests { let s: Value = Rc::new(RefCell::new(holds_far().borrow().far.clone())); let arr: Ptr = array_field_ptr!(s, arr); assert_eq!(arr.offset(2).read(), 3); - let v: Ptr = field_ref!(s, v).as_pointer().decay(); - assert_eq!(v.offset(1).read(), 6); } #[derive(Clone, Default, Record, ByteRepr)] diff --git a/libcc2rs/src/rc.rs b/libcc2rs/src/rc.rs index a19cd5151..ae8ef40ba 100644 --- a/libcc2rs/src/rc.rs +++ b/libcc2rs/src/rc.rs @@ -1466,12 +1466,10 @@ impl Ptr> { kind: PtrKind::HeapVec(weak.clone()), }, // The elements of a field are reached through the struct. - PtrKind::Field(root, _, FieldShape::Single) if u32::try_from(self.offset).is_ok() => { - Ptr { - offset: 0, - kind: PtrKind::Field(root.clone(), self.offset as u32, FieldShape::Vec), - } - } + PtrKind::Field(root, _, FieldShape::Single) => Ptr { + offset: 0, + kind: PtrKind::Field(root.clone(), field_offset(self.offset), FieldShape::Vec), + }, PtrKind::StackVec(_) | PtrKind::HeapVec(_) | PtrKind::StackArray(_) From 26dc5d8a1ae7c7b0244f7e9a4698af80816f57bf Mon Sep 17 00:00:00 2001 From: Lucian Popescu Date: Wed, 21 Oct 2026 09:29:33 +0100 Subject: [PATCH 12/12] Update tests --- tests/unit/out/refcount/clone_vs_move.rs | 96 +++--------- tests/unit/out/refcount/find.rs | 44 +++--- tests/unit/out/refcount/foreach_map.rs | 22 ++- tests/unit/out/refcount/map-reallocation.rs | 33 +--- tests/unit/out/refcount/map.rs | 145 ++++++------------ tests/unit/out/refcount/map_copy.rs | 12 +- tests/unit/out/refcount/map_key_copy_ctor.rs | 96 ++++-------- tests/unit/out/refcount/map_key_identity.rs | 132 ++++++++-------- tests/unit/out/refcount/operator_traits.rs | 102 ++++++------ .../refcount/redundant_copy_in_conversion.rs | 6 +- .../unit/out/refcount/rvalue_rule_arg_move.rs | 8 +- tests/unit/out/refcount/swap_map_no_copy.rs | 87 ++++------- .../out/refcount/vector_iter_range_ctor.rs | 31 ++-- 13 files changed, 309 insertions(+), 505 deletions(-) diff --git a/tests/unit/out/refcount/clone_vs_move.rs b/tests/unit/out/refcount/clone_vs_move.rs index cea552ebb..e49a2386b 100644 --- a/tests/unit/out/refcount/clone_vs_move.rs +++ b/tests/unit/out/refcount/clone_vs_move.rs @@ -161,18 +161,20 @@ fn main_0() -> i32 { let mut i: i32 = 0; 'loop_: while (i < N) { assert!( - ((*((m1.as_pointer() as Ptr>) + ((*m1 + .as_pointer() + .decay() .offset((i as usize)) - .as_pointer() as Ptr>) .upgrade() .deref()) .len() == 10_usize) ); assert!( - ((*((m2.as_pointer() as Ptr>) + ((*m2 + .as_pointer() + .decay() .offset((i as usize)) - .as_pointer() as Ptr>) .upgrade() .deref()) .len() @@ -181,20 +183,10 @@ fn main_0() -> i32 { let mut j: i32 = 0; 'loop_: while (j < 10) { assert!( - ((index!( - elem!((m1.as_pointer() as Ptr>), (i as usize)), - (j as usize) - ) - .read()) - == 0) + ((index!(elem!(m1.as_pointer().decay(), (i as usize)), (j as usize)).read()) == 0) ); assert!( - ((index!( - elem!((m2.as_pointer() as Ptr>), (i as usize)), - (j as usize) - ) - .read()) - == 0) + ((index!(elem!(m2.as_pointer().decay(), (i as usize)), (j as usize)).read()) == 0) ); j.prefix_inc(); } @@ -204,11 +196,8 @@ fn main_0() -> i32 { 'loop_: while (i < N) { let mut j: i32 = 0; 'loop_: while (j < 10) { - index!( - elem!((m2.as_pointer() as Ptr>), (i as usize)), - (j as usize) - ) - .with_mut(|__v| __v.postfix_inc()); + index!(elem!(m2.as_pointer().decay(), (i as usize)), (j as usize)) + .with_mut(|__v| __v.postfix_inc()); j.prefix_inc(); } i.prefix_inc(); @@ -216,18 +205,20 @@ fn main_0() -> i32 { let mut i: i32 = 0; 'loop_: while (i < N) { assert!( - ((*((m1.as_pointer() as Ptr>) + ((*m1 + .as_pointer() + .decay() .offset((i as usize)) - .as_pointer() as Ptr>) .upgrade() .deref()) .len() == 10_usize) ); assert!( - ((*((m2.as_pointer() as Ptr>) + ((*m2 + .as_pointer() + .decay() .offset((i as usize)) - .as_pointer() as Ptr>) .upgrade() .deref()) .len() @@ -236,20 +227,10 @@ fn main_0() -> i32 { let mut j: i32 = 0; 'loop_: while (j < 10) { assert!( - ((index!( - elem!((m1.as_pointer() as Ptr>), (i as usize)), - (j as usize) - ) - .read()) - == 0) + ((index!(elem!(m1.as_pointer().decay(), (i as usize)), (j as usize)).read()) == 0) ); assert!( - ((index!( - elem!((m2.as_pointer() as Ptr>), (i as usize)), - (j as usize) - ) - .read()) - == 1) + ((index!(elem!(m2.as_pointer().decay(), (i as usize)), (j as usize)).read()) == 1) ); j.prefix_inc(); } @@ -259,50 +240,21 @@ fn main_0() -> i32 { let mut i: i32 = 0; 'loop_: while (i < N) { let __rhs = i; - Map::subscript( - (map1.as_pointer() as Ptr, Value)>>), - &i, - ) - .write(__rhs); + Map::subscript(map1.as_pointer(), &i).write(__rhs); i.prefix_inc(); } let map2: Value, Value)>> = Rc::new(RefCell::new((*map1.borrow()).clone())); let mut i: i32 = 0; 'loop_: while (i < N) { - assert!( - ((Map::subscript( - (map2.as_pointer() as Ptr, Value)>>), - &i - ) - .read()) - == i) - ); - Map::subscript( - (map2.as_pointer() as Ptr, Value)>>), - &i, - ) - .with_mut(|__v| __v.prefix_inc()); + assert!(((Map::subscript(map2.as_pointer(), &i).read()) == i)); + Map::subscript(map2.as_pointer(), &i).with_mut(|__v| __v.prefix_inc()); i.prefix_inc(); } let mut i: i32 = 0; 'loop_: while (i < N) { - assert!( - ((Map::subscript( - (map1.as_pointer() as Ptr, Value)>>), - &i - ) - .read()) - == i) - ); - assert!( - ((Map::subscript( - (map2.as_pointer() as Ptr, Value)>>), - &i - ) - .read()) - == (i + 1)) - ); + assert!(((Map::subscript(map1.as_pointer(), &i).read()) == i)); + assert!(((Map::subscript(map2.as_pointer(), &i).read()) == (i + 1))); i.prefix_inc(); } let pair1: Value<(Value, Value)> = Rc::new(RefCell::new(( @@ -364,7 +316,7 @@ fn main_0() -> i32 { assert!((b1.w == 1)); assert!((b2.w == 2)); let v4: Value> = Rc::new(RefCell::new(Vec::new())); - (v4.as_pointer() as Ptr>).write((v2).clone()); + v4.as_pointer().write((v2).clone()); let mut i: i32 = 0; 'loop_: while (i < N) { assert!(({ (*v4.borrow())[(i as usize)] } == (i + 1))); diff --git a/tests/unit/out/refcount/find.rs b/tests/unit/out/refcount/find.rs index 8fe619ee7..914ac00cb 100644 --- a/tests/unit/out/refcount/find.rs +++ b/tests/unit/out/refcount/find.rs @@ -25,9 +25,9 @@ fn main_0() -> i32 { (*v.borrow_mut()).push(__a1) }; let v_begin: Value> = - Rc::new(RefCell::new((v.as_pointer() as Ptr).begin())); + Rc::new(RefCell::new(v.as_pointer().decay().begin())); let v_end: Value> = - Rc::new(RefCell::new((v.as_pointer() as Ptr).end())); + Rc::new(RefCell::new(v.as_pointer().decay().end())); let it: Value> = Rc::new(RefCell::new({ let mut __it = (*v_begin.borrow()).clone(); while __it != (*v_end.borrow()).clone() && __it.iter_deref().with(|__v| *__v != 2) { @@ -35,80 +35,76 @@ fn main_0() -> i32 { } __it })); - let mut v_result_true: bool = (*it.borrow()) != (v.as_pointer() as Ptr).end(); + let mut v_result_true: bool = (*it.borrow()) != v.as_pointer().decay().end(); let m: Value, Value)>> = Rc::new(RefCell::new(Map::new())); Map::subscript_move( - (m.as_pointer() as Ptr, Value)>>), + m.as_pointer(), Rc::new(RefCell::new(1)).as_pointer(), |__k| cpp_move!(__k), ) .write(1_f64); Map::subscript_move( - (m.as_pointer() as Ptr, Value)>>), + m.as_pointer(), Rc::new(RefCell::new(2)).as_pointer(), |__k| cpp_move!(__k), ) .write(2_f64); Map::subscript_move( - (m.as_pointer() as Ptr, Value)>>), + m.as_pointer(), Rc::new(RefCell::new(3)).as_pointer(), |__k| cpp_move!(__k), ) .write(3_f64); let m_begin: Value, Value)>> = Rc::new(RefCell::new( - (m.as_pointer() as Ptr, Value)>>) + m.as_pointer() .with(|__m: &Map, Value)>| __m.begin()), )); let m_end: Value, Value)>> = Rc::new(RefCell::new( - (m.as_pointer() as Ptr, Value)>>) + m.as_pointer() .with(|__m: &Map, Value)>| __m.end()), )); let mut m_result_true: bool = (*m_begin.borrow()) != (*m_end.borrow()); assert!( ((v_result_true) && (m_result_true)) && ({ - let mut __it = (v.as_pointer() as Ptr).begin(); - while __it != (v.as_pointer() as Ptr).begin() + let mut __it = v.as_pointer().decay().begin(); + while __it != v.as_pointer().decay().begin() && __it.iter_deref().with(|__v| *__v != 2) { __it.iter_inc(); } __it - } == (v.as_pointer() as Ptr).begin()) + } == v.as_pointer().decay().begin()) ); let w: Value> = Rc::new(RefCell::new(Vec::from([1, 2, 3, 4, 5]))); assert!( { - let mut __it = (w.as_pointer() as Ptr).begin().iter_add(2_isize); - while __it != (w.as_pointer() as Ptr).end() - && __it.iter_deref().with(|__v| *__v != 4) - { + let mut __it = w.as_pointer().decay().begin().iter_add(2_isize); + while __it != w.as_pointer().decay().end() && __it.iter_deref().with(|__v| *__v != 4) { __it.iter_inc(); } __it - } == (w.as_pointer() as Ptr).begin().iter_add(3_isize) + } == w.as_pointer().decay().begin().iter_add(3_isize) ); assert!( { - let mut __it = (w.as_pointer() as Ptr).begin().iter_add(2_isize); - while __it != (w.as_pointer() as Ptr).end() - && __it.iter_deref().with(|__v| *__v != 1) - { + let mut __it = w.as_pointer().decay().begin().iter_add(2_isize); + while __it != w.as_pointer().decay().end() && __it.iter_deref().with(|__v| *__v != 1) { __it.iter_inc(); } __it - } == (w.as_pointer() as Ptr).end() + } == w.as_pointer().decay().end() ); assert!( { - let mut __it = (w.as_pointer() as Ptr).begin().iter_add(2_isize); - while __it != (w.as_pointer() as Ptr).begin().iter_add(4_isize) + let mut __it = w.as_pointer().decay().begin().iter_add(2_isize); + while __it != w.as_pointer().decay().begin().iter_add(4_isize) && __it.iter_deref().with(|__v| *__v != 5) { __it.iter_inc(); } __it - } == (w.as_pointer() as Ptr).begin().iter_add(4_isize) + } == w.as_pointer().decay().begin().iter_add(4_isize) ); return 0; } diff --git a/tests/unit/out/refcount/foreach_map.rs b/tests/unit/out/refcount/foreach_map.rs index 4cd06ece4..44c068502 100644 --- a/tests/unit/out/refcount/foreach_map.rs +++ b/tests/unit/out/refcount/foreach_map.rs @@ -15,11 +15,7 @@ fn main_0() -> i32 { let mut i: i32 = 0; let mut k: i32 = 100; 'loop_: while (i < 100) { - Map::subscript( - (m.as_pointer() as Ptr, Value)>>), - &i, - ) - .write(((k as f64) / 2_f64)); + Map::subscript(m.as_pointer(), &i).write(((k as f64) / 2_f64)); { i.prefix_inc(); k.prefix_dec() @@ -27,18 +23,18 @@ fn main_0() -> i32 { } let mut sum: f64 = 0_f64; 'loop_: for i in IterRange::new( - (m.as_pointer() as Ptr, Value)>>) + m.as_pointer() .with(|__m: &Map, Value)>| __m.begin()), - (m.as_pointer() as Ptr, Value)>>) + m.as_pointer() .with(|__m: &Map, Value)>| __m.end()), ) { let i: Ptr<(Value, Value)> = i.iter_deref(); sum += (*(*i.upgrade().deref()).1.borrow()); } 'loop_: for i in IterRange::new( - (m.as_pointer() as Ptr, Value)>>) + m.as_pointer() .with(|__m: &Map, Value)>| __m.begin()), - (m.as_pointer() as Ptr, Value)>>) + m.as_pointer() .with(|__m: &Map, Value)>| __m.end()), ) { let i: Value<(Value, Value)> = Rc::new(RefCell::new(( @@ -53,9 +49,9 @@ fn main_0() -> i32 { } assert!((sum == 7475_f64)); 'loop_: for i in IterRange::new( - (m.as_pointer() as Ptr, Value)>>) + m.as_pointer() .with(|__m: &Map, Value)>| __m.begin()), - (m.as_pointer() as Ptr, Value)>>) + m.as_pointer() .with(|__m: &Map, Value)>| __m.end()), ) { let i: Value<(Value, Value)> = Rc::new(RefCell::new(( @@ -70,9 +66,9 @@ fn main_0() -> i32 { assert!(((*(*i.borrow()).1.borrow()) == (-1_i32 as f64))); } 'loop_: for i in IterRange::new( - (m.as_pointer() as Ptr, Value)>>) + m.as_pointer() .with(|__m: &Map, Value)>| __m.begin()), - (m.as_pointer() as Ptr, Value)>>) + m.as_pointer() .with(|__m: &Map, Value)>| __m.end()), ) { let i: Ptr<(Value, Value)> = i.iter_deref(); diff --git a/tests/unit/out/refcount/map-reallocation.rs b/tests/unit/out/refcount/map-reallocation.rs index 493389473..d9b4766f2 100644 --- a/tests/unit/out/refcount/map-reallocation.rs +++ b/tests/unit/out/refcount/map-reallocation.rs @@ -15,13 +15,9 @@ fn main_0() -> i32 { let mut sentinel: i32 = (N / 2); let m: Value, Value)>> = Rc::new(RefCell::new(Map::new())); let __rhs = sentinel; - Map::subscript( - (m.as_pointer() as Ptr, Value)>>), - &sentinel, - ) - .write(__rhs); + Map::subscript(m.as_pointer(), &sentinel).write(__rhs); let it: Value, Value)>> = Rc::new(RefCell::new( - (m.as_pointer() as Ptr, Value)>>) + m.as_pointer() .with(|__m: &Map, Value)>| __m.find(&sentinel)), )); let mut p: Ptr = ((*(*it.borrow()).iter_deref().upgrade().deref()) @@ -44,21 +40,13 @@ fn main_0() -> i32 { let mut i: i32 = 0; 'loop_: while (i < sentinel) { let __rhs = i; - Map::subscript( - (m.as_pointer() as Ptr, Value)>>), - &i, - ) - .write(__rhs); + Map::subscript(m.as_pointer(), &i).write(__rhs); i.prefix_inc(); } let mut i: i32 = (sentinel + 1); 'loop_: while (i <= N) { let __rhs = i; - Map::subscript( - (m.as_pointer() as Ptr, Value)>>), - &i, - ) - .write(__rhs); + Map::subscript(m.as_pointer(), &i).write(__rhs); i.prefix_inc(); } assert!( @@ -85,21 +73,14 @@ fn main_0() -> i32 { (*(*(*it.borrow()).iter_deref().upgrade().deref()) .1 .borrow_mut()) = 57005; - assert!( - ((Map::subscript( - (m.as_pointer() as Ptr, Value)>>), - &sentinel - ) - .read()) - == 57005) - ); + assert!(((Map::subscript(m.as_pointer(), &sentinel).read()) == 57005)); assert!(((p.read()) == 57005)); assert!(((*m.borrow()).len() == (((N + 1) as u32) as usize))); let mut prev: i32 = -1_i32; 'loop_: for pair in IterRange::new( - (m.as_pointer() as Ptr, Value)>>) + m.as_pointer() .with(|__m: &Map, Value)>| __m.begin()), - (m.as_pointer() as Ptr, Value)>>) + m.as_pointer() .with(|__m: &Map, Value)>| __m.end()), ) { let pair: Ptr<(Value, Value)> = pair.iter_deref(); diff --git a/tests/unit/out/refcount/map.rs b/tests/unit/out/refcount/map.rs index 50a11c8a1..c84d44fd8 100644 --- a/tests/unit/out/refcount/map.rs +++ b/tests/unit/out/refcount/map.rs @@ -19,19 +19,19 @@ pub fn main() { fn main_0() -> i32 { let m: Value, Value)>> = Rc::new(RefCell::new(Map::new())); Map::subscript_move( - (m.as_pointer() as Ptr, Value)>>), + m.as_pointer(), Rc::new(RefCell::new(0_i16)).as_pointer(), |__k| cpp_move!(__k), ) .write(1_u32); Map::subscript_move( - (m.as_pointer() as Ptr, Value)>>), + m.as_pointer(), Rc::new(RefCell::new(1_i16)).as_pointer(), |__k| cpp_move!(__k), ) .write(2_u32); Map::subscript_move( - (m.as_pointer() as Ptr, Value)>>), + m.as_pointer(), Rc::new(RefCell::new(2_i16)).as_pointer(), |__k| cpp_move!(__k), ) @@ -39,7 +39,7 @@ fn main_0() -> i32 { assert!(((*m.borrow()).len() == 3_usize)); assert!( ((Map::subscript_move( - (m.as_pointer() as Ptr, Value)>>), + m.as_pointer(), Rc::new(RefCell::new(0_i16)).as_pointer(), |__k| cpp_move!(__k) ) @@ -48,7 +48,7 @@ fn main_0() -> i32 { ); assert!( ((Map::subscript_move( - (m.as_pointer() as Ptr, Value)>>), + m.as_pointer(), Rc::new(RefCell::new(1_i16)).as_pointer(), |__k| cpp_move!(__k) ) @@ -57,7 +57,7 @@ fn main_0() -> i32 { ); assert!( ((Map::subscript_move( - (m.as_pointer() as Ptr, Value)>>), + m.as_pointer(), Rc::new(RefCell::new(2_i16)).as_pointer(), |__k| cpp_move!(__k) ) @@ -66,7 +66,7 @@ fn main_0() -> i32 { ); let mut x: i32 = 4; Map::subscript_move( - (m.as_pointer() as Ptr, Value)>>), + m.as_pointer(), Rc::new(RefCell::new(1_i16)).as_pointer(), |__k| cpp_move!(__k), ) @@ -74,7 +74,7 @@ fn main_0() -> i32 { assert!(((*m.borrow()).len() == 3_usize)); assert!( ((Map::subscript_move( - (m.as_pointer() as Ptr, Value)>>), + m.as_pointer(), Rc::new(RefCell::new(0_i16)).as_pointer(), |__k| cpp_move!(__k) ) @@ -83,7 +83,7 @@ fn main_0() -> i32 { ); assert!( ((Map::subscript_move( - (m.as_pointer() as Ptr, Value)>>), + m.as_pointer(), Rc::new(RefCell::new(1_i16)).as_pointer(), |__k| cpp_move!(__k) ) @@ -92,7 +92,7 @@ fn main_0() -> i32 { ); assert!( ((Map::subscript_move( - (m.as_pointer() as Ptr, Value)>>), + m.as_pointer(), Rc::new(RefCell::new(2_i16)).as_pointer(), |__k| cpp_move!(__k) ) @@ -102,7 +102,7 @@ fn main_0() -> i32 { ({ foo_0( (Map::subscript_move( - (m.as_pointer() as Ptr, Value)>>), + m.as_pointer(), Rc::new(RefCell::new(0_i16)).as_pointer(), |__k| cpp_move!(__k), ) @@ -111,7 +111,7 @@ fn main_0() -> i32 { }); assert!( ((Map::subscript_move( - (m.as_pointer() as Ptr, Value)>>), + m.as_pointer(), Rc::new(RefCell::new(0_i16)).as_pointer(), |__k| cpp_move!(__k) ) @@ -120,14 +120,14 @@ fn main_0() -> i32 { ); ({ bar_1(Map::subscript_move( - (m.as_pointer() as Ptr, Value)>>), + m.as_pointer(), Rc::new(RefCell::new(2_i16)).as_pointer(), |__k| cpp_move!(__k), )) }); assert!( ((Map::subscript_move( - (m.as_pointer() as Ptr, Value)>>), + m.as_pointer(), Rc::new(RefCell::new(2_i16)).as_pointer(), |__k| cpp_move!(__k) ) @@ -135,28 +135,28 @@ fn main_0() -> i32 { == 4_u32) ); let __rhs = (Map::subscript_move( - (m.as_pointer() as Ptr, Value)>>), + m.as_pointer(), Rc::new(RefCell::new(0_i16)).as_pointer(), |__k| cpp_move!(__k), ) .read()) .wrapping_add( (Map::subscript_move( - (m.as_pointer() as Ptr, Value)>>), + m.as_pointer(), Rc::new(RefCell::new(2_i16)).as_pointer(), |__k| cpp_move!(__k), ) .read()), ); Map::subscript_move( - (m.as_pointer() as Ptr, Value)>>), + m.as_pointer(), Rc::new(RefCell::new(0_i16)).as_pointer(), |__k| cpp_move!(__k), ) .write(__rhs); assert!( ((Map::subscript_move( - (m.as_pointer() as Ptr, Value)>>), + m.as_pointer(), Rc::new(RefCell::new(0_i16)).as_pointer(), |__k| cpp_move!(__k) ) @@ -164,16 +164,16 @@ fn main_0() -> i32 { == 5_u32) ); let end: Value, Value)>> = Rc::new(RefCell::new( - (m.as_pointer() as Ptr, Value)>>) + m.as_pointer() .with(|__m: &Map, Value)>| __m.end()), )); let it: Value, Value)>> = Rc::new(RefCell::new( - (m.as_pointer() as Ptr, Value)>>) + m.as_pointer() .with(|__m: &Map, Value)>| __m.find(&1_i16)), )); let const_it: Value, Value)>> = Rc::new(RefCell::new( , Value)>>::from( - (m.as_pointer() as Ptr, Value)>>) + m.as_pointer() .with(|__m: &Map, Value)>| __m.find(&10_i16)), ), )); @@ -194,7 +194,7 @@ fn main_0() -> i32 { }; assert!((x2 == 0_u32)); let mut x3: u32 = if (*it.borrow()) - == (m.as_pointer() as Ptr, Value)>>) + == m.as_pointer() .with(|__m: &Map, Value)>| __m.end()) { 0_u32 @@ -204,7 +204,7 @@ fn main_0() -> i32 { assert!((x3 == 4_u32)); let mut x4: u32 = if (*const_it.borrow()) == , Value)>>::from( - (m.as_pointer() as Ptr, Value)>>) + m.as_pointer() .with(|__m: &Map, Value)>| __m.end()), ) { 0_u32 @@ -215,13 +215,13 @@ fn main_0() -> i32 { }; assert!((x4 == 0_u32)); Map::subscript_move( - (m.as_pointer() as Ptr, Value)>>), + m.as_pointer(), Rc::new(RefCell::new(4_i16)).as_pointer(), |__k| cpp_move!(__k), ) .write(5_u32); let it4: Value, Value)>> = Rc::new(RefCell::new( - (m.as_pointer() as Ptr, Value)>>) + m.as_pointer() .with(|__m: &Map, Value)>| __m.find(&4_i16)), )); let mut p: Ptr = ((*(*it4.borrow()).iter_deref().upgrade().deref()) @@ -230,7 +230,7 @@ fn main_0() -> i32 { let mut x5: u32 = (p.read()); assert!( ((Map::subscript_move( - (m.as_pointer() as Ptr, Value)>>), + m.as_pointer(), Rc::new(RefCell::new(4_i16)).as_pointer(), |__k| cpp_move!(__k) ) @@ -243,7 +243,7 @@ fn main_0() -> i32 { p.with_mut(|__v| __v.prefix_inc()); assert!( ((Map::subscript_move( - (m.as_pointer() as Ptr, Value)>>), + m.as_pointer(), Rc::new(RefCell::new(4_i16)).as_pointer(), |__k| cpp_move!(__k) ) @@ -255,7 +255,7 @@ fn main_0() -> i32 { assert!((x5 == 5_u32)); let const_it4: Value, Value)>> = Rc::new(RefCell::new( , Value)>>::from( - (m.as_pointer() as Ptr, Value)>>) + m.as_pointer() .with(|__m: &Map, Value)>| __m.find(&4_i16)), ), )); @@ -268,93 +268,74 @@ fn main_0() -> i32 { let r: Ptr, Value)>> = m.as_pointer(); assert!(((*r.upgrade().deref()).len() == 4_usize)); assert!( - (m.as_pointer() as Ptr, Value)>>) + m.as_pointer() .with(|__m: &Map, Value)>| __m.find(&4_i16)) - != (m.as_pointer() as Ptr, Value)>>) + != m.as_pointer() .with(|__m: &Map, Value)>| __m.end()) ); { let __it = (*it4.borrow()).clone(); - Map::erase( - ((r).clone() as Ptr, Value)>>), - &__it, - ) + Map::erase((r).clone(), &__it) }; assert!(((*r.upgrade().deref()).len() == 3_usize)); assert!( - (m.as_pointer() as Ptr, Value)>>) + m.as_pointer() .with(|__m: &Map, Value)>| __m.find(&4_i16)) - == (m.as_pointer() as Ptr, Value)>>) + == m.as_pointer() .with(|__m: &Map, Value)>| __m.end()) ); Map::subscript_move( - (m.as_pointer() as Ptr, Value)>>), + m.as_pointer(), Rc::new(RefCell::new(7_i16)).as_pointer(), |__k| cpp_move!(__k), ) .write(7_u32); Map::subscript_move( - (m.as_pointer() as Ptr, Value)>>), + m.as_pointer(), Rc::new(RefCell::new(8_i16)).as_pointer(), |__k| cpp_move!(__k), ) .write(8_u32); Map::subscript_move( - (m.as_pointer() as Ptr, Value)>>), + m.as_pointer(), Rc::new(RefCell::new(9_i16)).as_pointer(), |__k| cpp_move!(__k), ) .write(9_u32); assert!(((*r.upgrade().deref()).len() == 6_usize)); - assert!( - (Map::erase_key( - (m.as_pointer() as Ptr, Value)>>), - &10_i16 - ) == 0_usize) - ); + assert!((Map::erase_key(m.as_pointer(), &10_i16) == 0_usize)); let mut key9: i32 = 9; - assert!( - (Map::erase_key( - (m.as_pointer() as Ptr, Value)>>), - &(key9 as i16) - ) == 1_usize) - ); + assert!((Map::erase_key(m.as_pointer(), &(key9 as i16)) == 1_usize)); assert!(((*r.upgrade().deref()).len() == 5_usize)); let cit: Value, Value)>> = Rc::new(RefCell::new( , Value)>>::from( - (m.as_pointer() as Ptr, Value)>>) + m.as_pointer() .with(|__m: &Map, Value)>| __m.find(&7_i16)), ), )); let next: Value, Value)>> = Rc::new(RefCell::new({ let __it = (*cit.borrow()).clone(); - Map::erase( - (m.as_pointer() as Ptr, Value)>>), - &__it, - ) + Map::erase(m.as_pointer(), &__it) })); assert!( (*next.borrow()) - == (m.as_pointer() as Ptr, Value)>>) + == m.as_pointer() .with(|__m: &Map, Value)>| __m.find(&8_i16)) ); (*next.borrow_mut()) = { let __it = (*next.borrow()).clone(); - Map::erase( - (m.as_pointer() as Ptr, Value)>>), - &__it, - ) + Map::erase(m.as_pointer(), &__it) }; assert!( (*next.borrow()) - == (m.as_pointer() as Ptr, Value)>>) + == m.as_pointer() .with(|__m: &Map, Value)>| __m.end()) ); assert!(((*r.upgrade().deref()).len() == 3_usize)); assert!( - (m.as_pointer() as Ptr, Value)>>) + m.as_pointer() .with(|__m: &Map, Value)>| __m.find(&8_i16)) - == (m.as_pointer() as Ptr, Value)>>) + == m.as_pointer() .with(|__m: &Map, Value)>| __m.end()) ); let other_map: Value< @@ -366,30 +347,10 @@ fn main_0() -> i32 { Rc::new(RefCell::new(1.try_into().expect("failed conversion"))), ))); let mut value: f64 = 2_f64; - Map::subscript( - (other_map.as_pointer() - as Ptr, Value), (Value<(Value, Value)>, Value)>>), - &(*key0.borrow()), - ) - .write(value); - value = (Map::subscript( - (other_map.as_pointer() - as Ptr, Value), (Value<(Value, Value)>, Value)>>), - &(*key0.borrow()), - ) - .read()); + Map::subscript(other_map.as_pointer(), &(*key0.borrow())).write(value); + value = (Map::subscript(other_map.as_pointer(), &(*key0.borrow())).read()); assert!(((*other_map.borrow()).len() == 1_usize)); - assert!( - ((Map::subscript( - (other_map.as_pointer() - as Ptr< - Map<(Value, Value), (Value<(Value, Value)>, Value)>, - >), - &(*key0.borrow()) - ) - .read()) - == value) - ); + assert!(((Map::subscript(other_map.as_pointer(), &(*key0.borrow())).read()) == value)); assert!(((*m.borrow()).len() == 3_usize)); let mut k: i32 = 0; assert!( @@ -454,19 +415,15 @@ fn main_0() -> i32 { let mut i: u32 = 0_u32; 'loop_: while ((i as usize) < indexes.len()) { let __rhs = ((i).wrapping_rem(2_u32) != 0); - Map::subscript( - (m2.as_pointer() as Ptr, Value)>>), - &indexes[(i as usize)], - ) - .write(__rhs); + Map::subscript(m2.as_pointer(), &indexes[(i as usize)]).write(__rhs); i.prefix_inc(); } assert!(((*m2.borrow()).len() == indexes.len())); let mut last: i32 = -1_i32; 'loop_: for pair in IterRange::new( - (m2.as_pointer() as Ptr, Value)>>) + m2.as_pointer() .with(|__m: &Map, Value)>| __m.begin()), - (m2.as_pointer() as Ptr, Value)>>) + m2.as_pointer() .with(|__m: &Map, Value)>| __m.end()), ) { let pair: Ptr<(Value, Value)> = pair.iter_deref(); diff --git a/tests/unit/out/refcount/map_copy.rs b/tests/unit/out/refcount/map_copy.rs index 4f5e43cab..8a97482c2 100644 --- a/tests/unit/out/refcount/map_copy.rs +++ b/tests/unit/out/refcount/map_copy.rs @@ -13,21 +13,21 @@ pub fn main() { fn main_0() -> i32 { let a: Value, Value)>> = Rc::new(RefCell::new(Map::new())); Map::subscript_move( - (a.as_pointer() as Ptr, Value)>>), + a.as_pointer(), Rc::new(RefCell::new(1)).as_pointer(), |__k| cpp_move!(__k), ) .write(10); let b: Value, Value)>> = Rc::new(RefCell::new((*a.borrow()).clone())); Map::subscript_move( - (b.as_pointer() as Ptr, Value)>>), + b.as_pointer(), Rc::new(RefCell::new(1)).as_pointer(), |__k| cpp_move!(__k), ) .write(20); assert!( ((Map::subscript_move( - (a.as_pointer() as Ptr, Value)>>), + a.as_pointer(), Rc::new(RefCell::new(1)).as_pointer(), |__k| cpp_move!(__k) ) @@ -36,21 +36,21 @@ fn main_0() -> i32 { ); let x: Value, Value)>> = Rc::new(RefCell::new(Map::new())); Map::subscript_move( - (x.as_pointer() as Ptr, Value)>>), + x.as_pointer(), Rc::new(RefCell::new(2)).as_pointer(), |__k| cpp_move!(__k), ) .write(3); let y: Value, Value)>> = Rc::new(RefCell::new((*x.borrow()).clone())); Map::subscript_move( - (y.as_pointer() as Ptr, Value)>>), + y.as_pointer(), Rc::new(RefCell::new(2)).as_pointer(), |__k| cpp_move!(__k), ) .write(4); assert!( ((Map::subscript_move( - (x.as_pointer() as Ptr, Value)>>), + x.as_pointer(), Rc::new(RefCell::new(2)).as_pointer(), |__k| cpp_move!(__k) ) diff --git a/tests/unit/out/refcount/map_key_copy_ctor.rs b/tests/unit/out/refcount/map_key_copy_ctor.rs index d6710835c..03442ec83 100644 --- a/tests/unit/out/refcount/map_key_copy_ctor.rs +++ b/tests/unit/out/refcount/map_key_copy_ctor.rs @@ -98,27 +98,16 @@ fn main_0() -> i32 { let mut a: Key = Key::new({ 1 }); let mut b: Key = Key::new({ 2 }); let c: Value = Rc::new(RefCell::new(Key::new({ 3 }))); - Map::subscript( - (m.as_pointer() as Ptr, Value)>>), - &a, - ) - .write(10); + Map::subscript(m.as_pointer(), &a).write(10); ok = { ((ok as i32) & ((copies_0.with(|rc| *rc.borrow()) == 1) as i32)) != 0 }; - Map::subscript( - (m.as_pointer() as Ptr, Value)>>), - &b, - ) - .write(20); + Map::subscript(m.as_pointer(), &b).write(20); ok = { ((ok as i32) & ((copies_0.with(|rc| *rc.borrow()) == 2) as i32)) != 0 }; - Map::subscript( - (m.as_pointer() as Ptr, Value)>>), - &a, - ) - .write(11); + Map::subscript(m.as_pointer(), &a).write(11); ok = { ((ok as i32) & ((copies_0.with(|rc| *rc.borrow()) == 2) as i32)) != 0 }; { let rhs_0 = ((ok as i32) - & (((*(*(m.as_pointer() as Ptr, Value)>>) + & (((*(*m + .as_pointer() .with(|__m: &Map, Value)>| __m.find(&a)) .iter_deref() .upgrade() @@ -144,13 +133,13 @@ fn main_0() -> i32 { }; ok = { ((ok as i32) & ((copies_0.with(|rc| *rc.borrow()) == 2) as i32)) != 0 }; Map::subscript_move( - (m.as_pointer() as Ptr, Value)>>), + m.as_pointer(), Rc::new(RefCell::new(({ make_key_3(4) }))).as_pointer(), |__k| cpp_move!(__k), ) .write(40); Map::subscript_move( - (m.as_pointer() as Ptr, Value)>>), + m.as_pointer(), Rc::new(RefCell::new(({ make_key_3(4) }))).as_pointer(), |__k| cpp_move!(__k), ) @@ -161,18 +150,8 @@ fn main_0() -> i32 { && (copies_0.with(|rc| *rc.borrow()) == 2)) as i32)) != 0 }; - Map::subscript_move( - (m.as_pointer() as Ptr, Value)>>), - c.as_pointer(), - |__k| cpp_move!(__k), - ) - .write(30); - Map::subscript_move( - (m.as_pointer() as Ptr, Value)>>), - c.as_pointer(), - |__k| cpp_move!(__k), - ) - .write(31); + Map::subscript_move(m.as_pointer(), c.as_pointer(), |__k| cpp_move!(__k)).write(30); + Map::subscript_move(m.as_pointer(), c.as_pointer(), |__k| cpp_move!(__k)).write(31); ok = { ((ok as i32) & ((((moves_1.with(|rc| *rc.borrow()) == 2) && (copies_0.with(|rc| *rc.borrow()) == 2)) @@ -185,8 +164,9 @@ fn main_0() -> i32 { }; { Map::subscript( - (m.as_pointer() as Ptr, Value)>>), - &(*(*(m.as_pointer() as Ptr, Value)>>) + m.as_pointer(), + &(*(*m + .as_pointer() .with(|__m: &Map, Value)>| __m.begin()) .iter_deref() .upgrade() @@ -199,16 +179,12 @@ fn main_0() -> i32 { { let rhs_0 = ((ok as i32) & (((copies_0.with(|rc| *rc.borrow()) == 2) - && ((Map::subscript( - (m.as_pointer() as Ptr, Value)>>), - &a, - ) - .read()) - == 12)) as i32)) + && ((Map::subscript(m.as_pointer(), &a).read()) == 12)) as i32)) != 0; ok = rhs_0 }; - let mut first: Ptr = ((*(m.as_pointer() as Ptr, Value)>>) + let mut first: Ptr = ((*m + .as_pointer() .with(|__m: &Map, Value)>| __m.begin()) .iter_deref() .upgrade() @@ -216,7 +192,7 @@ fn main_0() -> i32 { .0 .as_pointer()); Map::subscript_move( - (m.as_pointer() as Ptr, Value)>>), + m.as_pointer(), Rc::new(RefCell::new(Key::new({ 0 }))).as_pointer(), |__k| cpp_move!(__k), ) @@ -225,7 +201,7 @@ fn main_0() -> i32 { { let rhs_0 = ((ok as i32) & (({ - ((*(m.as_pointer() as Ptr, Value)>>) + ((*m.as_pointer() .with(|__m: &Map, Value)>| __m.find(&a)) .iter_deref() .upgrade() @@ -241,46 +217,30 @@ fn main_0() -> i32 { { let rhs_0 = ((ok as i32) & ((((*n.borrow()).len() == 5_usize) - && ((Map::subscript( - (n.as_pointer() as Ptr, Value)>>), - &a, - ) - .read()) - == 12)) as i32)) + && ((Map::subscript(n.as_pointer(), &a).read()) == 12)) as i32)) != 0; ok = rhs_0 }; { - let __it = (m.as_pointer() as Ptr, Value)>>) + let __it = m + .as_pointer() .with(|__m: &Map, Value)>| __m.find(&a)); - Map::erase( - (m.as_pointer() as Ptr, Value)>>), - &__it, - ) + Map::erase(m.as_pointer(), &__it) }; { - let rhs_0 = ((ok as i32) - & ((Map::erase_key( - (m.as_pointer() as Ptr, Value)>>), - &b, - ) == 1_usize) as i32)) - != 0; + let rhs_0 = ((ok as i32) & ((Map::erase_key(m.as_pointer(), &b) == 1_usize) as i32)) != 0; ok = rhs_0 }; { - let rhs_0 = ((ok as i32) - & ((Map::erase_key( - (m.as_pointer() as Ptr, Value)>>), - &b, - ) == 0_usize) as i32)) - != 0; + let rhs_0 = ((ok as i32) & ((Map::erase_key(m.as_pointer(), &b) == 0_usize) as i32)) != 0; ok = rhs_0 }; { let rhs_0 = ((ok as i32) & ((Map::erase_key( - (m.as_pointer() as Ptr, Value)>>), - &(*(*(m.as_pointer() as Ptr, Value)>>) + m.as_pointer(), + &(*(*m + .as_pointer() .with(|__m: &Map, Value)>| __m.begin()) .iter_deref() .upgrade() @@ -305,9 +265,9 @@ fn main_0() -> i32 { }; let mut sum: i32 = 0; 'loop_: for entry in IterRange::new( - (m.as_pointer() as Ptr, Value)>>) + m.as_pointer() .with(|__m: &Map, Value)>| __m.begin()), - (m.as_pointer() as Ptr, Value)>>) + m.as_pointer() .with(|__m: &Map, Value)>| __m.end()), ) { let entry: Ptr<(Value, Value)> = entry.iter_deref(); diff --git a/tests/unit/out/refcount/map_key_identity.rs b/tests/unit/out/refcount/map_key_identity.rs index 804d71c99..29388ee2d 100644 --- a/tests/unit/out/refcount/map_key_identity.rs +++ b/tests/unit/out/refcount/map_key_identity.rs @@ -124,28 +124,22 @@ fn main_0() -> i32 { ok = rhs_0 }; let distinct: Value, Value)>> = Rc::new(RefCell::new(Map::new())); - let a: Ptr = Map::subscript( - (distinct.as_pointer() as Ptr, Value)>>), - &(*distinct_a.borrow()), - ); + let a: Ptr = Map::subscript(distinct.as_pointer(), &(*distinct_a.borrow())); field!(a, value).write(11); - let a_it: Value, Value)>> = Rc::new(RefCell::new( - (distinct.as_pointer() as Ptr, Value)>>) - .with(|__m: &Map, Value)>| __m.find(&(*distinct_a.borrow()))), - )); + let a_it: Value, Value)>> = + Rc::new(RefCell::new(distinct.as_pointer().with( + |__m: &Map, Value)>| __m.find(&(*distinct_a.borrow())), + ))); let mut a_value: Ptr = ((*(*a_it.borrow()).iter_deref().upgrade().deref()) .1 .as_pointer()); ok = { ((ok as i32) & ((default_constructions_0.with(|rc| *rc.borrow()) == 1) as i32)) != 0 }; - let b: Ptr = Map::subscript( - (distinct.as_pointer() as Ptr, Value)>>), - &(*distinct_b.borrow()), - ); + let b: Ptr = Map::subscript(distinct.as_pointer(), &(*distinct_b.borrow())); field!(b, value).write(22); - let b_it: Value, Value)>> = Rc::new(RefCell::new( - (distinct.as_pointer() as Ptr, Value)>>) - .with(|__m: &Map, Value)>| __m.find(&(*distinct_b.borrow()))), - )); + let b_it: Value, Value)>> = + Rc::new(RefCell::new(distinct.as_pointer().with( + |__m: &Map, Value)>| __m.find(&(*distinct_b.borrow())), + ))); ok = { ((ok as i32) & ((default_constructions_0.with(|rc| *rc.borrow()) == 2) as i32)) != 0 }; { let rhs_0 = ((ok as i32) & (((*distinct.borrow()).len() == 2_usize) as i32)) != 0; @@ -160,25 +154,30 @@ fn main_0() -> i32 { { let rhs_0 = ((ok as i32) & (((*a_it.borrow()) - == (distinct.as_pointer() as Ptr, Value)>>).with( - |__m: &Map, Value)>| __m.find(&(*distinct_a.borrow())), - )) as i32)) + == distinct + .as_pointer() + .with(|__m: &Map, Value)>| { + __m.find(&(*distinct_a.borrow())) + })) as i32)) != 0; ok = rhs_0 }; { let rhs_0 = ((ok as i32) & (((*b_it.borrow()) - == (distinct.as_pointer() as Ptr, Value)>>).with( - |__m: &Map, Value)>| __m.find(&(*distinct_b.borrow())), - )) as i32)) + == distinct + .as_pointer() + .with(|__m: &Map, Value)>| { + __m.find(&(*distinct_b.borrow())) + })) as i32)) != 0; ok = rhs_0 }; { let rhs_0 = ((ok as i32) & (((*b_it.borrow()) - != (distinct.as_pointer() as Ptr, Value)>>) + != distinct + .as_pointer() .with(|__m: &Map, Value)>| __m.end())) as i32)) != 0; @@ -214,9 +213,11 @@ fn main_0() -> i32 { }; let mut distinct_count: usize = 0_usize; 'loop_: for entry in IterRange::new( - (distinct.as_pointer() as Ptr, Value)>>) + distinct + .as_pointer() .with(|__m: &Map, Value)>| __m.begin()), - (distinct.as_pointer() as Ptr, Value)>>) + distinct + .as_pointer() .with(|__m: &Map, Value)>| __m.end()), ) { let entry: Ptr<(Value, Value)> = entry.iter_deref(); @@ -260,17 +261,12 @@ fn main_0() -> i32 { let equivalent: Value, Value)>> = Rc::new(RefCell::new(Map::new())); let mut before_equivalent: i32 = default_constructions_0.with(|rc| *rc.borrow()); - let first: Ptr = Map::subscript( - (equivalent.as_pointer() as Ptr, Value)>>), - &(*equivalent_a.borrow()), - ); + let first: Ptr = Map::subscript(equivalent.as_pointer(), &(*equivalent_a.borrow())); field!(first, value).write(31); let first_it: Value, Value)>> = - Rc::new(RefCell::new( - (equivalent.as_pointer() as Ptr, Value)>>).with( - |__m: &Map, Value)>| __m.find(&(*equivalent_a.borrow())), - ), - )); + Rc::new(RefCell::new(equivalent.as_pointer().with( + |__m: &Map, Value)>| __m.find(&(*equivalent_a.borrow())), + ))); let mut first_value: Ptr = ((*(*first_it.borrow()).iter_deref().upgrade().deref()) .1 .as_pointer()); @@ -279,10 +275,7 @@ fn main_0() -> i32 { & ((default_constructions_0.with(|rc| *rc.borrow()) == (before_equivalent + 1)) as i32)) != 0 }; - let second: Ptr = Map::subscript( - (equivalent.as_pointer() as Ptr, Value)>>), - &(*equivalent_b.borrow()), - ); + let second: Ptr = Map::subscript(equivalent.as_pointer(), &(*equivalent_b.borrow())); let mut reused: bool = (default_constructions_0.with(|rc| *rc.borrow()) == (before_equivalent + 1)); ok = { ((ok as i32) & (reused as i32)) != 0 }; @@ -294,7 +287,8 @@ fn main_0() -> i32 { { let rhs_0 = ((ok as i32) & (((*first_it.borrow()) - != (equivalent.as_pointer() as Ptr, Value)>>) + != equivalent + .as_pointer() .with(|__m: &Map, Value)>| __m.end())) as i32)) != 0; @@ -304,20 +298,22 @@ fn main_0() -> i32 { { let rhs_0 = ((ok as i32) & (((*first_it.borrow()) - == (equivalent.as_pointer() as Ptr, Value)>>) - .with(|__m: &Map, Value)>| { + == equivalent.as_pointer().with( + |__m: &Map, Value)>| { __m.find(&(*equivalent_a.borrow())) - })) as i32)) + }, + )) as i32)) != 0; ok = rhs_0 }; { let rhs_0 = ((ok as i32) & (((*first_it.borrow()) - == (equivalent.as_pointer() as Ptr, Value)>>) - .with(|__m: &Map, Value)>| { + == equivalent.as_pointer().with( + |__m: &Map, Value)>| { __m.find(&(*equivalent_b.borrow())) - })) as i32)) + }, + )) as i32)) != 0; ok = rhs_0 }; @@ -343,9 +339,11 @@ fn main_0() -> i32 { }; let mut equivalent_count: usize = 0_usize; 'loop_: for entry in IterRange::new( - (equivalent.as_pointer() as Ptr, Value)>>) + equivalent + .as_pointer() .with(|__m: &Map, Value)>| __m.begin()), - (equivalent.as_pointer() as Ptr, Value)>>) + equivalent + .as_pointer() .with(|__m: &Map, Value)>| __m.end()), ) { let entry: Ptr<(Value, Value)> = entry.iter_deref(); @@ -373,10 +371,7 @@ fn main_0() -> i32 { order: 4, identity: 10, }; - let later: Ptr = Map::subscript( - (equivalent.as_pointer() as Ptr, Value)>>), - &later_key, - ); + let later: Ptr = Map::subscript(equivalent.as_pointer(), &later_key); field!(later, value).write(41); ok = { ((ok as i32) @@ -391,10 +386,11 @@ fn main_0() -> i32 { { let rhs_0 = ((ok as i32) & (((*first_it.borrow()) - == (equivalent.as_pointer() as Ptr, Value)>>) - .with(|__m: &Map, Value)>| { + == equivalent.as_pointer().with( + |__m: &Map, Value)>| { __m.find(&(*equivalent_a.borrow())) - })) as i32)) + }, + )) as i32)) != 0; ok = rhs_0 }; @@ -432,16 +428,12 @@ fn main_0() -> i32 { }; let mut before_matching: i32 = default_constructions_0.with(|rc| *rc.borrow()); let matching: Value, Value)>> = Rc::new(RefCell::new(Map::new())); - let matched: Ptr = Map::subscript( - (matching.as_pointer() as Ptr, Value)>>), - &matching_a, - ); + let matched: Ptr = Map::subscript(matching.as_pointer(), &matching_a); field!(matched, value).write(51); let matched_it: Value, Value)>> = - Rc::new(RefCell::new( - (matching.as_pointer() as Ptr, Value)>>) - .with(|__m: &Map, Value)>| __m.find(&matching_a)), - )); + Rc::new(RefCell::new(matching.as_pointer().with( + |__m: &Map, Value)>| __m.find(&matching_a), + ))); let mut matched_value: Ptr = ((*(*matched_it.borrow()).iter_deref().upgrade().deref()) .1 .as_pointer()); @@ -450,10 +442,7 @@ fn main_0() -> i32 { & ((default_constructions_0.with(|rc| *rc.borrow()) == (before_matching + 1)) as i32)) != 0 }; - let matched_again: Ptr = Map::subscript( - (matching.as_pointer() as Ptr, Value)>>), - &matching_b, - ); + let matched_again: Ptr = Map::subscript(matching.as_pointer(), &matching_b); ok = { ((ok as i32) & ((default_constructions_0.with(|rc| *rc.borrow()) == (before_matching + 1)) as i32)) @@ -467,7 +456,8 @@ fn main_0() -> i32 { { let rhs_0 = ((ok as i32) & (((*matched_it.borrow()) - == (matching.as_pointer() as Ptr, Value)>>) + == matching + .as_pointer() .with(|__m: &Map, Value)>| __m.find(&matching_b))) as i32)) != 0; @@ -492,10 +482,7 @@ fn main_0() -> i32 { != 0; ok = rhs_0 }; - let other: Ptr = Map::subscript( - (matching.as_pointer() as Ptr, Value)>>), - &matching_c, - ); + let other: Ptr = Map::subscript(matching.as_pointer(), &matching_c); field!(other, value).write(61); ok = { ((ok as i32) @@ -509,7 +496,8 @@ fn main_0() -> i32 { { let rhs_0 = ((ok as i32) & (((*matched_it.borrow()) - == (matching.as_pointer() as Ptr, Value)>>) + == matching + .as_pointer() .with(|__m: &Map, Value)>| __m.find(&matching_a))) as i32)) != 0; diff --git a/tests/unit/out/refcount/operator_traits.rs b/tests/unit/out/refcount/operator_traits.rs index e045f2118..ac16005fa 100644 --- a/tests/unit/out/refcount/operator_traits.rs +++ b/tests/unit/out/refcount/operator_traits.rs @@ -165,24 +165,22 @@ fn main_0() -> i32 { Lt { v: 2 }, ]))); { - let __n = (lts.as_pointer() as Ptr) + let __n = lts + .as_pointer() + .decay() .end() - .iter_distance(&(lts.as_pointer() as Ptr).begin()); + .iter_distance(<s.as_pointer().decay().begin()); let mut __order: Vec = (0..__n).collect(); __order.sort_by(|&__x, &__y| { - (lts.as_pointer() as Ptr) - .begin() - .iter_at(__x) - .with(|__a| { - (lts.as_pointer() as Ptr) - .begin() - .iter_at(__y) - .with(|__b| __a.cmp(__b)) - }) - }); - reorder(__order, |__i| { - (lts.as_pointer() as Ptr).begin().iter_at(__i) + lts.as_pointer().decay().begin().iter_at(__x).with(|__a| { + lts.as_pointer() + .decay() + .begin() + .iter_at(__y) + .with(|__b| __a.cmp(__b)) + }) }); + reorder(__order, |__i| lts.as_pointer().decay().begin().iter_at(__i)); }; assert!( (({ (*lts.borrow())[0_usize].v } == 1) && ({ (*lts.borrow())[1_usize].v } == 2)) @@ -197,8 +195,8 @@ fn main_0() -> i32 { let mut nine: Eq = Eq { v: 9 }; assert!( ({ - let mut __it = (eqs.as_pointer() as Ptr).begin(); - while __it != (eqs.as_pointer() as Ptr).end() + let mut __it = eqs.as_pointer().decay().begin(); + while __it != eqs.as_pointer().decay().end() && __it.iter_deref().with(|__v| *__v != two) { __it.iter_inc(); @@ -211,14 +209,14 @@ fn main_0() -> i32 { ); assert!( { - let mut __it = (eqs.as_pointer() as Ptr).begin(); - while __it != (eqs.as_pointer() as Ptr).end() + let mut __it = eqs.as_pointer().decay().begin(); + while __it != eqs.as_pointer().decay().end() && __it.iter_deref().with(|__v| *__v != nine) { __it.iter_inc(); } __it - } == (eqs.as_pointer() as Ptr).end() + } == eqs.as_pointer().decay().end() ); let cmps: Value> = Rc::new(RefCell::new(Vec::from([ Cmp { v: 3 }, @@ -226,31 +224,31 @@ fn main_0() -> i32 { Cmp { v: 2 }, ]))); { - let __n = (cmps.as_pointer() as Ptr) + let __n = cmps + .as_pointer() + .decay() .end() - .iter_distance(&(cmps.as_pointer() as Ptr).begin()); + .iter_distance(&cmps.as_pointer().decay().begin()); let mut __order: Vec = (0..__n).collect(); __order.sort_by(|&__x, &__y| { - (cmps.as_pointer() as Ptr) - .begin() - .iter_at(__x) - .with(|__a| { - (cmps.as_pointer() as Ptr) - .begin() - .iter_at(__y) - .with(|__b| __a.cmp(__b)) - }) + cmps.as_pointer().decay().begin().iter_at(__x).with(|__a| { + cmps.as_pointer() + .decay() + .begin() + .iter_at(__y) + .with(|__b| __a.cmp(__b)) + }) }); reorder(__order, |__i| { - (cmps.as_pointer() as Ptr).begin().iter_at(__i) + cmps.as_pointer().decay().begin().iter_at(__i) }); }; assert!(({ (*cmps.borrow())[0_usize].v } == 1) && ({ (*cmps.borrow())[2_usize].v } == 3)); let mut three: Cmp = Cmp { v: 3 }; assert!( ({ - let mut __it = (cmps.as_pointer() as Ptr).begin(); - while __it != (cmps.as_pointer() as Ptr).end() + let mut __it = cmps.as_pointer().decay().begin(); + while __it != cmps.as_pointer().decay().end() && __it.iter_deref().with(|__v| *__v != three) { __it.iter_inc(); @@ -263,31 +261,32 @@ fn main_0() -> i32 { ); let frees: Value> = Rc::new(RefCell::new(Vec::from([Free { v: 2 }, Free { v: 1 }]))); { - let __n = (frees.as_pointer() as Ptr) + let __n = frees + .as_pointer() + .decay() .end() - .iter_distance(&(frees.as_pointer() as Ptr).begin()); + .iter_distance(&frees.as_pointer().decay().begin()); let mut __order: Vec = (0..__n).collect(); __order.sort_by(|&__x, &__y| { - (frees.as_pointer() as Ptr) - .begin() - .iter_at(__x) - .with(|__a| { - (frees.as_pointer() as Ptr) - .begin() - .iter_at(__y) - .with(|__b| __a.cmp(__b)) - }) + frees.as_pointer().decay().begin().iter_at(__x).with(|__a| { + frees + .as_pointer() + .decay() + .begin() + .iter_at(__y) + .with(|__b| __a.cmp(__b)) + }) }); reorder(__order, |__i| { - (frees.as_pointer() as Ptr).begin().iter_at(__i) + frees.as_pointer().decay().begin().iter_at(__i) }); }; assert!(({ (*frees.borrow())[0_usize].v } == 1)); let mut ftwo: Free = Free { v: 2 }; assert!( ({ - let mut __it = (frees.as_pointer() as Ptr).begin(); - while __it != (frees.as_pointer() as Ptr).end() + let mut __it = frees.as_pointer().decay().begin(); + while __it != frees.as_pointer().decay().end() && __it.iter_deref().with(|__v| *__v != ftwo) { __it.iter_inc(); @@ -300,19 +299,20 @@ fn main_0() -> i32 { ); let m: Value, Value)>> = Rc::new(RefCell::new(Map::new())); Map::subscript_move( - (m.as_pointer() as Ptr, Value)>>), + m.as_pointer(), Rc::new(RefCell::new(Lt { v: 2 })).as_pointer(), |__k| cpp_move!(__k), ) .write(20); Map::subscript_move( - (m.as_pointer() as Ptr, Value)>>), + m.as_pointer(), Rc::new(RefCell::new(Lt { v: 1 })).as_pointer(), |__k| cpp_move!(__k), ) .write(10); assert!( - ((*(*(m.as_pointer() as Ptr, Value)>>) + ((*(*m + .as_pointer() .with(|__m: &Map, Value)>| __m.begin()) .iter_deref() .upgrade() @@ -323,7 +323,7 @@ fn main_0() -> i32 { ); assert!( ((Map::subscript_move( - (m.as_pointer() as Ptr, Value)>>), + m.as_pointer(), Rc::new(RefCell::new(Lt { v: 2 })).as_pointer(), |__k| cpp_move!(__k) ) diff --git a/tests/unit/out/refcount/redundant_copy_in_conversion.rs b/tests/unit/out/refcount/redundant_copy_in_conversion.rs index bb8163ded..d71efdc68 100644 --- a/tests/unit/out/refcount/redundant_copy_in_conversion.rs +++ b/tests/unit/out/refcount/redundant_copy_in_conversion.rs @@ -26,17 +26,17 @@ pub fn main() { fn main_0() -> i32 { let m: Value, Value)>> = Rc::new(RefCell::new(Map::new())); Map::subscript_move( - (m.as_pointer() as Ptr, Value)>>), + m.as_pointer(), Rc::new(RefCell::new(0)).as_pointer(), |__k| cpp_move!(__k), ) .write(1); let end: Value, Value)>> = Rc::new(RefCell::new( - (m.as_pointer() as Ptr, Value)>>) + m.as_pointer() .with(|__m: &Map, Value)>| __m.end()), )); let it0: Value, Value)>> = Rc::new(RefCell::new( - (m.as_pointer() as Ptr, Value)>>) + m.as_pointer() .with(|__m: &Map, Value)>| __m.find(&0)), )); let const_it: Value, Value)>> = Rc::new(RefCell::new( diff --git a/tests/unit/out/refcount/rvalue_rule_arg_move.rs b/tests/unit/out/refcount/rvalue_rule_arg_move.rs index c0e534c99..80d3dc2be 100644 --- a/tests/unit/out/refcount/rvalue_rule_arg_move.rs +++ b/tests/unit/out/refcount/rvalue_rule_arg_move.rs @@ -56,14 +56,14 @@ fn main_0() -> i32 { let a: Value = Rc::new(RefCell::new(Elem::new({ 1 }))); let mut b: Elem = Elem::new({ 2 }); { - let __off = >::from((v.as_pointer() as Ptr).end()).index(); + let __off = >::from(v.as_pointer().decay().end()).index(); (*v.borrow_mut()).insert(__off, Elem::move_from({ a.as_pointer() })); - >::from((v.as_pointer() as Ptr).end()) + >::from(v.as_pointer().decay().end()) }; { - let __off = >::from((v.as_pointer() as Ptr).end()).index(); + let __off = >::from(v.as_pointer().decay().end()).index(); (*v.borrow_mut()).insert(__off, (b).clone()); - >::from((v.as_pointer() as Ptr).end()) + >::from(v.as_pointer().decay().end()) }; let mut ok: bool = (((copies_0.with(|rc| *rc.borrow()) == 1) && (moves_1.with(|rc| *rc.borrow()) == 1)) diff --git a/tests/unit/out/refcount/swap_map_no_copy.rs b/tests/unit/out/refcount/swap_map_no_copy.rs index ae5683659..2a67cc2fb 100644 --- a/tests/unit/out/refcount/swap_map_no_copy.rs +++ b/tests/unit/out/refcount/swap_map_no_copy.rs @@ -227,7 +227,7 @@ fn main_0() -> i32 { let _o: Value = Rc::new(RefCell::new(Tracked::new_2({ 10 }))); TrackedImpl::move_assign( &Map::subscript_move( - (m1.as_pointer() as Ptr, Value)>>), + m1.as_pointer(), Rc::new(RefCell::new(1)).as_pointer(), |__k| cpp_move!(__k), ), @@ -238,7 +238,7 @@ fn main_0() -> i32 { let _o: Value = Rc::new(RefCell::new(Tracked::new_2({ 20 }))); TrackedImpl::move_assign( &Map::subscript_move( - (m1.as_pointer() as Ptr, Value)>>), + m1.as_pointer(), Rc::new(RefCell::new(2)).as_pointer(), |__k| cpp_move!(__k), ), @@ -250,7 +250,7 @@ fn main_0() -> i32 { let _o: Value = Rc::new(RefCell::new(Tracked::new_2({ 30 }))); TrackedImpl::move_assign( &Map::subscript_move( - (m2.as_pointer() as Ptr, Value)>>), + m2.as_pointer(), Rc::new(RefCell::new(3)).as_pointer(), |__k| cpp_move!(__k), ), @@ -260,26 +260,26 @@ fn main_0() -> i32 { assert!((copies_0.with(|rc| *rc.borrow()) == 0)); cpp_swap!( Map::subscript_move( - (m1.as_pointer() as Ptr, Value)>>), + m1.as_pointer(), Rc::new(RefCell::new(1)).as_pointer(), |__k| cpp_move!(__k) ), Map::subscript_move( - (m1.as_pointer() as Ptr, Value)>>), + m1.as_pointer(), Rc::new(RefCell::new(2)).as_pointer(), |__k| cpp_move!(__k) ) ); assert!( (Map::subscript_move( - (m1.as_pointer() as Ptr, Value)>>), + m1.as_pointer(), Rc::new(RefCell::new(1)).as_pointer(), |__k| cpp_move!(__k) ) .with(|__s| __s.v) == 20) && (Map::subscript_move( - (m1.as_pointer() as Ptr, Value)>>), + m1.as_pointer(), Rc::new(RefCell::new(2)).as_pointer(), |__k| cpp_move!(__k) ) @@ -291,7 +291,7 @@ fn main_0() -> i32 { assert!( ((*m1.borrow()).len() == 1_usize) && (Map::subscript_move( - (m1.as_pointer() as Ptr, Value)>>), + m1.as_pointer(), Rc::new(RefCell::new(3)).as_pointer(), |__k| cpp_move!(__k) ) @@ -301,14 +301,14 @@ fn main_0() -> i32 { assert!( (((*m2.borrow()).len() == 2_usize) && (Map::subscript_move( - (m2.as_pointer() as Ptr, Value)>>), + m2.as_pointer(), Rc::new(RefCell::new(1)).as_pointer(), |__k| cpp_move!(__k) ) .with(|__s| __s.v) == 20)) && (Map::subscript_move( - (m2.as_pointer() as Ptr, Value)>>), + m2.as_pointer(), Rc::new(RefCell::new(2)).as_pointer(), |__k| cpp_move!(__k) ) @@ -344,8 +344,8 @@ fn main_0() -> i32 { (*vec_.borrow_mut()).push(__init) }; cpp_swap!( - (vec_.as_pointer() as Ptr).offset(0_usize), - (vec_.as_pointer() as Ptr).offset(1_usize) + vec_.as_pointer().decay().offset(0_usize), + vec_.as_pointer().decay().offset(1_usize) ); assert!(({ (*vec_.borrow())[0_usize].v } == 5) && ({ (*vec_.borrow())[1_usize].v } == 4)); assert!((copies_0.with(|rc| *rc.borrow()) == 0)); @@ -415,61 +415,42 @@ fn main_0() -> i32 { )); { let __init = Tracked::new_2({ 1 }); - elem!((grid.as_pointer() as Ptr>), 0_usize) + elem!(grid.as_pointer().decay(), 0_usize) .with_mut(|__v: &mut Vec| __v.push(__init)) }; { let __init = Tracked::new_2({ 2 }); - elem!((grid.as_pointer() as Ptr>), 0_usize) + elem!(grid.as_pointer().decay(), 0_usize) .with_mut(|__v: &mut Vec| __v.push(__init)) }; { let __init = Tracked::new_2({ 3 }); - elem!((grid.as_pointer() as Ptr>), 1_usize) + elem!(grid.as_pointer().decay(), 1_usize) .with_mut(|__v: &mut Vec| __v.push(__init)) }; cpp_swap!( - ((grid.as_pointer() as Ptr>) + grid.as_pointer() + .decay() .offset(0_usize) - .as_pointer() as Ptr) + .decay() .offset(1_usize), - ((grid.as_pointer() as Ptr>) + grid.as_pointer() + .decay() .offset(1_usize) - .as_pointer() as Ptr) + .decay() .offset(0_usize) ); assert!( - (index!( - elem!((grid.as_pointer() as Ptr>), 0_usize), - 1_usize - ) - .with(|__s| __s.v) - == 3) - && (index!( - elem!((grid.as_pointer() as Ptr>), 1_usize), - 0_usize - ) - .with(|__s| __s.v) - == 2) + (index!(elem!(grid.as_pointer().decay(), 0_usize), 1_usize).with(|__s| __s.v) == 3) + && (index!(elem!(grid.as_pointer().decay(), 1_usize), 0_usize).with(|__s| __s.v) == 2) ); cpp_swap!( - (grid.as_pointer() as Ptr>).offset(0_usize), - (grid.as_pointer() as Ptr>).offset(1_usize) + grid.as_pointer().decay().offset(0_usize), + grid.as_pointer().decay().offset(1_usize) ); assert!( - ((*((grid.as_pointer() as Ptr>) - .offset(0_usize) - .as_pointer() as Ptr>) - .upgrade() - .deref()) - .len() - == 1_usize) - && (index!( - elem!((grid.as_pointer() as Ptr>), 0_usize), - 0_usize - ) - .with(|__s| __s.v) - == 2) + ((*grid.as_pointer().decay().offset(0_usize).upgrade().deref()).len() == 1_usize) + && (index!(elem!(grid.as_pointer().decay(), 0_usize), 0_usize).with(|__s| __s.v) == 2) ); assert!((copies_0.with(|rc| *rc.borrow()) == 0)); let maps: Value, Value)>]>> = Rc::new(RefCell::new( @@ -481,8 +462,7 @@ fn main_0() -> i32 { let _o: Value = Rc::new(RefCell::new(Tracked::new_2({ 1 }))); TrackedImpl::move_assign( &Map::subscript_move( - ((maps.as_pointer() as Ptr, Value)>>).offset(0) - as Ptr, Value)>>), + (maps.as_pointer() as Ptr, Value)>>).offset(0), Rc::new(RefCell::new(1)).as_pointer(), |__k| cpp_move!(__k), ), @@ -493,8 +473,7 @@ fn main_0() -> i32 { let _o: Value = Rc::new(RefCell::new(Tracked::new_2({ 2 }))); TrackedImpl::move_assign( &Map::subscript_move( - ((maps.as_pointer() as Ptr, Value)>>).offset(1) - as Ptr, Value)>>), + (maps.as_pointer() as Ptr, Value)>>).offset(1), Rc::new(RefCell::new(2)).as_pointer(), |__k| cpp_move!(__k), ), @@ -508,8 +487,7 @@ fn main_0() -> i32 { assert!( ((*maps.borrow())[(0) as usize].len() == 1_usize) && (Map::subscript_move( - ((maps.as_pointer() as Ptr, Value)>>).offset(0) - as Ptr, Value)>>), + (maps.as_pointer() as Ptr, Value)>>).offset(0), Rc::new(RefCell::new(2)).as_pointer(), |__k| cpp_move!(__k) ) @@ -519,8 +497,7 @@ fn main_0() -> i32 { assert!( ((*maps.borrow())[(1) as usize].len() == 1_usize) && (Map::subscript_move( - ((maps.as_pointer() as Ptr, Value)>>).offset(1) - as Ptr, Value)>>), + (maps.as_pointer() as Ptr, Value)>>).offset(1), Rc::new(RefCell::new(1)).as_pointer(), |__k| cpp_move!(__k) ) @@ -728,7 +705,7 @@ pub trait OwnerImpl { } impl OwnerImpl for Ptr { fn move_assign(&self, _a0: Ptr) -> Ptr { - (field_ptr!((*self), p) as Ptr>>) + field_ptr!((*self), p) .write(field!(_a0, p).with_mut(|__v: &mut Option>| __v.take())); return (*self).clone(); } diff --git a/tests/unit/out/refcount/vector_iter_range_ctor.rs b/tests/unit/out/refcount/vector_iter_range_ctor.rs index 45ee37119..30339d783 100644 --- a/tests/unit/out/refcount/vector_iter_range_ctor.rs +++ b/tests/unit/out/refcount/vector_iter_range_ctor.rs @@ -74,29 +74,30 @@ fn main_0() -> i32 { assert!(((v5[0_usize] as i32) == 10) && ((v5[4_usize] as i32) == 50)); let m: Value, Value)>> = Rc::new(RefCell::new(Map::new())); Map::subscript_move( - (m.as_pointer() as Ptr, Value)>>), + m.as_pointer(), Rc::new(RefCell::new(1)).as_pointer(), |__k| cpp_move!(__k), ) .write(10); Map::subscript_move( - (m.as_pointer() as Ptr, Value)>>), + m.as_pointer(), Rc::new(RefCell::new(2)).as_pointer(), |__k| cpp_move!(__k), ) .write(20); Map::subscript_move( - (m.as_pointer() as Ptr, Value)>>), + m.as_pointer(), Rc::new(RefCell::new(3)).as_pointer(), |__k| cpp_move!(__k), ) .write(30); let v6: Value, Value)>> = Rc::new(RefCell::new({ let mut __v = Vec::new(); - let mut __it = (m.as_pointer() as Ptr, Value)>>) + let mut __it = m + .as_pointer() .with(|__m: &Map, Value)>| __m.begin()); while __it - != (m.as_pointer() as Ptr, Value)>>) + != m.as_pointer() .with(|__m: &Map, Value)>| __m.end()) { __v.push( @@ -119,29 +120,25 @@ fn main_0() -> i32 { ); { let start_idx = , Value)>>::from( - (v6.as_pointer() as Ptr<(Value, Value)>) - .begin() - .iter_add(1_isize), + v6.as_pointer().decay().begin().iter_add(1_isize), ) .index(); let mut temp_vec: Vec<(Value, Value)> = Vec::new(); - let mut __it = (m.as_pointer() as Ptr, Value)>>) + let mut __it = m + .as_pointer() .with(|__m: &Map, Value)>| __m.begin()); while __it - != (m.as_pointer() as Ptr, Value)>>) + != m.as_pointer() .with(|__m: &Map, Value)>| __m.end()) { temp_vec.push(__it.iter_deref().read()); __it.iter_inc(); } - (v6.as_pointer() as Ptr, Value)>>).with_mut( - |v: &mut Vec<(Value, Value)>| { + v6.as_pointer() + .with_mut(|v: &mut Vec<(Value, Value)>| { v.splice(start_idx..start_idx, temp_vec); - }, - ); - RandomAccessIterator::Vec( - (v6.as_pointer() as Ptr, Value)>>).decay() + start_idx, - ) + }); + RandomAccessIterator::Vec(v6.as_pointer().decay() + start_idx) }; assert!(((*v6.borrow()).len() == 6_usize)); assert!(