diff --git a/c2rust-transpile/src/translator/mod.rs b/c2rust-transpile/src/translator/mod.rs index 85dbb87264..044ae16deb 100644 --- a/c2rust-transpile/src/translator/mod.rs +++ b/c2rust-transpile/src/translator/mod.rs @@ -2619,6 +2619,7 @@ impl<'c> Translation<'c> { }; } + let mk_ = mk_.unsafety(extern_block_unsafety(self.tcfg.edition)); let function_decl = mk_.fn_foreign_item(decl); Ok(ConvertedDecl::ForeignItem(function_decl)) diff --git a/c2rust-transpile/tests/snapshots/snapshots__transpile@call_only_once.c.2024.linux.snap b/c2rust-transpile/tests/snapshots/snapshots__transpile@call_only_once.c.2024.linux.snap index f0a09be502..89030bb49e 100644 --- a/c2rust-transpile/tests/snapshots/snapshots__transpile@call_only_once.c.2024.linux.snap +++ b/c2rust-transpile/tests/snapshots/snapshots__transpile@call_only_once.c.2024.linux.snap @@ -12,7 +12,7 @@ expression: cat tests/snapshots/os-specific/call_only_once.2024.linux.rs )] #![deny(unsafe_op_in_unsafe_fn)] unsafe extern "C" { - fn __assert_fail( + unsafe fn __assert_fail( __assertion: *const ::core::ffi::c_char, __file: *const ::core::ffi::c_char, __line: ::core::ffi::c_uint, diff --git a/c2rust-transpile/tests/snapshots/snapshots__transpile@call_only_once.c.2024.macos.snap b/c2rust-transpile/tests/snapshots/snapshots__transpile@call_only_once.c.2024.macos.snap index c18e060d11..7a33347ba1 100644 --- a/c2rust-transpile/tests/snapshots/snapshots__transpile@call_only_once.c.2024.macos.snap +++ b/c2rust-transpile/tests/snapshots/snapshots__transpile@call_only_once.c.2024.macos.snap @@ -12,7 +12,7 @@ expression: cat tests/snapshots/os-specific/call_only_once.2024.macos.rs )] #![deny(unsafe_op_in_unsafe_fn)] unsafe extern "C" { - fn __assert_rtn( + unsafe fn __assert_rtn( _: *const ::core::ffi::c_char, _: *const ::core::ffi::c_char, _: ::core::ffi::c_int, diff --git a/c2rust-transpile/tests/snapshots/snapshots__transpile@exprs.c.2024.snap b/c2rust-transpile/tests/snapshots/snapshots__transpile@exprs.c.2024.snap index 11633ce8fa..d1972e74e4 100644 --- a/c2rust-transpile/tests/snapshots/snapshots__transpile@exprs.c.2024.snap +++ b/c2rust-transpile/tests/snapshots/snapshots__transpile@exprs.c.2024.snap @@ -12,7 +12,7 @@ expression: cat tests/snapshots/exprs.2024.rs )] #![deny(unsafe_op_in_unsafe_fn)] unsafe extern "C" { - fn puts(str: *const ::core::ffi::c_char) -> ::core::ffi::c_int; + unsafe fn puts(str: *const ::core::ffi::c_char) -> ::core::ffi::c_int; } pub type C2Rust_Unnamed = ::core::ffi::c_uint; pub const C: C2Rust_Unnamed = 2; diff --git a/c2rust-transpile/tests/snapshots/snapshots__transpile@macros.c.2024.linux.snap b/c2rust-transpile/tests/snapshots/snapshots__transpile@macros.c.2024.linux.snap index 5c034ce195..da1394686a 100644 --- a/c2rust-transpile/tests/snapshots/snapshots__transpile@macros.c.2024.linux.snap +++ b/c2rust-transpile/tests/snapshots/snapshots__transpile@macros.c.2024.linux.snap @@ -12,8 +12,8 @@ expression: cat tests/snapshots/os-specific/macros.2024.linux.rs )] #![deny(unsafe_op_in_unsafe_fn)] unsafe extern "C" { - fn __errno_location() -> *mut ::core::ffi::c_int; - fn memcpy( + unsafe fn __errno_location() -> *mut ::core::ffi::c_int; + unsafe fn memcpy( __dest: *mut ::core::ffi::c_void, __src: *const ::core::ffi::c_void, __n: size_t, diff --git a/c2rust-transpile/tests/snapshots/snapshots__transpile@macros.c.2024.macos.snap b/c2rust-transpile/tests/snapshots/snapshots__transpile@macros.c.2024.macos.snap index c0d82dee6f..804050ccb9 100644 --- a/c2rust-transpile/tests/snapshots/snapshots__transpile@macros.c.2024.macos.snap +++ b/c2rust-transpile/tests/snapshots/snapshots__transpile@macros.c.2024.macos.snap @@ -12,8 +12,8 @@ expression: cat tests/snapshots/os-specific/macros.2024.macos.rs )] #![deny(unsafe_op_in_unsafe_fn)] unsafe extern "C" { - fn __error() -> *mut ::core::ffi::c_int; - fn memcpy( + unsafe fn __error() -> *mut ::core::ffi::c_int; + unsafe fn memcpy( __dst: *mut ::core::ffi::c_void, __src: *const ::core::ffi::c_void, __n: size_t, diff --git a/c2rust-transpile/tests/snapshots/snapshots__transpile@macros.c.2024.snap b/c2rust-transpile/tests/snapshots/snapshots__transpile@macros.c.2024.snap index 9f63c8f666..a79d19245f 100644 --- a/c2rust-transpile/tests/snapshots/snapshots__transpile@macros.c.2024.snap +++ b/c2rust-transpile/tests/snapshots/snapshots__transpile@macros.c.2024.snap @@ -12,7 +12,7 @@ expression: cat tests/snapshots/macros.2024.rs )] #![deny(unsafe_op_in_unsafe_fn)] unsafe extern "C" { - fn extern_fn() -> ::core::ffi::c_int; + unsafe fn extern_fn() -> ::core::ffi::c_int; } pub type uintptr_t = usize; #[derive(Copy, Clone)] diff --git a/c2rust-transpile/tests/snapshots/snapshots__transpile@rnd.c.2024.linux.snap b/c2rust-transpile/tests/snapshots/snapshots__transpile@rnd.c.2024.linux.snap index 2b2fe37c57..4ddeb71f0a 100644 --- a/c2rust-transpile/tests/snapshots/snapshots__transpile@rnd.c.2024.linux.snap +++ b/c2rust-transpile/tests/snapshots/snapshots__transpile@rnd.c.2024.linux.snap @@ -12,7 +12,7 @@ expression: cat tests/snapshots/os-specific/rnd.2024.linux.rs )] #![deny(unsafe_op_in_unsafe_fn)] unsafe extern "C" { - fn abs(__x: ::core::ffi::c_int) -> ::core::ffi::c_int; + unsafe fn abs(__x: ::core::ffi::c_int) -> ::core::ffi::c_int; } pub type __int32_t = i32; pub type __uint32_t = u32; diff --git a/c2rust-transpile/tests/snapshots/snapshots__transpile@rnd.c.2024.macos.snap b/c2rust-transpile/tests/snapshots/snapshots__transpile@rnd.c.2024.macos.snap index 9f2edd4ad6..1b1c5d92a1 100644 --- a/c2rust-transpile/tests/snapshots/snapshots__transpile@rnd.c.2024.macos.snap +++ b/c2rust-transpile/tests/snapshots/snapshots__transpile@rnd.c.2024.macos.snap @@ -12,7 +12,7 @@ expression: cat tests/snapshots/os-specific/rnd.2024.macos.rs )] #![deny(unsafe_op_in_unsafe_fn)] unsafe extern "C" { - fn abs(_: ::core::ffi::c_int) -> ::core::ffi::c_int; + unsafe fn abs(_: ::core::ffi::c_int) -> ::core::ffi::c_int; } pub type int32_t = i32; pub type uint32_t = u32; diff --git a/c2rust-transpile/tests/snapshots/snapshots__transpile@varargs.c.2024.aarch64.macos.snap b/c2rust-transpile/tests/snapshots/snapshots__transpile@varargs.c.2024.aarch64.macos.snap index 48b48c146e..8fcacef2c5 100644 --- a/c2rust-transpile/tests/snapshots/snapshots__transpile@varargs.c.2024.aarch64.macos.snap +++ b/c2rust-transpile/tests/snapshots/snapshots__transpile@varargs.c.2024.aarch64.macos.snap @@ -12,7 +12,7 @@ expression: cat tests/snapshots/arch-os-specific/varargs.2024.aarch64.macos.rs )] #![deny(unsafe_op_in_unsafe_fn)] unsafe extern "C" { - fn printf(_: *const ::core::ffi::c_char, ...) -> ::core::ffi::c_int; + unsafe fn printf(_: *const ::core::ffi::c_char, ...) -> ::core::ffi::c_int; } #[unsafe(no_mangle)] pub unsafe extern "C" fn call_printf() { diff --git a/c2rust-transpile/tests/snapshots/snapshots__transpile@varargs.c.2024.x86_64.linux.snap b/c2rust-transpile/tests/snapshots/snapshots__transpile@varargs.c.2024.x86_64.linux.snap index 6ff5931618..ad1e8d1454 100644 --- a/c2rust-transpile/tests/snapshots/snapshots__transpile@varargs.c.2024.x86_64.linux.snap +++ b/c2rust-transpile/tests/snapshots/snapshots__transpile@varargs.c.2024.x86_64.linux.snap @@ -13,12 +13,12 @@ expression: cat tests/snapshots/arch-os-specific/varargs.2024.x86_64.linux.rs #![deny(unsafe_op_in_unsafe_fn)] #![feature(c_variadic)] unsafe extern "C" { - fn printf(__format: *const ::core::ffi::c_char, ...) -> ::core::ffi::c_int; - fn vprintf( + unsafe fn printf(__format: *const ::core::ffi::c_char, ...) -> ::core::ffi::c_int; + unsafe fn vprintf( __format: *const ::core::ffi::c_char, __arg: ::core::ffi::VaList, ) -> ::core::ffi::c_int; - fn putchar(__c: ::core::ffi::c_int) -> ::core::ffi::c_int; + unsafe fn putchar(__c: ::core::ffi::c_int) -> ::core::ffi::c_int; } pub type __builtin_va_list = [__va_list_tag; 1]; #[derive(Copy, Clone)] diff --git a/c2rust-transpile/tests/snapshots/snapshots__transpile@wide_strings.c.2024.linux.snap b/c2rust-transpile/tests/snapshots/snapshots__transpile@wide_strings.c.2024.linux.snap index 1ca7a0e849..1848e0e3c2 100644 --- a/c2rust-transpile/tests/snapshots/snapshots__transpile@wide_strings.c.2024.linux.snap +++ b/c2rust-transpile/tests/snapshots/snapshots__transpile@wide_strings.c.2024.linux.snap @@ -12,7 +12,7 @@ expression: cat tests/snapshots/os-specific/wide_strings.2024.linux.rs )] #![deny(unsafe_op_in_unsafe_fn)] unsafe extern "C" { - fn wcslen(__s: *const wchar_t) -> ::core::ffi::c_ulong; + unsafe fn wcslen(__s: *const wchar_t) -> ::core::ffi::c_ulong; } pub type size_t = usize; pub type wchar_t = ::libc::wchar_t; diff --git a/c2rust-transpile/tests/snapshots/snapshots__transpile@wide_strings.c.2024.macos.snap b/c2rust-transpile/tests/snapshots/snapshots__transpile@wide_strings.c.2024.macos.snap index 6a0731d676..cadc98bc9c 100644 --- a/c2rust-transpile/tests/snapshots/snapshots__transpile@wide_strings.c.2024.macos.snap +++ b/c2rust-transpile/tests/snapshots/snapshots__transpile@wide_strings.c.2024.macos.snap @@ -12,7 +12,7 @@ expression: cat tests/snapshots/os-specific/wide_strings.2024.macos.rs )] #![deny(unsafe_op_in_unsafe_fn)] unsafe extern "C" { - fn wcslen(_: *const wchar_t) -> ::core::ffi::c_ulong; + unsafe fn wcslen(_: *const wchar_t) -> ::core::ffi::c_ulong; } pub type __darwin_size_t = usize; pub type __darwin_wchar_t = ::libc::wchar_t; diff --git a/tests/unit/items/src/test_fn_attrs.rs b/tests/unit/items/src/test_fn_attrs.rs index 8cf5fd8d5d..4a77fee957 100644 --- a/tests/unit/items/src/test_fn_attrs.rs +++ b/tests/unit/items/src/test_fn_attrs.rs @@ -166,9 +166,8 @@ unsafe extern "C" fn rust_gnu_inline_non_canonical_definition_extern r#" unsafe extern "C" {{ #[link_name = "inline_extern"] - {}fn aliased_fn(); -"#, - public + {public}unsafe fn aliased_fn(); +"# ) }; assert!(