Skip to content

Commit cfb6ea8

Browse files
committed
Move std::array default in rules
1 parent 05b75bf commit cfb6ea8

7 files changed

Lines changed: 7 additions & 36 deletions

File tree

‎cpp2rust/converter/converter.cpp‎

Lines changed: 0 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -4302,33 +4302,6 @@ std::string Converter::GetArrayDefaultAsString(clang::QualType qual_type) {
43024302
if (clang::isa<clang::IncompleteArrayType>(qual_type)) {
43034303
return "[]";
43044304
}
4305-
if (IsStdDecl(qual_type->getAsCXXRecordDecl(), "array")) {
4306-
assert(GetTemplateArgs(qual_type).has_value());
4307-
auto template_args = *GetTemplateArgs(qual_type);
4308-
assert(template_args.size() == 2);
4309-
auto array_size = template_args[1];
4310-
unsigned size = 0;
4311-
switch (array_size.getKind()) {
4312-
case clang::TemplateArgument::Expression: {
4313-
auto array_size_expr = array_size.getAsExpr();
4314-
assert(array_size_expr && !array_size_expr->isValueDependent());
4315-
clang::Expr::EvalResult result;
4316-
ENSURE(array_size_expr->EvaluateAsInt(result, ctx_));
4317-
size = result.Val.getInt().getZExtValue();
4318-
break;
4319-
}
4320-
case clang::TemplateArgument::Integral: {
4321-
size = array_size.getAsIntegral().getZExtValue();
4322-
break;
4323-
}
4324-
default:
4325-
assert(0 && "Unsupported array size kind");
4326-
break;
4327-
}
4328-
return std::format(
4329-
"std::array::from_fn::<_, {}, _>(|_| Default::default()).to_vec()",
4330-
size);
4331-
}
43324305
return {};
43334306
}
43344307

‎rules/array/tgt_unsafe.rs‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33

44
use libcc2rs::*;
55

6-
fn t1<T1>() -> Vec<T1> {
7-
Default::default()
6+
fn t1<T1: Default + Clone, const T2: usize>() -> Vec<T1> {
7+
std::array::from_fn::<_, T2, _>(|_| <T1>::default()).to_vec()
88
}
99

1010
fn t2() -> usize {

‎tests/unit/out/refcount/empty_array_init.rs‎

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,7 @@ pub fn main() {
1111
std::process::exit(main_0());
1212
}
1313
fn main_0() -> i32 {
14-
let vec_: Value<Vec<i32>> = Rc::new(RefCell::new(
15-
std::array::from_fn::<_, 3, _>(|_| Default::default()).to_vec(),
16-
));
14+
let vec_: Value<Vec<i32>> = Rc::new(RefCell::new());
1715
return 0;
1816
}
1917
pub fn __cpp2rust_init_globals() {}

‎tests/unit/out/refcount/inline_container_fields.rs‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ impl Default for State {
5555
grid: (0..2)
5656
.map(|_| (0..3).map(|_| 0_i32).collect::<Box<[i32]>>())
5757
.collect::<Box<[Box<[i32]>]>>(),
58-
arr: std::array::from_fn::<_, 3, _>(|_| Default::default()).to_vec(),
58+
arr: std::array::from_fn::<_, 3_u64, _>(|_| <i32>::default()).to_vec(),
5959
elems: Default::default(),
6060
rows: Default::default(),
6161
}

‎tests/unit/out/refcount/libc_struct_without_default.rs‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ impl Default for UserDefined {
2020
fn default() -> Self {
2121
{
2222
UserDefined {
23-
a: std::array::from_fn::<_, 1, _>(|_| Default::default()).to_vec(),
23+
a: std::array::from_fn::<_, 1_u64, _>(|_| <i32>::default()).to_vec(),
2424
v: Default::default(),
2525
}
2626
}

‎tests/unit/out/unsafe/inline_container_fields.rs‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ impl Default for State {
2828
State {
2929
count: 0_i32,
3030
grid: [[0_i32; 3]; 2],
31-
arr: std::array::from_fn::<_, 3, _>(|_| Default::default()).to_vec(),
31+
arr: std::array::from_fn::<_, 3_u64, _>(|_| <i32>::default()).to_vec(),
3232
elems: Default::default(),
3333
rows: Default::default(),
3434
}

‎tests/unit/out/unsafe/libc_struct_without_default.rs‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ impl Default for UserDefined {
1616
fn default() -> Self {
1717
unsafe {
1818
UserDefined {
19-
a: std::array::from_fn::<_, 1, _>(|_| Default::default()).to_vec(),
19+
a: std::array::from_fn::<_, 1_u64, _>(|_| <i32>::default()).to_vec(),
2020
v: Default::default(),
2121
}
2222
}

0 commit comments

Comments
 (0)