mirror of
https://github.com/rust-lang/rust.git
synced 2026-05-28 20:16:58 +03:00
Auto merge of #133634 - matthiaskrgr:rollup-v7m4j2k, r=matthiaskrgr
Rollup of 7 pull requests Successful merges: - #131323 (Support `clobber_abi` in AVR inline assembly) - #131718 ([rustdoc] Change impl items indent) - #133565 (chore: fix 404 status URL) - #133575 (Fix typo in RELEASES.md) - #133577 (Document s390x machine access via community cloud) - #133584 (Update more 2024 tests to remove -Zunstable-options) - #133592 (Misc: better instructions for envrc, ignore `/build` instead of `build/`) r? `@ghost` `@rustbot` modify labels: rollup
This commit is contained in:
+1
-2
@@ -46,8 +46,7 @@ no_llvm_build
|
||||
/inst/
|
||||
/llvm/
|
||||
/mingw-build/
|
||||
build/
|
||||
!/compiler/rustc_mir_build/src/build/
|
||||
/build
|
||||
/build-rust-analyzer/
|
||||
/dist/
|
||||
/unicode-downloads
|
||||
|
||||
+1
-1
@@ -43,7 +43,7 @@ Libraries
|
||||
- [Document that `catch_unwind` can deal with foreign exceptions without UB, although the exact behavior is unspecified.](https://github.com/rust-lang/rust/pull/128321)
|
||||
- [Implement `Default` for `HashMap`/`HashSet` iterators that don't already have it.](https://github.com/rust-lang/rust/pull/128711)
|
||||
- [Bump Unicode to version 16.0.0.](https://github.com/rust-lang/rust/pull/130183)
|
||||
- [Change documentation of `ptr::add`/`sub` to not claim equivalence with `offset`.](https://github.com/rust-lang/rust/pull/130229).
|
||||
- [Change documentation of `ptr::add`/`sub` to not claim equivalence with `offset`.](https://github.com/rust-lang/rust/pull/130229)
|
||||
|
||||
|
||||
<a id="1.83.0-Stabilized-APIs"></a>
|
||||
|
||||
@@ -231,7 +231,7 @@ pub(crate) fn as_rvalue(
|
||||
if range.start <= range.end { BinOp::BitAnd } else { BinOp::BitOr };
|
||||
|
||||
let mut comparer = |range: u128, bin_op: BinOp| -> Place<'tcx> {
|
||||
// We can use `ty::TypingEnv::fully_monomorphized()`` here
|
||||
// We can use `ty::TypingEnv::fully_monomorphized()` here
|
||||
// as we only need it to compute the layout of a primitive.
|
||||
let range_val = Const::from_bits(
|
||||
this.tcx,
|
||||
|
||||
@@ -105,7 +105,12 @@ pub fn supported_types(
|
||||
#error = ["SP", "SPL", "SPH"] =>
|
||||
"the stack pointer cannot be used as an operand for inline asm",
|
||||
#error = ["r0", "r1", "r1r0"] =>
|
||||
"r0 and r1 are not available due to an issue in LLVM",
|
||||
"LLVM reserves r0 (scratch register) and r1 (zero register)",
|
||||
// If this changes within LLVM, the compiler might use the registers
|
||||
// in the future. This must be reflected in the set of clobbered
|
||||
// registers, else the clobber ABI implementation is *unsound*, as
|
||||
// this generates invalid code (register is not marked as clobbered
|
||||
// but may change the register content).
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -928,6 +928,7 @@ pub enum InlineAsmClobberAbi {
|
||||
AArch64,
|
||||
AArch64NoX18,
|
||||
Arm64EC,
|
||||
Avr,
|
||||
RiscV,
|
||||
RiscVE,
|
||||
LoongArch,
|
||||
@@ -986,6 +987,10 @@ pub fn parse(
|
||||
}),
|
||||
_ => Err(&["C", "system", "efiapi"]),
|
||||
},
|
||||
InlineAsmArch::Avr => match name {
|
||||
"C" | "system" => Ok(InlineAsmClobberAbi::Avr),
|
||||
_ => Err(&["C", "system"]),
|
||||
},
|
||||
InlineAsmArch::LoongArch64 => match name {
|
||||
"C" | "system" => Ok(InlineAsmClobberAbi::LoongArch),
|
||||
_ => Err(&["C", "system"]),
|
||||
@@ -1133,6 +1138,23 @@ macro_rules! clobbered_regs {
|
||||
d24, d25, d26, d27, d28, d29, d30, d31,
|
||||
}
|
||||
},
|
||||
InlineAsmClobberAbi::Avr => clobbered_regs! {
|
||||
Avr AvrInlineAsmReg {
|
||||
// The list of "Call-Used Registers" according to
|
||||
// https://gcc.gnu.org/wiki/avr-gcc#Call-Used_Registers
|
||||
|
||||
// Clobbered registers available in inline assembly
|
||||
r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r30, r31,
|
||||
// As per the AVR-GCC-ABI documentation linked above, the R0
|
||||
// register is a clobbered register as well. Since we don't
|
||||
// allow the usage of R0 in inline assembly, nothing has to
|
||||
// be done here.
|
||||
// Likewise, the T-flag in the SREG should be clobbered, but
|
||||
// this is not necessary to be listed here, since the SREG
|
||||
// is considered clobbered anyways unless `preserve_flags`
|
||||
// is used.
|
||||
}
|
||||
},
|
||||
InlineAsmClobberAbi::RiscV => clobbered_regs! {
|
||||
RiscV RiscVInlineAsmReg {
|
||||
// ra
|
||||
|
||||
@@ -16,7 +16,7 @@ BE8 architecture is the default big-endian architecture for Arm since [Armv6](ht
|
||||
The target is cross-compiled. This target supports `std` in the normal way (indeed only nominal changes are required from the standard Arm configuration).
|
||||
|
||||
## Target definition
|
||||
The target definition can be seen [here](https://github.com/rust-lang/rust/tree/master/compiler/rustc_target/src/spec/armeb_unknown_linux_gnueabi.rs). In particular, it should be noted that the `features` specify that this target is built for the Armv8 core. Though this can likely be modified as required.
|
||||
The target definition can be seen [here](https://github.com/rust-lang/rust/blob/master/compiler/rustc_target/src/spec/targets/armeb_unknown_linux_gnueabi.rs). In particular, it should be noted that the `features` specify that this target is built for the Armv8 core. Though this can likely be modified as required.
|
||||
|
||||
## Building the target
|
||||
Because it is Tier 3, rust does not yet ship pre-compiled artifacts for this target.
|
||||
|
||||
@@ -64,6 +64,22 @@ There are no special requirements for testing and running the target.
|
||||
For testing cross builds on the host, please refer to the "Cross-compilation
|
||||
toolchains and C code" section below.
|
||||
|
||||
If you want to do native testing but do not have your own s390x
|
||||
machine, there are several options how to get access to one:
|
||||
|
||||
* The [IBM LinuxONE Community Cloud][cloud-community] provides a
|
||||
self-service portal where you can create s390x virtual machine
|
||||
instances. These are intended for temporary use (limited to 120 days).
|
||||
|
||||
* The [IBM LinuxONE Open Source Cloud][cloud-opensource] provides
|
||||
permanent access to s390x machines. This requires approval by IBM,
|
||||
which will normally be granted if you're planning to use the machine
|
||||
to work on an open-source project that is relevant to the IBM Z
|
||||
ecosystem - the Rust compiler would certainly qualify.
|
||||
|
||||
[cloud-community]: https://linuxone.cloud.marist.edu/
|
||||
[cloud-opensource]: https://community.ibm.com/zsystems/form/l1cc-oss-vm-request/
|
||||
|
||||
## Cross-compilation toolchains and C code
|
||||
|
||||
Rust code built using the target is compatible with C code compiled with
|
||||
|
||||
@@ -36,6 +36,8 @@ xmlns="http://www.w3.org/2000/svg" fill="black" height="18px">\
|
||||
--button-border-radius: 2px;
|
||||
--toolbar-button-border-radius: 6px;
|
||||
--code-block-border-radius: 6px;
|
||||
--impl-items-indent: 0.3em;
|
||||
--docblock-indent: 24px;
|
||||
}
|
||||
|
||||
/* See FiraSans-LICENSE.txt for the Fira Sans license. */
|
||||
@@ -909,7 +911,7 @@ both the code example and the line numbers, so we need to remove the radius in t
|
||||
.docblock h6 { font-size: 0.875rem; }
|
||||
|
||||
.docblock {
|
||||
margin-left: 24px;
|
||||
margin-left: var(--docblock-indent);
|
||||
position: relative;
|
||||
}
|
||||
|
||||
@@ -982,7 +984,11 @@ div.where {
|
||||
|
||||
.item-info {
|
||||
display: block;
|
||||
margin-left: 24px;
|
||||
margin-left: var(--docblock-indent);
|
||||
}
|
||||
.impl-items > .item-info {
|
||||
/* Margin of docblocks + margin of impl block items. */
|
||||
margin-left: calc(var(--docblock-indent) + var(--impl-items-indent));
|
||||
}
|
||||
|
||||
.item-info code {
|
||||
@@ -2166,6 +2172,15 @@ details.toggle > summary:not(.hideme)::before {
|
||||
left: -24px;
|
||||
}
|
||||
|
||||
/* We indent items of an impl block to have a visual marker that these items are part
|
||||
of this impl block. */
|
||||
.impl-items > *:not(.item-info),
|
||||
/* We also indent the first top doc comment the same to still keep an indent on the
|
||||
doc block while aligning it with the impl block items. */
|
||||
.implementors-toggle > .docblock {
|
||||
margin-left: var(--impl-items-indent);
|
||||
}
|
||||
|
||||
details.big-toggle > summary:not(.hideme)::before {
|
||||
left: -34px;
|
||||
top: 9px;
|
||||
@@ -2255,6 +2270,10 @@ If you update this line, then you also need to update the line with the same war
|
||||
in src-script.js and main.js
|
||||
*/
|
||||
@media (max-width: 700px) {
|
||||
:root {
|
||||
--impl-items-indent: 0.7em;
|
||||
}
|
||||
|
||||
/* When linking to an item with an `id` (for instance, by clicking a link in the sidebar,
|
||||
or visiting a URL with a fragment like `#method.new`, we don't want the item to be obscured
|
||||
by the topbar. Anything with an `id` gets scroll-margin-top equal to .mobile-topbar's size.
|
||||
@@ -2454,19 +2473,20 @@ in src-script.js and main.js
|
||||
padding-top: 0;
|
||||
}
|
||||
|
||||
/* Position of the "[-]" element. */
|
||||
details.toggle:not(.top-doc) > summary, .impl-items > section {
|
||||
details.implementors-toggle:not(.top-doc) > summary {
|
||||
margin-left: 10px;
|
||||
}
|
||||
.impl-items > details.toggle > summary:not(.hideme)::before,
|
||||
#main-content > details.toggle:not(.top-doc) > summary::before,
|
||||
#main-content > div > details.toggle > summary::before {
|
||||
left: -11px;
|
||||
|
||||
.impl-items > details.toggle > summary:not(.hideme)::before {
|
||||
left: -20px;
|
||||
}
|
||||
|
||||
/* Align summary-nested and unnested item-info gizmos. */
|
||||
summary > .item-info {
|
||||
margin-left: 10px;
|
||||
}
|
||||
.impl-items > .item-info {
|
||||
margin-left: 34px;
|
||||
margin-left: calc(var(--impl-items-indent) + 10px);
|
||||
}
|
||||
|
||||
.src nav.sub {
|
||||
@@ -2500,24 +2520,24 @@ in src-script.js and main.js
|
||||
}
|
||||
|
||||
@media print {
|
||||
:root {
|
||||
--docblock-indent: 0;
|
||||
}
|
||||
|
||||
nav.sidebar, nav.sub, .out-of-band, a.src, #copy-path,
|
||||
details.toggle[open] > summary::before, details.toggle > summary::before,
|
||||
details.toggle.top-doc > summary {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.docblock {
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
main {
|
||||
padding: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 464px) {
|
||||
.docblock {
|
||||
margin-left: 12px;
|
||||
:root {
|
||||
--docblock-indent: 12px;
|
||||
}
|
||||
|
||||
.docblock code {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# If you want to use this as an .envrc file to create a shell with necessery components
|
||||
# to develop rustc, use the following command in the root of the rusr checkout:
|
||||
#
|
||||
# ln -s ./src/tools/nix-dev-shell/envrc-flake ./.envrc && echo .envrc >> .git/info/exclude
|
||||
# ln -s ./src/tools/nix-dev-shell/envrc-flake ./.envrc && nix flake update --flake ./src/tools/nix-dev-shell && echo .envrc >> .git/info/exclude
|
||||
|
||||
if nix flake show path:./src/tools/nix-dev-shell &> /dev/null; then
|
||||
use flake path:./src/tools/nix-dev-shell
|
||||
|
||||
@@ -0,0 +1,43 @@
|
||||
//@ assembly-output: emit-asm
|
||||
//@ compile-flags: --target avr-unknown-gnu-atmega328
|
||||
//@ needs-llvm-components: avr
|
||||
|
||||
#![crate_type = "rlib"]
|
||||
#![feature(no_core, rustc_attrs, lang_items, asm_experimental_arch)]
|
||||
#![no_core]
|
||||
|
||||
#[lang = "sized"]
|
||||
trait Sized {}
|
||||
|
||||
#[rustc_builtin_macro]
|
||||
macro_rules! asm {
|
||||
() => {};
|
||||
}
|
||||
|
||||
// CHECK-LABEL: @sreg_is_clobbered
|
||||
// CHECK: void asm sideeffect "", "~{sreg}"()
|
||||
#[no_mangle]
|
||||
pub unsafe fn sreg_is_clobbered() {
|
||||
asm!("", options(nostack, nomem));
|
||||
}
|
||||
|
||||
// CHECK-LABEL: @sreg_is_not_clobbered_if_preserve_flags_is_used
|
||||
// CHECK: void asm sideeffect "", ""()
|
||||
#[no_mangle]
|
||||
pub unsafe fn sreg_is_not_clobbered_if_preserve_flags_is_used() {
|
||||
asm!("", options(nostack, nomem, preserves_flags));
|
||||
}
|
||||
|
||||
// CHECK-LABEL: @clobber_abi
|
||||
// CHECK: asm sideeffect "", "={r18},={r19},={r20},={r21},={r22},={r23},={r24},={r25},={r26},={r27},={r30},={r31},~{sreg}"()
|
||||
#[no_mangle]
|
||||
pub unsafe fn clobber_abi() {
|
||||
asm!("", clobber_abi("C"), options(nostack, nomem));
|
||||
}
|
||||
|
||||
// CHECK-LABEL: @clobber_abi_with_preserved_flags
|
||||
// CHECK: asm sideeffect "", "={r18},={r19},={r20},={r21},={r22},={r23},={r24},={r25},={r26},={r27},={r30},={r31}"()
|
||||
#[no_mangle]
|
||||
pub unsafe fn clobber_abi_with_preserved_flags() {
|
||||
asm!("", clobber_abi("C"), options(nostack, nomem, preserves_flags));
|
||||
}
|
||||
@@ -20,8 +20,12 @@ assert-css: (".big-toggle summary::before", {
|
||||
"left": "-11px",
|
||||
"top": "9px",
|
||||
})
|
||||
// It should have the same X position as the other toggles.
|
||||
compare-elements-position: (".big-toggle summary::before", ".method-toggle summary::before", ["x"])
|
||||
// It should have a slightly different X position as the other toggles.
|
||||
store-position: (".big-toggle summary::before", {"x": big_toggle})
|
||||
store-position: (".method-toggle summary::before", {"x": small_toggle})
|
||||
assert: |big_toggle| < |small_toggle|
|
||||
// Margin is 0.5em so around 8 px.
|
||||
assert: |small_toggle| - |big_toggle| < 10
|
||||
// But still shouldn't have the same Y position.
|
||||
compare-elements-position-false: (
|
||||
".big-toggle summary::before",
|
||||
|
||||
@@ -16,6 +16,6 @@ compare-elements-property: (
|
||||
"#implementations-list > details .docblock > p",
|
||||
["scrollWidth"],
|
||||
)
|
||||
assert-property: ("#implementations-list > details .docblock", {"scrollWidth": "816"})
|
||||
assert-property: ("#implementations-list > details .docblock", {"scrollWidth": "835"})
|
||||
// However, since there is overflow in the <table>, its scroll width is bigger.
|
||||
assert-property: ("#implementations-list > details .docblock table", {"scrollWidth": "1572"})
|
||||
|
||||
@@ -4,7 +4,9 @@ go-to: "file://" + |DOC_PATH| + "/lib2/struct.ItemInfoAlignmentTest.html"
|
||||
|
||||
// First, we try it in "desktop" mode.
|
||||
set-window-size: (1200, 870)
|
||||
wait-for-size: ("body", {"width": 1200})
|
||||
compare-elements-position: (".impl-items > .item-info", "summary > .item-info", ["x"])
|
||||
// Next, we try it in "mobile" mode (max-width: 700px).
|
||||
set-window-size: (650, 650)
|
||||
wait-for-size: ("body", {"width": 650})
|
||||
compare-elements-position: (".impl-items > .item-info", "summary > .item-info", ["x"])
|
||||
|
||||
@@ -19,7 +19,7 @@ store-position: (
|
||||
"//*[@class='stab portability']//code[normalize-space()='Win32_System_Diagnostics']",
|
||||
{"x": second_line_x, "y": second_line_y},
|
||||
)
|
||||
assert: |first_line_x| != |second_line_x| && |first_line_x| == 516 && |second_line_x| == 272
|
||||
assert: |first_line_x| != |second_line_x| && |first_line_x| == 521 && |second_line_x| == 277
|
||||
assert: |first_line_y| != |second_line_y| && |first_line_y| == 718 && |second_line_y| == 741
|
||||
|
||||
// Now we ensure that they're not rendered on the same line.
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
// This test is to ensure that methods are correctly aligned on the left side.
|
||||
|
||||
go-to: "file://" + |DOC_PATH| + "/test_docs/struct.Foo.html"
|
||||
|
||||
// First we ensure that we have methods with and without documentation.
|
||||
assert: ".impl-items > details.method-toggle > summary > section.method"
|
||||
assert: ".impl-items > section.method"
|
||||
|
||||
@@ -62,9 +62,9 @@ define-function: (
|
||||
// We start with a wide screen.
|
||||
set-window-size: (1100, 600)
|
||||
call-function: ("check-notable-tooltip-position-complete", {
|
||||
"x": 677,
|
||||
"i_x": 955,
|
||||
"popover_x": 463,
|
||||
"x": 682,
|
||||
"i_x": 960,
|
||||
"popover_x": 468,
|
||||
})
|
||||
|
||||
// Now only the `i` should be on the next line.
|
||||
@@ -78,16 +78,16 @@ compare-elements-position-false: (
|
||||
// Now both the `i` and the struct name should be on the next line.
|
||||
set-window-size: (980, 600)
|
||||
call-function: ("check-notable-tooltip-position", {
|
||||
"x": 245,
|
||||
"i_x": 523,
|
||||
"x": 250,
|
||||
"i_x": 528,
|
||||
})
|
||||
|
||||
// Checking on mobile now.
|
||||
set-window-size: (650, 600)
|
||||
wait-for-size: ("body", {"width": 650})
|
||||
call-function: ("check-notable-tooltip-position-complete", {
|
||||
"x": 25,
|
||||
"i_x": 303,
|
||||
"x": 26,
|
||||
"i_x": 305,
|
||||
"popover_x": 0,
|
||||
})
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@ assert-position: ("#implementations-list > details > summary::before", {"x": 4})
|
||||
// Assert the position of the toggle on a method.
|
||||
assert-position: (
|
||||
"#trait-implementations-list .impl-items .method-toggle > summary::before",
|
||||
{"x": 4},
|
||||
{"x": 6},
|
||||
)
|
||||
|
||||
// Now we do the same but with a little bigger width
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
//@ edition:2024
|
||||
//@ compile-flags:--test --test-args=--test-threads=1 -Z unstable-options
|
||||
//@ compile-flags:--test --test-args=--test-threads=1
|
||||
//@ normalize-stdout-test: "tests/rustdoc-ui/doctest" -> "$$DIR"
|
||||
//@ normalize-stdout-test: "finished in \d+\.\d+s" -> "finished in $$TIME"
|
||||
//@ failure-status: 101
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
//@[edition2015]compile-flags:--test --test-args=--test-threads=1
|
||||
//@[edition2024]edition:2015
|
||||
//@[edition2024]aux-build:extern_macros.rs
|
||||
//@[edition2024]compile-flags:--test --test-args=--test-threads=1 -Z unstable-options
|
||||
//@[edition2024]compile-flags:--test --test-args=--test-threads=1
|
||||
//@ normalize-stdout-test: "tests/rustdoc-ui/doctest" -> "$$DIR"
|
||||
//@ normalize-stdout-test: "finished in \d+\.\d+s" -> "finished in $$TIME"
|
||||
//@ check-pass
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
//@[edition2015]compile-flags:--test --test-args=--test-threads=1
|
||||
//@[edition2024]edition:2024
|
||||
//@[edition2024]check-pass
|
||||
//@[edition2024]compile-flags:--test --test-args=--test-threads=1 -Z unstable-options
|
||||
//@[edition2024]compile-flags:--test --test-args=--test-threads=1
|
||||
//@ normalize-stdout-test: "tests/rustdoc-ui/doctest" -> "$$DIR"
|
||||
//@ normalize-stdout-test: "finished in \d+\.\d+s" -> "finished in $$TIME"
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
//@ compile-flags: --edition 2024 -Zunstable-options
|
||||
//@ compile-flags: --edition 2024
|
||||
//@ check-pass
|
||||
|
||||
#![feature(async_iterator, gen_blocks)]
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
//@ compile-flags: --edition 2024 -Zunstable-options
|
||||
//@ compile-flags: --edition 2024
|
||||
//@ check-pass
|
||||
|
||||
#![feature(async_iterator, gen_blocks, noop_waker)]
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
//@ compile-flags: -Z validate-mir
|
||||
//@ revisions: edition2021 edition2024
|
||||
//@ [edition2021] edition: 2021
|
||||
//@ [edition2024] compile-flags: -Z unstable-options
|
||||
//@ [edition2024] edition: 2024
|
||||
|
||||
#![feature(let_chains)]
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
error: `if let` assigns a shorter lifetime since Edition 2024
|
||||
--> $DIR/lint-if-let-rescope-gated.rs:27:8
|
||||
--> $DIR/lint-if-let-rescope-gated.rs:26:8
|
||||
|
|
||||
LL | if let Some(_value) = Droppy.get() {
|
||||
| ^^^^^^^^^^^^^^^^^^^------^^^^^^
|
||||
@@ -9,12 +9,12 @@ LL | if let Some(_value) = Droppy.get() {
|
||||
= warning: this changes meaning in Rust 2024
|
||||
= note: for more information, see issue #124085 <https://github.com/rust-lang/rust/issues/124085>
|
||||
help: the value is now dropped here in Edition 2024
|
||||
--> $DIR/lint-if-let-rescope-gated.rs:31:5
|
||||
--> $DIR/lint-if-let-rescope-gated.rs:30:5
|
||||
|
|
||||
LL | } else {
|
||||
| ^
|
||||
note: the lint level is defined here
|
||||
--> $DIR/lint-if-let-rescope-gated.rs:11:9
|
||||
--> $DIR/lint-if-let-rescope-gated.rs:10:9
|
||||
|
|
||||
LL | #![deny(if_let_rescope)]
|
||||
| ^^^^^^^^^^^^^^
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
//@ revisions: edition2021 edition2024
|
||||
//@ [edition2021] edition: 2021
|
||||
//@ [edition2024] edition: 2024
|
||||
//@ [edition2024] compile-flags: -Zunstable-options
|
||||
//@ [edition2024] check-pass
|
||||
|
||||
#![deny(if_let_rescope)]
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
error[E0716]: temporary value dropped while borrowed
|
||||
--> $DIR/tail-expr-drop-order-negative.rs:9:15
|
||||
--> $DIR/tail-expr-drop-order-negative.rs:8:15
|
||||
|
|
||||
LL | x.replace(std::cell::RefCell::new(123).borrow()).is_some()
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - temporary value is freed at the end of this statement
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
//@ revisions: edition2021 edition2024
|
||||
//@ [edition2024] compile-flags: -Zunstable-options
|
||||
//@ [edition2024] edition: 2024
|
||||
//@ [edition2021] check-pass
|
||||
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
//
|
||||
//@[e2021] edition: 2021
|
||||
//@[e2024] edition: 2024
|
||||
//@[e2024] compile-flags: -Zunstable-options
|
||||
//
|
||||
//@[e2021] run-pass
|
||||
//@[e2021] run-rustfix
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
warning: this function depends on never type fallback being `()`
|
||||
--> $DIR/never-type-fallback-breaking.rs:17:1
|
||||
--> $DIR/never-type-fallback-breaking.rs:16:1
|
||||
|
|
||||
LL | fn m() {
|
||||
| ^^^^^^
|
||||
@@ -8,7 +8,7 @@ LL | fn m() {
|
||||
= note: for more information, see issue #123748 <https://github.com/rust-lang/rust/issues/123748>
|
||||
= help: specify the types explicitly
|
||||
note: in edition 2024, the requirement `!: Default` will fail
|
||||
--> $DIR/never-type-fallback-breaking.rs:21:17
|
||||
--> $DIR/never-type-fallback-breaking.rs:20:17
|
||||
|
|
||||
LL | true => Default::default(),
|
||||
| ^^^^^^^^^^^^^^^^^^
|
||||
@@ -19,7 +19,7 @@ LL | let x: () = match true {
|
||||
| ++++
|
||||
|
||||
warning: this function depends on never type fallback being `()`
|
||||
--> $DIR/never-type-fallback-breaking.rs:29:1
|
||||
--> $DIR/never-type-fallback-breaking.rs:28:1
|
||||
|
|
||||
LL | fn q() -> Option<()> {
|
||||
| ^^^^^^^^^^^^^^^^^^^^
|
||||
@@ -28,7 +28,7 @@ LL | fn q() -> Option<()> {
|
||||
= note: for more information, see issue #123748 <https://github.com/rust-lang/rust/issues/123748>
|
||||
= help: specify the types explicitly
|
||||
note: in edition 2024, the requirement `!: Default` will fail
|
||||
--> $DIR/never-type-fallback-breaking.rs:36:5
|
||||
--> $DIR/never-type-fallback-breaking.rs:35:5
|
||||
|
|
||||
LL | deserialize()?;
|
||||
| ^^^^^^^^^^^^^
|
||||
@@ -38,7 +38,7 @@ LL | deserialize::<()>()?;
|
||||
| ++++++
|
||||
|
||||
warning: this function depends on never type fallback being `()`
|
||||
--> $DIR/never-type-fallback-breaking.rs:46:1
|
||||
--> $DIR/never-type-fallback-breaking.rs:45:1
|
||||
|
|
||||
LL | fn meow() -> Result<(), ()> {
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
@@ -47,7 +47,7 @@ LL | fn meow() -> Result<(), ()> {
|
||||
= note: for more information, see issue #123748 <https://github.com/rust-lang/rust/issues/123748>
|
||||
= help: specify the types explicitly
|
||||
note: in edition 2024, the requirement `(): From<!>` will fail
|
||||
--> $DIR/never-type-fallback-breaking.rs:49:5
|
||||
--> $DIR/never-type-fallback-breaking.rs:48:5
|
||||
|
|
||||
LL | help(1)?;
|
||||
| ^^^^^^^
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
error[E0277]: the trait bound `!: Default` is not satisfied
|
||||
--> $DIR/never-type-fallback-breaking.rs:21:17
|
||||
--> $DIR/never-type-fallback-breaking.rs:20:17
|
||||
|
|
||||
LL | true => Default::default(),
|
||||
| ^^^^^^^^^^^^^^^^^^ the trait `Default` is not implemented for `!`
|
||||
@@ -8,7 +8,7 @@ LL | true => Default::default(),
|
||||
= help: did you intend to use the type `()` here instead?
|
||||
|
||||
error[E0277]: the trait bound `!: Default` is not satisfied
|
||||
--> $DIR/never-type-fallback-breaking.rs:36:5
|
||||
--> $DIR/never-type-fallback-breaking.rs:35:5
|
||||
|
|
||||
LL | deserialize()?;
|
||||
| ^^^^^^^^^^^^^ the trait `Default` is not implemented for `!`
|
||||
@@ -16,13 +16,13 @@ LL | deserialize()?;
|
||||
= note: this error might have been caused by changes to Rust's type-inference algorithm (see issue #48950 <https://github.com/rust-lang/rust/issues/48950> for more information)
|
||||
= help: did you intend to use the type `()` here instead?
|
||||
note: required by a bound in `deserialize`
|
||||
--> $DIR/never-type-fallback-breaking.rs:32:23
|
||||
--> $DIR/never-type-fallback-breaking.rs:31:23
|
||||
|
|
||||
LL | fn deserialize<T: Default>() -> Option<T> {
|
||||
| ^^^^^^^ required by this bound in `deserialize`
|
||||
|
||||
error[E0277]: the trait bound `(): From<!>` is not satisfied
|
||||
--> $DIR/never-type-fallback-breaking.rs:49:5
|
||||
--> $DIR/never-type-fallback-breaking.rs:48:5
|
||||
|
|
||||
LL | help(1)?;
|
||||
| ^^^^^^^ the trait `From<!>` is not implemented for `()`
|
||||
@@ -39,7 +39,7 @@ LL | help(1)?;
|
||||
and 4 others
|
||||
= note: required for `!` to implement `Into<()>`
|
||||
note: required by a bound in `help`
|
||||
--> $DIR/never-type-fallback-breaking.rs:43:20
|
||||
--> $DIR/never-type-fallback-breaking.rs:42:20
|
||||
|
|
||||
LL | fn help<'a: 'a, T: Into<()>, U>(_: U) -> Result<T, ()> {
|
||||
| ^^^^^^^^ required by this bound in `help`
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
//
|
||||
//@[e2021] edition: 2021
|
||||
//@[e2024] edition: 2024
|
||||
//@[e2024] compile-flags: -Zunstable-options
|
||||
//
|
||||
//@[e2021] run-pass
|
||||
//@[e2021] run-rustfix
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
//
|
||||
//@[e2021] edition: 2021
|
||||
//@[e2024] edition: 2024
|
||||
//@[e2024] compile-flags: -Zunstable-options
|
||||
//
|
||||
//@ run-pass
|
||||
//@ check-run-results
|
||||
|
||||
@@ -5,8 +5,6 @@
|
||||
//@[e2021] edition:2021
|
||||
//@[e2024] edition:2024
|
||||
|
||||
//@[e2024] compile-flags: -Zunstable-options
|
||||
|
||||
fn main() {
|
||||
println!("hello");
|
||||
}
|
||||
|
||||
@@ -1,23 +1,23 @@
|
||||
error: ['a: *, 'a: o]
|
||||
--> $DIR/variance.rs:14:36
|
||||
--> $DIR/variance.rs:13:36
|
||||
|
|
||||
LL | fn not_captured_early<'a: 'a>() -> impl Sized {}
|
||||
| ^^^^^^^^^^
|
||||
|
||||
error: ['a: *, 'a: o]
|
||||
--> $DIR/variance.rs:19:32
|
||||
--> $DIR/variance.rs:18:32
|
||||
|
|
||||
LL | fn captured_early<'a: 'a>() -> impl Sized + Captures<'a> {}
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: ['a: o]
|
||||
--> $DIR/variance.rs:21:40
|
||||
--> $DIR/variance.rs:20:40
|
||||
|
|
||||
LL | fn not_captured_late<'a>(_: &'a ()) -> impl Sized {}
|
||||
| ^^^^^^^^^^
|
||||
|
||||
error: ['a: o]
|
||||
--> $DIR/variance.rs:26:36
|
||||
--> $DIR/variance.rs:25:36
|
||||
|
|
||||
LL | fn captured_late<'a>(_: &'a ()) -> impl Sized + Captures<'a> {}
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
@@ -1,23 +1,23 @@
|
||||
error: ['a: *, 'a: o]
|
||||
--> $DIR/variance.rs:14:36
|
||||
--> $DIR/variance.rs:13:36
|
||||
|
|
||||
LL | fn not_captured_early<'a: 'a>() -> impl Sized {}
|
||||
| ^^^^^^^^^^
|
||||
|
||||
error: ['a: *, 'a: o]
|
||||
--> $DIR/variance.rs:19:32
|
||||
--> $DIR/variance.rs:18:32
|
||||
|
|
||||
LL | fn captured_early<'a: 'a>() -> impl Sized + Captures<'a> {}
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: ['a: o]
|
||||
--> $DIR/variance.rs:21:40
|
||||
--> $DIR/variance.rs:20:40
|
||||
|
|
||||
LL | fn not_captured_late<'a>(_: &'a ()) -> impl Sized {}
|
||||
| ^^^^^^^^^^
|
||||
|
||||
error: ['a: o]
|
||||
--> $DIR/variance.rs:26:36
|
||||
--> $DIR/variance.rs:25:36
|
||||
|
|
||||
LL | fn captured_late<'a>(_: &'a ()) -> impl Sized + Captures<'a> {}
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
@@ -1,23 +1,23 @@
|
||||
error: ['a: *]
|
||||
--> $DIR/variance.rs:14:36
|
||||
--> $DIR/variance.rs:13:36
|
||||
|
|
||||
LL | fn not_captured_early<'a: 'a>() -> impl Sized {}
|
||||
| ^^^^^^^^^^
|
||||
|
||||
error: ['a: *, 'a: o]
|
||||
--> $DIR/variance.rs:19:32
|
||||
--> $DIR/variance.rs:18:32
|
||||
|
|
||||
LL | fn captured_early<'a: 'a>() -> impl Sized + Captures<'a> {}
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: []
|
||||
--> $DIR/variance.rs:21:40
|
||||
--> $DIR/variance.rs:20:40
|
||||
|
|
||||
LL | fn not_captured_late<'a>(_: &'a ()) -> impl Sized {}
|
||||
| ^^^^^^^^^^
|
||||
|
||||
error: ['a: o]
|
||||
--> $DIR/variance.rs:26:36
|
||||
--> $DIR/variance.rs:25:36
|
||||
|
|
||||
LL | fn captured_late<'a>(_: &'a ()) -> impl Sized + Captures<'a> {}
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
//@ revisions: old new e2024
|
||||
//@[e2024] edition: 2024
|
||||
//@[e2024] compile-flags: -Z unstable-options
|
||||
|
||||
#![cfg_attr(new, feature(lifetime_capture_rules_2024))]
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
error: lifetimes cannot use keyword names
|
||||
--> $DIR/gen-lt.rs:11:11
|
||||
--> $DIR/gen-lt.rs:10:11
|
||||
|
|
||||
LL | fn gen_lt<'gen>() {}
|
||||
| ^^^^
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
|
||||
//@[e2021] edition:2021
|
||||
//@[e2024] edition:2024
|
||||
//@[e2024] compile-flags: -Zunstable-options
|
||||
|
||||
//@[e2021] check-pass
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
error[E0597]: `cell` does not live long enough
|
||||
--> $DIR/refcell-in-tail-expr.rs:10:27
|
||||
--> $DIR/refcell-in-tail-expr.rs:9:27
|
||||
|
|
||||
LL | let cell = std::cell::RefCell::new(0u8);
|
||||
| ---- binding `cell` declared here
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
//@ revisions: edition2021 edition2024
|
||||
//@ [edition2021] edition: 2021
|
||||
//@ [edition2024] edition: 2024
|
||||
//@ [edition2024] compile-flags: -Zunstable-options
|
||||
//@ [edition2024] check-pass
|
||||
|
||||
fn main() {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
error[E0597]: `c` does not live long enough
|
||||
--> $DIR/shorter-tail-expr-lifetime.rs:8:5
|
||||
--> $DIR/shorter-tail-expr-lifetime.rs:7:5
|
||||
|
|
||||
LL | let c = std::cell::RefCell::new("..");
|
||||
| - binding `c` declared here
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
//@ revisions: edition2021 edition2024
|
||||
//@ [edition2024] compile-flags: -Zunstable-options
|
||||
//@ [edition2024] edition: 2024
|
||||
//@ [edition2024] run-pass
|
||||
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
//@ revisions: edition2021 edition2024
|
||||
//@ ignore-wasm no panic or subprocess support
|
||||
//@ [edition2024] compile-flags: -Zunstable-options
|
||||
//@ [edition2024] edition: 2024
|
||||
//@ run-pass
|
||||
//@ needs-unwind
|
||||
|
||||
@@ -15,7 +15,6 @@
|
||||
//@ revisions: edition2021 edition2024
|
||||
//@ [edition2021] edition: 2021
|
||||
//@ [edition2024] edition: 2024
|
||||
//@ [edition2024] compile-flags: -Z unstable-options
|
||||
|
||||
fn temp() -> (String, i32) {
|
||||
(String::from("Hello"), 1)
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
warning: creating a shared reference to mutable static is discouraged
|
||||
--> $DIR/static-mut-refs.rs:39:18
|
||||
--> $DIR/static-mut-refs.rs:38:18
|
||||
|
|
||||
LL | let _y = &X;
|
||||
| ^^ shared reference to mutable static
|
||||
@@ -13,7 +13,7 @@ LL | let _y = &raw const X;
|
||||
| ~~~~~~~~~~
|
||||
|
||||
warning: creating a mutable reference to mutable static is discouraged
|
||||
--> $DIR/static-mut-refs.rs:43:18
|
||||
--> $DIR/static-mut-refs.rs:42:18
|
||||
|
|
||||
LL | let _y = &mut X;
|
||||
| ^^^^^^ mutable reference to mutable static
|
||||
@@ -26,7 +26,7 @@ LL | let _y = &raw mut X;
|
||||
| ~~~~~~~~
|
||||
|
||||
warning: creating a shared reference to mutable static is discouraged
|
||||
--> $DIR/static-mut-refs.rs:51:22
|
||||
--> $DIR/static-mut-refs.rs:50:22
|
||||
|
|
||||
LL | let ref _a = X;
|
||||
| ^ shared reference to mutable static
|
||||
@@ -35,7 +35,7 @@ LL | let ref _a = X;
|
||||
= note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
|
||||
|
||||
warning: creating a shared reference to mutable static is discouraged
|
||||
--> $DIR/static-mut-refs.rs:55:25
|
||||
--> $DIR/static-mut-refs.rs:54:25
|
||||
|
|
||||
LL | let (_b, _c) = (&X, &Y);
|
||||
| ^^ shared reference to mutable static
|
||||
@@ -48,7 +48,7 @@ LL | let (_b, _c) = (&raw const X, &Y);
|
||||
| ~~~~~~~~~~
|
||||
|
||||
warning: creating a shared reference to mutable static is discouraged
|
||||
--> $DIR/static-mut-refs.rs:55:29
|
||||
--> $DIR/static-mut-refs.rs:54:29
|
||||
|
|
||||
LL | let (_b, _c) = (&X, &Y);
|
||||
| ^^ shared reference to mutable static
|
||||
@@ -61,7 +61,7 @@ LL | let (_b, _c) = (&X, &raw const Y);
|
||||
| ~~~~~~~~~~
|
||||
|
||||
warning: creating a shared reference to mutable static is discouraged
|
||||
--> $DIR/static-mut-refs.rs:61:13
|
||||
--> $DIR/static-mut-refs.rs:60:13
|
||||
|
|
||||
LL | foo(&X);
|
||||
| ^^ shared reference to mutable static
|
||||
@@ -74,7 +74,7 @@ LL | foo(&raw const X);
|
||||
| ~~~~~~~~~~
|
||||
|
||||
warning: creating a shared reference to mutable static is discouraged
|
||||
--> $DIR/static-mut-refs.rs:67:17
|
||||
--> $DIR/static-mut-refs.rs:66:17
|
||||
|
|
||||
LL | let _ = Z.len();
|
||||
| ^^^^^^^ shared reference to mutable static
|
||||
@@ -83,7 +83,7 @@ LL | let _ = Z.len();
|
||||
= note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
|
||||
|
||||
warning: creating a shared reference to mutable static is discouraged
|
||||
--> $DIR/static-mut-refs.rs:73:33
|
||||
--> $DIR/static-mut-refs.rs:72:33
|
||||
|
|
||||
LL | let _ = format!("{:?}", Z);
|
||||
| ^ shared reference to mutable static
|
||||
@@ -92,7 +92,7 @@ LL | let _ = format!("{:?}", Z);
|
||||
= note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
|
||||
|
||||
warning: creating a shared reference to mutable static is discouraged
|
||||
--> $DIR/static-mut-refs.rs:77:18
|
||||
--> $DIR/static-mut-refs.rs:76:18
|
||||
|
|
||||
LL | let _v = &A.value;
|
||||
| ^^^^^^^^ shared reference to mutable static
|
||||
@@ -105,7 +105,7 @@ LL | let _v = &raw const A.value;
|
||||
| ~~~~~~~~~~
|
||||
|
||||
warning: creating a shared reference to mutable static is discouraged
|
||||
--> $DIR/static-mut-refs.rs:81:18
|
||||
--> $DIR/static-mut-refs.rs:80:18
|
||||
|
|
||||
LL | let _s = &A.s.value;
|
||||
| ^^^^^^^^^^ shared reference to mutable static
|
||||
@@ -118,7 +118,7 @@ LL | let _s = &raw const A.s.value;
|
||||
| ~~~~~~~~~~
|
||||
|
||||
warning: creating a shared reference to mutable static is discouraged
|
||||
--> $DIR/static-mut-refs.rs:85:22
|
||||
--> $DIR/static-mut-refs.rs:84:22
|
||||
|
|
||||
LL | let ref _v = A.value;
|
||||
| ^^^^^^^ shared reference to mutable static
|
||||
@@ -127,7 +127,7 @@ LL | let ref _v = A.value;
|
||||
= note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
|
||||
|
||||
warning: creating a mutable reference to mutable static is discouraged
|
||||
--> $DIR/static-mut-refs.rs:15:14
|
||||
--> $DIR/static-mut-refs.rs:14:14
|
||||
|
|
||||
LL | &mut ($x.0)
|
||||
| ^^^^^^ mutable reference to mutable static
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
error: creating a shared reference to mutable static is discouraged
|
||||
--> $DIR/static-mut-refs.rs:39:18
|
||||
--> $DIR/static-mut-refs.rs:38:18
|
||||
|
|
||||
LL | let _y = &X;
|
||||
| ^^ shared reference to mutable static
|
||||
@@ -13,7 +13,7 @@ LL | let _y = &raw const X;
|
||||
| ~~~~~~~~~~
|
||||
|
||||
error: creating a mutable reference to mutable static is discouraged
|
||||
--> $DIR/static-mut-refs.rs:43:18
|
||||
--> $DIR/static-mut-refs.rs:42:18
|
||||
|
|
||||
LL | let _y = &mut X;
|
||||
| ^^^^^^ mutable reference to mutable static
|
||||
@@ -26,7 +26,7 @@ LL | let _y = &raw mut X;
|
||||
| ~~~~~~~~
|
||||
|
||||
error: creating a shared reference to mutable static is discouraged
|
||||
--> $DIR/static-mut-refs.rs:51:22
|
||||
--> $DIR/static-mut-refs.rs:50:22
|
||||
|
|
||||
LL | let ref _a = X;
|
||||
| ^ shared reference to mutable static
|
||||
@@ -35,7 +35,7 @@ LL | let ref _a = X;
|
||||
= note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
|
||||
|
||||
error: creating a shared reference to mutable static is discouraged
|
||||
--> $DIR/static-mut-refs.rs:55:25
|
||||
--> $DIR/static-mut-refs.rs:54:25
|
||||
|
|
||||
LL | let (_b, _c) = (&X, &Y);
|
||||
| ^^ shared reference to mutable static
|
||||
@@ -48,7 +48,7 @@ LL | let (_b, _c) = (&raw const X, &Y);
|
||||
| ~~~~~~~~~~
|
||||
|
||||
error: creating a shared reference to mutable static is discouraged
|
||||
--> $DIR/static-mut-refs.rs:55:29
|
||||
--> $DIR/static-mut-refs.rs:54:29
|
||||
|
|
||||
LL | let (_b, _c) = (&X, &Y);
|
||||
| ^^ shared reference to mutable static
|
||||
@@ -61,7 +61,7 @@ LL | let (_b, _c) = (&X, &raw const Y);
|
||||
| ~~~~~~~~~~
|
||||
|
||||
error: creating a shared reference to mutable static is discouraged
|
||||
--> $DIR/static-mut-refs.rs:61:13
|
||||
--> $DIR/static-mut-refs.rs:60:13
|
||||
|
|
||||
LL | foo(&X);
|
||||
| ^^ shared reference to mutable static
|
||||
@@ -74,7 +74,7 @@ LL | foo(&raw const X);
|
||||
| ~~~~~~~~~~
|
||||
|
||||
error: creating a shared reference to mutable static is discouraged
|
||||
--> $DIR/static-mut-refs.rs:67:17
|
||||
--> $DIR/static-mut-refs.rs:66:17
|
||||
|
|
||||
LL | let _ = Z.len();
|
||||
| ^^^^^^^ shared reference to mutable static
|
||||
@@ -83,7 +83,7 @@ LL | let _ = Z.len();
|
||||
= note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
|
||||
|
||||
error: creating a shared reference to mutable static is discouraged
|
||||
--> $DIR/static-mut-refs.rs:73:33
|
||||
--> $DIR/static-mut-refs.rs:72:33
|
||||
|
|
||||
LL | let _ = format!("{:?}", Z);
|
||||
| ^ shared reference to mutable static
|
||||
@@ -92,7 +92,7 @@ LL | let _ = format!("{:?}", Z);
|
||||
= note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
|
||||
|
||||
error: creating a shared reference to mutable static is discouraged
|
||||
--> $DIR/static-mut-refs.rs:77:18
|
||||
--> $DIR/static-mut-refs.rs:76:18
|
||||
|
|
||||
LL | let _v = &A.value;
|
||||
| ^^^^^^^^ shared reference to mutable static
|
||||
@@ -105,7 +105,7 @@ LL | let _v = &raw const A.value;
|
||||
| ~~~~~~~~~~
|
||||
|
||||
error: creating a shared reference to mutable static is discouraged
|
||||
--> $DIR/static-mut-refs.rs:81:18
|
||||
--> $DIR/static-mut-refs.rs:80:18
|
||||
|
|
||||
LL | let _s = &A.s.value;
|
||||
| ^^^^^^^^^^ shared reference to mutable static
|
||||
@@ -118,7 +118,7 @@ LL | let _s = &raw const A.s.value;
|
||||
| ~~~~~~~~~~
|
||||
|
||||
error: creating a shared reference to mutable static is discouraged
|
||||
--> $DIR/static-mut-refs.rs:85:22
|
||||
--> $DIR/static-mut-refs.rs:84:22
|
||||
|
|
||||
LL | let ref _v = A.value;
|
||||
| ^^^^^^^ shared reference to mutable static
|
||||
@@ -127,7 +127,7 @@ LL | let ref _v = A.value;
|
||||
= note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
|
||||
|
||||
error: creating a mutable reference to mutable static is discouraged
|
||||
--> $DIR/static-mut-refs.rs:15:14
|
||||
--> $DIR/static-mut-refs.rs:14:14
|
||||
|
|
||||
LL | &mut ($x.0)
|
||||
| ^^^^^^ mutable reference to mutable static
|
||||
|
||||
@@ -6,7 +6,6 @@
|
||||
//@ [e2021] run-pass
|
||||
|
||||
//@ [e2024] edition:2024
|
||||
//@ [e2024] compile-flags: -Zunstable-options
|
||||
|
||||
static mut FOO: (u32, u32) = (1, 2);
|
||||
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
error: missing fragment specifier
|
||||
--> $DIR/macro-missing-fragment.rs:9:20
|
||||
--> $DIR/macro-missing-fragment.rs:8:20
|
||||
|
|
||||
LL | ( $( any_token $field_rust_type )* ) => {};
|
||||
| ^^^^^^^^^^^^^^^^
|
||||
|
||||
warning: missing fragment specifier
|
||||
--> $DIR/macro-missing-fragment.rs:9:20
|
||||
--> $DIR/macro-missing-fragment.rs:8:20
|
||||
|
|
||||
LL | ( $( any_token $field_rust_type )* ) => {};
|
||||
| ^^^^^^^^^^^^^^^^
|
||||
@@ -13,13 +13,13 @@ LL | ( $( any_token $field_rust_type )* ) => {};
|
||||
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
|
||||
= note: for more information, see issue #40107 <https://github.com/rust-lang/rust/issues/40107>
|
||||
note: the lint level is defined here
|
||||
--> $DIR/macro-missing-fragment.rs:6:9
|
||||
--> $DIR/macro-missing-fragment.rs:5:9
|
||||
|
|
||||
LL | #![warn(missing_fragment_specifier)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
warning: missing fragment specifier
|
||||
--> $DIR/macro-missing-fragment.rs:19:7
|
||||
--> $DIR/macro-missing-fragment.rs:18:7
|
||||
|
|
||||
LL | ( $name ) => {};
|
||||
| ^^^^^
|
||||
@@ -28,7 +28,7 @@ LL | ( $name ) => {};
|
||||
= note: for more information, see issue #40107 <https://github.com/rust-lang/rust/issues/40107>
|
||||
|
||||
warning: missing fragment specifier
|
||||
--> $DIR/macro-missing-fragment.rs:26:7
|
||||
--> $DIR/macro-missing-fragment.rs:25:7
|
||||
|
|
||||
LL | ( $name ) => {};
|
||||
| ^^^^^
|
||||
@@ -40,7 +40,7 @@ error: aborting due to 1 previous error; 3 warnings emitted
|
||||
|
||||
Future incompatibility report: Future breakage diagnostic:
|
||||
warning: missing fragment specifier
|
||||
--> $DIR/macro-missing-fragment.rs:9:20
|
||||
--> $DIR/macro-missing-fragment.rs:8:20
|
||||
|
|
||||
LL | ( $( any_token $field_rust_type )* ) => {};
|
||||
| ^^^^^^^^^^^^^^^^
|
||||
@@ -48,14 +48,14 @@ LL | ( $( any_token $field_rust_type )* ) => {};
|
||||
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
|
||||
= note: for more information, see issue #40107 <https://github.com/rust-lang/rust/issues/40107>
|
||||
note: the lint level is defined here
|
||||
--> $DIR/macro-missing-fragment.rs:6:9
|
||||
--> $DIR/macro-missing-fragment.rs:5:9
|
||||
|
|
||||
LL | #![warn(missing_fragment_specifier)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Future breakage diagnostic:
|
||||
warning: missing fragment specifier
|
||||
--> $DIR/macro-missing-fragment.rs:19:7
|
||||
--> $DIR/macro-missing-fragment.rs:18:7
|
||||
|
|
||||
LL | ( $name ) => {};
|
||||
| ^^^^^
|
||||
@@ -63,14 +63,14 @@ LL | ( $name ) => {};
|
||||
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
|
||||
= note: for more information, see issue #40107 <https://github.com/rust-lang/rust/issues/40107>
|
||||
note: the lint level is defined here
|
||||
--> $DIR/macro-missing-fragment.rs:6:9
|
||||
--> $DIR/macro-missing-fragment.rs:5:9
|
||||
|
|
||||
LL | #![warn(missing_fragment_specifier)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Future breakage diagnostic:
|
||||
warning: missing fragment specifier
|
||||
--> $DIR/macro-missing-fragment.rs:26:7
|
||||
--> $DIR/macro-missing-fragment.rs:25:7
|
||||
|
|
||||
LL | ( $name ) => {};
|
||||
| ^^^^^
|
||||
@@ -78,7 +78,7 @@ LL | ( $name ) => {};
|
||||
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
|
||||
= note: for more information, see issue #40107 <https://github.com/rust-lang/rust/issues/40107>
|
||||
note: the lint level is defined here
|
||||
--> $DIR/macro-missing-fragment.rs:6:9
|
||||
--> $DIR/macro-missing-fragment.rs:5:9
|
||||
|
|
||||
LL | #![warn(missing_fragment_specifier)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
error: missing fragment specifier
|
||||
--> $DIR/macro-missing-fragment.rs:9:20
|
||||
--> $DIR/macro-missing-fragment.rs:8:20
|
||||
|
|
||||
LL | ( $( any_token $field_rust_type )* ) => {};
|
||||
| ^^^^^^^^^^^^^^^^
|
||||
@@ -12,7 +12,7 @@ LL | ( $( any_token $field_rust_type:spec )* ) => {};
|
||||
| +++++
|
||||
|
||||
error: missing fragment specifier
|
||||
--> $DIR/macro-missing-fragment.rs:19:7
|
||||
--> $DIR/macro-missing-fragment.rs:18:7
|
||||
|
|
||||
LL | ( $name ) => {};
|
||||
| ^^^^^
|
||||
@@ -25,7 +25,7 @@ LL | ( $name:spec ) => {};
|
||||
| +++++
|
||||
|
||||
error: missing fragment specifier
|
||||
--> $DIR/macro-missing-fragment.rs:26:7
|
||||
--> $DIR/macro-missing-fragment.rs:25:7
|
||||
|
|
||||
LL | ( $name ) => {};
|
||||
| ^^^^^
|
||||
@@ -38,7 +38,7 @@ LL | ( $name:spec ) => {};
|
||||
| +++++
|
||||
|
||||
error: missing fragment specifier
|
||||
--> $DIR/macro-missing-fragment.rs:9:20
|
||||
--> $DIR/macro-missing-fragment.rs:8:20
|
||||
|
|
||||
LL | ( $( any_token $field_rust_type )* ) => {};
|
||||
| ^^^^^^^^^^^^^^^^
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
//@ revisions: e2015 e2024
|
||||
//@[e2015] edition:2015
|
||||
//@[e2024] edition:2024
|
||||
//@[e2024] compile-flags: -Zunstable-options
|
||||
|
||||
#![warn(missing_fragment_specifier)]
|
||||
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
//@ needs-unwind
|
||||
//@ revisions: edition2021 edition2024
|
||||
//@ [edition2021] edition: 2021
|
||||
//@ [edition2024] compile-flags: -Z unstable-options
|
||||
//@ [edition2024] edition: 2024
|
||||
|
||||
// See `mir_drop_order.rs` for more information
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
warning: never type fallback affects this call to an `unsafe` function
|
||||
--> $DIR/lint-never-type-fallback-flowing-into-unsafe.rs:13:18
|
||||
--> $DIR/lint-never-type-fallback-flowing-into-unsafe.rs:12:18
|
||||
|
|
||||
LL | unsafe { mem::zeroed() }
|
||||
| ^^^^^^^^^^^^^
|
||||
@@ -14,7 +14,7 @@ LL | unsafe { mem::zeroed::<()>() }
|
||||
| ++++++
|
||||
|
||||
warning: never type fallback affects this call to an `unsafe` function
|
||||
--> $DIR/lint-never-type-fallback-flowing-into-unsafe.rs:30:13
|
||||
--> $DIR/lint-never-type-fallback-flowing-into-unsafe.rs:29:13
|
||||
|
|
||||
LL | core::mem::transmute(Zst)
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
@@ -28,7 +28,7 @@ LL | core::mem::transmute::<_, ()>(Zst)
|
||||
| +++++++++
|
||||
|
||||
warning: never type fallback affects this union access
|
||||
--> $DIR/lint-never-type-fallback-flowing-into-unsafe.rs:47:18
|
||||
--> $DIR/lint-never-type-fallback-flowing-into-unsafe.rs:46:18
|
||||
|
|
||||
LL | unsafe { Union { a: () }.b }
|
||||
| ^^^^^^^^^^^^^^^^^
|
||||
@@ -38,7 +38,7 @@ LL | unsafe { Union { a: () }.b }
|
||||
= help: specify the type explicitly
|
||||
|
||||
warning: never type fallback affects this raw pointer dereference
|
||||
--> $DIR/lint-never-type-fallback-flowing-into-unsafe.rs:58:18
|
||||
--> $DIR/lint-never-type-fallback-flowing-into-unsafe.rs:57:18
|
||||
|
|
||||
LL | unsafe { *ptr::from_ref(&()).cast() }
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
@@ -52,7 +52,7 @@ LL | unsafe { *ptr::from_ref(&()).cast::<()>() }
|
||||
| ++++++
|
||||
|
||||
warning: never type fallback affects this call to an `unsafe` function
|
||||
--> $DIR/lint-never-type-fallback-flowing-into-unsafe.rs:79:18
|
||||
--> $DIR/lint-never-type-fallback-flowing-into-unsafe.rs:78:18
|
||||
|
|
||||
LL | unsafe { internally_create(x) }
|
||||
| ^^^^^^^^^^^^^^^^^^^^
|
||||
@@ -66,7 +66,7 @@ LL | unsafe { internally_create::<()>(x) }
|
||||
| ++++++
|
||||
|
||||
warning: never type fallback affects this call to an `unsafe` function
|
||||
--> $DIR/lint-never-type-fallback-flowing-into-unsafe.rs:97:18
|
||||
--> $DIR/lint-never-type-fallback-flowing-into-unsafe.rs:96:18
|
||||
|
|
||||
LL | unsafe { zeroed() }
|
||||
| ^^^^^^^^
|
||||
@@ -80,7 +80,7 @@ LL | let zeroed = mem::zeroed::<()>;
|
||||
| ++++++
|
||||
|
||||
warning: never type fallback affects this `unsafe` function
|
||||
--> $DIR/lint-never-type-fallback-flowing-into-unsafe.rs:92:22
|
||||
--> $DIR/lint-never-type-fallback-flowing-into-unsafe.rs:91:22
|
||||
|
|
||||
LL | let zeroed = mem::zeroed;
|
||||
| ^^^^^^^^^^^
|
||||
@@ -94,7 +94,7 @@ LL | let zeroed = mem::zeroed::<()>;
|
||||
| ++++++
|
||||
|
||||
warning: never type fallback affects this `unsafe` function
|
||||
--> $DIR/lint-never-type-fallback-flowing-into-unsafe.rs:115:17
|
||||
--> $DIR/lint-never-type-fallback-flowing-into-unsafe.rs:114:17
|
||||
|
|
||||
LL | let f = internally_create;
|
||||
| ^^^^^^^^^^^^^^^^^
|
||||
@@ -108,7 +108,7 @@ LL | let f = internally_create::<()>;
|
||||
| ++++++
|
||||
|
||||
warning: never type fallback affects this call to an `unsafe` method
|
||||
--> $DIR/lint-never-type-fallback-flowing-into-unsafe.rs:140:13
|
||||
--> $DIR/lint-never-type-fallback-flowing-into-unsafe.rs:139:13
|
||||
|
|
||||
LL | S(marker::PhantomData).create_out_of_thin_air()
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
@@ -118,7 +118,7 @@ LL | S(marker::PhantomData).create_out_of_thin_air()
|
||||
= help: specify the type explicitly
|
||||
|
||||
warning: never type fallback affects this call to an `unsafe` function
|
||||
--> $DIR/lint-never-type-fallback-flowing-into-unsafe.rs:158:19
|
||||
--> $DIR/lint-never-type-fallback-flowing-into-unsafe.rs:157:19
|
||||
|
|
||||
LL | match send_message::<_ /* ?0 */>() {
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
error: never type fallback affects this call to an `unsafe` function
|
||||
--> $DIR/lint-never-type-fallback-flowing-into-unsafe.rs:13:18
|
||||
--> $DIR/lint-never-type-fallback-flowing-into-unsafe.rs:12:18
|
||||
|
|
||||
LL | unsafe { mem::zeroed() }
|
||||
| ^^^^^^^^^^^^^
|
||||
@@ -14,7 +14,7 @@ LL | unsafe { mem::zeroed::<()>() }
|
||||
| ++++++
|
||||
|
||||
error: never type fallback affects this call to an `unsafe` function
|
||||
--> $DIR/lint-never-type-fallback-flowing-into-unsafe.rs:30:13
|
||||
--> $DIR/lint-never-type-fallback-flowing-into-unsafe.rs:29:13
|
||||
|
|
||||
LL | core::mem::transmute(Zst)
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
@@ -28,7 +28,7 @@ LL | core::mem::transmute::<_, ()>(Zst)
|
||||
| +++++++++
|
||||
|
||||
error: never type fallback affects this union access
|
||||
--> $DIR/lint-never-type-fallback-flowing-into-unsafe.rs:47:18
|
||||
--> $DIR/lint-never-type-fallback-flowing-into-unsafe.rs:46:18
|
||||
|
|
||||
LL | unsafe { Union { a: () }.b }
|
||||
| ^^^^^^^^^^^^^^^^^
|
||||
@@ -38,7 +38,7 @@ LL | unsafe { Union { a: () }.b }
|
||||
= help: specify the type explicitly
|
||||
|
||||
error: never type fallback affects this raw pointer dereference
|
||||
--> $DIR/lint-never-type-fallback-flowing-into-unsafe.rs:58:18
|
||||
--> $DIR/lint-never-type-fallback-flowing-into-unsafe.rs:57:18
|
||||
|
|
||||
LL | unsafe { *ptr::from_ref(&()).cast() }
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
@@ -52,7 +52,7 @@ LL | unsafe { *ptr::from_ref(&()).cast::<()>() }
|
||||
| ++++++
|
||||
|
||||
error: never type fallback affects this call to an `unsafe` function
|
||||
--> $DIR/lint-never-type-fallback-flowing-into-unsafe.rs:79:18
|
||||
--> $DIR/lint-never-type-fallback-flowing-into-unsafe.rs:78:18
|
||||
|
|
||||
LL | unsafe { internally_create(x) }
|
||||
| ^^^^^^^^^^^^^^^^^^^^
|
||||
@@ -66,7 +66,7 @@ LL | unsafe { internally_create::<()>(x) }
|
||||
| ++++++
|
||||
|
||||
error: never type fallback affects this call to an `unsafe` function
|
||||
--> $DIR/lint-never-type-fallback-flowing-into-unsafe.rs:97:18
|
||||
--> $DIR/lint-never-type-fallback-flowing-into-unsafe.rs:96:18
|
||||
|
|
||||
LL | unsafe { zeroed() }
|
||||
| ^^^^^^^^
|
||||
@@ -80,7 +80,7 @@ LL | let zeroed = mem::zeroed::<()>;
|
||||
| ++++++
|
||||
|
||||
error: never type fallback affects this `unsafe` function
|
||||
--> $DIR/lint-never-type-fallback-flowing-into-unsafe.rs:92:22
|
||||
--> $DIR/lint-never-type-fallback-flowing-into-unsafe.rs:91:22
|
||||
|
|
||||
LL | let zeroed = mem::zeroed;
|
||||
| ^^^^^^^^^^^
|
||||
@@ -94,7 +94,7 @@ LL | let zeroed = mem::zeroed::<()>;
|
||||
| ++++++
|
||||
|
||||
error: never type fallback affects this `unsafe` function
|
||||
--> $DIR/lint-never-type-fallback-flowing-into-unsafe.rs:115:17
|
||||
--> $DIR/lint-never-type-fallback-flowing-into-unsafe.rs:114:17
|
||||
|
|
||||
LL | let f = internally_create;
|
||||
| ^^^^^^^^^^^^^^^^^
|
||||
@@ -108,7 +108,7 @@ LL | let f = internally_create::<()>;
|
||||
| ++++++
|
||||
|
||||
error: never type fallback affects this call to an `unsafe` method
|
||||
--> $DIR/lint-never-type-fallback-flowing-into-unsafe.rs:140:13
|
||||
--> $DIR/lint-never-type-fallback-flowing-into-unsafe.rs:139:13
|
||||
|
|
||||
LL | S(marker::PhantomData).create_out_of_thin_air()
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
@@ -118,7 +118,7 @@ LL | S(marker::PhantomData).create_out_of_thin_air()
|
||||
= help: specify the type explicitly
|
||||
|
||||
error: never type fallback affects this call to an `unsafe` function
|
||||
--> $DIR/lint-never-type-fallback-flowing-into-unsafe.rs:158:19
|
||||
--> $DIR/lint-never-type-fallback-flowing-into-unsafe.rs:157:19
|
||||
|
|
||||
LL | match send_message::<_ /* ?0 */>() {
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
@@ -136,7 +136,7 @@ LL | match send_message::<() /* ?0 */>() {
|
||||
| ~~
|
||||
|
||||
warning: the type `!` does not permit zero-initialization
|
||||
--> $DIR/lint-never-type-fallback-flowing-into-unsafe.rs:13:18
|
||||
--> $DIR/lint-never-type-fallback-flowing-into-unsafe.rs:12:18
|
||||
|
|
||||
LL | unsafe { mem::zeroed() }
|
||||
| ^^^^^^^^^^^^^ this code causes undefined behavior when executed
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
//@[e2015] check-pass
|
||||
//@[e2024] check-fail
|
||||
//@[e2024] edition:2024
|
||||
//@[e2024] compile-flags: -Zunstable-options
|
||||
|
||||
use std::{marker, mem, ptr};
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
error[E0597]: `counter` does not live long enough
|
||||
--> $DIR/issue-54556-niconii.rs:28:20
|
||||
--> $DIR/issue-54556-niconii.rs:27:20
|
||||
|
|
||||
LL | let counter = Mutex;
|
||||
| ------- binding `counter` declared here
|
||||
|
||||
@@ -9,7 +9,6 @@
|
||||
//@ revisions: edition2021 edition2024
|
||||
//@ [edition2021] edition: 2021
|
||||
//@ [edition2024] edition: 2024
|
||||
//@ [edition2024] compile-flags: -Z unstable-options
|
||||
//@ [edition2024] check-pass
|
||||
|
||||
struct Mutex;
|
||||
|
||||
@@ -6,7 +6,6 @@
|
||||
//@ revisions: edition2021 edition2024
|
||||
//@[edition2021] edition:2021
|
||||
//@[edition2024] edition:2024
|
||||
//@[edition2024] compile-flags: -Zunstable-options
|
||||
//@ check-pass
|
||||
|
||||
// This checks how the expr fragment specifier works.
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
//@ revisions: e2021 e2024
|
||||
//@[e2021] edition: 2021
|
||||
//@[e2024] edition: 2024
|
||||
//@[e2024] compile-flags: -Zunstable-options
|
||||
//@ check-pass
|
||||
|
||||
#![deny(rust_2024_prelude_collisions)]
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
//@[e2021] edition: 2021
|
||||
//@[e2021] run-rustfix
|
||||
//@[e2024] edition: 2024
|
||||
//@[e2024] compile-flags: -Zunstable-options
|
||||
//@[e2024] check-pass
|
||||
|
||||
#![deny(rust_2024_prelude_collisions)]
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
error: trait method `poll` will become ambiguous in Rust 2024
|
||||
--> $DIR/future-poll-async-block.rs:14:5
|
||||
--> $DIR/future-poll-async-block.rs:13:5
|
||||
|
|
||||
LL | core::pin::pin!(async {}).poll(&mut context());
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: disambiguate the associated function: `Meow::poll(&core::pin::pin!(async {}), &mut context())`
|
||||
@@ -7,7 +7,7 @@ LL | core::pin::pin!(async {}).poll(&mut context());
|
||||
= warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024!
|
||||
= note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/prelude.html>
|
||||
note: the lint level is defined here
|
||||
--> $DIR/future-poll-async-block.rs:8:9
|
||||
--> $DIR/future-poll-async-block.rs:7:9
|
||||
|
|
||||
LL | #![deny(rust_2024_prelude_collisions)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
//@[e2021] edition: 2021
|
||||
//@[e2021] run-rustfix
|
||||
//@[e2024] edition: 2024
|
||||
//@[e2024] compile-flags: -Zunstable-options
|
||||
//@[e2024] check-pass
|
||||
|
||||
#![deny(rust_2024_prelude_collisions)]
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
//@[e2021] edition: 2021
|
||||
//@[e2021] run-rustfix
|
||||
//@[e2024] edition: 2024
|
||||
//@[e2024] compile-flags: -Zunstable-options
|
||||
//@[e2024] check-pass
|
||||
|
||||
#![deny(rust_2024_prelude_collisions)]
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
error: trait method `poll` will become ambiguous in Rust 2024
|
||||
--> $DIR/future-poll-not-future-pinned.rs:18:5
|
||||
--> $DIR/future-poll-not-future-pinned.rs:17:5
|
||||
|
|
||||
LL | core::pin::pin!(()).poll();
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: disambiguate the associated function: `Meow::poll(&core::pin::pin!(()))`
|
||||
@@ -7,7 +7,7 @@ LL | core::pin::pin!(()).poll();
|
||||
= warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024!
|
||||
= note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/prelude.html>
|
||||
note: the lint level is defined here
|
||||
--> $DIR/future-poll-not-future-pinned.rs:8:9
|
||||
--> $DIR/future-poll-not-future-pinned.rs:7:9
|
||||
|
|
||||
LL | #![deny(rust_2024_prelude_collisions)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
//@[e2021] edition: 2021
|
||||
//@[e2021] run-rustfix
|
||||
//@[e2024] edition: 2024
|
||||
//@[e2024] compile-flags: -Zunstable-options
|
||||
//@[e2024] check-pass
|
||||
|
||||
#![deny(rust_2024_prelude_collisions)]
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
//@ revisions: e2021 e2024
|
||||
//@[e2021] edition: 2021
|
||||
//@[e2024] edition: 2024
|
||||
//@[e2024] compile-flags: -Zunstable-options
|
||||
//@ check-pass
|
||||
|
||||
#![deny(rust_2024_prelude_collisions)]
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
//@[e2021] edition: 2021
|
||||
//@[e2021] run-rustfix
|
||||
//@[e2024] edition: 2024
|
||||
//@[e2024] compile-flags: -Zunstable-options
|
||||
//@[e2024] check-pass
|
||||
|
||||
#![deny(rust_2024_prelude_collisions)]
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
error: trait method `into_future` will become ambiguous in Rust 2024
|
||||
--> $DIR/into-future-adt.rs:26:5
|
||||
--> $DIR/into-future-adt.rs:25:5
|
||||
|
|
||||
LL | Cat.into_future();
|
||||
| ^^^^^^^^^^^^^^^^^ help: disambiguate the associated function: `Meow::into_future(&Cat)`
|
||||
@@ -7,7 +7,7 @@ LL | Cat.into_future();
|
||||
= warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024!
|
||||
= note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/prelude.html>
|
||||
note: the lint level is defined here
|
||||
--> $DIR/into-future-adt.rs:8:9
|
||||
--> $DIR/into-future-adt.rs:7:9
|
||||
|
|
||||
LL | #![deny(rust_2024_prelude_collisions)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
//@[e2021] edition: 2021
|
||||
//@[e2021] run-rustfix
|
||||
//@[e2024] edition: 2024
|
||||
//@[e2024] compile-flags: -Zunstable-options
|
||||
//@[e2024] check-pass
|
||||
|
||||
#![deny(rust_2024_prelude_collisions)]
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
//@ revisions: e2021 e2024
|
||||
//@[e2021] edition: 2021
|
||||
//@[e2024] edition: 2024
|
||||
//@[e2024] compile-flags: -Zunstable-options
|
||||
//@ check-pass
|
||||
|
||||
#![deny(rust_2024_prelude_collisions)]
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
//@[e2021] edition: 2021
|
||||
//@[e2021] run-rustfix
|
||||
//@[e2024] edition: 2024
|
||||
//@[e2024] compile-flags: -Zunstable-options
|
||||
//@[e2024] check-pass
|
||||
|
||||
#![deny(rust_2024_prelude_collisions)]
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
error: trait method `into_future` will become ambiguous in Rust 2024
|
||||
--> $DIR/into-future-not-into-future.rs:20:5
|
||||
--> $DIR/into-future-not-into-future.rs:19:5
|
||||
|
|
||||
LL | Cat.into_future();
|
||||
| ^^^^^^^^^^^^^^^^^ help: disambiguate the associated function: `Meow::into_future(&Cat)`
|
||||
@@ -7,7 +7,7 @@ LL | Cat.into_future();
|
||||
= warning: this is accepted in the current edition (Rust 2021) but is a hard error in Rust 2024!
|
||||
= note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/prelude.html>
|
||||
note: the lint level is defined here
|
||||
--> $DIR/into-future-not-into-future.rs:8:9
|
||||
--> $DIR/into-future-not-into-future.rs:7:9
|
||||
|
|
||||
LL | #![deny(rust_2024_prelude_collisions)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
//@[e2021] edition: 2021
|
||||
//@[e2021] run-rustfix
|
||||
//@[e2024] edition: 2024
|
||||
//@[e2024] compile-flags: -Zunstable-options
|
||||
//@[e2024] check-pass
|
||||
|
||||
#![deny(rust_2024_prelude_collisions)]
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
//@ revisions: edition2021 edition2024
|
||||
//@[edition2021] edition:2021
|
||||
//@[edition2024] edition:2024
|
||||
//@[edition2024] compile-flags: -Zunstable-options
|
||||
//@ check-pass
|
||||
|
||||
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
//@ check-pass
|
||||
//@[edition2021] edition:2021
|
||||
//@[edition2024] edition:2024
|
||||
//@[edition2024] compile-flags: -Zunstable-options
|
||||
//@ proc-macro: unsafe-attributes-pm.rs
|
||||
|
||||
unsafe_attributes_pm::missing_unsafe!();
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
error: unsafe attribute used without unsafe
|
||||
--> $DIR/unsafe-attributes.rs:8:3
|
||||
--> $DIR/unsafe-attributes.rs:7:3
|
||||
|
|
||||
LL | #[no_mangle]
|
||||
| ^^^^^^^^^ usage of unsafe attribute
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
//@[edition2021] edition:2021
|
||||
//@[edition2021] check-pass
|
||||
//@[edition2024] edition:2024
|
||||
//@[edition2024] compile-flags: -Zunstable-options
|
||||
|
||||
|
||||
#[no_mangle] //[edition2024]~ ERROR: unsafe attribute used without unsafe
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
error[E0133]: call to unsafe function `before_exec` is unsafe and requires unsafe block
|
||||
--> $DIR/unsafe-before_exec.rs:14:5
|
||||
--> $DIR/unsafe-before_exec.rs:13:5
|
||||
|
|
||||
LL | cmd.before_exec(|| Ok(()));
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
//@[e2021] edition: 2021
|
||||
//@[e2021] check-pass
|
||||
//@[e2024] edition: 2024
|
||||
//@[e2024] compile-flags: -Zunstable-options
|
||||
|
||||
use std::process::Command;
|
||||
use std::os::unix::process::CommandExt;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
error[E0133]: call to unsafe function `unsafe_fn` is unsafe and requires unsafe block
|
||||
--> $DIR/unsafe-env.rs:15:9
|
||||
--> $DIR/unsafe-env.rs:14:9
|
||||
|
|
||||
LL | unsafe_fn();
|
||||
| ^^^^^^^^^^^ call to unsafe function
|
||||
@@ -7,18 +7,18 @@ LL | unsafe_fn();
|
||||
= note: for more information, see issue #71668 <https://github.com/rust-lang/rust/issues/71668>
|
||||
= note: consult the function's documentation for information on how to avoid undefined behavior
|
||||
note: an unsafe function restricts its caller, but its body is safe by default
|
||||
--> $DIR/unsafe-env.rs:9:1
|
||||
--> $DIR/unsafe-env.rs:8:1
|
||||
|
|
||||
LL | unsafe fn unsafe_fn() {
|
||||
| ^^^^^^^^^^^^^^^^^^^^^
|
||||
note: the lint level is defined here
|
||||
--> $DIR/unsafe-env.rs:8:8
|
||||
--> $DIR/unsafe-env.rs:7:8
|
||||
|
|
||||
LL | #[deny(unsafe_op_in_unsafe_fn)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error[E0133]: call to unsafe function `unsafe_fn` is unsafe and requires unsafe function or block
|
||||
--> $DIR/unsafe-env.rs:33:5
|
||||
--> $DIR/unsafe-env.rs:32:5
|
||||
|
|
||||
LL | unsafe_fn();
|
||||
| ^^^^^^^^^^^ call to unsafe function
|
||||
@@ -26,13 +26,13 @@ LL | unsafe_fn();
|
||||
= note: consult the function's documentation for information on how to avoid undefined behavior
|
||||
|
||||
error: unnecessary `unsafe` block
|
||||
--> $DIR/unsafe-env.rs:36:5
|
||||
--> $DIR/unsafe-env.rs:35:5
|
||||
|
|
||||
LL | unsafe {
|
||||
| ^^^^^^ unnecessary `unsafe` block
|
||||
|
|
||||
note: the lint level is defined here
|
||||
--> $DIR/unsafe-env.rs:21:8
|
||||
--> $DIR/unsafe-env.rs:20:8
|
||||
|
|
||||
LL | #[deny(unused_unsafe)]
|
||||
| ^^^^^^^^^^^^^
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
error[E0133]: call to unsafe function `std::env::set_var` is unsafe and requires unsafe block
|
||||
--> $DIR/unsafe-env.rs:10:5
|
||||
--> $DIR/unsafe-env.rs:9:5
|
||||
|
|
||||
LL | env::set_var("FOO", "BAR");
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
|
||||
@@ -7,18 +7,18 @@ LL | env::set_var("FOO", "BAR");
|
||||
= note: for more information, see issue #71668 <https://github.com/rust-lang/rust/issues/71668>
|
||||
= note: consult the function's documentation for information on how to avoid undefined behavior
|
||||
note: an unsafe function restricts its caller, but its body is safe by default
|
||||
--> $DIR/unsafe-env.rs:9:1
|
||||
--> $DIR/unsafe-env.rs:8:1
|
||||
|
|
||||
LL | unsafe fn unsafe_fn() {
|
||||
| ^^^^^^^^^^^^^^^^^^^^^
|
||||
note: the lint level is defined here
|
||||
--> $DIR/unsafe-env.rs:8:8
|
||||
--> $DIR/unsafe-env.rs:7:8
|
||||
|
|
||||
LL | #[deny(unsafe_op_in_unsafe_fn)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error[E0133]: call to unsafe function `std::env::remove_var` is unsafe and requires unsafe block
|
||||
--> $DIR/unsafe-env.rs:12:5
|
||||
--> $DIR/unsafe-env.rs:11:5
|
||||
|
|
||||
LL | env::remove_var("FOO");
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
|
||||
@@ -27,7 +27,7 @@ LL | env::remove_var("FOO");
|
||||
= note: consult the function's documentation for information on how to avoid undefined behavior
|
||||
|
||||
error[E0133]: call to unsafe function `unsafe_fn` is unsafe and requires unsafe block
|
||||
--> $DIR/unsafe-env.rs:15:9
|
||||
--> $DIR/unsafe-env.rs:14:9
|
||||
|
|
||||
LL | unsafe_fn();
|
||||
| ^^^^^^^^^^^ call to unsafe function
|
||||
@@ -36,7 +36,7 @@ LL | unsafe_fn();
|
||||
= note: consult the function's documentation for information on how to avoid undefined behavior
|
||||
|
||||
error[E0133]: call to unsafe function `set_var` is unsafe and requires unsafe block
|
||||
--> $DIR/unsafe-env.rs:23:5
|
||||
--> $DIR/unsafe-env.rs:22:5
|
||||
|
|
||||
LL | env::set_var("FOO", "BAR");
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
|
||||
@@ -44,7 +44,7 @@ LL | env::set_var("FOO", "BAR");
|
||||
= note: consult the function's documentation for information on how to avoid undefined behavior
|
||||
|
||||
error[E0133]: call to unsafe function `remove_var` is unsafe and requires unsafe block
|
||||
--> $DIR/unsafe-env.rs:25:5
|
||||
--> $DIR/unsafe-env.rs:24:5
|
||||
|
|
||||
LL | env::remove_var("FOO");
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
|
||||
@@ -52,7 +52,7 @@ LL | env::remove_var("FOO");
|
||||
= note: consult the function's documentation for information on how to avoid undefined behavior
|
||||
|
||||
error[E0133]: call to unsafe function `unsafe_fn` is unsafe and requires unsafe block
|
||||
--> $DIR/unsafe-env.rs:33:5
|
||||
--> $DIR/unsafe-env.rs:32:5
|
||||
|
|
||||
LL | unsafe_fn();
|
||||
| ^^^^^^^^^^^ call to unsafe function
|
||||
@@ -60,13 +60,13 @@ LL | unsafe_fn();
|
||||
= note: consult the function's documentation for information on how to avoid undefined behavior
|
||||
|
||||
error: unnecessary `unsafe` block
|
||||
--> $DIR/unsafe-env.rs:36:5
|
||||
--> $DIR/unsafe-env.rs:35:5
|
||||
|
|
||||
LL | unsafe {
|
||||
| ^^^^^^ unnecessary `unsafe` block
|
||||
|
|
||||
note: the lint level is defined here
|
||||
--> $DIR/unsafe-env.rs:21:8
|
||||
--> $DIR/unsafe-env.rs:20:8
|
||||
|
|
||||
LL | #[deny(unused_unsafe)]
|
||||
| ^^^^^^^^^^^^^
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
//@ revisions: e2021 e2024
|
||||
//@[e2021] edition: 2021
|
||||
//@[e2024] edition: 2024
|
||||
//@[e2024] compile-flags: -Zunstable-options
|
||||
|
||||
use std::env;
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
error[E0133]: call to unsafe function `test1` is unsafe and requires unsafe function or block
|
||||
--> $DIR/extern-items-unsafe.rs:12:5
|
||||
--> $DIR/extern-items-unsafe.rs:11:5
|
||||
|
|
||||
LL | test1(TEST1);
|
||||
| ^^^^^^^^^^^^ call to unsafe function
|
||||
@@ -7,7 +7,7 @@ LL | test1(TEST1);
|
||||
= note: consult the function's documentation for information on how to avoid undefined behavior
|
||||
|
||||
error[E0133]: use of extern static is unsafe and requires unsafe function or block
|
||||
--> $DIR/extern-items-unsafe.rs:12:11
|
||||
--> $DIR/extern-items-unsafe.rs:11:11
|
||||
|
|
||||
LL | test1(TEST1);
|
||||
| ^^^^^ use of extern static
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
error[E0133]: call to unsafe function `test1` is unsafe and requires unsafe block
|
||||
--> $DIR/extern-items-unsafe.rs:12:5
|
||||
--> $DIR/extern-items-unsafe.rs:11:5
|
||||
|
|
||||
LL | test1(TEST1);
|
||||
| ^^^^^^^^^^^^ call to unsafe function
|
||||
@@ -7,7 +7,7 @@ LL | test1(TEST1);
|
||||
= note: consult the function's documentation for information on how to avoid undefined behavior
|
||||
|
||||
error[E0133]: use of extern static is unsafe and requires unsafe block
|
||||
--> $DIR/extern-items-unsafe.rs:12:11
|
||||
--> $DIR/extern-items-unsafe.rs:11:11
|
||||
|
|
||||
LL | test1(TEST1);
|
||||
| ^^^^^ use of extern static
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
//@ revisions: edition2021 edition2024
|
||||
//@[edition2021] edition:2021
|
||||
//@[edition2024] edition:2024
|
||||
//@[edition2024] compile-flags: -Zunstable-options
|
||||
|
||||
unsafe extern "C" {
|
||||
static TEST1: i32;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
error: extern blocks must be unsafe
|
||||
--> $DIR/extern-items.rs:7:1
|
||||
--> $DIR/extern-items.rs:6:1
|
||||
|
|
||||
LL | / extern "C" {
|
||||
LL | |
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
//@[edition2021] edition:2021
|
||||
//@[edition2021] check-pass
|
||||
//@[edition2024] edition:2024
|
||||
//@[edition2024] compile-flags: -Zunstable-options
|
||||
|
||||
extern "C" {
|
||||
//[edition2024]~^ ERROR extern blocks must be unsafe
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
//@ revisions: edition2021 edition2024
|
||||
//@[edition2021] edition:2021
|
||||
//@[edition2024] edition:2024
|
||||
//@[edition2024] compile-flags: -Zunstable-options
|
||||
//@ check-pass
|
||||
|
||||
unsafe extern "C" {
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
error: items in `extern` blocks without an `unsafe` qualifier cannot have safety qualifiers
|
||||
--> $DIR/safe-unsafe-on-unadorned-extern-block.rs:8:5
|
||||
--> $DIR/safe-unsafe-on-unadorned-extern-block.rs:7:5
|
||||
|
|
||||
LL | safe static TEST1: i32;
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^
|
||||
@@ -10,7 +10,7 @@ LL | unsafe extern "C" {
|
||||
| ++++++
|
||||
|
||||
error: items in `extern` blocks without an `unsafe` qualifier cannot have safety qualifiers
|
||||
--> $DIR/safe-unsafe-on-unadorned-extern-block.rs:10:5
|
||||
--> $DIR/safe-unsafe-on-unadorned-extern-block.rs:9:5
|
||||
|
|
||||
LL | safe fn test1(i: i32);
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
+3
-3
@@ -1,5 +1,5 @@
|
||||
error: extern blocks must be unsafe
|
||||
--> $DIR/safe-unsafe-on-unadorned-extern-block.rs:6:1
|
||||
--> $DIR/safe-unsafe-on-unadorned-extern-block.rs:5:1
|
||||
|
|
||||
LL | / extern "C" {
|
||||
LL | |
|
||||
@@ -11,7 +11,7 @@ LL | | }
|
||||
| |_^
|
||||
|
||||
error: items in `extern` blocks without an `unsafe` qualifier cannot have safety qualifiers
|
||||
--> $DIR/safe-unsafe-on-unadorned-extern-block.rs:8:5
|
||||
--> $DIR/safe-unsafe-on-unadorned-extern-block.rs:7:5
|
||||
|
|
||||
LL | safe static TEST1: i32;
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^
|
||||
@@ -22,7 +22,7 @@ LL | unsafe extern "C" {
|
||||
| ++++++
|
||||
|
||||
error: items in `extern` blocks without an `unsafe` qualifier cannot have safety qualifiers
|
||||
--> $DIR/safe-unsafe-on-unadorned-extern-block.rs:10:5
|
||||
--> $DIR/safe-unsafe-on-unadorned-extern-block.rs:9:5
|
||||
|
|
||||
LL | safe fn test1(i: i32);
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
//@ revisions: edition2021 edition2024
|
||||
//@[edition2021] edition:2021
|
||||
//@[edition2024] edition:2024
|
||||
//@[edition2024] compile-flags: -Zunstable-options
|
||||
|
||||
extern "C" {
|
||||
//[edition2024]~^ ERROR extern blocks must be unsafe
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
error[E0133]: call to unsafe function `test1` is unsafe and requires unsafe function or block
|
||||
--> $DIR/unsafe-items.rs:18:5
|
||||
--> $DIR/unsafe-items.rs:17:5
|
||||
|
|
||||
LL | test1(TEST1);
|
||||
| ^^^^^^^^^^^^ call to unsafe function
|
||||
@@ -7,7 +7,7 @@ LL | test1(TEST1);
|
||||
= note: consult the function's documentation for information on how to avoid undefined behavior
|
||||
|
||||
error[E0133]: use of extern static is unsafe and requires unsafe function or block
|
||||
--> $DIR/unsafe-items.rs:18:11
|
||||
--> $DIR/unsafe-items.rs:17:11
|
||||
|
|
||||
LL | test1(TEST1);
|
||||
| ^^^^^ use of extern static
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
error[E0133]: call to unsafe function `test1` is unsafe and requires unsafe block
|
||||
--> $DIR/unsafe-items.rs:18:5
|
||||
--> $DIR/unsafe-items.rs:17:5
|
||||
|
|
||||
LL | test1(TEST1);
|
||||
| ^^^^^^^^^^^^ call to unsafe function
|
||||
@@ -7,7 +7,7 @@ LL | test1(TEST1);
|
||||
= note: consult the function's documentation for information on how to avoid undefined behavior
|
||||
|
||||
error[E0133]: use of extern static is unsafe and requires unsafe block
|
||||
--> $DIR/unsafe-items.rs:18:11
|
||||
--> $DIR/unsafe-items.rs:17:11
|
||||
|
|
||||
LL | test1(TEST1);
|
||||
| ^^^^^ use of extern static
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
//@ revisions: edition2021 edition2024
|
||||
//@[edition2021] edition:2021
|
||||
//@[edition2024] edition:2024
|
||||
//@[edition2024] compile-flags: -Zunstable-options
|
||||
|
||||
unsafe extern "C" {
|
||||
unsafe static TEST1: i32;
|
||||
|
||||
Reference in New Issue
Block a user