Skip to content

Commit f277687

Browse files
committed
transpile: import Edition{2021,2024} directly
1 parent 4470f88 commit f277687

6 files changed

Lines changed: 25 additions & 15 deletions

File tree

c2rust-rust-tools/src/lib.rs

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@ use std::path::Path;
77
use std::process::Command;
88
use std::str::FromStr;
99

10+
use crate::RustEdition::Edition2021;
11+
use crate::RustEdition::Edition2024;
12+
1013
#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default, Debug)]
1114
pub enum RustEdition {
1215
/// The default is edition 2021 because `c2rust-refactor`,
@@ -17,12 +20,12 @@ pub enum RustEdition {
1720
}
1821

1922
impl RustEdition {
20-
pub const ALL: &[Self] = &[Self::Edition2021, Self::Edition2024];
23+
pub const ALL: &[Self] = &[Edition2021, Edition2024];
2124

2225
pub const fn as_str(&self) -> &'static str {
2326
match self {
24-
Self::Edition2021 => "2021",
25-
Self::Edition2024 => "2024",
27+
Edition2021 => "2021",
28+
Edition2024 => "2024",
2629
}
2730
}
2831

@@ -32,9 +35,9 @@ impl RustEdition {
3235
pub const fn toolchain(&self) -> &'static str {
3336
match self {
3437
// 1.70 (1.68 for syn v2.0, 1.70 for sparse registry)
35-
Self::Edition2021 => "+nightly-2023-04-15",
38+
Edition2021 => "+nightly-2023-04-15",
3639
// This doesn't really need to be pinned, but pin it for stability.
37-
Self::Edition2024 => "+nightly-2026-03-03",
40+
Edition2024 => "+nightly-2026-03-03",
3841
}
3942
}
4043
}

c2rust-transpile/src/build_files/mod.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@ use std::io::Write;
44
use std::path::{Path, PathBuf};
55
use std::str::FromStr;
66

7-
use c2rust_rust_tools::{rustfmt, RustEdition};
7+
use c2rust_rust_tools::rustfmt;
8+
use c2rust_rust_tools::RustEdition::Edition2024;
89
use handlebars::Handlebars;
910
use pathdiff::diff_paths;
1011
use serde_derive::Serialize;
@@ -330,7 +331,7 @@ fn emit_cargo_toml<'lcmd>(
330331
"edition": tcfg.edition.as_str(),
331332
// This is already the default in Rust 1.77,
332333
// and edition 2024 was released in Rust 1.85.
333-
"strip_debuginfo_release": tcfg.edition < RustEdition::Edition2024,
334+
"strip_debuginfo_release": tcfg.edition < Edition2024,
334335
"crate_types": ccfg.link_cmd.r#type.as_cargo_types(),
335336
"is_library": ccfg.link_cmd.r#type.is_library(),
336337
"lib_rs_file": get_lib_rs_file_name(tcfg),

c2rust-transpile/src/translator/builtins.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ use crate::format_translation_err;
55

66
use super::*;
77

8+
use c2rust_rust_tools::RustEdition::Edition2024;
9+
810
/// The argument type for a libc builtin function
911
#[derive(Copy, Clone, PartialEq)]
1012
enum LibcFnArgType {
@@ -414,7 +416,7 @@ impl<'c> Translation<'c> {
414416

415417
"__builtin_arm_yield" => {
416418
let fn_name = "__yield";
417-
if self.tcfg.edition < RustEdition::Edition2024 {
419+
if self.tcfg.edition < Edition2024 {
418420
self.use_feature("stdsimd");
419421
} else {
420422
// Edition 2024 was release in Rust 1.85.

c2rust-transpile/src/translator/mod.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ use std::path::{Path, PathBuf};
77
use std::rc::Rc;
88

99
use c2rust_rust_tools::RustEdition;
10+
use c2rust_rust_tools::RustEdition::Edition2024;
1011
use dtoa;
1112
use failure::{err_msg, format_err, Fail};
1213
use indexmap::indexmap;
@@ -373,7 +374,7 @@ pub fn stmts_block(mut stmts: Vec<Stmt>) -> Block {
373374

374375
/// Whether `extern` blocks can be `unsafe` in this edition.
375376
fn extern_block_unsafety(edition: RustEdition) -> Unsafety {
376-
if edition >= RustEdition::Edition2024 {
377+
if edition >= Edition2024 {
377378
Unsafety::Unsafe
378379
} else {
379380
Unsafety::Normal
@@ -382,7 +383,7 @@ fn extern_block_unsafety(edition: RustEdition) -> Unsafety {
382383

383384
/// Whether attributes can be `unsafe` in this edition.
384385
fn attr_unsafety(edition: RustEdition) -> Unsafety {
385-
if edition >= RustEdition::Edition2024 {
386+
if edition >= Edition2024 {
386387
Unsafety::Unsafe
387388
} else {
388389
Unsafety::Normal
@@ -1595,7 +1596,7 @@ impl<'c> Translation<'c> {
15951596
/// Called when translation makes use of a language feature that will require a feature-gate.
15961597
pub fn use_feature(&self, feature: &'static str) {
15971598
if matches!(feature, "asm" | "label_break_value" | "raw_ref_op")
1598-
&& self.tcfg.edition >= RustEdition::Edition2024
1599+
&& self.tcfg.edition >= Edition2024
15991600
{
16001601
return;
16011602
}

c2rust-transpile/src/translator/simd.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ impl<'c> Translation<'c> {
160160
.into());
161161
}
162162

163-
if self.tcfg.edition < RustEdition::Edition2024 {
163+
if self.tcfg.edition < Edition2024 {
164164
// Edition 2024 was release in Rust 1.85.
165165
// In Rust 1.78, `#![feature(stdsimd)]` was removed and split into individual features.
166166
// All of the x86_64 parts (that we use at least) were stabilized.

c2rust-transpile/tests/snapshots.rs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,11 @@ use std::process::Command;
77
use c2rust_rust_tools::rustc;
88
use c2rust_rust_tools::sanitize_file_name;
99
use c2rust_rust_tools::RustEdition;
10+
use c2rust_rust_tools::RustEdition::Edition2021;
11+
use c2rust_rust_tools::RustEdition::Edition2024;
1012
use c2rust_transpile::convert_type::RESERVED_NAMES;
11-
use c2rust_transpile::{ReplaceMode, TranspilerConfig};
13+
use c2rust_transpile::ReplaceMode;
14+
use c2rust_transpile::TranspilerConfig;
1215
use itertools::Itertools;
1316

1417
fn config(edition: RustEdition) -> TranspilerConfig {
@@ -258,13 +261,13 @@ impl<'a> TranspileTest<'a> {
258261
transpile_snapshot(
259262
&platform,
260263
&c_path,
261-
RustEdition::Edition2021,
264+
Edition2021,
262265
expect_compile_error_edition_2021,
263266
);
264267
transpile_snapshot(
265268
&platform,
266269
&c_path,
267-
RustEdition::Edition2024,
270+
Edition2024,
268271
expect_compile_error_edition_2024,
269272
);
270273
}

0 commit comments

Comments
 (0)