diff options
Diffstat (limited to 'src/test')
153 files changed, 716 insertions, 457 deletions
diff --git a/src/test/codegen/mem-replace-direct-memcpy.rs b/src/test/codegen/mem-replace-direct-memcpy.rs index b41ef538d71..4318e926e47 100644 --- a/src/test/codegen/mem-replace-direct-memcpy.rs +++ b/src/test/codegen/mem-replace-direct-memcpy.rs @@ -4,6 +4,7 @@ // known to be `1` after inlining). // compile-flags: -C no-prepopulate-passes -Zinline-mir=no +// ignore-debug: the debug assertions get in the way #![crate_type = "lib"] diff --git a/src/test/incremental/issue-61323.rs b/src/test/incremental/issue-61323.rs index 97cbfe408f2..7ce47947cbb 100644 --- a/src/test/incremental/issue-61323.rs +++ b/src/test/incremental/issue-61323.rs @@ -1,7 +1,7 @@ // revisions: rpass cfail enum A { - //[cfail]~^ ERROR 3:1: 3:7: recursive type `A` has infinite size [E0072] + //[cfail]~^ ERROR 3:1: 3:7: recursive types `A` and `C` have infinite size [E0072] B(C), } @@ -10,6 +10,5 @@ struct C(Box<A>); #[cfg(cfail)] struct C(A); -//[cfail]~^ ERROR 12:1: 12:9: recursive type `C` has infinite size [E0072] fn main() {} diff --git a/src/test/mir-opt/const_prop/cast.main.ConstProp.diff b/src/test/mir-opt/const_prop/cast.main.ConstProp.diff index e040a4b3a53..1d4dfc29f70 100644 --- a/src/test/mir-opt/const_prop/cast.main.ConstProp.diff +++ b/src/test/mir-opt/const_prop/cast.main.ConstProp.diff @@ -14,10 +14,10 @@ bb0: { StorageLive(_1); // scope 0 at $DIR/cast.rs:+1:9: +1:10 -- _1 = const 42_u8 as u32 (Misc); // scope 0 at $DIR/cast.rs:+1:13: +1:24 +- _1 = const 42_u8 as u32 (IntToInt); // scope 0 at $DIR/cast.rs:+1:13: +1:24 + _1 = const 42_u32; // scope 0 at $DIR/cast.rs:+1:13: +1:24 StorageLive(_2); // scope 1 at $DIR/cast.rs:+3:9: +3:10 -- _2 = const 42_u32 as u8 (Misc); // scope 1 at $DIR/cast.rs:+3:13: +3:24 +- _2 = const 42_u32 as u8 (IntToInt); // scope 1 at $DIR/cast.rs:+3:13: +3:24 + _2 = const 42_u8; // scope 1 at $DIR/cast.rs:+3:13: +3:24 _0 = const (); // scope 0 at $DIR/cast.rs:+0:11: +4:2 StorageDead(_2); // scope 1 at $DIR/cast.rs:+4:1: +4:2 diff --git a/src/test/mir-opt/const_prop/indirect.main.ConstProp.diff b/src/test/mir-opt/const_prop/indirect.main.ConstProp.diff index 948bb7f56fe..f4c0c5c5e7f 100644 --- a/src/test/mir-opt/const_prop/indirect.main.ConstProp.diff +++ b/src/test/mir-opt/const_prop/indirect.main.ConstProp.diff @@ -13,7 +13,7 @@ bb0: { StorageLive(_1); // scope 0 at $DIR/indirect.rs:+1:9: +1:10 StorageLive(_2); // scope 0 at $DIR/indirect.rs:+1:13: +1:25 -- _2 = const 2_u32 as u8 (Misc); // scope 0 at $DIR/indirect.rs:+1:13: +1:25 +- _2 = const 2_u32 as u8 (IntToInt); // scope 0 at $DIR/indirect.rs:+1:13: +1:25 - _3 = CheckedAdd(_2, const 1_u8); // scope 0 at $DIR/indirect.rs:+1:13: +1:29 - assert(!move (_3.1: bool), "attempt to compute `{} + {}`, which would overflow", move _2, const 1_u8) -> bb1; // scope 0 at $DIR/indirect.rs:+1:13: +1:29 + _2 = const 2_u8; // scope 0 at $DIR/indirect.rs:+1:13: +1:25 diff --git a/src/test/mir-opt/enum_cast.bar.mir_map.0.mir b/src/test/mir-opt/enum_cast.bar.mir_map.0.mir index afca2fd2960..8b12525b576 100644 --- a/src/test/mir-opt/enum_cast.bar.mir_map.0.mir +++ b/src/test/mir-opt/enum_cast.bar.mir_map.0.mir @@ -7,7 +7,7 @@ fn bar(_1: Bar) -> usize { bb0: { _2 = discriminant(_1); // scope 0 at $DIR/enum_cast.rs:+1:5: +1:17 - _0 = move _2 as usize (Misc); // scope 0 at $DIR/enum_cast.rs:+1:5: +1:17 + _0 = move _2 as usize (IntToInt); // scope 0 at $DIR/enum_cast.rs:+1:5: +1:17 return; // scope 0 at $DIR/enum_cast.rs:+2:2: +2:2 } } diff --git a/src/test/mir-opt/enum_cast.boo.mir_map.0.mir b/src/test/mir-opt/enum_cast.boo.mir_map.0.mir index c79596d7899..a77f4d06c23 100644 --- a/src/test/mir-opt/enum_cast.boo.mir_map.0.mir +++ b/src/test/mir-opt/enum_cast.boo.mir_map.0.mir @@ -7,7 +7,7 @@ fn boo(_1: Boo) -> usize { bb0: { _2 = discriminant(_1); // scope 0 at $DIR/enum_cast.rs:+1:5: +1:17 - _0 = move _2 as usize (Misc); // scope 0 at $DIR/enum_cast.rs:+1:5: +1:17 + _0 = move _2 as usize (IntToInt); // scope 0 at $DIR/enum_cast.rs:+1:5: +1:17 return; // scope 0 at $DIR/enum_cast.rs:+2:2: +2:2 } } diff --git a/src/test/mir-opt/enum_cast.droppy.mir_map.0.mir b/src/test/mir-opt/enum_cast.droppy.mir_map.0.mir index 8ced136db84..ae3e71df8c6 100644 --- a/src/test/mir-opt/enum_cast.droppy.mir_map.0.mir +++ b/src/test/mir-opt/enum_cast.droppy.mir_map.0.mir @@ -26,7 +26,7 @@ fn droppy() -> () { FakeRead(ForLet(None), _2); // scope 0 at $DIR/enum_cast.rs:+2:13: +2:14 StorageLive(_3); // scope 3 at $DIR/enum_cast.rs:+5:13: +5:14 _4 = discriminant(_2); // scope 3 at $DIR/enum_cast.rs:+5:17: +5:27 - _3 = move _4 as usize (Misc); // scope 3 at $DIR/enum_cast.rs:+5:17: +5:27 + _3 = move _4 as usize (IntToInt); // scope 3 at $DIR/enum_cast.rs:+5:17: +5:27 FakeRead(ForLet(None), _3); // scope 3 at $DIR/enum_cast.rs:+5:13: +5:14 _1 = const (); // scope 0 at $DIR/enum_cast.rs:+1:5: +6:6 StorageDead(_3); // scope 1 at $DIR/enum_cast.rs:+6:5: +6:6 diff --git a/src/test/mir-opt/enum_cast.foo.mir_map.0.mir b/src/test/mir-opt/enum_cast.foo.mir_map.0.mir index 39d6adeba33..9e44d9158e0 100644 --- a/src/test/mir-opt/enum_cast.foo.mir_map.0.mir +++ b/src/test/mir-opt/enum_cast.foo.mir_map.0.mir @@ -7,7 +7,7 @@ fn foo(_1: Foo) -> usize { bb0: { _2 = discriminant(_1); // scope 0 at $DIR/enum_cast.rs:+1:5: +1:17 - _0 = move _2 as usize (Misc); // scope 0 at $DIR/enum_cast.rs:+1:5: +1:17 + _0 = move _2 as usize (IntToInt); // scope 0 at $DIR/enum_cast.rs:+1:5: +1:17 return; // scope 0 at $DIR/enum_cast.rs:+2:2: +2:2 } } diff --git a/src/test/mir-opt/funky_arms.float_to_exponential_common.ConstProp.diff b/src/test/mir-opt/funky_arms.float_to_exponential_common.ConstProp.diff index e83a358b725..6ab63e82e35 100644 --- a/src/test/mir-opt/funky_arms.float_to_exponential_common.ConstProp.diff +++ b/src/test/mir-opt/funky_arms.float_to_exponential_common.ConstProp.diff @@ -91,7 +91,7 @@ StorageLive(_15); // scope 3 at $DIR/funky_arms.rs:+15:59: +15:75 StorageLive(_16); // scope 3 at $DIR/funky_arms.rs:+15:59: +15:68 _16 = _10; // scope 3 at $DIR/funky_arms.rs:+15:59: +15:68 - _15 = move _16 as u32 (Misc); // scope 3 at $DIR/funky_arms.rs:+15:59: +15:75 + _15 = move _16 as u32 (IntToInt); // scope 3 at $DIR/funky_arms.rs:+15:59: +15:75 StorageDead(_16); // scope 3 at $DIR/funky_arms.rs:+15:74: +15:75 _14 = Add(move _15, const 1_u32); // scope 3 at $DIR/funky_arms.rs:+15:59: +15:79 StorageDead(_15); // scope 3 at $DIR/funky_arms.rs:+15:78: +15:79 diff --git a/src/test/mir-opt/if_condition_int.dont_remove_comparison.SimplifyComparisonIntegral.diff b/src/test/mir-opt/if_condition_int.dont_remove_comparison.SimplifyComparisonIntegral.diff index 3f612e03f58..ed53c9a956c 100644 --- a/src/test/mir-opt/if_condition_int.dont_remove_comparison.SimplifyComparisonIntegral.diff +++ b/src/test/mir-opt/if_condition_int.dont_remove_comparison.SimplifyComparisonIntegral.diff @@ -31,7 +31,7 @@ StorageLive(_6); // scope 1 at $DIR/if-condition-int.rs:+4:23: +4:31 StorageLive(_7); // scope 1 at $DIR/if-condition-int.rs:+4:23: +4:24 _7 = _2; // scope 1 at $DIR/if-condition-int.rs:+4:23: +4:24 - _6 = move _7 as i32 (Misc); // scope 1 at $DIR/if-condition-int.rs:+4:23: +4:31 + _6 = move _7 as i32 (IntToInt); // scope 1 at $DIR/if-condition-int.rs:+4:23: +4:31 StorageDead(_7); // scope 1 at $DIR/if-condition-int.rs:+4:30: +4:31 _0 = Add(const 100_i32, move _6); // scope 1 at $DIR/if-condition-int.rs:+4:17: +4:31 StorageDead(_6); // scope 1 at $DIR/if-condition-int.rs:+4:30: +4:31 @@ -43,7 +43,7 @@ StorageLive(_4); // scope 1 at $DIR/if-condition-int.rs:+3:23: +3:31 StorageLive(_5); // scope 1 at $DIR/if-condition-int.rs:+3:23: +3:24 _5 = _2; // scope 1 at $DIR/if-condition-int.rs:+3:23: +3:24 - _4 = move _5 as i32 (Misc); // scope 1 at $DIR/if-condition-int.rs:+3:23: +3:31 + _4 = move _5 as i32 (IntToInt); // scope 1 at $DIR/if-condition-int.rs:+3:23: +3:31 StorageDead(_5); // scope 1 at $DIR/if-condition-int.rs:+3:30: +3:31 _0 = Add(const 10_i32, move _4); // scope 1 at $DIR/if-condition-int.rs:+3:18: +3:31 StorageDead(_4); // scope 1 at $DIR/if-condition-int.rs:+3:30: +3:31 diff --git a/src/test/mir-opt/inline/asm-unwind.rs b/src/test/mir-opt/inline/asm-unwind.rs new file mode 100644 index 00000000000..c03feb43312 --- /dev/null +++ b/src/test/mir-opt/inline/asm-unwind.rs @@ -0,0 +1,22 @@ +// Tests inlining of `may_unwind` inline assembly. +// +// ignore-wasm32-bare compiled with panic=abort by default +// needs-asm-support +#![feature(asm_unwind)] + +struct D; + +impl Drop for D { + fn drop(&mut self) {} +} + +#[inline(always)] +fn foo() { + let _d = D; + unsafe { std::arch::asm!("", options(may_unwind)) }; +} + +// EMIT_MIR asm_unwind.main.Inline.diff +pub fn main() { + foo(); +} diff --git a/src/test/mir-opt/inline/asm_unwind.main.Inline.diff b/src/test/mir-opt/inline/asm_unwind.main.Inline.diff new file mode 100644 index 00000000000..57072fc0ad3 --- /dev/null +++ b/src/test/mir-opt/inline/asm_unwind.main.Inline.diff @@ -0,0 +1,45 @@ +- // MIR for `main` before Inline ++ // MIR for `main` after Inline + + fn main() -> () { + let mut _0: (); // return place in scope 0 at $DIR/asm-unwind.rs:+0:15: +0:15 + let _1: (); // in scope 0 at $DIR/asm-unwind.rs:+1:5: +1:10 ++ scope 1 (inlined foo) { // at $DIR/asm-unwind.rs:21:5: 21:10 ++ let _2: D; // in scope 1 at $DIR/asm-unwind.rs:15:9: 15:11 ++ scope 2 { ++ debug _d => _2; // in scope 2 at $DIR/asm-unwind.rs:15:9: 15:11 ++ scope 3 { ++ } ++ } ++ } + + bb0: { + StorageLive(_1); // scope 0 at $DIR/asm-unwind.rs:+1:5: +1:10 +- _1 = foo() -> bb1; // scope 0 at $DIR/asm-unwind.rs:+1:5: +1:10 +- // mir::Constant +- // + span: $DIR/asm-unwind.rs:21:5: 21:8 +- // + literal: Const { ty: fn() {foo}, val: Value(<ZST>) } ++ StorageLive(_2); // scope 1 at $DIR/asm-unwind.rs:15:9: 15:11 ++ asm!("", options(MAY_UNWIND)) -> [return: bb1, unwind: bb3]; // scope 3 at $DIR/asm-unwind.rs:16:14: 16:54 + } + + bb1: { ++ drop(_2) -> bb2; // scope 1 at $DIR/asm-unwind.rs:17:1: 17:2 ++ } ++ ++ bb2: { ++ StorageDead(_2); // scope 1 at $DIR/asm-unwind.rs:17:1: 17:2 + StorageDead(_1); // scope 0 at $DIR/asm-unwind.rs:+1:10: +1:11 + _0 = const (); // scope 0 at $DIR/asm-unwind.rs:+0:15: +2:2 + return; // scope 0 at $DIR/asm-unwind.rs:+2:2: +2:2 ++ } ++ ++ bb3 (cleanup): { ++ drop(_2) -> bb4; // scope 1 at $DIR/asm-unwind.rs:17:1: 17:2 ++ } ++ ++ bb4 (cleanup): { ++ resume; // scope 1 at $DIR/asm-unwind.rs:14:1: 17:2 + } + } + diff --git a/src/test/mir-opt/inline/inline_diverging.g.Inline.diff b/src/test/mir-opt/inline/inline_diverging.g.Inline.diff index a25f1454fac..a71baad3e3e 100644 --- a/src/test/mir-opt/inline/inline_diverging.g.Inline.diff +++ b/src/test/mir-opt/inline/inline_diverging.g.Inline.diff @@ -25,7 +25,7 @@ bb1: { StorageLive(_4); // scope 0 at $DIR/inline-diverging.rs:+2:9: +2:10 _4 = _1; // scope 0 at $DIR/inline-diverging.rs:+2:9: +2:10 - _0 = move _4 as u32 (Misc); // scope 0 at $DIR/inline-diverging.rs:+2:9: +2:17 + _0 = move _4 as u32 (IntToInt); // scope 0 at $DIR/inline-diverging.rs:+2:9: +2:17 StorageDead(_4); // scope 0 at $DIR/inline-diverging.rs:+2:16: +2:17 StorageDead(_2); // scope 0 at $DIR/inline-diverging.rs:+5:5: +5:6 return; // scope 0 at $DIR/inline-diverging.rs:+6:2: +6:2 diff --git a/src/test/mir-opt/issue_101973.inner.ConstProp.diff b/src/test/mir-opt/issue_101973.inner.ConstProp.diff index 89733a9a2cb..281afe4be17 100644 --- a/src/test/mir-opt/issue_101973.inner.ConstProp.diff +++ b/src/test/mir-opt/issue_101973.inner.ConstProp.diff @@ -90,9 +90,9 @@ StorageDead(_16); // scope 3 at $SRC_DIR/core/src/num/uint_macros.rs:LL:COL StorageDead(_6); // scope 0 at $DIR/issue-101973.rs:+1:57: +1:58 StorageDead(_4); // scope 0 at $DIR/issue-101973.rs:+1:57: +1:58 - _2 = move _3 as i32 (Misc); // scope 0 at $DIR/issue-101973.rs:+1:5: +1:65 + _2 = move _3 as i32 (IntToInt); // scope 0 at $DIR/issue-101973.rs:+1:5: +1:65 StorageDead(_3); // scope 0 at $DIR/issue-101973.rs:+1:64: +1:65 - _0 = move _2 as i64 (Misc); // scope 0 at $DIR/issue-101973.rs:+1:5: +1:72 + _0 = move _2 as i64 (IntToInt); // scope 0 at $DIR/issue-101973.rs:+1:5: +1:72 StorageDead(_2); // scope 0 at $DIR/issue-101973.rs:+1:71: +1:72 return; // scope 0 at $DIR/issue-101973.rs:+2:2: +2:2 } diff --git a/src/test/mir-opt/lower_intrinsics.f_copy_nonoverlapping.LowerIntrinsics.diff b/src/test/mir-opt/lower_intrinsics.f_copy_nonoverlapping.LowerIntrinsics.diff index 4fb6752b619..ec15fd1ef74 100644 --- a/src/test/mir-opt/lower_intrinsics.f_copy_nonoverlapping.LowerIntrinsics.diff +++ b/src/test/mir-opt/lower_intrinsics.f_copy_nonoverlapping.LowerIntrinsics.diff @@ -36,7 +36,7 @@ _7 = &_1; // scope 3 at $DIR/lower_intrinsics.rs:+4:29: +4:33 _6 = &raw const (*_7); // scope 3 at $DIR/lower_intrinsics.rs:+4:29: +4:33 _5 = _6; // scope 3 at $DIR/lower_intrinsics.rs:+4:29: +4:45 - _4 = move _5 as *const i32 (Misc); // scope 3 at $DIR/lower_intrinsics.rs:+4:29: +4:59 + _4 = move _5 as *const i32 (PtrToPtr); // scope 3 at $DIR/lower_intrinsics.rs:+4:29: +4:59 StorageDead(_5); // scope 3 at $DIR/lower_intrinsics.rs:+4:58: +4:59 StorageLive(_8); // scope 3 at $DIR/lower_intrinsics.rs:+4:61: +4:91 StorageLive(_9); // scope 3 at $DIR/lower_intrinsics.rs:+4:61: +4:79 @@ -45,7 +45,7 @@ _11 = &mut _2; // scope 3 at $DIR/lower_intrinsics.rs:+4:61: +4:69 _10 = &raw mut (*_11); // scope 3 at $DIR/lower_intrinsics.rs:+4:61: +4:69 _9 = _10; // scope 3 at $DIR/lower_intrinsics.rs:+4:61: +4:79 - _8 = move _9 as *mut i32 (Misc); // scope 3 at $DIR/lower_intrinsics.rs:+4:61: +4:91 + _8 = move _9 as *mut i32 (PtrToPtr); // scope 3 at $DIR/lower_intrinsics.rs:+4:61: +4:91 StorageDead(_9); // scope 3 at $DIR/lower_intrinsics.rs:+4:90: +4:91 - _3 = copy_nonoverlapping::<i32>(move _4, move _8, const 0_usize) -> bb1; // scope 3 at $DIR/lower_intrinsics.rs:+4:9: +4:95 - // mir::Constant diff --git a/src/test/mir-opt/slice_drop_shim.core.ptr-drop_in_place.[String].AddMovesForPackedDrops.before.mir b/src/test/mir-opt/slice_drop_shim.core.ptr-drop_in_place.[String].AddMovesForPackedDrops.before.mir index b4b317e84af..31ccf14549c 100644 --- a/src/test/mir-opt/slice_drop_shim.core.ptr-drop_in_place.[String].AddMovesForPackedDrops.before.mir +++ b/src/test/mir-opt/slice_drop_shim.core.ptr-drop_in_place.[String].AddMovesForPackedDrops.before.mir @@ -84,7 +84,7 @@ fn std::ptr::drop_in_place(_1: *mut [String]) -> () { bb13: { _15 = &raw mut (*_1); // scope 0 at $SRC_DIR/core/src/ptr/mod.rs:+0:1: +0:56 - _9 = move _15 as *mut std::string::String (Misc); // scope 0 at $SRC_DIR/core/src/ptr/mod.rs:+0:1: +0:56 + _9 = move _15 as *mut std::string::String (PtrToPtr); // scope 0 at $SRC_DIR/core/src/ptr/mod.rs:+0:1: +0:56 _10 = Offset(_9, move _3); // scope 0 at $SRC_DIR/core/src/ptr/mod.rs:+0:1: +0:56 goto -> bb12; // scope 0 at $SRC_DIR/core/src/ptr/mod.rs:+0:1: +0:56 } diff --git a/src/test/run-make/issue-36710/Makefile b/src/test/run-make/issue-36710/Makefile index b5270ad2ba9..986a3f4e64b 100644 --- a/src/test/run-make/issue-36710/Makefile +++ b/src/test/run-make/issue-36710/Makefile @@ -1,10 +1,6 @@ -# ignore-riscv64 $(call RUN,foo) expects to run the target executable natively +# ignore-cross-compile $(call RUN,foo) expects to run the target executable natively # so it won't work with remote-test-server -# ignore-arm Another build using remote-test-server # ignore-none no-std is not supported -# ignore-wasm32 FIXME: don't attempt to compile C++ to WASM -# ignore-wasm64 FIXME: don't attempt to compile C++ to WASM -# ignore-nvptx64-nvidia-cuda FIXME: can't find crate for `std` # ignore-musl FIXME: this makefile needs teaching how to use a musl toolchain # (see dist-i586-gnu-i586-i686-musl Dockerfile) diff --git a/src/test/rustdoc-gui/anchor-navigable.goml b/src/test/rustdoc-gui/anchor-navigable.goml index 14653f0bfc7..9d5c55a1e1d 100644 --- a/src/test/rustdoc-gui/anchor-navigable.goml +++ b/src/test/rustdoc-gui/anchor-navigable.goml @@ -4,7 +4,7 @@ // anchor and the `impl Foo`. If there were a gap, this would cause an annoying // problem: you hover `impl Foo` to see the anchor, then when you move your // mouse to the left, the anchor disappears before you reach it. -goto: file://|DOC_PATH|/test_docs/struct.Foo.html +goto: "file://" + |DOC_PATH| + "/test_docs/struct.Foo.html" // We check that ".item-info" is bigger than its content. move-cursor-to: ".impl" assert-property: (".impl > a.anchor", {"offsetWidth": "8"}) diff --git a/src/test/rustdoc-gui/anchors.goml b/src/test/rustdoc-gui/anchors.goml index fc05fe669d1..6673e9c20fe 100644 --- a/src/test/rustdoc-gui/anchors.goml +++ b/src/test/rustdoc-gui/anchors.goml @@ -1,5 +1,5 @@ // This test is to ensure that the anchors (`§`) have the expected color and position. -goto: file://|DOC_PATH|/staged_api/struct.Foo.html +goto: "file://" + |DOC_PATH| + "/staged_api/struct.Foo.html" // This is needed to ensure that the text color is computed. show-text: true @@ -36,7 +36,7 @@ assert-css: ( {"color": "rgb(56, 115, 173)", "text-decoration": "none solid rgb(56, 115, 173)"}, ) -goto: file://|DOC_PATH|/test_docs/struct.HeavilyDocumentedStruct.html +goto: "file://" + |DOC_PATH| + "/test_docs/struct.HeavilyDocumentedStruct.html" assert-css: ("#top-doc-prose-title", {"color": "rgb(0, 0, 0)"}) @@ -57,7 +57,7 @@ assert-css: ("#title-for-struct-impl-item-doc", {"margin-left": "0px"}) // We do the same checks with the dark theme now. // local-storage: {"rustdoc-theme": "dark", "rustdoc-use-system-theme": "false"} -goto: file://|DOC_PATH|/staged_api/struct.Foo.html +goto: "file://" + |DOC_PATH| + "/staged_api/struct.Foo.html" assert-css: ("#toggle-all-docs", {"color": "rgb(221, 221, 221)"}) assert-css: (".fqn a:nth-of-type(1)", {"color": "rgb(221, 221, 221)"}) @@ -86,7 +86,7 @@ assert-css: ( {"color": "rgb(210, 153, 29)", "text-decoration": "none solid rgb(210, 153, 29)"}, ) -goto: file://|DOC_PATH|/test_docs/struct.HeavilyDocumentedStruct.html +goto: "file://" + |DOC_PATH| + "/test_docs/struct.HeavilyDocumentedStruct.html" assert-css: ("#top-doc-prose-title", {"color": "rgb(221, 221, 221)"}) @@ -107,7 +107,7 @@ assert-css: ("#title-for-struct-impl-item-doc", {"margin-left": "0px"}) // We do the same checks with the ayu theme now. // local-storage: {"rustdoc-theme": "ayu", "rustdoc-use-system-theme": "false"} -goto: file://|DOC_PATH|/staged_api/struct.Foo.html +goto: "file://" + |DOC_PATH| + "/staged_api/struct.Foo.html" assert-css: ("#toggle-all-docs", {"color": "rgb(197, 197, 197)"}) assert-css: (".fqn a:nth-of-type(1)", {"color": "rgb(255, 255, 255)"}) @@ -136,7 +136,7 @@ assert-css: ( {"color": "rgb(57, 175, 215)", "text-decoration": "none solid rgb(57, 175, 215)"}, ) -goto: file://|DOC_PATH|/test_docs/struct.HeavilyDocumentedStruct.html +goto: "file://" + |DOC_PATH| + "/test_docs/struct.HeavilyDocumentedStruct.html" assert-css: ("#top-doc-prose-title", {"color": "rgb(255, 255, 255)"}) diff --git a/src/test/rustdoc-gui/auto-hide-trait-implementations.goml b/src/test/rustdoc-gui/auto-hide-trait-implementations.goml index 7b1358fedc3..0a619c3524a 100644 --- a/src/test/rustdoc-gui/auto-hide-trait-implementations.goml +++ b/src/test/rustdoc-gui/auto-hide-trait-implementations.goml @@ -1,5 +1,5 @@ // Checks that the setting "auto hide trait implementations" is working as expected. -goto: file://|DOC_PATH|/test_docs/struct.Foo.html +goto: "file://" + |DOC_PATH| + "/test_docs/struct.Foo.html" // By default, the trait implementations are not collapsed. assert-attribute: ("#trait-implementations-list > details", {"open": ""}, ALL) diff --git a/src/test/rustdoc-gui/basic-code.goml b/src/test/rustdoc-gui/basic-code.goml index 79090b499c8..f4ba5a12845 100644 --- a/src/test/rustdoc-gui/basic-code.goml +++ b/src/test/rustdoc-gui/basic-code.goml @@ -1,3 +1,3 @@ -goto: file://|DOC_PATH|/test_docs/index.html +goto: "file://" + |DOC_PATH| + "/test_docs/index.html" click: ".srclink" assert-count: (".src-line-numbers", 1) diff --git a/src/test/rustdoc-gui/basic.goml b/src/test/rustdoc-gui/basic.goml index 239e51a9129..60292835bc0 100644 --- a/src/test/rustdoc-gui/basic.goml +++ b/src/test/rustdoc-gui/basic.goml @@ -1,4 +1,4 @@ -goto: file://|DOC_PATH|/test_docs/index.html +goto: "file://" + |DOC_PATH| + "/test_docs/index.html" assert: ("#functions") -goto: ./struct.Foo.html +goto: "./struct.Foo.html" assert: ("div.item-decl") diff --git a/src/test/rustdoc-gui/check-code-blocks-margin.goml b/src/test/rustdoc-gui/check-code-blocks-margin.goml index f2fc3e9afc2..c2cec00204d 100644 --- a/src/test/rustdoc-gui/check-code-blocks-margin.goml +++ b/src/test/rustdoc-gui/check-code-blocks-margin.goml @@ -1,5 +1,5 @@ // This test ensures that the docblock elements have the appropriate left margin. -goto: file://|DOC_PATH|/test_docs/fn.foo.html +goto: "file://" + |DOC_PATH| + "/test_docs/fn.foo.html" // The top docblock elements shouldn't have left margin... assert-css: ("#main-content .item-decl", {"margin-left": "0px"}) // ... but all the others should! diff --git a/src/test/rustdoc-gui/check-stab-in-docblock.goml b/src/test/rustdoc-gui/check-stab-in-docblock.goml index afe25195100..266fa999728 100644 --- a/src/test/rustdoc-gui/check-stab-in-docblock.goml +++ b/src/test/rustdoc-gui/check-stab-in-docblock.goml @@ -1,6 +1,6 @@ // This test checks that using `.stab` attributes in `.docblock` elements doesn't // create scrollable paragraphs. -goto: file://|DOC_PATH|/test_docs/index.html +goto: "file://" + |DOC_PATH| + "/test_docs/index.html" // Needs the text to be display to check for scrollable content. show-text: true size: (786, 600) diff --git a/src/test/rustdoc-gui/check_info_sign_position.goml b/src/test/rustdoc-gui/check_info_sign_position.goml index 47a78f02fb6..f36e73fc5e9 100644 --- a/src/test/rustdoc-gui/check_info_sign_position.goml +++ b/src/test/rustdoc-gui/check_info_sign_position.goml @@ -1,7 +1,7 @@ // This test checks the position of the information on the code blocks (like // `compile_fail` or `ignore`). -goto: file://|DOC_PATH|/test_docs/index.html -goto: ./fn.check_list_code_block.html +goto: "file://" + |DOC_PATH| + "/test_docs/index.html" +goto: "./fn.check_list_code_block.html" // If the codeblock is the first element of the docblock, the information tooltip must have // have some top margin to avoid going over the toggle (the "[+]"). assert-css: (".docblock > .example-wrap.compile_fail .tooltip", { "margin-top": "16px" }) diff --git a/src/test/rustdoc-gui/code-blocks-overflow.goml b/src/test/rustdoc-gui/code-blocks-overflow.goml index ee4dad444e9..fbf0e890bdc 100644 --- a/src/test/rustdoc-gui/code-blocks-overflow.goml +++ b/src/test/rustdoc-gui/code-blocks-overflow.goml @@ -1,5 +1,5 @@ // This test ensures that codeblocks content don't overflow. -goto: file://|DOC_PATH|/lib2/sub_mod/struct.Foo.html +goto: "file://" + |DOC_PATH| + "/lib2/sub_mod/struct.Foo.html" size: (1080, 600) // There should be two codeblocks: a rust one and a non-rust one. assert-count: (".docblock > .example-wrap", 2) diff --git a/src/test/rustdoc-gui/code-color.goml b/src/test/rustdoc-gui/code-color.goml index 2f95bfb6b17..4136677cdd5 100644 --- a/src/test/rustdoc-gui/code-color.goml +++ b/src/test/rustdoc-gui/code-color.goml @@ -2,7 +2,7 @@ // check that the rule isn't applied on other "<code>" elements. // // While we're at it, we also check it for the other themes. -goto: file://|DOC_PATH|/test_docs/fn.foo.html +goto: "file://" + |DOC_PATH| + "/test_docs/fn.foo.html" // If the text isn't displayed, the browser doesn't compute color style correctly... show-text: true // Set the theme to dark. diff --git a/src/test/rustdoc-gui/code-sidebar-toggle.goml b/src/test/rustdoc-gui/code-sidebar-toggle.goml index 867db056948..00a0ea1e1a2 100644 --- a/src/test/rustdoc-gui/code-sidebar-toggle.goml +++ b/src/test/rustdoc-gui/code-sidebar-toggle.goml @@ -1,5 +1,5 @@ // This test checks that the source code pages sidebar toggle is working as expected. -goto: file://|DOC_PATH|/test_docs/index.html +goto: "file://" + |DOC_PATH| + "/test_docs/index.html" click: ".srclink" wait-for: "#sidebar-toggle" click: "#sidebar-toggle" diff --git a/src/test/rustdoc-gui/code-tags.goml b/src/test/rustdoc-gui/code-tags.goml index 8d399a9a589..837a2c1d57f 100644 --- a/src/test/rustdoc-gui/code-tags.goml +++ b/src/test/rustdoc-gui/code-tags.goml @@ -1,5 +1,5 @@ // This test ensures that items and documentation code blocks are wrapped in <pre><code> -goto: file://|DOC_PATH|/test_docs/fn.foo.html +goto: "file://" + |DOC_PATH| + "/test_docs/fn.foo.html" size: (1080, 600) // There should be four doc codeblocks. // Check that their content is inside <pre><code> @@ -7,14 +7,14 @@ assert-count: (".example-wrap pre > code", 4) // Check that function signature is inside <pre><code> assert: "pre.rust.fn > code" -goto: file://|DOC_PATH|/test_docs/struct.Foo.html +goto: "file://" + |DOC_PATH| + "/test_docs/struct.Foo.html" assert: "pre.rust.struct > code" -goto: file://|DOC_PATH|/test_docs/enum.AnEnum.html +goto: "file://" + |DOC_PATH| + "/test_docs/enum.AnEnum.html" assert: "pre.rust.enum > code" -goto: file://|DOC_PATH|/test_docs/trait.AnotherOne.html +goto: "file://" + |DOC_PATH| + "/test_docs/trait.AnotherOne.html" assert: "pre.rust.trait > code" -goto: file://|DOC_PATH|/test_docs/type.SomeType.html +goto: "file://" + |DOC_PATH| + "/test_docs/type.SomeType.html" assert: "pre.rust.typedef > code" diff --git a/src/test/rustdoc-gui/codeblock-tooltip.goml b/src/test/rustdoc-gui/codeblock-tooltip.goml index 21a9e120c80..f01e0c3c6cc 100644 --- a/src/test/rustdoc-gui/codeblock-tooltip.goml +++ b/src/test/rustdoc-gui/codeblock-tooltip.goml @@ -1,5 +1,5 @@ // Checking the colors of the codeblocks tooltips. -goto: file://|DOC_PATH|/test_docs/fn.foo.html +goto: "file://" + |DOC_PATH| + "/test_docs/fn.foo.html" show-text: true // Dark theme. diff --git a/src/test/rustdoc-gui/default-settings.goml b/src/test/rustdoc-gui/default-settings.goml index 90f0b087a1b..ab27b001eb6 100644 --- a/src/test/rustdoc-gui/default-settings.goml +++ b/src/test/rustdoc-gui/default-settings.goml @@ -2,7 +2,7 @@ // // The "settings" crate uses "ayu" as default setting, which is what we will // check. -goto: file://|DOC_PATH|/settings/index.html +goto: "file://" + |DOC_PATH| + "/settings/index.html" // Wait a bit to be sure the default theme is applied. // If the theme isn't applied, the command will time out. wait-for-css: ("body", {"background-color": "rgb(15, 20, 25)"}) diff --git a/src/test/rustdoc-gui/docblock-big-code-mobile.goml b/src/test/rustdoc-gui/docblock-big-code-mobile.goml index 02f79f1fcd7..9f8df44d762 100644 --- a/src/test/rustdoc-gui/docblock-big-code-mobile.goml +++ b/src/test/rustdoc-gui/docblock-big-code-mobile.goml @@ -1,7 +1,7 @@ // If we have a long `<code>`, we need to ensure that it'll be fully displayed on mobile, meaning // that it'll be on two lines. emulate: "iPhone 8" // it has the following size: (375, 667) -goto: file://|DOC_PATH|/test_docs/long_code_block/index.html +goto: "file://" + |DOC_PATH| + "/test_docs/long_code_block/index.html" // We now check that the block is on two lines: show-text: true // We need to enable text draw to be able to have the "real" size // Little explanations for this test: if the text wasn't displayed on two lines, it would take diff --git a/src/test/rustdoc-gui/docblock-code-block-line-number.goml b/src/test/rustdoc-gui/docblock-code-block-line-number.goml index 4e1e83c0fbd..911ee34be94 100644 --- a/src/test/rustdoc-gui/docblock-code-block-line-number.goml +++ b/src/test/rustdoc-gui/docblock-code-block-line-number.goml @@ -1,5 +1,5 @@ // Checks that the setting "line numbers" is working as expected. -goto: file://|DOC_PATH|/test_docs/fn.foo.html +goto: "file://" + |DOC_PATH| + "/test_docs/fn.foo.html" // We check that without this setting, there is no line number displayed. assert-false: "pre.example-line-numbers" diff --git a/src/test/rustdoc-gui/docblock-details.goml b/src/test/rustdoc-gui/docblock-details.goml index c0c4d1b43aa..f3cbe5767ae 100644 --- a/src/test/rustdoc-gui/docblock-details.goml +++ b/src/test/rustdoc-gui/docblock-details.goml @@ -1,5 +1,5 @@ // This ensures that the `<details>`/`<summary>` elements are displayed as expected. -goto: file://|DOC_PATH|/test_docs/details/struct.Details.html +goto: "file://" + |DOC_PATH| + "/test_docs/details/struct.Details.html" show-text: true local-storage: {"rustdoc-theme": "dark", "rustdoc-use-system-theme": "false"} reload: diff --git a/src/test/rustdoc-gui/docblock-table-overflow.goml b/src/test/rustdoc-gui/docblock-table-overflow.goml index ef0d37c902e..d8670089ad8 100644 --- a/src/test/rustdoc-gui/docblock-table-overflow.goml +++ b/src/test/rustdoc-gui/docblock-table-overflow.goml @@ -1,5 +1,5 @@ // This test ensures that the type declaration content overflow is handled inside the <pre> directly. -goto: file://|DOC_PATH|/lib2/long_table/struct.Foo.html +goto: "file://" + |DOC_PATH| + "/lib2/long_table/struct.Foo.html" // We set a fixed size so there is no chance of "random" resize. size: (1100, 800) // Logically, the ".docblock" and the "<p>" should have the same scroll width. diff --git a/src/test/rustdoc-gui/docblock-table.goml b/src/test/rustdoc-gui/docblock-table.goml index 7263156ab2b..4e316ce0bcb 100644 --- a/src/test/rustdoc-gui/docblock-table.goml +++ b/src/test/rustdoc-gui/docblock-table.goml @@ -1,4 +1,4 @@ -goto: file://|DOC_PATH|/test_docs/doc_block_table/struct.DocBlockTable.html#method.func +goto: "file://" + |DOC_PATH| + "/test_docs/doc_block_table/struct.DocBlockTable.html#method.func" compare-elements-css: (".impl-items .docblock table th", ".top-doc .docblock table th", ["border"]) compare-elements-css: (".impl-items .docblock table td", ".top-doc .docblock table td", ["border"]) diff --git a/src/test/rustdoc-gui/duplicate-macro-reexport.goml b/src/test/rustdoc-gui/duplicate-macro-reexport.goml index 9ea5990622a..496203c128e 100644 --- a/src/test/rustdoc-gui/duplicate-macro-reexport.goml +++ b/src/test/rustdoc-gui/duplicate-macro-reexport.goml @@ -1,5 +1,5 @@ // This test ensures that there is no macro duplicates in the sidebar. -goto: file://|DOC_PATH|/test_docs/macro.a.html +goto: "file://" + |DOC_PATH| + "/test_docs/macro.a.html" // Waiting for the elements in the sidebar to be rendered. wait-for: ".sidebar-elems .macro" // Check there is only one macro named "a" listed in the sidebar. diff --git a/src/test/rustdoc-gui/escape-key.goml b/src/test/rustdoc-gui/escape-key.goml index a5afb037d0f..78e9f23093e 100644 --- a/src/test/rustdoc-gui/escape-key.goml +++ b/src/test/rustdoc-gui/escape-key.goml @@ -1,6 +1,6 @@ // This test ensures that the "Escape" shortcut is handled correctly based on the // current content displayed. -goto: file://|DOC_PATH|/test_docs/index.html +goto: "file://" + |DOC_PATH| + "/test_docs/index.html" // First, we check that the search results are hidden when the Escape key is pressed. write: (".search-input", "test") // To be SURE that the search will be run. diff --git a/src/test/rustdoc-gui/font-weight.goml b/src/test/rustdoc-gui/font-weight.goml index d5c934551a5..8ba005b0c35 100644 --- a/src/test/rustdoc-gui/font-weight.goml +++ b/src/test/rustdoc-gui/font-weight.goml @@ -1,5 +1,5 @@ // This test checks that the font weight is correctly applied. -goto: file://|DOC_PATH|/lib2/struct.Foo.html +goto: "file://" + |DOC_PATH| + "/lib2/struct.Foo.html" assert-css: ("//*[@class='item-decl']//a[text()='Alias']", {"font-weight": "400"}) assert-css: ( "//*[@class='structfield small-section-header']//a[text()='Alias']", @@ -9,13 +9,13 @@ assert-css: ("#method\.a_method > .code-header", {"font-weight": "600"}) assert-css: ("#associatedtype\.X > .code-header", {"font-weight": "600"}) assert-css: ("#associatedconstant\.Y > .code-header", {"font-weight": "600"}) -goto: file://|DOC_PATH|/test_docs/type.SomeType.html +goto: "file://" + |DOC_PATH| + "/test_docs/type.SomeType.html" assert-css: (".top-doc .docblock p", {"font-weight": "400"}, ALL) -goto: file://|DOC_PATH|/test_docs/struct.Foo.html +goto: "file://" + |DOC_PATH| + "/test_docs/struct.Foo.html" assert-css: (".impl-items .method > .code-header", {"font-weight": "600"}, ALL) -goto: file://|DOC_PATH|/lib2/trait.Trait.html +goto: "file://" + |DOC_PATH| + "/lib2/trait.Trait.html" // This is a complex selector, so here's how it works: // diff --git a/src/test/rustdoc-gui/hash-item-expansion.goml b/src/test/rustdoc-gui/hash-item-expansion.goml index 861f6928362..3cf94f624fe 100644 --- a/src/test/rustdoc-gui/hash-item-expansion.goml +++ b/src/test/rustdoc-gui/hash-item-expansion.goml @@ -1,5 +1,5 @@ // This test ensures that the element corresponding to the hash is displayed. -goto: file://|DOC_PATH|/test_docs/struct.Foo.html#method.borrow +goto: "file://" + |DOC_PATH| + "/test_docs/struct.Foo.html#method.borrow" // In the blanket implementations list, "Borrow" is the second one, hence the ":nth(2)". assert-attribute: ("#blanket-implementations-list > details:nth-child(2)", {"open": ""}) // We first check that the impl block is open by default. diff --git a/src/test/rustdoc-gui/headers-color.goml b/src/test/rustdoc-gui/headers-color.goml index 4f01f1a1624..9b7e3a23112 100644 --- a/src/test/rustdoc-gui/headers-color.goml +++ b/src/test/rustdoc-gui/headers-color.goml @@ -1,5 +1,5 @@ // This test check for headers text and background colors for the different themes. -goto: file://|DOC_PATH|/test_docs/struct.Foo.html +goto: "file://" + |DOC_PATH| + "/test_docs/struct.Foo.html" // This is needed so that the text color is computed. show-text: true @@ -23,23 +23,23 @@ assert-css: ( ALL, ) -goto: file://|DOC_PATH|/test_docs/struct.Foo.html#impl-Foo +goto: "file://" + |DOC_PATH| + "/test_docs/struct.Foo.html#impl-Foo" assert-css: ( "#impl-Foo", {"color": "rgb(197, 197, 197)", "background-color": "rgba(255, 236, 164, 0.06)"}, ) -goto: file://|DOC_PATH|/test_docs/struct.Foo.html#method.must_use +goto: "file://" + |DOC_PATH| + "/test_docs/struct.Foo.html#method.must_use" assert-css: ( "#method\.must_use", {"color": "rgb(197, 197, 197)", "background-color": "rgba(255, 236, 164, 0.06)"}, ALL, ) -goto: file://|DOC_PATH|/test_docs/index.html +goto: "file://" + |DOC_PATH| + "/test_docs/index.html" assert-css: (".small-section-header a", {"color": "rgb(197, 197, 197)"}, ALL) -goto: file://|DOC_PATH|/test_docs/struct.HeavilyDocumentedStruct.html +goto: "file://" + |DOC_PATH| + "/test_docs/struct.HeavilyDocumentedStruct.html" // We select headings (h2, h3, h...). assert-css: (".docblock > :not(p) > a", {"color": "rgb(57, 175, 215)"}, ALL) @@ -49,7 +49,7 @@ local-storage: { "rustdoc-preferred-dark-theme": "dark", "rustdoc-use-system-theme": "false", } -goto: file://|DOC_PATH|/test_docs/struct.Foo.html +goto: "file://" + |DOC_PATH| + "/test_docs/struct.Foo.html" assert-css: ( ".impl", @@ -62,23 +62,23 @@ assert-css: ( ALL, ) -goto: file://|DOC_PATH|/test_docs/struct.Foo.html#impl-Foo +goto: "file://" + |DOC_PATH| + "/test_docs/struct.Foo.html#impl-Foo" assert-css: ( "#impl-Foo", {"color": "rgb(221, 221, 221)", "background-color": "rgb(73, 74, 61)"}, ) -goto: file://|DOC_PATH|/test_docs/struct.Foo.html#method.must_use +goto: "file://" + |DOC_PATH| + "/test_docs/struct.Foo.html#method.must_use" assert-css: ( "#method\.must_use", {"color": "rgb(221, 221, 221)", "background-color": "rgb(73, 74, 61)"}, ALL, ) -goto: file://|DOC_PATH|/test_docs/index.html +goto: "file://" + |DOC_PATH| + "/test_docs/index.html" assert-css: (".small-section-header a", {"color": "rgb(221, 221, 221)"}, ALL) -goto: file://|DOC_PATH|/test_docs/struct.HeavilyDocumentedStruct.html +goto: "file://" + |DOC_PATH| + "/test_docs/struct.HeavilyDocumentedStruct.html" // We select headings (h2, h3, h...). assert-css: (".docblock > :not(p) > a", {"color": "rgb(210, 153, 29)"}, ALL) @@ -86,7 +86,7 @@ assert-css: (".docblock > :not(p) > a", {"color": "rgb(210, 153, 29)"}, ALL) local-storage: {"rustdoc-theme": "light", "rustdoc-use-system-theme": "false"} reload: -goto: file://|DOC_PATH|/test_docs/struct.Foo.html +goto: "file://" + |DOC_PATH| + "/test_docs/struct.Foo.html" assert-css: ( ".impl", @@ -99,19 +99,19 @@ assert-css: ( ALL, ) -goto: file://|DOC_PATH|/test_docs/struct.Foo.html#impl-Foo +goto: "file://" + |DOC_PATH| + "/test_docs/struct.Foo.html#impl-Foo" assert-css: ("#impl-Foo", {"color": "rgb(0, 0, 0)", "background-color": "rgb(253, 255, 211)"}) -goto: file://|DOC_PATH|/test_docs/struct.Foo.html#method.must_use +goto: "file://" + |DOC_PATH| + "/test_docs/struct.Foo.html#method.must_use" assert-css: ( "#method\.must_use", {"color": "rgb(0, 0, 0)", "background-color": "rgb(253, 255, 211)"}, ALL, ) -goto: file://|DOC_PATH|/test_docs/index.html +goto: "file://" + |DOC_PATH| + "/test_docs/index.html" assert-css: (".small-section-header a", {"color": "rgb(0, 0, 0)"}, ALL) -goto: file://|DOC_PATH|/test_docs/struct.HeavilyDocumentedStruct.html +goto: "file://" + |DOC_PATH| + "/test_docs/struct.HeavilyDocumentedStruct.html" // We select headings (h2, h3, h...). assert-css: (".docblock > :not(p) > a", {"color": "rgb(56, 115, 173)"}, ALL) diff --git a/src/test/rustdoc-gui/headings.goml b/src/test/rustdoc-gui/headings.goml index 53308e13480..3e97bb78c78 100644 --- a/src/test/rustdoc-gui/headings.goml +++ b/src/test/rustdoc-gui/headings.goml @@ -11,7 +11,7 @@ // 18px 1.125em // 16px 1rem // 14px 0.875rem -goto: file://|DOC_PATH|/test_docs/struct.HeavilyDocumentedStruct.html +goto: "file://" + |DOC_PATH| + "/test_docs/struct.HeavilyDocumentedStruct.html" assert-css: ("h1.fqn", {"font-size": "24px"}) @@ -50,7 +50,7 @@ assert-css: ("h6#sub-heading-for-struct-impl-item-doc", {"font-size": "14px"}) assert-css: ("h6#sub-heading-for-struct-impl-item-doc", {"border-bottom-width": "0px"}) assert-css: ("h6#sub-sub-heading-for-struct-impl-item-doc", {"font-size": "14px"}) -goto: file://|DOC_PATH|/test_docs/enum.HeavilyDocumentedEnum.html +goto: "file://" + |DOC_PATH| + "/test_docs/enum.HeavilyDocumentedEnum.html" assert-css: ("h1.fqn", {"font-size": "24px"}) @@ -109,7 +109,7 @@ assert-css: ("h6#sub-sub-heading-for-enum-impl-item-doc", {"border-bottom-width" assert-text: (".sidebar .mod h3", "Modules") assert-css: (".sidebar .mod h3", {"border-bottom-width": "0px"}, ALL) -goto: file://|DOC_PATH|/test_docs/union.HeavilyDocumentedUnion.html +goto: "file://" + |DOC_PATH| + "/test_docs/union.HeavilyDocumentedUnion.html" assert-css: ("h1.fqn", {"font-size": "24px"}) @@ -141,7 +141,7 @@ assert-css: ("h5#title-for-union-impl-item-doc", {"border-bottom-width": "0px"}) assert-css: ("h6#sub-heading-for-union-impl-item-doc", {"font-size": "14px"}) assert-css: ("h6#sub-heading-for-union-impl-item-doc", {"border-bottom-width": "0px"}) -goto: file://|DOC_PATH|/test_docs/macro.heavily_documented_macro.html +goto: "file://" + |DOC_PATH| + "/test_docs/macro.heavily_documented_macro.html" assert-css: ("h1.fqn", {"font-size": "24px"}) @@ -153,7 +153,7 @@ assert-css: ("h3#top-doc-prose-sub-heading", {"border-bottom-width": "1px"}) // Checking colors now. show-text: true local-storage: {"rustdoc-theme": "light", "rustdoc-use-system-theme": "false"} -goto: file://|DOC_PATH|/test_docs/struct.HeavilyDocumentedStruct.html +goto: "file://" + |DOC_PATH| + "/test_docs/struct.HeavilyDocumentedStruct.html" assert-css: ( ".top-doc .docblock h2", {"color": "rgb(0, 0, 0)", "border-bottom": "1px solid rgb(221, 221, 221)"}, @@ -246,7 +246,7 @@ assert-css: ( ) local-storage: {"rustdoc-theme": "light"} -goto: file://|DOC_PATH|/staged_api/struct.Foo.html +goto: "file://" + |DOC_PATH| + "/staged_api/struct.Foo.html" assert-css: (".since", {"color": "rgb(128, 128, 128)"}, ALL) local-storage: {"rustdoc-theme": "dark"} diff --git a/src/test/rustdoc-gui/huge-collection-of-constants.goml b/src/test/rustdoc-gui/huge-collection-of-constants.goml index 4f75b5841ee..3ccd33f1ccd 100644 --- a/src/test/rustdoc-gui/huge-collection-of-constants.goml +++ b/src/test/rustdoc-gui/huge-collection-of-constants.goml @@ -1,6 +1,6 @@ // Make sure that the last two entries are more than 12 pixels apart and not stacked on each other. -goto: file://|DOC_PATH|/test_docs/huge_amount_of_consts/index.html +goto: "file://" + |DOC_PATH| + "/test_docs/huge_amount_of_consts/index.html" compare-elements-position-near-false: ( "//*[@class='item-table']//div[last()-1]", diff --git a/src/test/rustdoc-gui/impl-default-expansion.goml b/src/test/rustdoc-gui/impl-default-expansion.goml index 6df2661e6c2..c3f9240cc93 100644 --- a/src/test/rustdoc-gui/impl-default-expansion.goml +++ b/src/test/rustdoc-gui/impl-default-expansion.goml @@ -1,3 +1,3 @@ // This test ensures that the impl blocks are open by default. -goto: file://|DOC_PATH|/test_docs/struct.Foo.html +goto: "file://" + |DOC_PATH| + "/test_docs/struct.Foo.html" assert-attribute: ("#implementations-list details.implementors-toggle", {"open": ""}) diff --git a/src/test/rustdoc-gui/implementors.goml b/src/test/rustdoc-gui/implementors.goml index 2fcbee27147..4999283dc8b 100644 --- a/src/test/rustdoc-gui/implementors.goml +++ b/src/test/rustdoc-gui/implementors.goml @@ -1,6 +1,6 @@ // The goal of this test is to check that the external trait implementors, generated with JS, // have the same display than the "local" ones. -goto: file://|DOC_PATH|/implementors/trait.Whatever.html +goto: "file://" + |DOC_PATH| + "/implementors/trait.Whatever.html" assert: "#implementors-list" // There are supposed to be two implementors listed. assert-count: ("#implementors-list .impl", 2) @@ -15,7 +15,7 @@ assert-attribute: ("#implementors-list .impl:nth-child(2)", {"id": "impl-Whateve assert-attribute: ("#implementors-list .impl:nth-child(2) > a.anchor", {"href": "#impl-Whatever-1"}) assert: "#implementors-list .impl:nth-child(2) > .code-header" -goto: file://|DOC_PATH|/test_docs/struct.HasEmptyTraits.html +goto: "file://" + |DOC_PATH| + "/test_docs/struct.HasEmptyTraits.html" compare-elements-position-near-false: ( "#impl-EmptyTrait1-for-HasEmptyTraits", "#impl-EmptyTrait2-for-HasEmptyTraits", @@ -29,7 +29,7 @@ compare-elements-position-near: ( // Now check that re-exports work correctly. // There should be exactly one impl shown on both of these pages. -goto: file://|DOC_PATH|/lib2/trait.TraitToReexport.html +goto: "file://" + |DOC_PATH| + "/lib2/trait.TraitToReexport.html" assert-count: ("#implementors-list .impl", 1) -goto: file://|DOC_PATH|/implementors/trait.TraitToReexport.html +goto: "file://" + |DOC_PATH| + "/implementors/trait.TraitToReexport.html" assert-count: ("#implementors-list .impl", 1) diff --git a/src/test/rustdoc-gui/item-info-alignment.goml b/src/test/rustdoc-gui/item-info-alignment.goml index 4d7b5045f7c..94b52f0056b 100644 --- a/src/test/rustdoc-gui/item-info-alignment.goml +++ b/src/test/rustdoc-gui/item-info-alignment.goml @@ -1,6 +1,6 @@ // This test ensures that the "item-info" looks about the same // whether or not it's inside a toggle. -goto: file://|DOC_PATH|/lib2/struct.ItemInfoAlignmentTest.html +goto: "file://" + |DOC_PATH| + "/lib2/struct.ItemInfoAlignmentTest.html" // First, we try it in "desktop" mode. size: (1200, 870) diff --git a/src/test/rustdoc-gui/item-info-overflow.goml b/src/test/rustdoc-gui/item-info-overflow.goml index bc3addd33dd..8ea14621cbf 100644 --- a/src/test/rustdoc-gui/item-info-overflow.goml +++ b/src/test/rustdoc-gui/item-info-overflow.goml @@ -1,5 +1,5 @@ // This test ensures that the "item-info" elements don't overflow. -goto: file://|DOC_PATH|/lib2/struct.LongItemInfo.html +goto: "file://" + |DOC_PATH| + "/lib2/struct.LongItemInfo.html" // We set a fixed size so there is no chance of "random" resize. size: (1200, 870) // Logically, the "item-decl" and the "item-info" should have the same scroll width. @@ -13,7 +13,7 @@ assert-text: ( ) // Checking the "item-info" on an impl block as well: -goto: file://|DOC_PATH|/lib2/struct.LongItemInfo2.html +goto: "file://" + |DOC_PATH| + "/lib2/struct.LongItemInfo2.html" compare-elements-property: ( "#impl-SimpleTrait-for-LongItemInfo2 .item-info", "#impl-SimpleTrait-for-LongItemInfo2 + .docblock", diff --git a/src/test/rustdoc-gui/item-info.goml b/src/test/rustdoc-gui/item-info.goml index 8750d5c5360..6780dfca68a 100644 --- a/src/test/rustdoc-gui/item-info.goml +++ b/src/test/rustdoc-gui/item-info.goml @@ -1,5 +1,5 @@ // This test ensures a few things for item info elements. -goto: file://|DOC_PATH|/lib2/struct.Foo.html +goto: "file://" + |DOC_PATH| + "/lib2/struct.Foo.html" // Ensuring that the item information don't take 100% of the width if unnecessary. // We set a fixed size so there is no chance of "random" resize. size: (1100, 800) @@ -9,7 +9,7 @@ assert-css: (".item-info .stab", {"width": "289px"}) assert-position: (".item-info .stab", {"x": 245}) // Now we ensure that they're not rendered on the same line. -goto: file://|DOC_PATH|/lib2/trait.Trait.html +goto: "file://" + |DOC_PATH| + "/lib2/trait.Trait.html" // We first ensure that there are two item info on the trait. assert-count: ("#main-content > .item-info .stab", 2) // They should not have the same `y` position! diff --git a/src/test/rustdoc-gui/item-summary-table.goml b/src/test/rustdoc-gui/item-summary-table.goml index 4bff32b3d5d..2a92e9da52c 100644 --- a/src/test/rustdoc-gui/item-summary-table.goml +++ b/src/test/rustdoc-gui/item-summary-table.goml @@ -1,5 +1,5 @@ // This test ensures that <table> elements aren't display in items summary. -goto: file://|DOC_PATH|/lib2/summary_table/index.html +goto: "file://" + |DOC_PATH| + "/lib2/summary_table/index.html" // We check that we picked the right item first. assert-text: (".item-table .item-left", "Foo") // Then we check that its summary is empty. diff --git a/src/test/rustdoc-gui/javascript-disabled.goml b/src/test/rustdoc-gui/javascript-disabled.goml index 1693f7b645f..edf179d0d5e 100644 --- a/src/test/rustdoc-gui/javascript-disabled.goml +++ b/src/test/rustdoc-gui/javascript-disabled.goml @@ -2,5 +2,5 @@ // can't be used without JS. javascript: false -goto: file://|DOC_PATH|/test_docs/struct.Foo.html +goto: "file://" + |DOC_PATH| + "/test_docs/struct.Foo.html" assert-css: (".sub", {"display": "none"}) diff --git a/src/test/rustdoc-gui/jump-to-def-background.goml b/src/test/rustdoc-gui/jump-to-def-background.goml index d17400f5bd9..31c7d0ce3c8 100644 --- a/src/test/rustdoc-gui/jump-to-def-background.goml +++ b/src/test/rustdoc-gui/jump-to-def-background.goml @@ -1,5 +1,5 @@ // We check the background color on the jump to definition links in the source code page. -goto: file://|DOC_PATH|/src/link_to_definition/lib.rs.html +goto: "file://" + |DOC_PATH| + "/src/link_to_definition/lib.rs.html" // Set the theme to dark. local-storage: { diff --git a/src/test/rustdoc-gui/label-next-to-symbol.goml b/src/test/rustdoc-gui/label-next-to-symbol.goml index 4b4cea2621f..05f8ddc716e 100644 --- a/src/test/rustdoc-gui/label-next-to-symbol.goml +++ b/src/test/rustdoc-gui/label-next-to-symbol.goml @@ -1,6 +1,6 @@ // These tests verify that labels like "UNIX" and "Deprecated" stay on the same line as their symbol. // It also verifies the staggered layout on mobile. -goto: file://|DOC_PATH|/test_docs/index.html +goto: "file://" + |DOC_PATH| + "/test_docs/index.html" // Desktop view size: (1080, 600) diff --git a/src/test/rustdoc-gui/links-color.goml b/src/test/rustdoc-gui/links-color.goml index 69c5b4a6733..839629ad982 100644 --- a/src/test/rustdoc-gui/links-color.goml +++ b/src/test/rustdoc-gui/links-color.goml @@ -1,5 +1,5 @@ // This test checks links colors. -goto: file://|DOC_PATH|/test_docs/index.html +goto: "file://" + |DOC_PATH| + "/test_docs/index.html" // This is needed so that the text color is computed. show-text: true diff --git a/src/test/rustdoc-gui/list_code_block.goml b/src/test/rustdoc-gui/list_code_block.goml index eba1a662b9f..3423a449de4 100644 --- a/src/test/rustdoc-gui/list_code_block.goml +++ b/src/test/rustdoc-gui/list_code_block.goml @@ -1,4 +1,4 @@ // This test checks that code blocks in list are supported. -goto: file://|DOC_PATH|/test_docs/index.html -goto: ./fn.check_list_code_block.html +goto: "file://" + |DOC_PATH| + "/test_docs/index.html" +goto: "./fn.check_list_code_block.html" assert: ("pre.rust.fn") diff --git a/src/test/rustdoc-gui/mobile.goml b/src/test/rustdoc-gui/mobile.goml index 13b9b563d94..22a53dea616 100644 --- a/src/test/rustdoc-gui/mobile.goml +++ b/src/test/rustdoc-gui/mobile.goml @@ -1,5 +1,5 @@ // Test various properties of the mobile UI -goto: file://|DOC_PATH|/staged_api/struct.Foo.html +goto: "file://" + |DOC_PATH| + "/staged_api/struct.Foo.html" size: (400, 600) font-size: 18 @@ -24,7 +24,7 @@ assert-css-false: (".content .out-of-band .since::before", { "content": "\"Since // On the settings page, the theme buttons should not line-wrap. Instead, they should // all be placed as a group on a line below the setting name "Theme." -goto: file://|DOC_PATH|/settings.html +goto: "file://" + |DOC_PATH| + "/settings.html" size: (400, 600) // Ignored for now https://github.com/rust-lang/rust/issues/93784. // compare-elements-position-near-false: ("#preferred-light-theme .setting-name", "#preferred-light-theme .choice", {"y": 16}) diff --git a/src/test/rustdoc-gui/module-items-font.goml b/src/test/rustdoc-gui/module-items-font.goml index 758ee391ae4..cd3676a9871 100644 --- a/src/test/rustdoc-gui/module-items-font.goml +++ b/src/test/rustdoc-gui/module-items-font.goml @@ -1,5 +1,5 @@ // This test checks that the correct font is used on module items (in index.html pages). -goto: file://|DOC_PATH|/test_docs/index.html +goto: "file://" + |DOC_PATH| + "/test_docs/index.html" assert-css: ( ".item-table .module-item a", {"font-family": '"Fira Sans", Arial, NanumBarunGothic, sans-serif'}, diff --git a/src/test/rustdoc-gui/no-docblock.goml b/src/test/rustdoc-gui/no-docblock.goml index 2408be4534b..2366a60f5c6 100644 --- a/src/test/rustdoc-gui/no-docblock.goml +++ b/src/test/rustdoc-gui/no-docblock.goml @@ -1,8 +1,8 @@ // This test checks that there are margins applied to methods with no docblocks. -goto: file://|DOC_PATH|/test_docs/trait.TraitWithNoDocblocks.html +goto: "file://" + |DOC_PATH| + "/test_docs/trait.TraitWithNoDocblocks.html" // Check that the two methods are more than 24px apart. compare-elements-position-near-false: ("//*[@id='tymethod.first_fn']", "//*[@id='tymethod.second_fn']", {"y": 24}) -goto: file://|DOC_PATH|/test_docs/struct.TypeWithNoDocblocks.html +goto: "file://" + |DOC_PATH| + "/test_docs/struct.TypeWithNoDocblocks.html" // Check that the two methods are more than 24px apart. compare-elements-position-near-false: ("//*[@id='method.first_fn']", "//*[@id='method.second_fn']", {"y": 24}) diff --git a/src/test/rustdoc-gui/notable-trait.goml b/src/test/rustdoc-gui/notable-trait.goml index 20a129f9d9d..997fb5cf0ad 100644 --- a/src/test/rustdoc-gui/notable-trait.goml +++ b/src/test/rustdoc-gui/notable-trait.goml @@ -1,5 +1,5 @@ // This test checks the position of the `i` for the notable traits. -goto: file://|DOC_PATH|/test_docs/struct.NotableStructWithLongName.html +goto: "file://" + |DOC_PATH| + "/test_docs/struct.NotableStructWithLongName.html" show-text: true // We start with a wide screen. size: (1100, 600) diff --git a/src/test/rustdoc-gui/overflow-tooltip-information.goml b/src/test/rustdoc-gui/overflow-tooltip-information.goml index f481f82c234..09ad6cdd7ac 100644 --- a/src/test/rustdoc-gui/overflow-tooltip-information.goml +++ b/src/test/rustdoc-gui/overflow-tooltip-information.goml @@ -1,7 +1,7 @@ // The goal of this test is to ensure that the tooltip `.information` class doesn't // have overflow and max-width CSS rules set because they create a bug in firefox on // mac. For more information: https://github.com/rust-lang/rust/issues/89185 -goto: file://|DOC_PATH|/test_docs/fn.foo.html +goto: "file://" + |DOC_PATH| + "/test_docs/fn.foo.html" assert-css: (".docblock > .example-wrap .tooltip", { "overflow-x": "visible", "max-width": "none" diff --git a/src/test/rustdoc-gui/pocket-menu.goml b/src/test/rustdoc-gui/pocket-menu.goml index 71d514648ba..fb63ea62a48 100644 --- a/src/test/rustdoc-gui/pocket-menu.goml +++ b/src/test/rustdoc-gui/pocket-menu.goml @@ -1,5 +1,5 @@ // This test ensures that the "pocket menus" are working as expected. -goto: file://|DOC_PATH|/test_docs/index.html +goto: "file://" + |DOC_PATH| + "/test_docs/index.html" // First we check that the help menu doesn't exist yet. assert-false: "#help-button .popover" // Then we display the help menu. diff --git a/src/test/rustdoc-gui/run-on-hover.goml b/src/test/rustdoc-gui/run-on-hover.goml index b8efa8e302f..6c785e1c4bb 100644 --- a/src/test/rustdoc-gui/run-on-hover.goml +++ b/src/test/rustdoc-gui/run-on-hover.goml @@ -1,7 +1,7 @@ // Example code blocks sometimes have a "Run" button to run them on the // Playground. That button is hidden until the user hovers over the code block. // This test checks that it is hidden, and that it shows on hover. -goto: file://|DOC_PATH|/test_docs/fn.foo.html +goto: "file://" + |DOC_PATH| + "/test_docs/fn.foo.html" assert-css: (".test-arrow", {"visibility": "hidden"}) move-cursor-to: ".example-wrap" assert-css: (".test-arrow", {"visibility": "visible"}) diff --git a/src/test/rustdoc-gui/rust-logo.goml b/src/test/rustdoc-gui/rust-logo.goml index 4a9dcf73506..80abdc50c14 100644 --- a/src/test/rustdoc-gui/rust-logo.goml +++ b/src/test/rustdoc-gui/rust-logo.goml @@ -1,5 +1,5 @@ // This test ensures that the correct style is applied to the rust logo in the sidebar. -goto: file://|DOC_PATH|/test_docs/index.html +goto: "file://" + |DOC_PATH| + "/test_docs/index.html" // First we start with the dark theme. local-storage: { @@ -15,7 +15,7 @@ assert-css: ( ) // In the source view page now. -goto: file://|DOC_PATH|/src/test_docs/lib.rs.html +goto: "file://" + |DOC_PATH| + "/src/test_docs/lib.rs.html" local-storage: { "rustdoc-theme": "dark", @@ -43,7 +43,7 @@ assert-css: ( ) // In the source view page now. -goto: file://|DOC_PATH|/src/test_docs/lib.rs.html +goto: "file://" + |DOC_PATH| + "/src/test_docs/lib.rs.html" local-storage: { "rustdoc-theme": "ayu", @@ -67,7 +67,7 @@ assert-css: ( ) // In the source view page now. -goto: file://|DOC_PATH|/src/test_docs/lib.rs.html +goto: "file://" + |DOC_PATH| + "/src/test_docs/lib.rs.html" local-storage: {"rustdoc-theme": "light", "rustdoc-use-system-theme": "false"} reload: diff --git a/src/test/rustdoc-gui/search-filter.goml b/src/test/rustdoc-gui/search-filter.goml index 35d7ca480ca..27db816e685 100644 --- a/src/test/rustdoc-gui/search-filter.goml +++ b/src/test/rustdoc-gui/search-filter.goml @@ -1,5 +1,5 @@ // Checks that the crate search filtering is handled correctly and changes the results. -goto: file://|DOC_PATH|/test_docs/index.html +goto: "file://" + |DOC_PATH| + "/test_docs/index.html" show-text: true write: (".search-input", "test") // To be SURE that the search will be run. @@ -43,7 +43,7 @@ wait-for: "#titles" assert-property: ("#crate-search", {"value": "all crates"}) // Checking that the URL parameter is taken into account for crate filtering. -goto: file://|DOC_PATH|/test_docs/index.html?search=test&filter-crate=lib2 +goto: "file://" + |DOC_PATH| + "/test_docs/index.html?search=test&filter-crate=lib2" wait-for: "#crate-search" assert-property: ("#crate-search", {"value": "lib2"}) assert-false: "#results .externcrate" diff --git a/src/test/rustdoc-gui/search-form-elements.goml b/src/test/rustdoc-gui/search-form-elements.goml index 1c64974e916..fba9cc8777f 100644 --- a/src/test/rustdoc-gui/search-form-elements.goml +++ b/src/test/rustdoc-gui/search-form-elements.goml @@ -1,5 +1,5 @@ // This test ensures that the elements in ".search-form" have the expected display. -goto: file://|DOC_PATH|/test_docs/index.html +goto: "file://" + |DOC_PATH| + "/test_docs/index.html" show-text: true // Ayu theme diff --git a/src/test/rustdoc-gui/search-input-mobile.goml b/src/test/rustdoc-gui/search-input-mobile.goml index 5c95db70aec..ce0cef77ce4 100644 --- a/src/test/rustdoc-gui/search-input-mobile.goml +++ b/src/test/rustdoc-gui/search-input-mobile.goml @@ -1,6 +1,6 @@ // Test to ensure that you can click on the search input, whatever the width. // The PR which fixed it is: https://github.com/rust-lang/rust/pull/81592 -goto: file://|DOC_PATH|/test_docs/index.html +goto: "file://" + |DOC_PATH| + "/test_docs/index.html" size: (463, 700) // We first check that the search input isn't already focused. assert-false: ("input.search-input:focus") diff --git a/src/test/rustdoc-gui/search-reexport.goml b/src/test/rustdoc-gui/search-reexport.goml index 5ef890d472b..dd19f03bd1e 100644 --- a/src/test/rustdoc-gui/search-reexport.goml +++ b/src/test/rustdoc-gui/search-reexport.goml @@ -1,6 +1,6 @@ // Checks that the reexports are present in the search index, can have // doc aliases and are highligted when their ID is the hash of the page. -goto: file://|DOC_PATH|/test_docs/index.html +goto: "file://" + |DOC_PATH| + "/test_docs/index.html" local-storage: {"rustdoc-theme": "dark", "rustdoc-use-system-theme": "false"} reload: // First we check that the reexport has the correct ID and no background color. diff --git a/src/test/rustdoc-gui/search-result-color.goml b/src/test/rustdoc-gui/search-result-color.goml index 807646cce37..bb781837783 100644 --- a/src/test/rustdoc-gui/search-result-color.goml +++ b/src/test/rustdoc-gui/search-result-color.goml @@ -1,5 +1,5 @@ // The goal of this test is to ensure the color of the text is the one expected. -goto: file://|DOC_PATH|/test_docs/index.html?search=coo +goto: "file://" + |DOC_PATH| + "/test_docs/index.html?search=coo" // This is needed so that the text color is computed. show-text: true @@ -826,7 +826,7 @@ assert-css: ( ) // Check the alias more specifically in the dark theme. -goto: file://|DOC_PATH|/test_docs/index.html +goto: "file://" + |DOC_PATH| + "/test_docs/index.html" // We set the theme so we're sure that the correct values will be used, whatever the computer // this test is running on. local-storage: { diff --git a/src/test/rustdoc-gui/search-result-description.goml b/src/test/rustdoc-gui/search-result-description.goml index d8cb6ee5731..53a335b6335 100644 --- a/src/test/rustdoc-gui/search-result-description.goml +++ b/src/test/rustdoc-gui/search-result-description.goml @@ -1,5 +1,5 @@ // This test is to ensure that the codeblocks are correctly rendered in the search results. -goto: file://|DOC_PATH|/test_docs/index.html?search=some_more_function +goto: "file://" + |DOC_PATH| + "/test_docs/index.html?search=some_more_function" // Waiting for the search results to appear... wait-for: "#titles" assert-text: (".search-results .desc code", "format!") diff --git a/src/test/rustdoc-gui/search-result-display.goml b/src/test/rustdoc-gui/search-result-display.goml index e33693e27ea..053bfd8c905 100644 --- a/src/test/rustdoc-gui/search-result-display.goml +++ b/src/test/rustdoc-gui/search-result-display.goml @@ -1,5 +1,5 @@ // Checks that the search results have the expected width. -goto: file://|DOC_PATH|/test_docs/index.html +goto: "file://" + |DOC_PATH| + "/test_docs/index.html" size: (900, 1000) write: (".search-input", "test") // To be SURE that the search will be run. diff --git a/src/test/rustdoc-gui/search-result-go-to-first.goml b/src/test/rustdoc-gui/search-result-go-to-first.goml index c197d4dd29c..eeddf5ef6e8 100644 --- a/src/test/rustdoc-gui/search-result-go-to-first.goml +++ b/src/test/rustdoc-gui/search-result-go-to-first.goml @@ -2,11 +2,11 @@ // First, we check that the first page doesn't have the string we're looking for to ensure // that the feature is changing page as expected. -goto: file://|DOC_PATH|/test_docs/index.html +goto: "file://" + |DOC_PATH| + "/test_docs/index.html" assert-text-false: (".fqn", "Struct test_docs::Foo") // We now check that we land on the search result page if "go_to_first" isn't set. -goto: file://|DOC_PATH|/test_docs/index.html?search=struct%3AFoo +goto: "file://" + |DOC_PATH| + "/test_docs/index.html?search=struct%3AFoo" // Waiting for the search results to appear... wait-for: "#titles" assert-text-false: (".fqn", "Struct test_docs::Foo") @@ -14,6 +14,6 @@ assert-text-false: (".fqn", "Struct test_docs::Foo") assert-css: ("#main-content", {"display": "none"}) // Now we can check that the feature is working as expected! -goto: file://|DOC_PATH|/test_docs/index.html?search=struct%3AFoo&go_to_first=true +goto: "file://" + |DOC_PATH| + "/test_docs/index.html?search=struct%3AFoo&go_to_first=true" // Waiting for the page to load... wait-for-text: (".fqn", "Struct test_docs::Foo") diff --git a/src/test/rustdoc-gui/search-result-keyword.goml b/src/test/rustdoc-gui/search-result-keyword.goml index 16ae10431ac..66e63155a4e 100644 --- a/src/test/rustdoc-gui/search-result-keyword.goml +++ b/src/test/rustdoc-gui/search-result-keyword.goml @@ -1,5 +1,5 @@ // Checks that the "keyword" results have the expected text alongside them. -goto: file://|DOC_PATH|/test_docs/index.html +goto: "file://" + |DOC_PATH| + "/test_docs/index.html" write: (".search-input", "CookieMonster") // To be SURE that the search will be run. press-key: 'Enter' diff --git a/src/test/rustdoc-gui/search-tab-change-title-fn-sig.goml b/src/test/rustdoc-gui/search-tab-change-title-fn-sig.goml index 9d506c1519e..a19dc6a8b40 100644 --- a/src/test/rustdoc-gui/search-tab-change-title-fn-sig.goml +++ b/src/test/rustdoc-gui/search-tab-change-title-fn-sig.goml @@ -1,6 +1,6 @@ // Checks that the search tab results work correctly with function signature syntax // First, try a search-by-name -goto: file://|DOC_PATH|/test_docs/index.html +goto: "file://" + |DOC_PATH| + "/test_docs/index.html" write: (".search-input", "Foo") // To be SURE that the search will be run. press-key: 'Enter' @@ -22,7 +22,7 @@ press-key: "ArrowLeft" wait-for-attribute: ("#titles > button:nth-of-type(3)", {"class": "selected"}) // Now try search-by-return -goto: file://|DOC_PATH|/test_docs/index.html +goto: "file://" + |DOC_PATH| + "/test_docs/index.html" write: (".search-input", "-> String") // To be SURE that the search will be run. press-key: 'Enter' @@ -44,7 +44,7 @@ press-key: "ArrowLeft" wait-for-attribute: ("#titles > button:nth-of-type(1)", {"class": "selected"}) // Try with a search-by-return with no results -goto: file://|DOC_PATH|/test_docs/index.html +goto: "file://" + |DOC_PATH| + "/test_docs/index.html" write: (".search-input", "-> Something") // To be SURE that the search will be run. press-key: 'Enter' @@ -54,7 +54,7 @@ assert-attribute: ("#titles > button:nth-of-type(1)", {"class": "selected"}) assert-text: ("#titles > button:nth-of-type(1)", "In Function Return Types", STARTS_WITH) // Try with a search-by-parameter -goto: file://|DOC_PATH|/test_docs/index.html +goto: "file://" + |DOC_PATH| + "/test_docs/index.html" write: (".search-input", "usize pattern") // To be SURE that the search will be run. press-key: 'Enter' @@ -64,7 +64,7 @@ assert-attribute: ("#titles > button:nth-of-type(1)", {"class": "selected"}) assert-text: ("#titles > button:nth-of-type(1)", "In Function Parameters", STARTS_WITH) // Try with a search-by-parameter-and-return -goto: file://|DOC_PATH|/test_docs/index.html +goto: "file://" + |DOC_PATH| + "/test_docs/index.html" write: (".search-input", "pattern -> str") // To be SURE that the search will be run. press-key: 'Enter' diff --git a/src/test/rustdoc-gui/settings.goml b/src/test/rustdoc-gui/settings.goml index d9cf5ee6614..dfbf1d38e0e 100644 --- a/src/test/rustdoc-gui/settings.goml +++ b/src/test/rustdoc-gui/settings.goml @@ -1,5 +1,5 @@ // This test ensures that the settings menu display is working as expected. -goto: file://|DOC_PATH|/test_docs/index.html +goto: "file://" + |DOC_PATH| + "/test_docs/index.html" show-text: true // needed when we check for colors below. // First, we check that the settings page doesn't exist. assert-false: "#settings" @@ -138,7 +138,7 @@ wait-for-css: ("#help-button .popover", {"display": "block"}) assert-css: ("#settings-menu .popover", {"display": "none"}) // Now we go to the settings page to check that the CSS is loaded as expected. -goto: file://|DOC_PATH|/settings.html +goto: "file://" + |DOC_PATH| + "/settings.html" wait-for: "#settings" assert-css: (".setting-line .toggle .slider", {"width": "45px", "margin-right": "20px"}) diff --git a/src/test/rustdoc-gui/shortcuts.goml b/src/test/rustdoc-gui/shortcuts.goml index 1f20a0eaa99..ea6f55272ff 100644 --- a/src/test/rustdoc-gui/shortcuts.goml +++ b/src/test/rustdoc-gui/shortcuts.goml @@ -1,5 +1,5 @@ // Check that the various shortcuts are working. -goto: file://|DOC_PATH|/test_docs/index.html +goto: "file://" + |DOC_PATH| + "/test_docs/index.html" // We first check that the search input isn't already focused. assert-false: "input.search-input:focus" press-key: "s" diff --git a/src/test/rustdoc-gui/sidebar-links-color.goml b/src/test/rustdoc-gui/sidebar-links-color.goml index d2a1688080c..3f719c4c4dc 100644 --- a/src/test/rustdoc-gui/sidebar-links-color.goml +++ b/src/test/rustdoc-gui/sidebar-links-color.goml @@ -1,5 +1,5 @@ // This test checks links colors in sidebar before and after hover. -goto: file://|DOC_PATH|/test_docs/struct.Foo.html +goto: "file://" + |DOC_PATH| + "/test_docs/struct.Foo.html" // This is needed so that the text color is computed. show-text: true diff --git a/src/test/rustdoc-gui/sidebar-macro-reexport.goml b/src/test/rustdoc-gui/sidebar-macro-reexport.goml index a3a62fe5446..01282f2ffeb 100644 --- a/src/test/rustdoc-gui/sidebar-macro-reexport.goml +++ b/src/test/rustdoc-gui/sidebar-macro-reexport.goml @@ -1,5 +1,5 @@ // This test ensures that the reexport of a macro doesn't make the original macro // displayed twice in the sidebar. -goto: file://|DOC_PATH|/test_docs/macro.repro.html +goto: "file://" + |DOC_PATH| + "/test_docs/macro.repro.html" wait-for: ".sidebar-elems .macro .macro" assert-count: ("//*[@class='sidebar-elems']//*[@class='block macro']//a[text()='repro']", 1) diff --git a/src/test/rustdoc-gui/sidebar-mobile-scroll.goml b/src/test/rustdoc-gui/sidebar-mobile-scroll.goml index 6cb492cfc64..f1cba172ee3 100644 --- a/src/test/rustdoc-gui/sidebar-mobile-scroll.goml +++ b/src/test/rustdoc-gui/sidebar-mobile-scroll.goml @@ -1,5 +1,5 @@ // This test ensures that the mobile sidebar preserves scroll position. -goto: file://|DOC_PATH|/test_docs/struct.Foo.html +goto: "file://" + |DOC_PATH| + "/test_docs/struct.Foo.html" // Switching to "mobile view" by reducing the width to 600px. size: (600, 600) assert-css: (".sidebar", {"display": "block", "left": "-1000px"}) diff --git a/src/test/rustdoc-gui/sidebar-mobile.goml b/src/test/rustdoc-gui/sidebar-mobile.goml index 04dcb532504..4cded2c773d 100644 --- a/src/test/rustdoc-gui/sidebar-mobile.goml +++ b/src/test/rustdoc-gui/sidebar-mobile.goml @@ -1,7 +1,7 @@ // This test ensure that the sidebar isn't "hidden" on mobile but instead moved out of the viewport. // This is especially important for devices for "text-first" content (like for users with // sight issues). -goto: file://|DOC_PATH|/test_docs/struct.Foo.html +goto: "file://" + |DOC_PATH| + "/test_docs/struct.Foo.html" // Switching to "mobile view" by reducing the width to 600px. size: (600, 600) assert-css: (".sidebar", {"display": "block", "left": "-1000px"}) diff --git a/src/test/rustdoc-gui/sidebar-source-code-display.goml b/src/test/rustdoc-gui/sidebar-source-code-display.goml index 24d1820ff27..548fd22dcea 100644 --- a/src/test/rustdoc-gui/sidebar-source-code-display.goml +++ b/src/test/rustdoc-gui/sidebar-source-code-display.goml @@ -1,6 +1,6 @@ // This test ensures that the elements in the sidebar are displayed correctly. javascript: false -goto: file://|DOC_PATH|/src/test_docs/lib.rs.html +goto: "file://" + |DOC_PATH| + "/src/test_docs/lib.rs.html" // Since the javascript is disabled, there shouldn't be a toggle. assert-false: "#sidebar-toggle" wait-for-css: (".sidebar > *", {"visibility": "hidden"}) @@ -22,7 +22,7 @@ wait-for-css: ("#sidebar-toggle", {"visibility": "visible"}) wait-for-css: (".sidebar", {"width": "300px"}) assert-local-storage: {"rustdoc-source-sidebar-show": "true"} click: ".sidebar a.selected" -goto: file://|DOC_PATH|/src/test_docs/lib.rs.html +goto: "file://" + |DOC_PATH| + "/src/test_docs/lib.rs.html" wait-for-css: (".sidebar", {"width": "300px"}) assert-local-storage: {"rustdoc-source-sidebar-show": "true"} @@ -250,7 +250,7 @@ click: "#sidebar-toggle" wait-for-css: ("#source-sidebar", {"visibility": "visible"}) assert-local-storage: {"rustdoc-source-sidebar-show": "true"} click: ".sidebar a.selected" -goto: file://|DOC_PATH|/src/test_docs/lib.rs.html +goto: "file://" + |DOC_PATH| + "/src/test_docs/lib.rs.html" wait-for-css: ("#source-sidebar", {"visibility": "hidden"}) assert-local-storage: {"rustdoc-source-sidebar-show": "false"} // Resize back to desktop size, to check that the sidebar doesn't spontaneously open. diff --git a/src/test/rustdoc-gui/sidebar-source-code.goml b/src/test/rustdoc-gui/sidebar-source-code.goml index e882080c7da..9ba66368772 100644 --- a/src/test/rustdoc-gui/sidebar-source-code.goml +++ b/src/test/rustdoc-gui/sidebar-source-code.goml @@ -1,6 +1,6 @@ // The goal of this test is to ensure that the sidebar is working as expected in the source // code pages. -goto: file://|DOC_PATH|/src/test_docs/lib.rs.html +goto: "file://" + |DOC_PATH| + "/src/test_docs/lib.rs.html" // First: desktop mode. size: (1100, 800) // We check that the sidebar isn't expanded and has the expected width. @@ -17,7 +17,7 @@ wait-for: "html:not(.expanded)" assert: "nav.sidebar" // Checking that only the path to the current file is "open". -goto: file://|DOC_PATH|/src/lib2/another_folder/sub_mod/mod.rs.html +goto: "file://" + |DOC_PATH| + "/src/lib2/another_folder/sub_mod/mod.rs.html" // First we expand the sidebar again. click: (10, 10) // We wait for the sidebar to be expanded. @@ -42,4 +42,4 @@ assert-false: ".source-sidebar-expanded" assert: "nav.sidebar" // Check that the topbar is not visible -assert-property: (".mobile-topbar", {"offsetParent": "null"}) +assert-false: ".mobile-topbar" diff --git a/src/test/rustdoc-gui/sidebar.goml b/src/test/rustdoc-gui/sidebar.goml index ea7bcc66994..ad1fb6df89a 100644 --- a/src/test/rustdoc-gui/sidebar.goml +++ b/src/test/rustdoc-gui/sidebar.goml @@ -1,5 +1,5 @@ // Checks multiple things on the sidebar display (width of its elements, colors, etc). -goto: file://|DOC_PATH|/test_docs/index.html +goto: "file://" + |DOC_PATH| + "/test_docs/index.html" assert-property: (".sidebar", {"clientWidth": "200"}) show-text: true local-storage: {"rustdoc-theme": "light"} @@ -39,13 +39,13 @@ click: ".sidebar h2.location a" assert-property: ("html", {"scrollTop": "0"}) // We now go back to the crate page to click on the "lib2" crate link. -goto: file://|DOC_PATH|/test_docs/index.html +goto: "file://" + |DOC_PATH| + "/test_docs/index.html" assert-property: (".sidebar", {"clientWidth": "200"}) assert-css: (".sidebar-elems .crate > ul > li:first-child > a", {"color": "rgb(53, 109, 164)"}) click: ".sidebar-elems .crate > ul > li:first-child > a" // PAGE: lib2/index.html -goto: file://|DOC_PATH|/lib2/index.html +goto: "file://" + |DOC_PATH| + "/lib2/index.html" assert-property: (".sidebar", {"clientWidth": "200"}) assert-text: (".sidebar > .location", "Crate lib2") // We check that we have the crates list and that the "current" on is now "lib2". @@ -67,13 +67,13 @@ assert-text: (".sidebar .sidebar-elems .location", "In lib2") // We check that we don't have the crate list. assert-false: ".sidebar-elems > .crate" -goto: ./module/index.html +goto: "./module/index.html" assert-property: (".sidebar", {"clientWidth": "200"}) assert-text: (".sidebar > .location", "Module module") // We check that we don't have the crate list. assert-false: ".sidebar-elems > .crate" -goto: ./sub_module/sub_sub_module/index.html +goto: "./sub_module/sub_sub_module/index.html" assert-property: (".sidebar", {"clientWidth": "200"}) assert-text: (".sidebar > .location", "Module sub_sub_module") // We check that we don't have the crate list. @@ -82,13 +82,13 @@ assert-text: (".sidebar-elems > section ul > li:nth-child(1)", "Functions") assert-text: ("#functions + .item-table .item-left > a", "foo") // Links to trait implementations in the sidebar should not wrap even if they are long. -goto: file://|DOC_PATH|/lib2/struct.HasALongTraitWithParams.html +goto: "file://" + |DOC_PATH| + "/lib2/struct.HasALongTraitWithParams.html" assert-property: (".sidebar", {"clientWidth": "200"}) assert-property: (".sidebar-elems section .block li > a", {"offsetHeight": 29}) // Test that clicking on of the "In <module>" headings in the sidebar links to the // appropriate anchor in index.html. -goto: file://|DOC_PATH|/test_docs/struct.Foo.html +goto: "file://" + |DOC_PATH| + "/test_docs/struct.Foo.html" assert-property: (".sidebar", {"clientWidth": "200"}) click: ".block.mod h3 a" // PAGE: index.html diff --git a/src/test/rustdoc-gui/source-anchor-scroll.goml b/src/test/rustdoc-gui/source-anchor-scroll.goml index 47e40aa8e3b..ddfe0c3d1ab 100644 --- a/src/test/rustdoc-gui/source-anchor-scroll.goml +++ b/src/test/rustdoc-gui/source-anchor-scroll.goml @@ -1,6 +1,6 @@ // We check that when the anchor changes and is output of the displayed content, // the page is scrolled to it. -goto: file://|DOC_PATH|/src/link_to_definition/lib.rs.html +goto: "file://" + |DOC_PATH| + "/src/link_to_definition/lib.rs.html" // We reduce the window size to make it easier to make an element "out of the page". size: (600, 800) diff --git a/src/test/rustdoc-gui/source-code-page.goml b/src/test/rustdoc-gui/source-code-page.goml index 5f0bb7f19c0..76260d621ea 100644 --- a/src/test/rustdoc-gui/source-code-page.goml +++ b/src/test/rustdoc-gui/source-code-page.goml @@ -1,12 +1,12 @@ // Checks that the interactions with the source code pages are working as expected. -goto: file://|DOC_PATH|/src/test_docs/lib.rs.html +goto: "file://" + |DOC_PATH| + "/src/test_docs/lib.rs.html" // Check that we can click on the line number. click: ".src-line-numbers > span:nth-child(4)" // This is the span for line 4. // Ensure that the page URL was updated. assert-document-property: ({"URL": "lib.rs.html#4"}, ENDS_WITH) assert-attribute: ("//*[@id='4']", {"class": "line-highlighted"}) // We now check that the good spans are highlighted -goto: file://|DOC_PATH|/src/test_docs/lib.rs.html#4-6 +goto: "file://" + |DOC_PATH| + "/src/test_docs/lib.rs.html#4-6" assert-attribute-false: (".src-line-numbers > span:nth-child(3)", {"class": "line-highlighted"}) assert-attribute: (".src-line-numbers > span:nth-child(4)", {"class": "line-highlighted"}) assert-attribute: (".src-line-numbers > span:nth-child(5)", {"class": "line-highlighted"}) @@ -21,7 +21,7 @@ assert-css: (".src-line-numbers", {"text-align": "right"}) // Now let's check that clicking on something else than the line number doesn't // do anything (and certainly not add a `#NaN` to the URL!). show-text: true -goto: file://|DOC_PATH|/src/test_docs/lib.rs.html +goto: "file://" + |DOC_PATH| + "/src/test_docs/lib.rs.html" // We use this assert-position to know where we will click. assert-position: ("//*[@id='1']", {"x": 104, "y": 103}) // We click on the left of the "1" span but still in the "src-line-number" `<pre>`. diff --git a/src/test/rustdoc-gui/src-font-size.goml b/src/test/rustdoc-gui/src-font-size.goml index ebb413b8c41..b17dfd94cf0 100644 --- a/src/test/rustdoc-gui/src-font-size.goml +++ b/src/test/rustdoc-gui/src-font-size.goml @@ -1,7 +1,7 @@ // This test ensures that the "[src]" have the same font size as their headers // to avoid having some weird height difference in the background when the element // is selected. -goto: file://|DOC_PATH|/test_docs/struct.Foo.html +goto: "file://" + |DOC_PATH| + "/test_docs/struct.Foo.html" show-text: true // Check the impl headers. assert-css: (".impl.has-srclink .srclink", {"font-size": "16px", "font-weight": 400}, ALL) diff --git a/src/test/rustdoc-gui/src/test_docs/lib.rs b/src/test/rustdoc-gui/src/test_docs/lib.rs index 0281973c1ba..33c74e3a331 100644 --- a/src/test/rustdoc-gui/src/test_docs/lib.rs +++ b/src/test/rustdoc-gui/src/test_docs/lib.rs @@ -367,3 +367,7 @@ impl TypeWithNoDocblocks { pub fn first_fn(&self) {} pub fn second_fn(&self) {} } + +pub unsafe fn unsafe_fn() {} + +pub fn safe_fn() {} diff --git a/src/test/rustdoc-gui/theme-change.goml b/src/test/rustdoc-gui/theme-change.goml index fb1c37ae68e..b1de3c36614 100644 --- a/src/test/rustdoc-gui/theme-change.goml +++ b/src/test/rustdoc-gui/theme-change.goml @@ -1,5 +1,5 @@ // Ensures that the theme change is working as expected. -goto: file://|DOC_PATH|/test_docs/index.html +goto: "file://" + |DOC_PATH| + "/test_docs/index.html" local-storage: {"rustdoc-use-system-theme": "false", "rustdoc-theme": "dark"} reload: click: "#settings-menu" @@ -17,7 +17,7 @@ click: "#theme-dark" wait-for-css: ("body", { "background-color": "rgb(53, 53, 53)" }) assert-local-storage: { "rustdoc-theme": "dark" } -goto: file://|DOC_PATH|/settings.html +goto: "file://" + |DOC_PATH| + "/settings.html" wait-for: "#settings" click: "#theme-light" wait-for-css: ("body", { "background-color": "rgb(255, 255, 255)" }) diff --git a/src/test/rustdoc-gui/theme-in-history.goml b/src/test/rustdoc-gui/theme-in-history.goml index f576ced1c62..c29571728a1 100644 --- a/src/test/rustdoc-gui/theme-in-history.goml +++ b/src/test/rustdoc-gui/theme-in-history.goml @@ -1,5 +1,5 @@ // Ensures that the theme is working when going back in history. -goto: file://|DOC_PATH|/test_docs/index.html +goto: "file://" + |DOC_PATH| + "/test_docs/index.html" // Set the theme to dark. local-storage: { "rustdoc-theme": "dark", @@ -12,7 +12,7 @@ assert-css: ("body", { "background-color": "rgb(53, 53, 53)" }) assert-local-storage: { "rustdoc-theme": "dark" } // Now we go to the settings page. -goto: file://|DOC_PATH|/settings.html +goto: "file://" + |DOC_PATH| + "/settings.html" wait-for: "#settings" // We change the theme to "light". click: "#theme-light" diff --git a/src/test/rustdoc-gui/toggle-click-deadspace.goml b/src/test/rustdoc-gui/toggle-click-deadspace.goml index c902d186cc2..029403ee13e 100644 --- a/src/test/rustdoc-gui/toggle-click-deadspace.goml +++ b/src/test/rustdoc-gui/toggle-click-deadspace.goml @@ -1,6 +1,6 @@ // This test ensures that clicking on a method summary, but not on the "[-]", // doesn't toggle the <details>. -goto: file://|DOC_PATH|/lib2/struct.Foo.html +goto: "file://" + |DOC_PATH| + "/lib2/struct.Foo.html" assert-attribute: (".impl-items .rustdoc-toggle", {"open": ""}) click: "h4.code-header" // This is the position of "pub" in "pub fn a_method" assert-attribute: (".impl-items .rustdoc-toggle", {"open": ""}) diff --git a/src/test/rustdoc-gui/toggle-docs-mobile.goml b/src/test/rustdoc-gui/toggle-docs-mobile.goml index ee6bc3cf767..6ce24a81bb3 100644 --- a/src/test/rustdoc-gui/toggle-docs-mobile.goml +++ b/src/test/rustdoc-gui/toggle-docs-mobile.goml @@ -1,6 +1,6 @@ // Checks that the documentation toggles on mobile have the correct position, style and work // as expected. -goto: file://|DOC_PATH|/test_docs/struct.Foo.html +goto: "file://" + |DOC_PATH| + "/test_docs/struct.Foo.html" size: (433, 600) assert-attribute: (".top-doc", {"open": ""}) click: (4, 270) // This is the position of the top doc comment toggle diff --git a/src/test/rustdoc-gui/toggle-docs.goml b/src/test/rustdoc-gui/toggle-docs.goml index 63962b576df..8c9fd0a8866 100644 --- a/src/test/rustdoc-gui/toggle-docs.goml +++ b/src/test/rustdoc-gui/toggle-docs.goml @@ -1,5 +1,5 @@ // Checks that the documentation toggles have the correct position, style and work as expected. -goto: file://|DOC_PATH|/test_docs/index.html +goto: "file://" + |DOC_PATH| + "/test_docs/index.html" assert-attribute: ("#main-content > details.top-doc", {"open": ""}) assert-text: ("#toggle-all-docs", "[−]") click: "#toggle-all-docs" @@ -13,7 +13,7 @@ wait-for-attribute: ("#main-content > details.top-doc", {"open": ""}) assert-text: ("#toggle-all-docs", "[−]") // Check that it works on non-module pages as well. -goto: file://|DOC_PATH|/test_docs/struct.Foo.html +goto: "file://" + |DOC_PATH| + "/test_docs/struct.Foo.html" // We first check that everything is visible. assert-text: ("#toggle-all-docs", "[−]") assert-attribute: ("#implementations-list details.rustdoc-toggle", {"open": ""}, ALL) diff --git a/src/test/rustdoc-gui/toggle-implementors.goml b/src/test/rustdoc-gui/toggle-implementors.goml index 15521ff0f49..8ff5b91af0d 100644 --- a/src/test/rustdoc-gui/toggle-implementors.goml +++ b/src/test/rustdoc-gui/toggle-implementors.goml @@ -1,4 +1,4 @@ // This test ensures that the implementors toggle are not open by default. -goto: file://|DOC_PATH|/implementors/trait.Whatever.html +goto: "file://" + |DOC_PATH| + "/implementors/trait.Whatever.html" assert-attribute-false: ("#implementors-list > details", {"open": ""}, ALL) diff --git a/src/test/rustdoc-gui/toggled-open-implementations.goml b/src/test/rustdoc-gui/toggled-open-implementations.goml index bc97b38c867..e4d59b5d728 100644 --- a/src/test/rustdoc-gui/toggled-open-implementations.goml +++ b/src/test/rustdoc-gui/toggled-open-implementations.goml @@ -1,5 +1,5 @@ // This tests that the "implementations" section on struct/enum pages // has all the implementations toggled open by default, so users can // find method names in those implementations with Ctrl-F. -goto: file://|DOC_PATH|/test_docs/struct.Foo.html +goto: "file://" + |DOC_PATH| + "/test_docs/struct.Foo.html" assert-attribute: (".rustdoc-toggle.implementors-toggle", {"open": ""}) diff --git a/src/test/rustdoc-gui/trait-sidebar-item-order.goml b/src/test/rustdoc-gui/trait-sidebar-item-order.goml index d77d1dca483..a799444a108 100644 --- a/src/test/rustdoc-gui/trait-sidebar-item-order.goml +++ b/src/test/rustdoc-gui/trait-sidebar-item-order.goml @@ -1,5 +1,5 @@ // Checks that the elements in the sidebar are alphabetically sorted. -goto: file://|DOC_PATH|/test_docs/trait.AnotherOne.html +goto: "file://" + |DOC_PATH| + "/test_docs/trait.AnotherOne.html" assert-text: (".sidebar-elems section .block li:nth-of-type(1) > a", "another") assert-text: (".sidebar-elems section .block li:nth-of-type(2) > a", "func1") assert-text: (".sidebar-elems section .block li:nth-of-type(3) > a", "func2") diff --git a/src/test/rustdoc-gui/type-declation-overflow.goml b/src/test/rustdoc-gui/type-declation-overflow.goml index 505874fa010..657c3cfa4b6 100644 --- a/src/test/rustdoc-gui/type-declation-overflow.goml +++ b/src/test/rustdoc-gui/type-declation-overflow.goml @@ -1,5 +1,5 @@ // This test ensures that the items declaration content overflow is handled inside the <pre> directly. -goto: file://|DOC_PATH|/lib2/long_trait/trait.ALongNameBecauseItHelpsTestingTheCurrentProblem.html +goto: "file://" + |DOC_PATH| + "/lib2/long_trait/trait.ALongNameBecauseItHelpsTestingTheCurrentProblem.html" // We set a fixed size so there is no chance of "random" resize. size: (1100, 800) // Logically, the <body> scroll width should be the width of the window. @@ -8,11 +8,11 @@ assert-property: ("body", {"scrollWidth": "1100"}) assert-property: (".item-decl pre", {"scrollWidth": "1324"}) // In the table-ish view on the module index, the name should not be wrapped more than necessary. -goto: file://|DOC_PATH|/lib2/too_long/index.html +goto: "file://" + |DOC_PATH| + "/lib2/too_long/index.html" assert-property: (".item-table .struct", {"offsetWidth": "684"}) // We now make the same check on type declaration... -goto: file://|DOC_PATH|/lib2/too_long/type.ReallyLongTypeNameLongLongLong.html +goto: "file://" + |DOC_PATH| + "/lib2/too_long/type.ReallyLongTypeNameLongLongLong.html" assert-property: ("body", {"scrollWidth": "1100"}) // We now check that the section width hasn't grown because of it. assert-property: ("#main-content", {"scrollWidth": "840"}) @@ -21,7 +21,7 @@ assert-property: (".item-decl pre", {"scrollWidth": "1103"}) // ... and constant. // On a sidenote, it also checks that the (very) long title isn't changing the docblock width. -goto: file://|DOC_PATH|/lib2/too_long/constant.ReallyLongTypeNameLongLongLongConstBecauseWhyNotAConstRightGigaGigaSupraLong.html +goto: "file://" + |DOC_PATH| + "/lib2/too_long/constant.ReallyLongTypeNameLongLongLongConstBecauseWhyNotAConstRightGigaGigaSupraLong.html" assert-property: ("body", {"scrollWidth": "1100"}) // We now check that the section width hasn't grown because of it. assert-property: ("#main-content", {"scrollWidth": "840"}) @@ -30,7 +30,7 @@ assert-property: (".item-decl pre", {"scrollWidth": "950"}) // On mobile: size: (600, 600) -goto: file://|DOC_PATH|/lib2/too_long/struct.SuperIncrediblyLongLongLongLongLongLongLongGigaGigaGigaMegaLongLongLongStructName.html +goto: "file://" + |DOC_PATH| + "/lib2/too_long/struct.SuperIncrediblyLongLongLongLongLongLongLongGigaGigaGigaMegaLongLongLongStructName.html" // It shouldn't have an overflow in the topbar either. store-property: (scrollWidth, ".mobile-topbar .location", "scrollWidth") assert-property: (".mobile-topbar .location", {"clientWidth": |scrollWidth|}) diff --git a/src/test/rustdoc-gui/unsafe-fn.goml b/src/test/rustdoc-gui/unsafe-fn.goml new file mode 100644 index 00000000000..94f128db72e --- /dev/null +++ b/src/test/rustdoc-gui/unsafe-fn.goml @@ -0,0 +1,37 @@ +goto: "file://" + |DOC_PATH| + "/test_docs/index.html" + +compare-elements-property: ( + "//a[@title='test_docs::safe_fn fn']/..", + "//a[@title='test_docs::unsafe_fn fn']/..", + ["clientHeight"] +) + +// If the text isn't displayed, the browser doesn't compute color style correctly... +show-text: true + +// Set the theme to dark. +local-storage: {"rustdoc-theme": "dark", "rustdoc-preferred-dark-theme": "dark", "rustdoc-use-system-theme": "false"} +// We reload the page so the local storage settings are being used. +reload: + +assert-css: (".item-left sup", { + "color": "rgb(221, 221, 221)" +}) + +// Set the theme to ayu. +local-storage: {"rustdoc-theme": "ayu", "rustdoc-preferred-dark-theme": "ayu", "rustdoc-use-system-theme": "false"} +// We reload the page so the local storage settings are being used. +reload: + +assert-css: (".item-left sup", { + "color": "rgb(197, 197, 197)" +}) + +// Set the theme to light. +local-storage: {"rustdoc-theme": "light", "rustdoc-preferred-dark-theme": "light", "rustdoc-use-system-theme": "false"} +// We reload the page so the local storage settings are being used. +reload: + +assert-css: (".item-left sup", { + "color": "rgb(0, 0, 0)" +}) diff --git a/src/test/rustdoc-gui/where-whitespace.goml b/src/test/rustdoc-gui/where-whitespace.goml index 1a3ff1f491c..776c8ec721e 100644 --- a/src/test/rustdoc-gui/where-whitespace.goml +++ b/src/test/rustdoc-gui/where-whitespace.goml @@ -1,5 +1,5 @@ // This test ensures that the where conditions are correctly displayed. -goto: file://|DOC_PATH|/lib2/trait.Whitespace.html +goto: "file://" + |DOC_PATH| + "/lib2/trait.Whitespace.html" show-text: true // First, we check in the trait definition if the where clause is "on its own" (not on the same // line than "pub trait Whitespace<Idx>"). @@ -7,7 +7,7 @@ compare-elements-position-false: (".item-decl code", ".where.fmt-newline", ("y") // And that the code following it isn't on the same line either. compare-elements-position-false: (".item-decl .fnname", ".where.fmt-newline", ("y")) -goto: file://|DOC_PATH|/lib2/struct.WhereWhitespace.html +goto: "file://" + |DOC_PATH| + "/lib2/struct.WhereWhitespace.html" // We make the screen a bit wider to ensure that the trait impl is on one line. size: (915, 915) diff --git a/src/test/rustdoc-ui/infinite-recursive-type-impl-trait-return.stderr b/src/test/rustdoc-ui/infinite-recursive-type-impl-trait-return.stderr index aa39d26feed..e6ab67d59ce 100644 --- a/src/test/rustdoc-ui/infinite-recursive-type-impl-trait-return.stderr +++ b/src/test/rustdoc-ui/infinite-recursive-type-impl-trait-return.stderr @@ -2,12 +2,12 @@ error[E0072]: recursive type `DEF_ID` has infinite size --> $DIR/infinite-recursive-type-impl-trait-return.rs:7:5 | LL | enum E { - | ^^^^^^ recursive type has infinite size + | ^^^^^^ LL | LL | This(E), | - recursive without indirection | -help: insert some indirection (e.g., a `DEF_ID` representable +help: insert some indirection (e.g., a `DEF_ID`) to break the cycle | LL | This(Box<E>), | ++++ + diff --git a/src/test/rustdoc-ui/infinite-recursive-type-impl-trait.stderr b/src/test/rustdoc-ui/infinite-recursive-type-impl-trait.stderr index 009bedec5ed..165ff678372 100644 --- a/src/test/rustdoc-ui/infinite-recursive-type-impl-trait.stderr +++ b/src/test/rustdoc-ui/infinite-recursive-type-impl-trait.stderr @@ -2,12 +2,12 @@ error[E0072]: recursive type `f::E` has infinite size --> $DIR/infinite-recursive-type-impl-trait.rs:2:5 | LL | enum E { - | ^^^^^^ recursive type has infinite size + | ^^^^^^ LL | LL | V(E), | - recursive without indirection | -help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `f::E` representable +help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to break the cycle | LL | V(Box<E>), | ++++ + diff --git a/src/test/rustdoc-ui/infinite-recursive-type.stderr b/src/test/rustdoc-ui/infinite-recursive-type.stderr index b33aba44622..9e2c3ff1642 100644 --- a/src/test/rustdoc-ui/infinite-recursive-type.stderr +++ b/src/test/rustdoc-ui/infinite-recursive-type.stderr @@ -2,12 +2,12 @@ error[E0072]: recursive type `E` has infinite size --> $DIR/infinite-recursive-type.rs:1:1 | LL | enum E { - | ^^^^^^ recursive type has infinite size + | ^^^^^^ LL | LL | V(E), | - recursive without indirection | -help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `E` representable +help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to break the cycle | LL | V(Box<E>), | ++++ + diff --git a/src/test/rustdoc/normalize-assoc-item.rs b/src/test/rustdoc/normalize-assoc-item.rs index ad1a868ee32..db56f68526b 100644 --- a/src/test/rustdoc/normalize-assoc-item.rs +++ b/src/test/rustdoc/normalize-assoc-item.rs @@ -11,11 +11,24 @@ impl Trait for usize { type X = isize; } +impl Trait for () { + type X = fn() -> i32; +} + +impl Trait for isize { + type X = <() as Trait>::X; +} + // @has 'normalize_assoc_item/fn.f.html' '//pre[@class="rust fn"]' 'pub fn f() -> isize' pub fn f() -> <usize as Trait>::X { 0 } +// @has 'normalize_assoc_item/fn.f2.html' '//pre[@class="rust fn"]' 'pub fn f2() -> fn() -> i32' +pub fn f2() -> <isize as Trait>::X { + todo!() +} + pub struct S { // @has 'normalize_assoc_item/struct.S.html' '//span[@id="structfield.box_me_up"]' 'box_me_up: Box<S, Global>' pub box_me_up: <S as Trait>::X, diff --git a/src/test/ui/async-await/issue-70935-complex-spans.drop_tracking.stderr b/src/test/ui/async-await/issue-70935-complex-spans.drop_tracking.stderr index 85f7d1dd674..7fb88116665 100644 --- a/src/test/ui/async-await/issue-70935-complex-spans.drop_tracking.stderr +++ b/src/test/ui/async-await/issue-70935-complex-spans.drop_tracking.stderr @@ -18,7 +18,7 @@ LL | async fn baz<T>(_c: impl FnMut() -> T) where T: Future<Output=()> { | ___________________________________________________________________^ LL | | } | |_^ - = note: required because it captures the following types: `ResumeTy`, `impl for<'a, 'b, 'c> Future<Output = ()>`, `()` + = note: required because it captures the following types: `ResumeTy`, `impl Future<Output = ()>`, `()` note: required because it's used within this `async` block --> $DIR/issue-70935-complex-spans.rs:16:16 | diff --git a/src/test/ui/coherence/coherence-fn-covariant-bound-vs-static.stderr b/src/test/ui/coherence/coherence-fn-covariant-bound-vs-static.stderr index cfcef9699f3..7dabd97b94e 100644 --- a/src/test/ui/coherence/coherence-fn-covariant-bound-vs-static.stderr +++ b/src/test/ui/coherence/coherence-fn-covariant-bound-vs-static.stderr @@ -1,10 +1,10 @@ -error[E0119]: conflicting implementations of trait `Trait` for type `for<'r> fn(for<'r> fn(&'r ()))` +error[E0119]: conflicting implementations of trait `Trait` for type `for<'r> fn(fn(&'r ()))` --> $DIR/coherence-fn-covariant-bound-vs-static.rs:17:1 | LL | impl Trait for for<'r> fn(fn(&'r ())) {} | ------------------------------------- first implementation here LL | impl<'a> Trait for fn(fn(&'a ())) {} - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ conflicting implementation for `for<'r> fn(for<'r> fn(&'r ()))` + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ conflicting implementation for `for<'r> fn(fn(&'r ()))` | = note: this behavior recently changed as a result of a bug fix; see rust-lang/rust#56105 for details diff --git a/src/test/ui/const-generics/issue-102124.rs b/src/test/ui/const-generics/issue-102124.rs new file mode 100644 index 00000000000..a28f198e9e0 --- /dev/null +++ b/src/test/ui/const-generics/issue-102124.rs @@ -0,0 +1,20 @@ +// run-pass +// compile-flags: -Zmir-opt-level=3 + +// regression test for #102124 + +const L: usize = 4; + +pub trait Print<const N: usize> { + fn print(&self) -> usize { + N + } +} + +pub struct Printer; +impl Print<L> for Printer {} + +fn main() { + let p = Printer; + assert_eq!(p.print(), 4); +} diff --git a/src/test/ui/consts/const_unsafe_unreachable_ub.stderr b/src/test/ui/consts/const_unsafe_unreachable_ub.stderr index ec6ce1f5d7c..f6de3699f77 100644 --- a/src/test/ui/consts/const_unsafe_unreachable_ub.stderr +++ b/src/test/ui/consts/const_unsafe_unreachable_ub.stderr @@ -1,11 +1,11 @@ error[E0080]: evaluation of constant value failed --> $SRC_DIR/core/src/hint.rs:LL:COL | -LL | unsafe { intrinsics::unreachable() } - | ^^^^^^^^^^^^^^^^^^^^^^^^^ - | | - | entering unreachable code - | inside `unreachable_unchecked` at $SRC_DIR/core/src/hint.rs:LL:COL +LL | intrinsics::unreachable() + | ^^^^^^^^^^^^^^^^^^^^^^^^^ + | | + | entering unreachable code + | inside `unreachable_unchecked` at $SRC_DIR/core/src/hint.rs:LL:COL | ::: $DIR/const_unsafe_unreachable_ub.rs:6:18 | diff --git a/src/test/ui/infinite/infinite-struct.rs b/src/test/ui/infinite/infinite-struct.rs index 74185dc597b..f08e10f6bdb 100644 --- a/src/test/ui/infinite/infinite-struct.rs +++ b/src/test/ui/infinite/infinite-struct.rs @@ -6,4 +6,11 @@ fn foo() -> Take { Take(loop {}) } +// mutually infinite structs +struct Foo { //~ ERROR has infinite size + x: Bar<Foo>, +} + +struct Bar<T>([T; 1]); + fn main() {} diff --git a/src/test/ui/infinite/infinite-struct.stderr b/src/test/ui/infinite/infinite-struct.stderr index 5a6d13786d1..b6c72b1de46 100644 --- a/src/test/ui/infinite/infinite-struct.stderr +++ b/src/test/ui/infinite/infinite-struct.stderr @@ -3,14 +3,25 @@ error[E0072]: recursive type `Take` has infinite size | LL | struct Take(Take); | ^^^^^^^^^^^ ---- recursive without indirection - | | - | recursive type has infinite size | -help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `Take` representable +help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to break the cycle | LL | struct Take(Box<Take>); | ++++ + -error: aborting due to previous error +error[E0072]: recursive type `Foo` has infinite size + --> $DIR/infinite-struct.rs:10:1 + | +LL | struct Foo { + | ^^^^^^^^^^ +LL | x: Bar<Foo>, + | --- recursive without indirection + | +help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to break the cycle + | +LL | x: Bar<Box<Foo>>, + | ++++ + + +error: aborting due to 2 previous errors For more information about this error, try `rustc --explain E0072`. diff --git a/src/test/ui/infinite/infinite-tag-type-recursion.stderr b/src/test/ui/infinite/infinite-tag-type-recursion.stderr index d2dad4b9178..513bbfc1b8c 100644 --- a/src/test/ui/infinite/infinite-tag-type-recursion.stderr +++ b/src/test/ui/infinite/infinite-tag-type-recursion.stderr @@ -3,10 +3,8 @@ error[E0072]: recursive type `MList` has infinite size | LL | enum MList { Cons(isize, MList), Nil } | ^^^^^^^^^^ ----- recursive without indirection - | | - | recursive type has infinite size | -help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `MList` representable +help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to break the cycle | LL | enum MList { Cons(isize, Box<MList>), Nil } | ++++ + diff --git a/src/test/ui/issues/issue-17431-1.stderr b/src/test/ui/issues/issue-17431-1.stderr index db32eb952ba..e3af8976cee 100644 --- a/src/test/ui/issues/issue-17431-1.stderr +++ b/src/test/ui/issues/issue-17431-1.stderr @@ -2,14 +2,12 @@ error[E0072]: recursive type `Foo` has infinite size --> $DIR/issue-17431-1.rs:1:1 | LL | struct Foo { foo: Option<Option<Foo>> } - | ^^^^^^^^^^ ------------------- recursive without indirection - | | - | recursive type has infinite size + | ^^^^^^^^^^ --- recursive without indirection | -help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `Foo` representable +help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to break the cycle | -LL | struct Foo { foo: Option<Box<Option<Foo>>> } - | ++++ + +LL | struct Foo { foo: Option<Option<Box<Foo>>> } + | ++++ + error: aborting due to previous error diff --git a/src/test/ui/issues/issue-17431-2.rs b/src/test/ui/issues/issue-17431-2.rs index 9ed97f63177..f7b9c6a55dd 100644 --- a/src/test/ui/issues/issue-17431-2.rs +++ b/src/test/ui/issues/issue-17431-2.rs @@ -1,8 +1,7 @@ struct Baz { q: Option<Foo> } -//~^ ERROR recursive type `Baz` has infinite size +//~^ ERROR recursive types `Baz` and `Foo` have infinite size struct Foo { q: Option<Baz> } -//~^ ERROR recursive type `Foo` has infinite size impl Foo { fn bar(&self) {} } diff --git a/src/test/ui/issues/issue-17431-2.stderr b/src/test/ui/issues/issue-17431-2.stderr index d23fd1474ac..39a99ec1ef7 100644 --- a/src/test/ui/issues/issue-17431-2.stderr +++ b/src/test/ui/issues/issue-17431-2.stderr @@ -1,29 +1,20 @@ -error[E0072]: recursive type `Baz` has infinite size +error[E0072]: recursive types `Baz` and `Foo` have infinite size --> $DIR/issue-17431-2.rs:1:1 | LL | struct Baz { q: Option<Foo> } - | ^^^^^^^^^^ ----------- recursive without indirection - | | - | recursive type has infinite size - | -help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `Baz` representable - | -LL | struct Baz { q: Option<Box<Foo>> } - | ++++ + - -error[E0072]: recursive type `Foo` has infinite size - --> $DIR/issue-17431-2.rs:4:1 - | + | ^^^^^^^^^^ --- recursive without indirection +... LL | struct Foo { q: Option<Baz> } - | ^^^^^^^^^^ ----------- recursive without indirection - | | - | recursive type has infinite size + | ^^^^^^^^^^ --- recursive without indirection + | +help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to break the cycle | -help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `Foo` representable +LL ~ struct Baz { q: Option<Box<Foo>> } +LL | +LL | +LL ~ struct Foo { q: Option<Box<Baz>> } | -LL | struct Foo { q: Option<Box<Baz>> } - | ++++ + -error: aborting due to 2 previous errors +error: aborting due to previous error For more information about this error, try `rustc --explain E0072`. diff --git a/src/test/ui/issues/issue-17431-3.stderr b/src/test/ui/issues/issue-17431-3.stderr index 0dde6f382c3..394134c7855 100644 --- a/src/test/ui/issues/issue-17431-3.stderr +++ b/src/test/ui/issues/issue-17431-3.stderr @@ -2,14 +2,12 @@ error[E0072]: recursive type `Foo` has infinite size --> $DIR/issue-17431-3.rs:3:1 | LL | struct Foo { foo: Mutex<Option<Foo>> } - | ^^^^^^^^^^ ------------------ recursive without indirection - | | - | recursive type has infinite size + | ^^^^^^^^^^ --- recursive without indirection | -help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `Foo` representable +help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to break the cycle | -LL | struct Foo { foo: Box<Mutex<Option<Foo>>> } - | ++++ + +LL | struct Foo { foo: Mutex<Option<Box<Foo>>> } + | ++++ + error: aborting due to previous error diff --git a/src/test/ui/issues/issue-17431-4.stderr b/src/test/ui/issues/issue-17431-4.stderr index ddf669b8fd1..3d141e44bab 100644 --- a/src/test/ui/issues/issue-17431-4.stderr +++ b/src/test/ui/issues/issue-17431-4.stderr @@ -2,14 +2,12 @@ error[E0072]: recursive type `Foo` has infinite size --> $DIR/issue-17431-4.rs:3:1 | LL | struct Foo<T> { foo: Option<Option<Foo<T>>>, marker: marker::PhantomData<T> } - | ^^^^^^^^^^^^^ ---------------------- recursive without indirection - | | - | recursive type has infinite size + | ^^^^^^^^^^^^^ ------ recursive without indirection | -help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `Foo` representable +help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to break the cycle | -LL | struct Foo<T> { foo: Option<Box<Option<Foo<T>>>>, marker: marker::PhantomData<T> } - | ++++ + +LL | struct Foo<T> { foo: Option<Option<Box<Foo<T>>>>, marker: marker::PhantomData<T> } + | ++++ + error: aborting due to previous error diff --git a/src/test/ui/issues/issue-17431-5.stderr b/src/test/ui/issues/issue-17431-5.stderr index a379598c265..44a90a6fe38 100644 --- a/src/test/ui/issues/issue-17431-5.stderr +++ b/src/test/ui/issues/issue-17431-5.stderr @@ -3,10 +3,8 @@ error[E0072]: recursive type `Bar` has infinite size | LL | struct Bar<T> { x: Bar<Foo> , marker: marker::PhantomData<T> } | ^^^^^^^^^^^^^ -------- recursive without indirection - | | - | recursive type has infinite size | -help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `Bar` representable +help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to break the cycle | LL | struct Bar<T> { x: Box<Bar<Foo>> , marker: marker::PhantomData<T> } | ++++ + diff --git a/src/test/ui/issues/issue-17431-6.stderr b/src/test/ui/issues/issue-17431-6.stderr index fcac420b238..e0a8225507e 100644 --- a/src/test/ui/issues/issue-17431-6.stderr +++ b/src/test/ui/issues/issue-17431-6.stderr @@ -2,14 +2,12 @@ error[E0072]: recursive type `Foo` has infinite size --> $DIR/issue-17431-6.rs:3:1 | LL | enum Foo { X(Mutex<Option<Foo>>) } - | ^^^^^^^^ ------------------ recursive without indirection - | | - | recursive type has infinite size + | ^^^^^^^^ --- recursive without indirection | -help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `Foo` representable +help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to break the cycle | -LL | enum Foo { X(Box<Mutex<Option<Foo>>>) } - | ++++ + +LL | enum Foo { X(Mutex<Option<Box<Foo>>>) } + | ++++ + error: aborting due to previous error diff --git a/src/test/ui/issues/issue-17431-7.stderr b/src/test/ui/issues/issue-17431-7.stderr index 6f8a7e3867b..ecf072b8e8a 100644 --- a/src/test/ui/issues/issue-17431-7.stderr +++ b/src/test/ui/issues/issue-17431-7.stderr @@ -2,14 +2,12 @@ error[E0072]: recursive type `Foo` has infinite size --> $DIR/issue-17431-7.rs:1:1 | LL | enum Foo { Voo(Option<Option<Foo>>) } - | ^^^^^^^^ ------------------- recursive without indirection - | | - | recursive type has infinite size + | ^^^^^^^^ --- recursive without indirection | -help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `Foo` representable +help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to break the cycle | -LL | enum Foo { Voo(Option<Box<Option<Foo>>>) } - | ++++ + +LL | enum Foo { Voo(Option<Option<Box<Foo>>>) } + | ++++ + error: aborting due to previous error diff --git a/src/test/ui/issues/issue-2718-a.stderr b/src/test/ui/issues/issue-2718-a.stderr index c6e703f4876..7ea620f386a 100644 --- a/src/test/ui/issues/issue-2718-a.stderr +++ b/src/test/ui/issues/issue-2718-a.stderr @@ -3,10 +3,8 @@ error[E0072]: recursive type `Pong` has infinite size | LL | pub struct Pong(SendPacket<Ping>); | ^^^^^^^^^^^^^^^ ---------------- recursive without indirection - | | - | recursive type has infinite size | -help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `Pong` representable +help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to break the cycle | LL | pub struct Pong(Box<SendPacket<Ping>>); | ++++ + diff --git a/src/test/ui/issues/issue-3008-1.stderr b/src/test/ui/issues/issue-3008-1.stderr index e49d8e6aa0d..be25b9091d5 100644 --- a/src/test/ui/issues/issue-3008-1.stderr +++ b/src/test/ui/issues/issue-3008-1.stderr @@ -2,12 +2,12 @@ error[E0072]: recursive type `Bar` has infinite size --> $DIR/issue-3008-1.rs:5:1 | LL | enum Bar { - | ^^^^^^^^ recursive type has infinite size + | ^^^^^^^^ ... LL | BarSome(Bar) | --- recursive without indirection | -help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `Bar` representable +help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to break the cycle | LL | BarSome(Box<Bar>) | ++++ + diff --git a/src/test/ui/issues/issue-3008-2.stderr b/src/test/ui/issues/issue-3008-2.stderr index b3ce6e42096..858a8fd6af8 100644 --- a/src/test/ui/issues/issue-3008-2.stderr +++ b/src/test/ui/issues/issue-3008-2.stderr @@ -3,10 +3,8 @@ error[E0072]: recursive type `Bar` has infinite size | LL | struct Bar { x: Bar } | ^^^^^^^^^^ --- recursive without indirection - | | - | recursive type has infinite size | -help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `Bar` representable +help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to break the cycle | LL | struct Bar { x: Box<Bar> } | ++++ + diff --git a/src/test/ui/issues/issue-3008-3.stderr b/src/test/ui/issues/issue-3008-3.stderr index c1c043e217b..a1a81e29367 100644 --- a/src/test/ui/issues/issue-3008-3.stderr +++ b/src/test/ui/issues/issue-3008-3.stderr @@ -3,10 +3,8 @@ error[E0072]: recursive type `E2` has infinite size | LL | enum E2<T> { V2(E2<E1>, marker::PhantomData<T>), } | ^^^^^^^^^^ ------ recursive without indirection - | | - | recursive type has infinite size | -help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `E2` representable +help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to break the cycle | LL | enum E2<T> { V2(Box<E2<E1>>, marker::PhantomData<T>), } | ++++ + diff --git a/src/test/ui/issues/issue-32326.stderr b/src/test/ui/issues/issue-32326.stderr index cea76585056..dc51198d98c 100644 --- a/src/test/ui/issues/issue-32326.stderr +++ b/src/test/ui/issues/issue-32326.stderr @@ -2,16 +2,14 @@ error[E0072]: recursive type `Expr` has infinite size --> $DIR/issue-32326.rs:5:1 | LL | enum Expr { - | ^^^^^^^^^ recursive type has infinite size + | ^^^^^^^^^ LL | Plus(Expr, Expr), - | ---- ---- recursive without indirection - | | - | recursive without indirection + | ---- recursive without indirection | -help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `Expr` representable +help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to break the cycle | -LL | Plus(Box<Expr>, Box<Expr>), - | ++++ + ++++ + +LL | Plus(Box<Expr>, Expr), + | ++++ + error: aborting due to previous error diff --git a/src/test/ui/issues/issue-3779.stderr b/src/test/ui/issues/issue-3779.stderr index e853d0f8c89..a0dbcc920fa 100644 --- a/src/test/ui/issues/issue-3779.stderr +++ b/src/test/ui/issues/issue-3779.stderr @@ -2,12 +2,12 @@ error[E0072]: recursive type `S` has infinite size --> $DIR/issue-3779.rs:1:1 | LL | struct S { - | ^^^^^^^^ recursive type has infinite size + | ^^^^^^^^ LL | LL | element: Option<S> - | --------- recursive without indirection + | - recursive without indirection | -help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `S` representable +help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to break the cycle | LL | element: Option<Box<S>> | ++++ + diff --git a/src/test/ui/issues/issue-57271.rs b/src/test/ui/issues/issue-57271.rs index 9940fecbeed..f74222e3e51 100644 --- a/src/test/ui/issues/issue-57271.rs +++ b/src/test/ui/issues/issue-57271.rs @@ -4,7 +4,7 @@ extern crate issue_57271_lib; use issue_57271_lib::BaseType; -pub enum ObjectType { //~ ERROR recursive type `ObjectType` has infinite size +pub enum ObjectType { //~ ERROR recursive types `ObjectType` and `TypeSignature` have infinite size Class(ClassTypeSignature), Array(TypeSignature), TypeVariable(()), @@ -16,7 +16,7 @@ pub struct ClassTypeSignature { pub inner: (), } -pub enum TypeSignature { //~ ERROR recursive type `TypeSignature` has infinite size +pub enum TypeSignature { Base(BaseType), Object(ObjectType), } diff --git a/src/test/ui/issues/issue-57271.stderr b/src/test/ui/issues/issue-57271.stderr index 8250096656a..391e69c91fb 100644 --- a/src/test/ui/issues/issue-57271.stderr +++ b/src/test/ui/issues/issue-57271.stderr @@ -1,31 +1,27 @@ -error[E0072]: recursive type `ObjectType` has infinite size +error[E0072]: recursive types `ObjectType` and `TypeSignature` have infinite size --> $DIR/issue-57271.rs:7:1 | LL | pub enum ObjectType { - | ^^^^^^^^^^^^^^^^^^^ recursive type has infinite size + | ^^^^^^^^^^^^^^^^^^^ LL | Class(ClassTypeSignature), LL | Array(TypeSignature), | ------------- recursive without indirection - | -help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `ObjectType` representable - | -LL | Array(Box<TypeSignature>), - | ++++ + - -error[E0072]: recursive type `TypeSignature` has infinite size - --> $DIR/issue-57271.rs:19:1 - | +... LL | pub enum TypeSignature { - | ^^^^^^^^^^^^^^^^^^^^^^ recursive type has infinite size + | ^^^^^^^^^^^^^^^^^^^^^^ LL | Base(BaseType), LL | Object(ObjectType), | ---------- recursive without indirection | -help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `TypeSignature` representable +help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to break the cycle + | +LL ~ Array(Box<TypeSignature>), +LL | TypeVariable(()), + ... +LL | Base(BaseType), +LL ~ Object(Box<ObjectType>), | -LL | Object(Box<ObjectType>), - | ++++ + -error: aborting due to 2 previous errors +error: aborting due to previous error For more information about this error, try `rustc --explain E0072`. diff --git a/src/test/ui/issues/issue-72554.stderr b/src/test/ui/issues/issue-72554.stderr index 3e5adcae133..bc85cd7b18d 100644 --- a/src/test/ui/issues/issue-72554.stderr +++ b/src/test/ui/issues/issue-72554.stderr @@ -2,12 +2,12 @@ error[E0072]: recursive type `ElemDerived` has infinite size --> $DIR/issue-72554.rs:4:1 | LL | pub enum ElemDerived { - | ^^^^^^^^^^^^^^^^^^^^ recursive type has infinite size + | ^^^^^^^^^^^^^^^^^^^^ ... LL | A(ElemDerived) | ----------- recursive without indirection | -help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `ElemDerived` representable +help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to break the cycle | LL | A(Box<ElemDerived>) | ++++ + diff --git a/src/test/ui/keyword/keyword-self-as-type-param.stderr b/src/test/ui/keyword/keyword-self-as-type-param.stderr index 419652e1349..5aef9475486 100644 --- a/src/test/ui/keyword/keyword-self-as-type-param.stderr +++ b/src/test/ui/keyword/keyword-self-as-type-param.stderr @@ -19,10 +19,8 @@ error[E0072]: recursive type `Foo` has infinite size | LL | struct Foo<Self>(Self); | ^^^^^^^^^^^^^^^^ ---- recursive without indirection - | | - | recursive type has infinite size | -help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `Foo` representable +help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to break the cycle | LL | struct Foo<Self>(Box<Self>); | ++++ + diff --git a/src/test/ui/lifetimes/nested-binder-print.rs b/src/test/ui/lifetimes/nested-binder-print.rs new file mode 100644 index 00000000000..f97f349fd82 --- /dev/null +++ b/src/test/ui/lifetimes/nested-binder-print.rs @@ -0,0 +1,10 @@ +struct TwoLt<'a, 'b>(&'a (), &'b ()); +type Foo<'a> = fn(TwoLt<'_, 'a>); + +fn foo() { + let y: for<'a> fn(Foo<'a>); + let x: u32 = y; + //~^ ERROR mismatched types +} + +fn main() {} diff --git a/src/test/ui/lifetimes/nested-binder-print.stderr b/src/test/ui/lifetimes/nested-binder-print.stderr new file mode 100644 index 00000000000..32dd896932d --- /dev/null +++ b/src/test/ui/lifetimes/nested-binder-print.stderr @@ -0,0 +1,14 @@ +error[E0308]: mismatched types + --> $DIR/nested-binder-print.rs:6:18 + | +LL | let x: u32 = y; + | --- ^ expected `u32`, found fn pointer + | | + | expected due to this + | + = note: expected type `u32` + found fn pointer `for<'a> fn(for<'b> fn(TwoLt<'b, 'a>))` + +error: aborting due to previous error + +For more information about this error, try `rustc --explain E0308`. diff --git a/src/test/ui/lifetimes/re-empty-in-error.stderr b/src/test/ui/lifetimes/re-empty-in-error.stderr index 840707d9470..c35d8ecec5e 100644 --- a/src/test/ui/lifetimes/re-empty-in-error.stderr +++ b/src/test/ui/lifetimes/re-empty-in-error.stderr @@ -4,7 +4,7 @@ error: higher-ranked lifetime error LL | foo(&10); | ^^^^^^^^ | - = note: could not prove `for<'b, 'a> &'b (): 'a` + = note: could not prove `for<'b> &'b (): 'a` error: aborting due to previous error diff --git a/src/test/ui/nll/closure-malformed-projection-input-issue-102800.rs b/src/test/ui/nll/closure-malformed-projection-input-issue-102800.rs new file mode 100644 index 00000000000..25f47f5b6f6 --- /dev/null +++ b/src/test/ui/nll/closure-malformed-projection-input-issue-102800.rs @@ -0,0 +1,31 @@ +// Regression test for #102800 +// +// Here we are generating higher-ranked region constraints when normalizing and relating closure +// input types. Previously this was an ICE in the error path because we didn't register enough +// diagnostic information to render the higher-ranked subtyping error. + +// check-fail + +trait Trait { + type Ty; +} + +impl Trait for &'static () { + type Ty = (); +} + +fn main() { + let _: for<'a> fn(<&'a () as Trait>::Ty) = |_| {}; + //~^ ERROR lifetime may not live long enough + //~| ERROR higher-ranked subtype error + //~| ERROR higher-ranked subtype error + //~| ERROR implementation of `Trait` is not general enough + //~| ERROR implementation of `Trait` is not general enough + //~| ERROR implementation of `Trait` is not general enough + //~| ERROR implementation of `Trait` is not general enough + //~| ERROR implementation of `Trait` is not general enough + //~| ERROR implementation of `Trait` is not general enough + //~| ERROR implementation of `Trait` is not general enough + //~| ERROR implementation of `Trait` is not general enough + //~| ERROR implementation of `Trait` is not general enough +} diff --git a/src/test/ui/nll/closure-malformed-projection-input-issue-102800.stderr b/src/test/ui/nll/closure-malformed-projection-input-issue-102800.stderr new file mode 100644 index 00000000000..dbd5dabd1da --- /dev/null +++ b/src/test/ui/nll/closure-malformed-projection-input-issue-102800.stderr @@ -0,0 +1,104 @@ +error: lifetime may not live long enough + --> $DIR/closure-malformed-projection-input-issue-102800.rs:18:48 + | +LL | let _: for<'a> fn(<&'a () as Trait>::Ty) = |_| {}; + | ^-^ + | || + | |has type `<&'1 () as Trait>::Ty` + | requires that `'1` must outlive `'static` + +error: higher-ranked subtype error + --> $DIR/closure-malformed-projection-input-issue-102800.rs:18:48 + | +LL | let _: for<'a> fn(<&'a () as Trait>::Ty) = |_| {}; + | ^^^ + +error: higher-ranked subtype error + --> $DIR/closure-malformed-projection-input-issue-102800.rs:18:48 + | +LL | let _: for<'a> fn(<&'a () as Trait>::Ty) = |_| {}; + | ^^^ + +error: implementation of `Trait` is not general enough + --> $DIR/closure-malformed-projection-input-issue-102800.rs:18:48 + | +LL | let _: for<'a> fn(<&'a () as Trait>::Ty) = |_| {}; + | ^^^^^^ implementation of `Trait` is not general enough + | + = note: `&'0 ()` must implement `Trait`, for any lifetime `'0`... + = note: ...but `Trait` is actually implemented for the type `&'static ()` + +error: implementation of `Trait` is not general enough + --> $DIR/closure-malformed-projection-input-issue-102800.rs:18:12 + | +LL | let _: for<'a> fn(<&'a () as Trait>::Ty) = |_| {}; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ implementation of `Trait` is not general enough + | + = note: `&'0 ()` must implement `Trait`, for any lifetime `'0`... + = note: ...but `Trait` is actually implemented for the type `&'static ()` + +error: implementation of `Trait` is not general enough + --> $DIR/closure-malformed-projection-input-issue-102800.rs:18:12 + | +LL | let _: for<'a> fn(<&'a () as Trait>::Ty) = |_| {}; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ implementation of `Trait` is not general enough + | + = note: `&'0 ()` must implement `Trait`, for any lifetime `'0`... + = note: ...but `Trait` is actually implemented for the type `&'static ()` + +error: implementation of `Trait` is not general enough + --> $DIR/closure-malformed-projection-input-issue-102800.rs:18:12 + | +LL | let _: for<'a> fn(<&'a () as Trait>::Ty) = |_| {}; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ implementation of `Trait` is not general enough + | + = note: `&'0 ()` must implement `Trait`, for any lifetime `'0`... + = note: ...but `Trait` is actually implemented for the type `&'static ()` + +error: implementation of `Trait` is not general enough + --> $DIR/closure-malformed-projection-input-issue-102800.rs:18:12 + | +LL | let _: for<'a> fn(<&'a () as Trait>::Ty) = |_| {}; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ implementation of `Trait` is not general enough + | + = note: `&'0 ()` must implement `Trait`, for any lifetime `'0`... + = note: ...but `Trait` is actually implemented for the type `&'static ()` + +error: implementation of `Trait` is not general enough + --> $DIR/closure-malformed-projection-input-issue-102800.rs:18:48 + | +LL | let _: for<'a> fn(<&'a () as Trait>::Ty) = |_| {}; + | ^^^^^^ implementation of `Trait` is not general enough + | + = note: `&'0 ()` must implement `Trait`, for any lifetime `'0`... + = note: ...but `Trait` is actually implemented for the type `&'static ()` + +error: implementation of `Trait` is not general enough + --> $DIR/closure-malformed-projection-input-issue-102800.rs:18:48 + | +LL | let _: for<'a> fn(<&'a () as Trait>::Ty) = |_| {}; + | ^^^^^^ implementation of `Trait` is not general enough + | + = note: `&'0 ()` must implement `Trait`, for any lifetime `'0`... + = note: ...but `Trait` is actually implemented for the type `&'static ()` + +error: implementation of `Trait` is not general enough + --> $DIR/closure-malformed-projection-input-issue-102800.rs:18:48 + | +LL | let _: for<'a> fn(<&'a () as Trait>::Ty) = |_| {}; + | ^^^^^^ implementation of `Trait` is not general enough + | + = note: `&'0 ()` must implement `Trait`, for any lifetime `'0`... + = note: ...but `Trait` is actually implemented for the type `&'static ()` + +error: implementation of `Trait` is not general enough + --> $DIR/closure-malformed-projection-input-issue-102800.rs:18:48 + | +LL | let _: for<'a> fn(<&'a () as Trait>::Ty) = |_| {}; + | ^^^^^^ implementation of `Trait` is not general enough + | + = note: `&'0 ()` must implement `Trait`, for any lifetime `'0`... + = note: ...but `Trait` is actually implemented for the type `&'static ()` + +error: aborting due to 12 previous errors + diff --git a/src/test/ui/recursion/recursive-enum.stderr b/src/test/ui/recursion/recursive-enum.stderr index f5d25c5641d..d662d102203 100644 --- a/src/test/ui/recursion/recursive-enum.stderr +++ b/src/test/ui/recursion/recursive-enum.stderr @@ -3,10 +3,8 @@ error[E0072]: recursive type `List` has infinite size | LL | enum List<T> { Cons(T, List<T>), Nil } | ^^^^^^^^^^^^ ------- recursive without indirection - | | - | recursive type has infinite size | -help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `List` representable +help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to break the cycle | LL | enum List<T> { Cons(T, Box<List<T>>), Nil } | ++++ + diff --git a/src/test/ui/regions/issue-102392.rs b/src/test/ui/regions/issue-102392.rs new file mode 100644 index 00000000000..87cc1a8e7a8 --- /dev/null +++ b/src/test/ui/regions/issue-102392.rs @@ -0,0 +1,6 @@ +fn g(f: for<'a> fn(fn(&str, &'a str))) -> bool { + f + //~^ ERROR mismatched types +} + +fn main() {} diff --git a/src/test/ui/regions/issue-102392.stderr b/src/test/ui/regions/issue-102392.stderr new file mode 100644 index 00000000000..56f4c0c5db4 --- /dev/null +++ b/src/test/ui/regions/issue-102392.stderr @@ -0,0 +1,14 @@ +error[E0308]: mismatched types + --> $DIR/issue-102392.rs:2:5 + | +LL | fn g(f: for<'a> fn(fn(&str, &'a str))) -> bool { + | ---- expected `bool` because of return type +LL | f + | ^ expected `bool`, found fn pointer + | + = note: expected type `bool` + found fn pointer `for<'a> fn(for<'b> fn(&'b str, &'a str))` + +error: aborting due to previous error + +For more information about this error, try `rustc --explain E0308`. diff --git a/src/test/ui/sized-cycle-note.rs b/src/test/ui/sized-cycle-note.rs index ca8be5692ba..766a5fa0de3 100644 --- a/src/test/ui/sized-cycle-note.rs +++ b/src/test/ui/sized-cycle-note.rs @@ -1,15 +1,6 @@ -// Test the error message resulting from a cycle in solving `Foo: -// Sized`. The specifics of the message will of course but the main -// thing we want to preserve is that: -// -// 1. the message should appear attached to one of the structs -// defined in this file; -// 2. it should elaborate the steps that led to the cycle. - struct Baz { q: Option<Foo> } -//~^ ERROR recursive type `Baz` has infinite size +//~^ ERROR recursive types `Baz` and `Foo` have infinite size struct Foo { q: Option<Baz> } -//~^ ERROR recursive type `Foo` has infinite size impl Foo { fn bar(&self) {} } diff --git a/src/test/ui/sized-cycle-note.stderr b/src/test/ui/sized-cycle-note.stderr index 536510814c5..06c87b61f41 100644 --- a/src/test/ui/sized-cycle-note.stderr +++ b/src/test/ui/sized-cycle-note.stderr @@ -1,29 +1,19 @@ -error[E0072]: recursive type `Baz` has infinite size - --> $DIR/sized-cycle-note.rs:9:1 +error[E0072]: recursive types `Baz` and `Foo` have infinite size + --> $DIR/sized-cycle-note.rs:1:1 | LL | struct Baz { q: Option<Foo> } - | ^^^^^^^^^^ ----------- recursive without indirection - | | - | recursive type has infinite size - | -help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `Baz` representable - | -LL | struct Baz { q: Option<Box<Foo>> } - | ++++ + - -error[E0072]: recursive type `Foo` has infinite size - --> $DIR/sized-cycle-note.rs:11:1 - | + | ^^^^^^^^^^ --- recursive without indirection +LL | LL | struct Foo { q: Option<Baz> } - | ^^^^^^^^^^ ----------- recursive without indirection - | | - | recursive type has infinite size + | ^^^^^^^^^^ --- recursive without indirection + | +help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to break the cycle | -help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `Foo` representable +LL ~ struct Baz { q: Option<Box<Foo>> } +LL | +LL ~ struct Foo { q: Option<Box<Baz>> } | -LL | struct Foo { q: Option<Box<Baz>> } - | ++++ + -error: aborting due to 2 previous errors +error: aborting due to previous error For more information about this error, try `rustc --explain E0072`. diff --git a/src/test/ui/span/E0072.stderr b/src/test/ui/span/E0072.stderr index 882ed577cf3..20f2e0df05e 100644 --- a/src/test/ui/span/E0072.stderr +++ b/src/test/ui/span/E0072.stderr @@ -2,12 +2,12 @@ error[E0072]: recursive type `ListNode` has infinite size --> $DIR/E0072.rs:1:1 | LL | struct ListNode { - | ^^^^^^^^^^^^^^^ recursive type has infinite size + | ^^^^^^^^^^^^^^^ LL | head: u8, LL | tail: Option<ListNode>, - | ---------------- recursive without indirection + | -------- recursive without indirection | -help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `ListNode` representable +help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to break the cycle | LL | tail: Option<Box<ListNode>>, | ++++ + diff --git a/src/test/ui/span/multiline-span-E0072.stderr b/src/test/ui/span/multiline-span-E0072.stderr index 79b13f45fd8..fc2f6e6622c 100644 --- a/src/test/ui/span/multiline-span-E0072.stderr +++ b/src/test/ui/span/multiline-span-E0072.stderr @@ -3,12 +3,12 @@ error[E0072]: recursive type `ListNode` has infinite size | LL | / struct LL | | ListNode - | |________^ recursive type has infinite size + | |________^ ... LL | tail: Option<ListNode>, - | ---------------- recursive without indirection + | -------- recursive without indirection | -help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `ListNode` representable +help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to break the cycle | LL | tail: Option<Box<ListNode>>, | ++++ + diff --git a/src/test/ui/span/recursive-type-field.rs b/src/test/ui/span/recursive-type-field.rs index 58ea81b8395..bd4c435347c 100644 --- a/src/test/ui/span/recursive-type-field.rs +++ b/src/test/ui/span/recursive-type-field.rs @@ -1,11 +1,11 @@ use std::rc::Rc; -struct Foo<'a> { //~ ERROR recursive type +struct Foo<'a> { //~ ERROR recursive types `Foo` and `Bar` have infinite size bar: Bar<'a>, b: Rc<Bar<'a>>, } -struct Bar<'a> { //~ ERROR recursive type +struct Bar<'a> { y: (Foo<'a>, Foo<'a>), z: Option<Bar<'a>>, a: &'a Foo<'a>, diff --git a/src/test/ui/span/recursive-type-field.stderr b/src/test/ui/span/recursive-type-field.stderr index 08e97e750c3..10af4c36ba4 100644 --- a/src/test/ui/span/recursive-type-field.stderr +++ b/src/test/ui/span/recursive-type-field.stderr @@ -1,35 +1,27 @@ -error[E0072]: recursive type `Foo` has infinite size +error[E0072]: recursive types `Foo` and `Bar` have infinite size --> $DIR/recursive-type-field.rs:3:1 | LL | struct Foo<'a> { - | ^^^^^^^^^^^^^^ recursive type has infinite size + | ^^^^^^^^^^^^^^ LL | bar: Bar<'a>, | ------- recursive without indirection +... +LL | struct Bar<'a> { + | ^^^^^^^^^^^^^^ +LL | y: (Foo<'a>, Foo<'a>), + | ------- ------- recursive without indirection + | | + | recursive without indirection | -help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `Foo` representable - | -LL | bar: Box<Bar<'a>>, - | ++++ + - -error[E0072]: recursive type `Bar` has infinite size - --> $DIR/recursive-type-field.rs:8:1 +help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to break the cycle | +LL ~ bar: Box<Bar<'a>>, +LL | b: Rc<Bar<'a>>, + ... LL | struct Bar<'a> { - | ^^^^^^^^^^^^^^ recursive type has infinite size -LL | y: (Foo<'a>, Foo<'a>), - | ------------------ recursive without indirection -LL | z: Option<Bar<'a>>, - | --------------- recursive without indirection -... -LL | d: [Bar<'a>; 1], - | ------------ recursive without indirection -LL | e: Foo<'a>, - | ------- recursive without indirection -LL | x: Bar<'a>, - | ------- recursive without indirection +LL ~ y: (Box<Foo<'a>>, Box<Foo<'a>>), | - = help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `Bar` representable -error: aborting due to 2 previous errors +error: aborting due to previous error For more information about this error, try `rustc --explain E0072`. diff --git a/src/test/ui/structs-enums/struct-rec/issue-74224.stderr b/src/test/ui/structs-enums/struct-rec/issue-74224.stderr index 6199178467f..f1d50bc8af5 100644 --- a/src/test/ui/structs-enums/struct-rec/issue-74224.stderr +++ b/src/test/ui/structs-enums/struct-rec/issue-74224.stderr @@ -2,12 +2,12 @@ error[E0072]: recursive type `A` has infinite size --> $DIR/issue-74224.rs:1:1 | LL | struct A<T> { - | ^^^^^^^^^^^ recursive type has infinite size + | ^^^^^^^^^^^ ... LL | y: A<A<T>>, | ------- recursive without indirection | -help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `A` representable +help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to break the cycle | LL | y: Box<A<A<T>>>, | ++++ + diff --git a/src/test/ui/structs-enums/struct-rec/issue-84611.stderr b/src/test/ui/structs-enums/struct-rec/issue-84611.stderr index 2e99435e033..536f54e3e96 100644 --- a/src/test/ui/structs-enums/struct-rec/issue-84611.stderr +++ b/src/test/ui/structs-enums/struct-rec/issue-84611.stderr @@ -2,12 +2,12 @@ error[E0072]: recursive type `Foo` has infinite size --> $DIR/issue-84611.rs:1:1 | LL | struct Foo<T> { - | ^^^^^^^^^^^^^ recursive type has infinite size + | ^^^^^^^^^^^^^ LL | LL | x: Foo<[T; 1]>, | ----------- recursive without indirection | -help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `Foo` representable +help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to break the cycle | LL | x: Box<Foo<[T; 1]>>, | ++++ + diff --git a/src/test/ui/structs-enums/struct-rec/mutual-struct-recursion.rs b/src/test/ui/structs-enums/struct-rec/mutual-struct-recursion.rs index cca97f43eff..3bfce8b4f96 100644 --- a/src/test/ui/structs-enums/struct-rec/mutual-struct-recursion.rs +++ b/src/test/ui/structs-enums/struct-rec/mutual-struct-recursion.rs @@ -1,22 +1,20 @@ struct A<T> { -//~^ ERROR recursive type `A` has infinite size +//~^ ERROR recursive types `A` and `B` have infinite size x: T, y: B<T>, } struct B<T> { -//~^ ERROR recursive type `B` has infinite size z: A<T> } struct C<T> { -//~^ ERROR recursive type `C` has infinite size +//~^ ERROR recursive types `C` and `D` have infinite size x: T, y: Option<Option<D<T>>>, } struct D<T> { -//~^ ERROR recursive type `D` has infinite size z: Option<Option<C<T>>>, } diff --git a/src/test/ui/structs-enums/struct-rec/mutual-struct-recursion.stderr b/src/test/ui/structs-enums/struct-rec/mutual-struct-recursion.stderr index 80a494f3f65..881bc281936 100644 --- a/src/test/ui/structs-enums/struct-rec/mutual-struct-recursion.stderr +++ b/src/test/ui/structs-enums/struct-rec/mutual-struct-recursion.stderr @@ -1,59 +1,49 @@ -error[E0072]: recursive type `A` has infinite size +error[E0072]: recursive types `A` and `B` have infinite size --> $DIR/mutual-struct-recursion.rs:1:1 | LL | struct A<T> { - | ^^^^^^^^^^^ recursive type has infinite size + | ^^^^^^^^^^^ ... LL | y: B<T>, | ---- recursive without indirection - | -help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `A` representable - | -LL | y: Box<B<T>>, - | ++++ + - -error[E0072]: recursive type `B` has infinite size - --> $DIR/mutual-struct-recursion.rs:7:1 - | +... LL | struct B<T> { - | ^^^^^^^^^^^ recursive type has infinite size -LL | + | ^^^^^^^^^^^ LL | z: A<T> | ---- recursive without indirection | -help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `B` representable +help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to break the cycle + | +LL ~ y: Box<B<T>>, +LL | } +LL | +LL | struct B<T> { +LL ~ z: Box<A<T>> | -LL | z: Box<A<T>> - | ++++ + -error[E0072]: recursive type `C` has infinite size - --> $DIR/mutual-struct-recursion.rs:12:1 +error[E0072]: recursive types `C` and `D` have infinite size + --> $DIR/mutual-struct-recursion.rs:11:1 | LL | struct C<T> { - | ^^^^^^^^^^^ recursive type has infinite size + | ^^^^^^^^^^^ ... LL | y: Option<Option<D<T>>>, - | -------------------- recursive without indirection - | -help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `C` representable - | -LL | y: Option<Box<Option<D<T>>>>, - | ++++ + - -error[E0072]: recursive type `D` has infinite size - --> $DIR/mutual-struct-recursion.rs:18:1 - | + | ---- recursive without indirection +... LL | struct D<T> { - | ^^^^^^^^^^^ recursive type has infinite size -LL | + | ^^^^^^^^^^^ LL | z: Option<Option<C<T>>>, - | -------------------- recursive without indirection + | ---- recursive without indirection + | +help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to break the cycle | -help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `D` representable +LL ~ y: Option<Option<Box<D<T>>>>, +LL | } +LL | +LL | struct D<T> { +LL ~ z: Option<Option<Box<C<T>>>>, | -LL | z: Option<Box<Option<C<T>>>>, - | ++++ + -error: aborting due to 4 previous errors +error: aborting due to 2 previous errors For more information about this error, try `rustc --explain E0072`. diff --git a/src/test/ui/transmute-equal-assoc-types.rs b/src/test/ui/transmute-equal-assoc-types.rs index 6f357543e5c..d1b593b7f0a 100644 --- a/src/test/ui/transmute-equal-assoc-types.rs +++ b/src/test/ui/transmute-equal-assoc-types.rs @@ -1,9 +1,11 @@ +// check-pass + trait Foo { type Bar; } unsafe fn noop<F: Foo>(foo: F::Bar) -> F::Bar { - ::std::mem::transmute(foo) //~ ERROR cannot transmute between types of different sizes + ::std::mem::transmute(foo) } fn main() {} diff --git a/src/test/ui/transmute-equal-assoc-types.stderr b/src/test/ui/transmute-equal-assoc-types.stderr deleted file mode 100644 index ce7657f9640..00000000000 --- a/src/test/ui/transmute-equal-assoc-types.stderr +++ /dev/null @@ -1,11 +0,0 @@ -error[E0512]: cannot transmute between types of different sizes, or dependently-sized types - --> $DIR/transmute-equal-assoc-types.rs:6:5 - | -LL | ::std::mem::transmute(foo) - | ^^^^^^^^^^^^^^^^^^^^^ - | - = note: `<F as Foo>::Bar` does not have a fixed size - -error: aborting due to previous error - -For more information about this error, try `rustc --explain E0512`. diff --git a/src/test/ui/transmute/lifetimes.rs b/src/test/ui/transmute/lifetimes.rs new file mode 100644 index 00000000000..94319155139 --- /dev/null +++ b/src/test/ui/transmute/lifetimes.rs @@ -0,0 +1,23 @@ +// check-pass + +use std::ptr::NonNull; + +struct Foo<'a, T: ?Sized>(&'a (), NonNull<T>); + +fn foo<'a, 'b, T: ?Sized>(x: Foo<'a, T>) -> Foo<'b, T> { + unsafe { std::mem::transmute(x) } +} + +struct Bar<'a, T: ?Sized>(&'a T); + +fn bar<'a, 'b, T: ?Sized>(x: Bar<'a, T>) -> Bar<'b, T> { + unsafe { std::mem::transmute(x) } +} + +struct Boo<'a, T: ?Sized>(&'a T, u32); + +fn boo<'a, 'b, T: ?Sized>(x: Boo<'a, T>) -> Boo<'b, T> { + unsafe { std::mem::transmute(x) } +} + +fn main() {} diff --git a/src/test/ui/transmute/main.rs b/src/test/ui/transmute/main.rs index cb46fc5ec46..da4a0a660c8 100644 --- a/src/test/ui/transmute/main.rs +++ b/src/test/ui/transmute/main.rs @@ -10,7 +10,7 @@ pub trait TypeConstructor<'a> { unsafe fn transmute_lifetime<'a, 'b, C>(x: <C as TypeConstructor<'a>>::T) -> <C as TypeConstructor<'b>>::T where for<'z> C: TypeConstructor<'z> { - transmute(x) //~ ERROR cannot transmute between types of different sizes + transmute(x) } unsafe fn sizes() { diff --git a/src/test/ui/transmute/main.stderr b/src/test/ui/transmute/main.stderr index d519f03682b..6cb0d7f67e0 100644 --- a/src/test/ui/transmute/main.stderr +++ b/src/test/ui/transmute/main.stderr @@ -1,12 +1,4 @@ error[E0512]: cannot transmute between types of different sizes, or dependently-sized types - --> $DIR/main.rs:13:5 - | -LL | transmute(x) - | ^^^^^^^^^ - | - = note: `<C as TypeConstructor<'_>>::T` does not have a fixed size - -error[E0512]: cannot transmute between types of different sizes, or dependently-sized types --> $DIR/main.rs:17:17 | LL | let x: u8 = transmute(10u16); @@ -33,6 +25,6 @@ LL | let x: Foo = transmute(10); = note: source type: `i32` (32 bits) = note: target type: `Foo` (0 bits) -error: aborting due to 4 previous errors +error: aborting due to 3 previous errors For more information about this error, try `rustc --explain E0512`. diff --git a/src/test/ui/type/type-recursive-box-shadowed.stderr b/src/test/ui/type/type-recursive-box-shadowed.stderr index c22d848f379..cb0e982877c 100644 --- a/src/test/ui/type/type-recursive-box-shadowed.stderr +++ b/src/test/ui/type/type-recursive-box-shadowed.stderr @@ -2,12 +2,12 @@ error[E0072]: recursive type `Foo` has infinite size --> $DIR/type-recursive-box-shadowed.rs:7:1 | LL | struct Foo { - | ^^^^^^^^^^ recursive type has infinite size + | ^^^^^^^^^^ LL | LL | inner: Foo, | --- recursive without indirection | -help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `Foo` representable +help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to break the cycle | LL | inner: Box<Foo>, | ++++ + diff --git a/src/test/ui/type/type-recursive.stderr b/src/test/ui/type/type-recursive.stderr index 3202710286e..9a4d798f61e 100644 --- a/src/test/ui/type/type-recursive.stderr +++ b/src/test/ui/type/type-recursive.stderr @@ -2,12 +2,12 @@ error[E0072]: recursive type `T1` has infinite size --> $DIR/type-recursive.rs:1:1 | LL | struct T1 { - | ^^^^^^^^^ recursive type has infinite size + | ^^^^^^^^^ LL | foo: isize, LL | foolish: T1, | -- recursive without indirection | -help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `T1` representable +help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to break the cycle | LL | foolish: Box<T1>, | ++++ + @@ -16,11 +16,11 @@ error[E0072]: recursive type `T2` has infinite size --> $DIR/type-recursive.rs:6:1 | LL | struct T2 { - | ^^^^^^^^^ recursive type has infinite size + | ^^^^^^^^^ LL | inner: Option<T2>, - | ---------- recursive without indirection + | -- recursive without indirection | -help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `T2` representable +help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to break the cycle | LL | inner: Option<Box<T2>>, | ++++ + @@ -29,11 +29,11 @@ error[E0072]: recursive type `T3` has infinite size --> $DIR/type-recursive.rs:12:1 | LL | struct T3 { - | ^^^^^^^^^ recursive type has infinite size + | ^^^^^^^^^ LL | inner: OptionT3, | -------- recursive without indirection | -help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `T3` representable +help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to break the cycle | LL | inner: Box<OptionT3>, | ++++ + @@ -42,11 +42,9 @@ error[E0072]: recursive type `T4` has infinite size --> $DIR/type-recursive.rs:16:1 | LL | struct T4(Option<T4>); - | ^^^^^^^^^ ---------- recursive without indirection - | | - | recursive type has infinite size + | ^^^^^^^^^ -- recursive without indirection | -help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `T4` representable +help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to break the cycle | LL | struct T4(Option<Box<T4>>); | ++++ + @@ -55,11 +53,11 @@ error[E0072]: recursive type `T5` has infinite size --> $DIR/type-recursive.rs:18:1 | LL | enum T5 { - | ^^^^^^^ recursive type has infinite size + | ^^^^^^^ LL | Variant(Option<T5>), - | ---------- recursive without indirection + | -- recursive without indirection | -help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `T5` representable +help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to break the cycle | LL | Variant(Option<Box<T5>>), | ++++ + @@ -68,11 +66,11 @@ error[E0072]: recursive type `T6` has infinite size --> $DIR/type-recursive.rs:22:1 | LL | enum T6 { - | ^^^^^^^ recursive type has infinite size + | ^^^^^^^ LL | Variant{ field: Option<T6> }, - | ---------- recursive without indirection + | -- recursive without indirection | -help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `T6` representable +help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to break the cycle | LL | Variant{ field: Option<Box<T6>> }, | ++++ + @@ -81,14 +79,14 @@ error[E0072]: recursive type `T7` has infinite size --> $DIR/type-recursive.rs:26:1 | LL | struct T7 { - | ^^^^^^^^^ recursive type has infinite size + | ^^^^^^^^^ LL | foo: std::cell::Cell<Option<T7>>, - | --------------------------- recursive without indirection + | -- recursive without indirection | -help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `T7` representable +help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to break the cycle | -LL | foo: Box<std::cell::Cell<Option<T7>>>, - | ++++ + +LL | foo: std::cell::Cell<Option<Box<T7>>>, + | ++++ + error: aborting due to 7 previous errors diff --git a/src/test/ui/union/union-nonrepresentable.stderr b/src/test/ui/union/union-nonrepresentable.stderr index 9804b1418b2..c266d2e9e13 100644 --- a/src/test/ui/union/union-nonrepresentable.stderr +++ b/src/test/ui/union/union-nonrepresentable.stderr @@ -2,15 +2,15 @@ error[E0072]: recursive type `U` has infinite size --> $DIR/union-nonrepresentable.rs:1:1 | LL | union U { - | ^^^^^^^ recursive type has infinite size + | ^^^^^^^ LL | a: u8, LL | b: std::mem::ManuallyDrop<U>, - | ------------------------- recursive without indirection + | - recursive without indirection | -help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to make `U` representable +help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to break the cycle | -LL | b: Box<std::mem::ManuallyDrop<U>>, - | ++++ + +LL | b: std::mem::ManuallyDrop<Box<U>>, + | ++++ + error: aborting due to previous error diff --git a/src/test/ui/where-clauses/higher-ranked-fn-type.quiet.stderr b/src/test/ui/where-clauses/higher-ranked-fn-type.quiet.stderr index d9950a3d9b7..30248a7a397 100644 --- a/src/test/ui/where-clauses/higher-ranked-fn-type.quiet.stderr +++ b/src/test/ui/where-clauses/higher-ranked-fn-type.quiet.stderr @@ -1,8 +1,8 @@ -error[E0277]: the trait bound `for<'b> for<'b> fn(&'b ()): Foo` is not satisfied +error[E0277]: the trait bound `for<'b> fn(&'b ()): Foo` is not satisfied --> $DIR/higher-ranked-fn-type.rs:20:5 | LL | called() - | ^^^^^^ the trait `for<'b> Foo` is not implemented for `for<'b> fn(&'b ())` + | ^^^^^^ the trait `for<'b> Foo` is not implemented for `fn(&'b ())` | note: required by a bound in `called` --> $DIR/higher-ranked-fn-type.rs:12:25 diff --git a/src/test/ui/where-clauses/higher-ranked-fn-type.rs b/src/test/ui/where-clauses/higher-ranked-fn-type.rs index 0d8893e08d3..ab6edde4ee7 100644 --- a/src/test/ui/where-clauses/higher-ranked-fn-type.rs +++ b/src/test/ui/where-clauses/higher-ranked-fn-type.rs @@ -18,7 +18,7 @@ where (for<'a> fn(&'a ())): Foo, { called() - //[quiet]~^ ERROR the trait bound `for<'b> for<'b> fn(&'b ()): Foo` is not satisfied + //[quiet]~^ ERROR the trait bound `for<'b> fn(&'b ()): Foo` is not satisfied //[verbose]~^^ ERROR the trait bound `for<'b> fn(&ReLateBound( } |
