summaryrefslogtreecommitdiffstats
path: root/tests/ui/lint
diff options
context:
space:
mode:
Diffstat (limited to 'tests/ui/lint')
-rw-r--r--tests/ui/lint/bad-lint-cap2.stderr2
-rw-r--r--tests/ui/lint/bare-trait-objects-path.stderr2
-rw-r--r--tests/ui/lint/cli-lint-override.forbid_warn.stderr2
-rw-r--r--tests/ui/lint/cli-lint-override.warn_deny.stderr2
-rw-r--r--tests/ui/lint/command-line-lint-group-deny.stderr2
-rw-r--r--tests/ui/lint/command-line-lint-group-forbid.stderr2
-rw-r--r--tests/ui/lint/dead-code/basic.stderr2
-rw-r--r--tests/ui/lint/dead-code/closure-bang.stderr2
-rw-r--r--tests/ui/lint/dead-code/empty-unused-enum.stderr2
-rw-r--r--tests/ui/lint/dead-code/impl-trait.stderr2
-rw-r--r--tests/ui/lint/dead-code/type-alias.stderr2
-rw-r--r--tests/ui/lint/dead-code/unused-assoc-fns.stderr2
-rw-r--r--tests/ui/lint/dead-code/unused-struct-variant.stderr2
-rw-r--r--tests/ui/lint/dead-code/unused-variant.stderr2
-rw-r--r--tests/ui/lint/dead-code/with-core-crate.stderr2
-rw-r--r--tests/ui/lint/enable-unstable-lib-feature.stderr2
-rw-r--r--tests/ui/lint/expr_attr_paren_order.stderr2
-rw-r--r--tests/ui/lint/forbid-group-group-1.stderr2
-rw-r--r--tests/ui/lint/future-incompat-json-test.rs10
-rw-r--r--tests/ui/lint/future-incompat-json-test.stderr10
-rw-r--r--tests/ui/lint/internal_features.rs11
-rw-r--r--tests/ui/lint/internal_features.stderr23
-rw-r--r--tests/ui/lint/issue-103435-extra-parentheses.fixed3
-rw-r--r--tests/ui/lint/issue-103435-extra-parentheses.rs7
-rw-r--r--tests/ui/lint/issue-103435-extra-parentheses.stderr16
-rw-r--r--tests/ui/lint/issue-104897.stderr2
-rw-r--r--tests/ui/lint/issue-106991.stderr2
-rw-r--r--tests/ui/lint/issue-109152.stderr2
-rw-r--r--tests/ui/lint/issue-63364.stderr2
-rw-r--r--tests/ui/lint/issue-70819-dont-override-forbid-in-same-scope.stderr2
-rw-r--r--tests/ui/lint/issue-79744.stderr2
-rw-r--r--tests/ui/lint/issue-99387.stderr2
-rw-r--r--tests/ui/lint/let_underscore/let_underscore_lock.stderr2
-rw-r--r--tests/ui/lint/lint-attr-non-item-node.stderr2
-rw-r--r--tests/ui/lint/lint-ctypes-73249-2.stderr2
-rw-r--r--tests/ui/lint/lint-ctypes-73249-3.stderr2
-rw-r--r--tests/ui/lint/lint-ctypes-73249-5.stderr2
-rw-r--r--tests/ui/lint/lint-ctypes-73251-1.stderr2
-rw-r--r--tests/ui/lint/lint-ctypes-73251-2.stderr2
-rw-r--r--tests/ui/lint/lint-ctypes-option-nonnull-unsized.stderr2
-rw-r--r--tests/ui/lint/lint-forbid-internal-unsafe.stderr2
-rw-r--r--tests/ui/lint/lint-match-arms.stderr2
-rw-r--r--tests/ui/lint/lint-missing-copy-implementations.stderr2
-rw-r--r--tests/ui/lint/lint-non-snake-case-crate-2.stderr2
-rw-r--r--tests/ui/lint/lint-non-snake-case-crate.stderr2
-rw-r--r--tests/ui/lint/lint-non-snake-case-lifetimes.stderr2
-rw-r--r--tests/ui/lint/lint-non-snake-case-modules.stderr2
-rw-r--r--tests/ui/lint/lint-non-uppercase-associated-const.stderr2
-rw-r--r--tests/ui/lint/lint-non-uppercase-trait-assoc-const.stderr2
-rw-r--r--tests/ui/lint/lint-nonstandard-style-unicode-3.stderr2
-rw-r--r--tests/ui/lint/lint-qualification.stderr2
-rw-r--r--tests/ui/lint/lint-removed-allow.stderr2
-rw-r--r--tests/ui/lint/lint-removed-cmdline.stderr2
-rw-r--r--tests/ui/lint/lint-removed.stderr2
-rw-r--r--tests/ui/lint/lint-renamed-allow.stderr2
-rw-r--r--tests/ui/lint/lint-renamed-cmdline.stderr2
-rw-r--r--tests/ui/lint/lint-renamed.stderr2
-rw-r--r--tests/ui/lint/lint-stability2.stderr2
-rw-r--r--tests/ui/lint/lint-stability3.stderr2
-rw-r--r--tests/ui/lint/lint-strict-provenance-fuzzy-casts.stderr2
-rw-r--r--tests/ui/lint/lint-struct-necessary.stderr2
-rw-r--r--tests/ui/lint/lint-temporary-cstring-as-param.stderr2
-rw-r--r--tests/ui/lint/lint-type-limits2.stderr2
-rw-r--r--tests/ui/lint/lint-type-limits3.stderr2
-rw-r--r--tests/ui/lint/lint-unconditional-drop-recursion.stderr2
-rw-r--r--tests/ui/lint/lint-unnecessary-import-braces.stderr2
-rw-r--r--tests/ui/lint/must_not_suspend/boxed.stderr2
-rw-r--r--tests/ui/lint/must_not_suspend/dedup.stderr2
-rw-r--r--tests/ui/lint/must_not_suspend/feature-gate-must_not_suspend.stderr2
-rw-r--r--tests/ui/lint/must_not_suspend/mutex.stderr2
-rw-r--r--tests/ui/lint/must_not_suspend/other_items.stderr2
-rw-r--r--tests/ui/lint/must_not_suspend/ref.stderr2
-rw-r--r--tests/ui/lint/must_not_suspend/return.stderr2
-rw-r--r--tests/ui/lint/must_not_suspend/tuple-mismatch.stderr2
-rw-r--r--tests/ui/lint/must_not_suspend/unit.stderr2
-rw-r--r--tests/ui/lint/opaque-ty-ffi-normalization-cycle.stderr2
-rw-r--r--tests/ui/lint/opaque-ty-ffi-unsafe.stderr2
-rw-r--r--tests/ui/lint/ptr_null_checks.rs2
-rw-r--r--tests/ui/lint/ptr_null_checks.stderr54
-rw-r--r--tests/ui/lint/reference_casting.rs9
-rw-r--r--tests/ui/lint/reference_casting.stderr102
-rw-r--r--tests/ui/lint/renamed-lints-still-apply.stderr2
-rw-r--r--tests/ui/lint/rfc-2383-lint-reason/expect_missing_feature_gate.stderr2
-rw-r--r--tests/ui/lint/rfc-2383-lint-reason/expect_nested_lint_levels.stderr2
-rw-r--r--tests/ui/lint/rustdoc-renamed.stderr2
-rw-r--r--tests/ui/lint/unaligned_references_external_macro.stderr2
-rw-r--r--tests/ui/lint/unconditional_panic_98444.stderr2
-rw-r--r--tests/ui/lint/unused/assoc-types.assoc_ty.stderr15
-rw-r--r--tests/ui/lint/unused/assoc-types.rpitit.stderr15
-rw-r--r--tests/ui/lint/unused/assoc-types.rs23
-rw-r--r--tests/ui/lint/unused/issue-105061.stderr2
-rw-r--r--tests/ui/lint/unused/issue-30730.stderr2
-rw-r--r--tests/ui/lint/unused/issue-46576.stderr2
-rw-r--r--tests/ui/lint/unused/issue-59896.stderr2
-rw-r--r--tests/ui/lint/unused/issue-85913.stderr2
-rw-r--r--tests/ui/lint/unused/lint-unused-mut-variables.stderr2
-rw-r--r--tests/ui/lint/unused/must_use-pin.rs45
-rw-r--r--tests/ui/lint/unused/must_use-pin.stderr20
-rw-r--r--tests/ui/lint/unused/unused-macro-rules-malformed-rule.stderr2
-rw-r--r--tests/ui/lint/unused/unused-macro-with-bad-frag-spec.stderr2
-rw-r--r--tests/ui/lint/unused/unused-macro-with-follow-violation.stderr2
-rw-r--r--tests/ui/lint/unused/unused-mut-warning-captured-var.stderr2
-rw-r--r--tests/ui/lint/unused/unused-supertrait.stderr2
-rw-r--r--tests/ui/lint/unused_parens_json_suggestion.stderr4
-rw-r--r--tests/ui/lint/unused_parens_multibyte_recovery.stderr2
-rw-r--r--tests/ui/lint/unused_parens_remove_json_suggestion.stderr20
-rw-r--r--tests/ui/lint/unused_variables-issue-82488.stderr2
-rw-r--r--tests/ui/lint/use_suggestion_json.stderr2
-rw-r--r--tests/ui/lint/wide_pointer_comparisons.rs138
-rw-r--r--tests/ui/lint/wide_pointer_comparisons.stderr452
110 files changed, 968 insertions, 191 deletions
diff --git a/tests/ui/lint/bad-lint-cap2.stderr b/tests/ui/lint/bad-lint-cap2.stderr
index 3f3affe5a..05b16b44c 100644
--- a/tests/ui/lint/bad-lint-cap2.stderr
+++ b/tests/ui/lint/bad-lint-cap2.stderr
@@ -11,5 +11,5 @@ LL | #![deny(warnings)]
| ^^^^^^^^
= note: `#[deny(unused_imports)]` implied by `#[deny(warnings)]`
-error: aborting due to previous error
+error: aborting due to 1 previous error
diff --git a/tests/ui/lint/bare-trait-objects-path.stderr b/tests/ui/lint/bare-trait-objects-path.stderr
index 01ca08a6f..c5d72707f 100644
--- a/tests/ui/lint/bare-trait-objects-path.stderr
+++ b/tests/ui/lint/bare-trait-objects-path.stderr
@@ -57,6 +57,6 @@ help: use `dyn`
LL | <dyn Dyn>::CONST;
| ++++ +
-error: aborting due to previous error; 4 warnings emitted
+error: aborting due to 1 previous error; 4 warnings emitted
For more information about this error, try `rustc --explain E0223`.
diff --git a/tests/ui/lint/cli-lint-override.forbid_warn.stderr b/tests/ui/lint/cli-lint-override.forbid_warn.stderr
index d1c66a81c..d8c75c33b 100644
--- a/tests/ui/lint/cli-lint-override.forbid_warn.stderr
+++ b/tests/ui/lint/cli-lint-override.forbid_warn.stderr
@@ -7,5 +7,5 @@ LL | extern fn foo() {}
= help: the default ABI is C
= note: requested on the command line with `-F missing-abi`
-error: aborting due to previous error
+error: aborting due to 1 previous error
diff --git a/tests/ui/lint/cli-lint-override.warn_deny.stderr b/tests/ui/lint/cli-lint-override.warn_deny.stderr
index f034cfa93..1ba42e9ce 100644
--- a/tests/ui/lint/cli-lint-override.warn_deny.stderr
+++ b/tests/ui/lint/cli-lint-override.warn_deny.stderr
@@ -7,5 +7,5 @@ LL | extern fn foo() {}
= help: the default ABI is C
= note: requested on the command line with `-D missing-abi`
-error: aborting due to previous error
+error: aborting due to 1 previous error
diff --git a/tests/ui/lint/command-line-lint-group-deny.stderr b/tests/ui/lint/command-line-lint-group-deny.stderr
index 59d8429ea..d78f198e7 100644
--- a/tests/ui/lint/command-line-lint-group-deny.stderr
+++ b/tests/ui/lint/command-line-lint-group-deny.stderr
@@ -7,5 +7,5 @@ LL | let _InappropriateCamelCasing = true;
= note: `-D non-snake-case` implied by `-D bad-style`
= help: to override `-D bad-style` add `#[allow(non_snake_case)]`
-error: aborting due to previous error
+error: aborting due to 1 previous error
diff --git a/tests/ui/lint/command-line-lint-group-forbid.stderr b/tests/ui/lint/command-line-lint-group-forbid.stderr
index 486d32a9f..7b527e7b8 100644
--- a/tests/ui/lint/command-line-lint-group-forbid.stderr
+++ b/tests/ui/lint/command-line-lint-group-forbid.stderr
@@ -7,5 +7,5 @@ LL | let _InappropriateCamelCasing = true;
= note: `-F non-snake-case` implied by `-F bad-style`
= help: to override `-F bad-style` add `#[allow(non_snake_case)]`
-error: aborting due to previous error
+error: aborting due to 1 previous error
diff --git a/tests/ui/lint/dead-code/basic.stderr b/tests/ui/lint/dead-code/basic.stderr
index 7d068cead..9f7d25502 100644
--- a/tests/ui/lint/dead-code/basic.stderr
+++ b/tests/ui/lint/dead-code/basic.stderr
@@ -10,5 +10,5 @@ note: the lint level is defined here
LL | #![deny(dead_code)]
| ^^^^^^^^^
-error: aborting due to previous error
+error: aborting due to 1 previous error
diff --git a/tests/ui/lint/dead-code/closure-bang.stderr b/tests/ui/lint/dead-code/closure-bang.stderr
index 119ce11e3..a0f5962df 100644
--- a/tests/ui/lint/dead-code/closure-bang.stderr
+++ b/tests/ui/lint/dead-code/closure-bang.stderr
@@ -13,5 +13,5 @@ LL | #![deny(unreachable_code)]
| ^^^^^^^^^^^^^^^^
= note: this error originates in the macro `println` (in Nightly builds, run with -Z macro-backtrace for more info)
-error: aborting due to previous error
+error: aborting due to 1 previous error
diff --git a/tests/ui/lint/dead-code/empty-unused-enum.stderr b/tests/ui/lint/dead-code/empty-unused-enum.stderr
index 6391f0941..a6bf2e1f4 100644
--- a/tests/ui/lint/dead-code/empty-unused-enum.stderr
+++ b/tests/ui/lint/dead-code/empty-unused-enum.stderr
@@ -11,5 +11,5 @@ LL | #![deny(unused)]
| ^^^^^^
= note: `#[deny(dead_code)]` implied by `#[deny(unused)]`
-error: aborting due to previous error
+error: aborting due to 1 previous error
diff --git a/tests/ui/lint/dead-code/impl-trait.stderr b/tests/ui/lint/dead-code/impl-trait.stderr
index e35e13a9e..1c7d6d945 100644
--- a/tests/ui/lint/dead-code/impl-trait.stderr
+++ b/tests/ui/lint/dead-code/impl-trait.stderr
@@ -10,5 +10,5 @@ note: the lint level is defined here
LL | #![deny(dead_code)]
| ^^^^^^^^^
-error: aborting due to previous error
+error: aborting due to 1 previous error
diff --git a/tests/ui/lint/dead-code/type-alias.stderr b/tests/ui/lint/dead-code/type-alias.stderr
index 446447d97..87c858fdb 100644
--- a/tests/ui/lint/dead-code/type-alias.stderr
+++ b/tests/ui/lint/dead-code/type-alias.stderr
@@ -10,5 +10,5 @@ note: the lint level is defined here
LL | #![deny(dead_code)]
| ^^^^^^^^^
-error: aborting due to previous error
+error: aborting due to 1 previous error
diff --git a/tests/ui/lint/dead-code/unused-assoc-fns.stderr b/tests/ui/lint/dead-code/unused-assoc-fns.stderr
index 6344a70ea..2e43a67d5 100644
--- a/tests/ui/lint/dead-code/unused-assoc-fns.stderr
+++ b/tests/ui/lint/dead-code/unused-assoc-fns.stderr
@@ -25,5 +25,5 @@ LL | #![deny(unused)]
| ^^^^^^
= note: `#[deny(dead_code)]` implied by `#[deny(unused)]`
-error: aborting due to previous error
+error: aborting due to 1 previous error
diff --git a/tests/ui/lint/dead-code/unused-struct-variant.stderr b/tests/ui/lint/dead-code/unused-struct-variant.stderr
index d26dd3aff..bd7b41256 100644
--- a/tests/ui/lint/dead-code/unused-struct-variant.stderr
+++ b/tests/ui/lint/dead-code/unused-struct-variant.stderr
@@ -14,5 +14,5 @@ LL | #![deny(unused)]
| ^^^^^^
= note: `#[deny(dead_code)]` implied by `#[deny(unused)]`
-error: aborting due to previous error
+error: aborting due to 1 previous error
diff --git a/tests/ui/lint/dead-code/unused-variant.stderr b/tests/ui/lint/dead-code/unused-variant.stderr
index 6029bf268..0ae15fde4 100644
--- a/tests/ui/lint/dead-code/unused-variant.stderr
+++ b/tests/ui/lint/dead-code/unused-variant.stderr
@@ -13,5 +13,5 @@ note: the lint level is defined here
LL | #![deny(dead_code)]
| ^^^^^^^^^
-error: aborting due to previous error
+error: aborting due to 1 previous error
diff --git a/tests/ui/lint/dead-code/with-core-crate.stderr b/tests/ui/lint/dead-code/with-core-crate.stderr
index 7adcf8848..f466a6165 100644
--- a/tests/ui/lint/dead-code/with-core-crate.stderr
+++ b/tests/ui/lint/dead-code/with-core-crate.stderr
@@ -10,5 +10,5 @@ note: the lint level is defined here
LL | #![deny(dead_code)]
| ^^^^^^^^^
-error: aborting due to previous error
+error: aborting due to 1 previous error
diff --git a/tests/ui/lint/enable-unstable-lib-feature.stderr b/tests/ui/lint/enable-unstable-lib-feature.stderr
index bb4e928ad..327e6e3e9 100644
--- a/tests/ui/lint/enable-unstable-lib-feature.stderr
+++ b/tests/ui/lint/enable-unstable-lib-feature.stderr
@@ -10,5 +10,5 @@ note: the lint level is defined here
LL | #![deny(non_snake_case)] // To trigger a hard error
| ^^^^^^^^^^^^^^
-error: aborting due to previous error
+error: aborting due to 1 previous error
diff --git a/tests/ui/lint/expr_attr_paren_order.stderr b/tests/ui/lint/expr_attr_paren_order.stderr
index 42beed10c..b3a3741d2 100644
--- a/tests/ui/lint/expr_attr_paren_order.stderr
+++ b/tests/ui/lint/expr_attr_paren_order.stderr
@@ -10,5 +10,5 @@ note: the lint level is defined here
LL | #[allow(non_snake_case)] #[deny(non_snake_case)] (
| ^^^^^^^^^^^^^^
-error: aborting due to previous error
+error: aborting due to 1 previous error
diff --git a/tests/ui/lint/forbid-group-group-1.stderr b/tests/ui/lint/forbid-group-group-1.stderr
index fd425e5f7..bbea56ac6 100644
--- a/tests/ui/lint/forbid-group-group-1.stderr
+++ b/tests/ui/lint/forbid-group-group-1.stderr
@@ -11,5 +11,5 @@ LL | #![forbid(nonstandard_style)]
| ^^^^^^^^^^^^^^^^^
= note: `#[forbid(non_snake_case)]` implied by `#[forbid(nonstandard_style)]`
-error: aborting due to previous error
+error: aborting due to 1 previous error
diff --git a/tests/ui/lint/future-incompat-json-test.rs b/tests/ui/lint/future-incompat-json-test.rs
new file mode 100644
index 000000000..6ccd67029
--- /dev/null
+++ b/tests/ui/lint/future-incompat-json-test.rs
@@ -0,0 +1,10 @@
+// compile-flags: -Zfuture-incompat-test --json=future-incompat --error-format=json
+// check-pass
+
+// The `-Zfuture-incompat-test flag causes any normal warning to be included
+// in the future-incompatible report. The stderr output here should mention
+// the future incompatible report (as extracted by compiletest).
+
+fn main() {
+ let x = 1;
+}
diff --git a/tests/ui/lint/future-incompat-json-test.stderr b/tests/ui/lint/future-incompat-json-test.stderr
new file mode 100644
index 000000000..c4ab5a00d
--- /dev/null
+++ b/tests/ui/lint/future-incompat-json-test.stderr
@@ -0,0 +1,10 @@
+{"$message_type":"future_incompat","future_incompat_report":[{"diagnostic":{"$message_type":"diagnostic","message":"unused variable: `x`","code":{"code":"unused_variables","explanation":null},"level":"warning","spans":[{"file_name":"$DIR/future-incompat-json-test.rs","byte_start":338,"byte_end":339,"line_start":9,"line_end":9,"column_start":9,"column_end":10,"is_primary":true,"text":[{"text":" let x = 1;","highlight_start":9,"highlight_end":10}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`-A unused-variables` implied by `-A unused`","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"to override `-A unused` add `#[allow(unused_variables)]`","code":null,"level":"help","spans":[],"children":[],"rendered":null},{"message":"if this is intentional, prefix it with an underscore","code":null,"level":"help","spans":[{"file_name":"$DIR/future-incompat-json-test.rs","byte_start":338,"byte_end":339,"line_start":9,"line_end":9,"column_start":9,"column_end":10,"is_primary":true,"text":[{"text":" let x = 1;","highlight_start":9,"highlight_end":10}],"label":null,"suggested_replacement":"_x","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"warning: unused variable: `x`
+ --> $DIR/future-incompat-json-test.rs:9:9
+ |
+LL | let x = 1;
+ | ^ help: if this is intentional, prefix it with an underscore: `_x`
+ |
+ = note: `-A unused-variables` implied by `-A unused`
+ = help: to override `-A unused` add `#[allow(unused_variables)]`
+
+"}}]}
diff --git a/tests/ui/lint/internal_features.rs b/tests/ui/lint/internal_features.rs
new file mode 100644
index 000000000..32ce9540c
--- /dev/null
+++ b/tests/ui/lint/internal_features.rs
@@ -0,0 +1,11 @@
+#![forbid(internal_features)]
+// A lang feature and a lib feature.
+#![feature(intrinsics, panic_internals)]
+//~^ ERROR: internal
+//~| ERROR: internal
+
+extern "rust-intrinsic" {
+ fn copy_nonoverlapping<T>(src: *const T, dst: *mut T, count: usize);
+}
+
+fn main() {}
diff --git a/tests/ui/lint/internal_features.stderr b/tests/ui/lint/internal_features.stderr
new file mode 100644
index 000000000..8b52bef8f
--- /dev/null
+++ b/tests/ui/lint/internal_features.stderr
@@ -0,0 +1,23 @@
+error: the feature `intrinsics` is internal to the compiler or standard library
+ --> $DIR/internal_features.rs:3:12
+ |
+LL | #![feature(intrinsics, panic_internals)]
+ | ^^^^^^^^^^
+ |
+ = note: using it is strongly discouraged
+note: the lint level is defined here
+ --> $DIR/internal_features.rs:1:11
+ |
+LL | #![forbid(internal_features)]
+ | ^^^^^^^^^^^^^^^^^
+
+error: the feature `panic_internals` is internal to the compiler or standard library
+ --> $DIR/internal_features.rs:3:24
+ |
+LL | #![feature(intrinsics, panic_internals)]
+ | ^^^^^^^^^^^^^^^
+ |
+ = note: using it is strongly discouraged
+
+error: aborting due to 2 previous errors
+
diff --git a/tests/ui/lint/issue-103435-extra-parentheses.fixed b/tests/ui/lint/issue-103435-extra-parentheses.fixed
index 2b01b414b..74b5aa06e 100644
--- a/tests/ui/lint/issue-103435-extra-parentheses.fixed
+++ b/tests/ui/lint/issue-103435-extra-parentheses.fixed
@@ -13,6 +13,5 @@ fn main() {
// reported by parser
for _x in 1..10 {}
- //~^ ERROR expected one of
- //~| ERROR unexpected parentheses surrounding
+ //~^ ERROR unexpected parentheses surrounding
}
diff --git a/tests/ui/lint/issue-103435-extra-parentheses.rs b/tests/ui/lint/issue-103435-extra-parentheses.rs
index 8261610cf..cc81a64f2 100644
--- a/tests/ui/lint/issue-103435-extra-parentheses.rs
+++ b/tests/ui/lint/issue-103435-extra-parentheses.rs
@@ -8,11 +8,10 @@ fn main() {
for(_x)in 1..10 {}
//~^ ERROR unnecessary parentheses around pattern
- if(2 == 1){}
+ if(2 == 1) {}
//~^ ERROR unnecessary parentheses around `if` condition
// reported by parser
- for(_x in 1..10){}
- //~^ ERROR expected one of
- //~| ERROR unexpected parentheses surrounding
+ for(_x in 1..10) {}
+ //~^ ERROR unexpected parentheses surrounding
}
diff --git a/tests/ui/lint/issue-103435-extra-parentheses.stderr b/tests/ui/lint/issue-103435-extra-parentheses.stderr
index 29c41c910..5a166eb50 100644
--- a/tests/ui/lint/issue-103435-extra-parentheses.stderr
+++ b/tests/ui/lint/issue-103435-extra-parentheses.stderr
@@ -1,18 +1,12 @@
-error: expected one of `)`, `,`, `@`, or `|`, found keyword `in`
- --> $DIR/issue-103435-extra-parentheses.rs:15:12
- |
-LL | for(_x in 1..10){}
- | ^^ expected one of `)`, `,`, `@`, or `|`
-
error: unexpected parentheses surrounding `for` loop head
--> $DIR/issue-103435-extra-parentheses.rs:15:8
|
-LL | for(_x in 1..10){}
+LL | for(_x in 1..10) {}
| ^ ^
|
help: remove parentheses in `for` loop
|
-LL - for(_x in 1..10){}
+LL - for(_x in 1..10) {}
LL + for _x in 1..10 {}
|
@@ -48,14 +42,14 @@ LL + for _x in 1..10 {}
error: unnecessary parentheses around `if` condition
--> $DIR/issue-103435-extra-parentheses.rs:11:7
|
-LL | if(2 == 1){}
+LL | if(2 == 1) {}
| ^ ^
|
help: remove these parentheses
|
-LL - if(2 == 1){}
+LL - if(2 == 1) {}
LL + if 2 == 1 {}
|
-error: aborting due to 5 previous errors
+error: aborting due to 4 previous errors
diff --git a/tests/ui/lint/issue-104897.stderr b/tests/ui/lint/issue-104897.stderr
index 728d51f34..1f3d40605 100644
--- a/tests/ui/lint/issue-104897.stderr
+++ b/tests/ui/lint/issue-104897.stderr
@@ -8,5 +8,5 @@ LL | fn f(){(print!(รก
| |unclosed delimiter
| unclosed delimiter
-error: aborting due to previous error
+error: aborting due to 1 previous error
diff --git a/tests/ui/lint/issue-106991.stderr b/tests/ui/lint/issue-106991.stderr
index 7b43f0b2c..4704e9ef8 100644
--- a/tests/ui/lint/issue-106991.stderr
+++ b/tests/ui/lint/issue-106991.stderr
@@ -6,6 +6,6 @@ LL | fn bar() -> impl Iterator<Item = i32> {
|
= note: required for `Map<std::slice::IterMut<'_, Vec<u8>>, for<'a> fn(&'a mut Vec<u8>) {foo}>` to implement `Iterator`
-error: aborting due to previous error
+error: aborting due to 1 previous error
For more information about this error, try `rustc --explain E0271`.
diff --git a/tests/ui/lint/issue-109152.stderr b/tests/ui/lint/issue-109152.stderr
index 7db9e71a5..a175964cc 100644
--- a/tests/ui/lint/issue-109152.stderr
+++ b/tests/ui/lint/issue-109152.stderr
@@ -19,5 +19,5 @@ help: you might have meant to use `Iterator::for_each`
LL | vec![42].iter().for_each(drop);
| ~~~~~~~~
-error: aborting due to previous error
+error: aborting due to 1 previous error
diff --git a/tests/ui/lint/issue-63364.stderr b/tests/ui/lint/issue-63364.stderr
index 9b5453fa8..f4305f37f 100644
--- a/tests/ui/lint/issue-63364.stderr
+++ b/tests/ui/lint/issue-63364.stderr
@@ -7,5 +7,5 @@ LL | for n in 100_000.. {
= note: the literal `100_000` does not fit into the type `u16` whose range is `0..=65535`
= note: `#[deny(overflowing_literals)]` on by default
-error: aborting due to previous error
+error: aborting due to 1 previous error
diff --git a/tests/ui/lint/issue-70819-dont-override-forbid-in-same-scope.stderr b/tests/ui/lint/issue-70819-dont-override-forbid-in-same-scope.stderr
index cc44f8aa5..f78bf899b 100644
--- a/tests/ui/lint/issue-70819-dont-override-forbid-in-same-scope.stderr
+++ b/tests/ui/lint/issue-70819-dont-override-forbid-in-same-scope.stderr
@@ -14,5 +14,5 @@ note: the lint level is defined here
LL | #![forbid(forbidden_lint_groups)]
| ^^^^^^^^^^^^^^^^^^^^^
-error: aborting due to previous error
+error: aborting due to 1 previous error
diff --git a/tests/ui/lint/issue-79744.stderr b/tests/ui/lint/issue-79744.stderr
index c1b56250d..4cb79f7fd 100644
--- a/tests/ui/lint/issue-79744.stderr
+++ b/tests/ui/lint/issue-79744.stderr
@@ -8,5 +8,5 @@ LL | let e2 = 230;
= help: consider using the type `u8` instead
= note: `#[deny(overflowing_literals)]` on by default
-error: aborting due to previous error
+error: aborting due to 1 previous error
diff --git a/tests/ui/lint/issue-99387.stderr b/tests/ui/lint/issue-99387.stderr
index 3a46ce7e1..0005e5532 100644
--- a/tests/ui/lint/issue-99387.stderr
+++ b/tests/ui/lint/issue-99387.stderr
@@ -11,5 +11,5 @@ note: this item must mention the opaque type in its signature in order to be abl
LL | pub fn ohno<'a>() -> <&'a () as Tr>::Item {
| ^^^^
-error: aborting due to previous error
+error: aborting due to 1 previous error
diff --git a/tests/ui/lint/let_underscore/let_underscore_lock.stderr b/tests/ui/lint/let_underscore/let_underscore_lock.stderr
index fb58af0a4..f88a1df55 100644
--- a/tests/ui/lint/let_underscore/let_underscore_lock.stderr
+++ b/tests/ui/lint/let_underscore/let_underscore_lock.stderr
@@ -16,5 +16,5 @@ help: consider immediately dropping the value
LL | drop(data.lock().unwrap());
| ~~~~~ +
-error: aborting due to previous error
+error: aborting due to 1 previous error
diff --git a/tests/ui/lint/lint-attr-non-item-node.stderr b/tests/ui/lint/lint-attr-non-item-node.stderr
index 583579140..7922d1c08 100644
--- a/tests/ui/lint/lint-attr-non-item-node.stderr
+++ b/tests/ui/lint/lint-attr-non-item-node.stderr
@@ -12,5 +12,5 @@ note: the lint level is defined here
LL | #[deny(unreachable_code)]
| ^^^^^^^^^^^^^^^^
-error: aborting due to previous error
+error: aborting due to 1 previous error
diff --git a/tests/ui/lint/lint-ctypes-73249-2.stderr b/tests/ui/lint/lint-ctypes-73249-2.stderr
index 49fa54114..ef30a4069 100644
--- a/tests/ui/lint/lint-ctypes-73249-2.stderr
+++ b/tests/ui/lint/lint-ctypes-73249-2.stderr
@@ -11,5 +11,5 @@ note: the lint level is defined here
LL | #![deny(improper_ctypes)]
| ^^^^^^^^^^^^^^^
-error: aborting due to previous error
+error: aborting due to 1 previous error
diff --git a/tests/ui/lint/lint-ctypes-73249-3.stderr b/tests/ui/lint/lint-ctypes-73249-3.stderr
index c41ce666d..e5607ba72 100644
--- a/tests/ui/lint/lint-ctypes-73249-3.stderr
+++ b/tests/ui/lint/lint-ctypes-73249-3.stderr
@@ -11,5 +11,5 @@ note: the lint level is defined here
LL | #![deny(improper_ctypes)]
| ^^^^^^^^^^^^^^^
-error: aborting due to previous error
+error: aborting due to 1 previous error
diff --git a/tests/ui/lint/lint-ctypes-73249-5.stderr b/tests/ui/lint/lint-ctypes-73249-5.stderr
index 98245c4f1..fcb106c48 100644
--- a/tests/ui/lint/lint-ctypes-73249-5.stderr
+++ b/tests/ui/lint/lint-ctypes-73249-5.stderr
@@ -11,5 +11,5 @@ note: the lint level is defined here
LL | #![deny(improper_ctypes)]
| ^^^^^^^^^^^^^^^
-error: aborting due to previous error
+error: aborting due to 1 previous error
diff --git a/tests/ui/lint/lint-ctypes-73251-1.stderr b/tests/ui/lint/lint-ctypes-73251-1.stderr
index b4eb921b9..a3b3ebaac 100644
--- a/tests/ui/lint/lint-ctypes-73251-1.stderr
+++ b/tests/ui/lint/lint-ctypes-73251-1.stderr
@@ -11,5 +11,5 @@ note: the lint level is defined here
LL | #![deny(improper_ctypes)]
| ^^^^^^^^^^^^^^^
-error: aborting due to previous error
+error: aborting due to 1 previous error
diff --git a/tests/ui/lint/lint-ctypes-73251-2.stderr b/tests/ui/lint/lint-ctypes-73251-2.stderr
index e44cd45bd..40a9cd00c 100644
--- a/tests/ui/lint/lint-ctypes-73251-2.stderr
+++ b/tests/ui/lint/lint-ctypes-73251-2.stderr
@@ -11,5 +11,5 @@ note: the lint level is defined here
LL | #![deny(improper_ctypes)]
| ^^^^^^^^^^^^^^^
-error: aborting due to previous error
+error: aborting due to 1 previous error
diff --git a/tests/ui/lint/lint-ctypes-option-nonnull-unsized.stderr b/tests/ui/lint/lint-ctypes-option-nonnull-unsized.stderr
index f59fb3cc7..746304694 100644
--- a/tests/ui/lint/lint-ctypes-option-nonnull-unsized.stderr
+++ b/tests/ui/lint/lint-ctypes-option-nonnull-unsized.stderr
@@ -12,5 +12,5 @@ note: the lint level is defined here
LL | #![deny(improper_ctypes_definitions)]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^
-error: aborting due to previous error
+error: aborting due to 1 previous error
diff --git a/tests/ui/lint/lint-forbid-internal-unsafe.stderr b/tests/ui/lint/lint-forbid-internal-unsafe.stderr
index ba425ceb4..52d9c8471 100644
--- a/tests/ui/lint/lint-forbid-internal-unsafe.stderr
+++ b/tests/ui/lint/lint-forbid-internal-unsafe.stderr
@@ -18,5 +18,5 @@ LL | println!("{}", evil!(*(0 as *const u8)));
|
= note: `#[warn(deref_nullptr)]` on by default
-error: aborting due to previous error; 1 warning emitted
+error: aborting due to 1 previous error; 1 warning emitted
diff --git a/tests/ui/lint/lint-match-arms.stderr b/tests/ui/lint/lint-match-arms.stderr
index 1bc0e41fd..eccfa19fd 100644
--- a/tests/ui/lint/lint-match-arms.stderr
+++ b/tests/ui/lint/lint-match-arms.stderr
@@ -10,5 +10,5 @@ note: the lint level is defined here
LL | #[deny(unused_variables)]
| ^^^^^^^^^^^^^^^^
-error: aborting due to previous error
+error: aborting due to 1 previous error
diff --git a/tests/ui/lint/lint-missing-copy-implementations.stderr b/tests/ui/lint/lint-missing-copy-implementations.stderr
index e5f5ce20d..37c9192d2 100644
--- a/tests/ui/lint/lint-missing-copy-implementations.stderr
+++ b/tests/ui/lint/lint-missing-copy-implementations.stderr
@@ -12,5 +12,5 @@ note: the lint level is defined here
LL | #![deny(missing_copy_implementations)]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-error: aborting due to previous error
+error: aborting due to 1 previous error
diff --git a/tests/ui/lint/lint-non-snake-case-crate-2.stderr b/tests/ui/lint/lint-non-snake-case-crate-2.stderr
index 4b42145bb..f3207226c 100644
--- a/tests/ui/lint/lint-non-snake-case-crate-2.stderr
+++ b/tests/ui/lint/lint-non-snake-case-crate-2.stderr
@@ -7,5 +7,5 @@ note: the lint level is defined here
LL | #![deny(non_snake_case)]
| ^^^^^^^^^^^^^^
-error: aborting due to previous error
+error: aborting due to 1 previous error
diff --git a/tests/ui/lint/lint-non-snake-case-crate.stderr b/tests/ui/lint/lint-non-snake-case-crate.stderr
index da6b89c1e..1136b707d 100644
--- a/tests/ui/lint/lint-non-snake-case-crate.stderr
+++ b/tests/ui/lint/lint-non-snake-case-crate.stderr
@@ -10,5 +10,5 @@ note: the lint level is defined here
LL | #![deny(non_snake_case)]
| ^^^^^^^^^^^^^^
-error: aborting due to previous error
+error: aborting due to 1 previous error
diff --git a/tests/ui/lint/lint-non-snake-case-lifetimes.stderr b/tests/ui/lint/lint-non-snake-case-lifetimes.stderr
index d4fe26a43..8be7365cf 100644
--- a/tests/ui/lint/lint-non-snake-case-lifetimes.stderr
+++ b/tests/ui/lint/lint-non-snake-case-lifetimes.stderr
@@ -10,5 +10,5 @@ note: the lint level is defined here
LL | #![deny(non_snake_case)]
| ^^^^^^^^^^^^^^
-error: aborting due to previous error
+error: aborting due to 1 previous error
diff --git a/tests/ui/lint/lint-non-snake-case-modules.stderr b/tests/ui/lint/lint-non-snake-case-modules.stderr
index c8b997c87..f21f9a934 100644
--- a/tests/ui/lint/lint-non-snake-case-modules.stderr
+++ b/tests/ui/lint/lint-non-snake-case-modules.stderr
@@ -10,5 +10,5 @@ note: the lint level is defined here
LL | #![deny(non_snake_case)]
| ^^^^^^^^^^^^^^
-error: aborting due to previous error
+error: aborting due to 1 previous error
diff --git a/tests/ui/lint/lint-non-uppercase-associated-const.stderr b/tests/ui/lint/lint-non-uppercase-associated-const.stderr
index 411ff51aa..54c951b1f 100644
--- a/tests/ui/lint/lint-non-uppercase-associated-const.stderr
+++ b/tests/ui/lint/lint-non-uppercase-associated-const.stderr
@@ -10,5 +10,5 @@ note: the lint level is defined here
LL | #![deny(non_upper_case_globals)]
| ^^^^^^^^^^^^^^^^^^^^^^
-error: aborting due to previous error
+error: aborting due to 1 previous error
diff --git a/tests/ui/lint/lint-non-uppercase-trait-assoc-const.stderr b/tests/ui/lint/lint-non-uppercase-trait-assoc-const.stderr
index 98d8d1dd2..a5ac540d1 100644
--- a/tests/ui/lint/lint-non-uppercase-trait-assoc-const.stderr
+++ b/tests/ui/lint/lint-non-uppercase-trait-assoc-const.stderr
@@ -10,5 +10,5 @@ note: the lint level is defined here
LL | #![deny(non_upper_case_globals)]
| ^^^^^^^^^^^^^^^^^^^^^^
-error: aborting due to previous error
+error: aborting due to 1 previous error
diff --git a/tests/ui/lint/lint-nonstandard-style-unicode-3.stderr b/tests/ui/lint/lint-nonstandard-style-unicode-3.stderr
index 970e6b838..3d4337bbc 100644
--- a/tests/ui/lint/lint-nonstandard-style-unicode-3.stderr
+++ b/tests/ui/lint/lint-nonstandard-style-unicode-3.stderr
@@ -10,5 +10,5 @@ note: the lint level is defined here
LL | #![forbid(non_upper_case_globals)]
| ^^^^^^^^^^^^^^^^^^^^^^
-error: aborting due to previous error
+error: aborting due to 1 previous error
diff --git a/tests/ui/lint/lint-qualification.stderr b/tests/ui/lint/lint-qualification.stderr
index 90a06bc6c..2448a64f1 100644
--- a/tests/ui/lint/lint-qualification.stderr
+++ b/tests/ui/lint/lint-qualification.stderr
@@ -15,5 +15,5 @@ LL - foo::bar();
LL + bar();
|
-error: aborting due to previous error
+error: aborting due to 1 previous error
diff --git a/tests/ui/lint/lint-removed-allow.stderr b/tests/ui/lint/lint-removed-allow.stderr
index 029334c2e..849c9ec5c 100644
--- a/tests/ui/lint/lint-removed-allow.stderr
+++ b/tests/ui/lint/lint-removed-allow.stderr
@@ -10,5 +10,5 @@ note: the lint level is defined here
LL | #[deny(unused_variables)]
| ^^^^^^^^^^^^^^^^
-error: aborting due to previous error
+error: aborting due to 1 previous error
diff --git a/tests/ui/lint/lint-removed-cmdline.stderr b/tests/ui/lint/lint-removed-cmdline.stderr
index 6b76ad3b5..fd63433c3 100644
--- a/tests/ui/lint/lint-removed-cmdline.stderr
+++ b/tests/ui/lint/lint-removed-cmdline.stderr
@@ -26,5 +26,5 @@ LL | #[deny(warnings)]
| ^^^^^^^^
= note: `#[deny(unused_variables)]` implied by `#[deny(warnings)]`
-error: aborting due to previous error; 3 warnings emitted
+error: aborting due to 1 previous error; 3 warnings emitted
diff --git a/tests/ui/lint/lint-removed.stderr b/tests/ui/lint/lint-removed.stderr
index dc0515b84..6d3629ba3 100644
--- a/tests/ui/lint/lint-removed.stderr
+++ b/tests/ui/lint/lint-removed.stderr
@@ -18,5 +18,5 @@ note: the lint level is defined here
LL | #[deny(unused_variables)]
| ^^^^^^^^^^^^^^^^
-error: aborting due to previous error; 1 warning emitted
+error: aborting due to 1 previous error; 1 warning emitted
diff --git a/tests/ui/lint/lint-renamed-allow.stderr b/tests/ui/lint/lint-renamed-allow.stderr
index 46f6a10de..8bc8530b4 100644
--- a/tests/ui/lint/lint-renamed-allow.stderr
+++ b/tests/ui/lint/lint-renamed-allow.stderr
@@ -11,5 +11,5 @@ LL | #[deny(unused)]
| ^^^^^^
= note: `#[deny(unused_variables)]` implied by `#[deny(unused)]`
-error: aborting due to previous error
+error: aborting due to 1 previous error
diff --git a/tests/ui/lint/lint-renamed-cmdline.stderr b/tests/ui/lint/lint-renamed-cmdline.stderr
index 675443dde..d6bb72f34 100644
--- a/tests/ui/lint/lint-renamed-cmdline.stderr
+++ b/tests/ui/lint/lint-renamed-cmdline.stderr
@@ -29,5 +29,5 @@ LL | #[deny(unused)]
| ^^^^^^
= note: `#[deny(unused_variables)]` implied by `#[deny(unused)]`
-error: aborting due to previous error; 3 warnings emitted
+error: aborting due to 1 previous error; 3 warnings emitted
diff --git a/tests/ui/lint/lint-renamed.stderr b/tests/ui/lint/lint-renamed.stderr
index 984254571..a1aa85e67 100644
--- a/tests/ui/lint/lint-renamed.stderr
+++ b/tests/ui/lint/lint-renamed.stderr
@@ -19,5 +19,5 @@ LL | #[deny(unused)]
| ^^^^^^
= note: `#[deny(unused_variables)]` implied by `#[deny(unused)]`
-error: aborting due to previous error; 1 warning emitted
+error: aborting due to 1 previous error; 1 warning emitted
diff --git a/tests/ui/lint/lint-stability2.stderr b/tests/ui/lint/lint-stability2.stderr
index 51bdf84a3..3df0c4281 100644
--- a/tests/ui/lint/lint-stability2.stderr
+++ b/tests/ui/lint/lint-stability2.stderr
@@ -11,5 +11,5 @@ LL | #![deny(deprecated)]
| ^^^^^^^^^^
= note: this error originates in the macro `macro_test` (in Nightly builds, run with -Z macro-backtrace for more info)
-error: aborting due to previous error
+error: aborting due to 1 previous error
diff --git a/tests/ui/lint/lint-stability3.stderr b/tests/ui/lint/lint-stability3.stderr
index 3bbb60dd3..3a2af452c 100644
--- a/tests/ui/lint/lint-stability3.stderr
+++ b/tests/ui/lint/lint-stability3.stderr
@@ -10,5 +10,5 @@ note: the lint level is defined here
LL | #![deny(deprecated)]
| ^^^^^^^^^^
-error: aborting due to previous error
+error: aborting due to 1 previous error
diff --git a/tests/ui/lint/lint-strict-provenance-fuzzy-casts.stderr b/tests/ui/lint/lint-strict-provenance-fuzzy-casts.stderr
index 383623b48..0b1289742 100644
--- a/tests/ui/lint/lint-strict-provenance-fuzzy-casts.stderr
+++ b/tests/ui/lint/lint-strict-provenance-fuzzy-casts.stderr
@@ -15,5 +15,5 @@ help: use `.with_addr()` to adjust a valid pointer in the same allocation, to th
LL | let dangling = (...).with_addr(16_usize);
| ++++++++++++++++ ~
-error: aborting due to previous error
+error: aborting due to 1 previous error
diff --git a/tests/ui/lint/lint-struct-necessary.stderr b/tests/ui/lint/lint-struct-necessary.stderr
index eb65a9e98..90b2af7de 100644
--- a/tests/ui/lint/lint-struct-necessary.stderr
+++ b/tests/ui/lint/lint-struct-necessary.stderr
@@ -15,5 +15,5 @@ LL - match (e) {
LL + match e {
|
-error: aborting due to previous error
+error: aborting due to 1 previous error
diff --git a/tests/ui/lint/lint-temporary-cstring-as-param.stderr b/tests/ui/lint/lint-temporary-cstring-as-param.stderr
index 838b3bc13..7aa21f256 100644
--- a/tests/ui/lint/lint-temporary-cstring-as-param.stderr
+++ b/tests/ui/lint/lint-temporary-cstring-as-param.stderr
@@ -14,5 +14,5 @@ note: the lint level is defined here
LL | #![deny(temporary_cstring_as_ptr)]
| ^^^^^^^^^^^^^^^^^^^^^^^^
-error: aborting due to previous error
+error: aborting due to 1 previous error
diff --git a/tests/ui/lint/lint-type-limits2.stderr b/tests/ui/lint/lint-type-limits2.stderr
index b3420ad8a..913633508 100644
--- a/tests/ui/lint/lint-type-limits2.stderr
+++ b/tests/ui/lint/lint-type-limits2.stderr
@@ -20,5 +20,5 @@ note: the lint level is defined here
LL | #![warn(overflowing_literals)]
| ^^^^^^^^^^^^^^^^^^^^
-error: aborting due to previous error; 1 warning emitted
+error: aborting due to 1 previous error; 1 warning emitted
diff --git a/tests/ui/lint/lint-type-limits3.stderr b/tests/ui/lint/lint-type-limits3.stderr
index db46e7ae7..77487164a 100644
--- a/tests/ui/lint/lint-type-limits3.stderr
+++ b/tests/ui/lint/lint-type-limits3.stderr
@@ -20,5 +20,5 @@ note: the lint level is defined here
LL | #![warn(overflowing_literals)]
| ^^^^^^^^^^^^^^^^^^^^
-error: aborting due to previous error; 1 warning emitted
+error: aborting due to 1 previous error; 1 warning emitted
diff --git a/tests/ui/lint/lint-unconditional-drop-recursion.stderr b/tests/ui/lint/lint-unconditional-drop-recursion.stderr
index 76f954816..5ac56499c 100644
--- a/tests/ui/lint/lint-unconditional-drop-recursion.stderr
+++ b/tests/ui/lint/lint-unconditional-drop-recursion.stderr
@@ -13,5 +13,5 @@ note: the lint level is defined here
LL | #![deny(unconditional_recursion)]
| ^^^^^^^^^^^^^^^^^^^^^^^
-error: aborting due to previous error
+error: aborting due to 1 previous error
diff --git a/tests/ui/lint/lint-unnecessary-import-braces.stderr b/tests/ui/lint/lint-unnecessary-import-braces.stderr
index 2d289404d..5f441ef4a 100644
--- a/tests/ui/lint/lint-unnecessary-import-braces.stderr
+++ b/tests/ui/lint/lint-unnecessary-import-braces.stderr
@@ -10,5 +10,5 @@ note: the lint level is defined here
LL | #![deny(unused_import_braces)]
| ^^^^^^^^^^^^^^^^^^^^
-error: aborting due to previous error
+error: aborting due to 1 previous error
diff --git a/tests/ui/lint/must_not_suspend/boxed.stderr b/tests/ui/lint/must_not_suspend/boxed.stderr
index a2abfffc1..6170a36a8 100644
--- a/tests/ui/lint/must_not_suspend/boxed.stderr
+++ b/tests/ui/lint/must_not_suspend/boxed.stderr
@@ -22,5 +22,5 @@ note: the lint level is defined here
LL | #![deny(must_not_suspend)]
| ^^^^^^^^^^^^^^^^
-error: aborting due to previous error
+error: aborting due to 1 previous error
diff --git a/tests/ui/lint/must_not_suspend/dedup.stderr b/tests/ui/lint/must_not_suspend/dedup.stderr
index 5d5b04a5d..2876e1cf6 100644
--- a/tests/ui/lint/must_not_suspend/dedup.stderr
+++ b/tests/ui/lint/must_not_suspend/dedup.stderr
@@ -18,5 +18,5 @@ note: the lint level is defined here
LL | #![deny(must_not_suspend)]
| ^^^^^^^^^^^^^^^^
-error: aborting due to previous error
+error: aborting due to 1 previous error
diff --git a/tests/ui/lint/must_not_suspend/feature-gate-must_not_suspend.stderr b/tests/ui/lint/must_not_suspend/feature-gate-must_not_suspend.stderr
index ab20a8be8..9ec33b1c4 100644
--- a/tests/ui/lint/must_not_suspend/feature-gate-must_not_suspend.stderr
+++ b/tests/ui/lint/must_not_suspend/feature-gate-must_not_suspend.stderr
@@ -7,6 +7,6 @@ LL | #[must_not_suspend = "You gotta use Umm's, ya know?"]
= note: see issue #83310 <https://github.com/rust-lang/rust/issues/83310> for more information
= help: add `#![feature(must_not_suspend)]` to the crate attributes to enable
-error: aborting due to previous error
+error: aborting due to 1 previous error
For more information about this error, try `rustc --explain E0658`.
diff --git a/tests/ui/lint/must_not_suspend/mutex.stderr b/tests/ui/lint/must_not_suspend/mutex.stderr
index 9b5fc37a3..ca53a7531 100644
--- a/tests/ui/lint/must_not_suspend/mutex.stderr
+++ b/tests/ui/lint/must_not_suspend/mutex.stderr
@@ -22,5 +22,5 @@ note: the lint level is defined here
LL | #![deny(must_not_suspend)]
| ^^^^^^^^^^^^^^^^
-error: aborting due to previous error
+error: aborting due to 1 previous error
diff --git a/tests/ui/lint/must_not_suspend/other_items.stderr b/tests/ui/lint/must_not_suspend/other_items.stderr
index 41c889692..e6c36b789 100644
--- a/tests/ui/lint/must_not_suspend/other_items.stderr
+++ b/tests/ui/lint/must_not_suspend/other_items.stderr
@@ -6,5 +6,5 @@ LL | #[must_not_suspend]
LL | mod inner {}
| ------------ is not a struct, enum, or trait
-error: aborting due to previous error
+error: aborting due to 1 previous error
diff --git a/tests/ui/lint/must_not_suspend/ref.stderr b/tests/ui/lint/must_not_suspend/ref.stderr
index ed91a4a0b..aa772afc7 100644
--- a/tests/ui/lint/must_not_suspend/ref.stderr
+++ b/tests/ui/lint/must_not_suspend/ref.stderr
@@ -23,5 +23,5 @@ note: the lint level is defined here
LL | #![deny(must_not_suspend)]
| ^^^^^^^^^^^^^^^^
-error: aborting due to previous error
+error: aborting due to 1 previous error
diff --git a/tests/ui/lint/must_not_suspend/return.stderr b/tests/ui/lint/must_not_suspend/return.stderr
index fdada85eb..5a73064c7 100644
--- a/tests/ui/lint/must_not_suspend/return.stderr
+++ b/tests/ui/lint/must_not_suspend/return.stderr
@@ -8,5 +8,5 @@ LL | | 0
LL | | }
| |_- is not a struct, enum, or trait
-error: aborting due to previous error
+error: aborting due to 1 previous error
diff --git a/tests/ui/lint/must_not_suspend/tuple-mismatch.stderr b/tests/ui/lint/must_not_suspend/tuple-mismatch.stderr
index 294476107..3adf26cfe 100644
--- a/tests/ui/lint/must_not_suspend/tuple-mismatch.stderr
+++ b/tests/ui/lint/must_not_suspend/tuple-mismatch.stderr
@@ -7,6 +7,6 @@ LL | yield ((), ());
= note: expected tuple `((), ())`
found unit type `()`
-error: aborting due to previous error
+error: aborting due to 1 previous error
For more information about this error, try `rustc --explain E0308`.
diff --git a/tests/ui/lint/must_not_suspend/unit.stderr b/tests/ui/lint/must_not_suspend/unit.stderr
index 11c95c146..716369d8e 100644
--- a/tests/ui/lint/must_not_suspend/unit.stderr
+++ b/tests/ui/lint/must_not_suspend/unit.stderr
@@ -22,5 +22,5 @@ note: the lint level is defined here
LL | #![deny(must_not_suspend)]
| ^^^^^^^^^^^^^^^^
-error: aborting due to previous error
+error: aborting due to 1 previous error
diff --git a/tests/ui/lint/opaque-ty-ffi-normalization-cycle.stderr b/tests/ui/lint/opaque-ty-ffi-normalization-cycle.stderr
index e8d696477..9efc18783 100644
--- a/tests/ui/lint/opaque-ty-ffi-normalization-cycle.stderr
+++ b/tests/ui/lint/opaque-ty-ffi-normalization-cycle.stderr
@@ -11,5 +11,5 @@ note: the lint level is defined here
LL | #![deny(improper_ctypes)]
| ^^^^^^^^^^^^^^^
-error: aborting due to previous error
+error: aborting due to 1 previous error
diff --git a/tests/ui/lint/opaque-ty-ffi-unsafe.stderr b/tests/ui/lint/opaque-ty-ffi-unsafe.stderr
index ba9e18bcc..7f5d1792b 100644
--- a/tests/ui/lint/opaque-ty-ffi-unsafe.stderr
+++ b/tests/ui/lint/opaque-ty-ffi-unsafe.stderr
@@ -11,5 +11,5 @@ note: the lint level is defined here
LL | #![deny(improper_ctypes)]
| ^^^^^^^^^^^^^^^
-error: aborting due to previous error
+error: aborting due to 1 previous error
diff --git a/tests/ui/lint/ptr_null_checks.rs b/tests/ui/lint/ptr_null_checks.rs
index 3028084e9..4925019be 100644
--- a/tests/ui/lint/ptr_null_checks.rs
+++ b/tests/ui/lint/ptr_null_checks.rs
@@ -1,7 +1,5 @@
// check-pass
-#![feature(ptr_from_ref)]
-
use std::ptr;
extern "C" fn c_fn() {}
diff --git a/tests/ui/lint/ptr_null_checks.stderr b/tests/ui/lint/ptr_null_checks.stderr
index 0edc1b865..70a27790c 100644
--- a/tests/ui/lint/ptr_null_checks.stderr
+++ b/tests/ui/lint/ptr_null_checks.stderr
@@ -1,5 +1,5 @@
warning: function pointers are not nullable, so checking them for null will always return false
- --> $DIR/ptr_null_checks.rs:14:8
+ --> $DIR/ptr_null_checks.rs:12:8
|
LL | if (fn_ptr as *mut ()).is_null() {}
| ^------^^^^^^^^^^^^^^^^^^^^^^
@@ -10,7 +10,7 @@ LL | if (fn_ptr as *mut ()).is_null() {}
= note: `#[warn(useless_ptr_null_checks)]` on by default
warning: function pointers are not nullable, so checking them for null will always return false
- --> $DIR/ptr_null_checks.rs:16:8
+ --> $DIR/ptr_null_checks.rs:14:8
|
LL | if (fn_ptr as *const u8).is_null() {}
| ^------^^^^^^^^^^^^^^^^^^^^^^^^
@@ -20,7 +20,7 @@ LL | if (fn_ptr as *const u8).is_null() {}
= help: wrap the function pointer inside an `Option` and use `Option::is_none` to check for null pointer value
warning: function pointers are not nullable, so checking them for null will always return false
- --> $DIR/ptr_null_checks.rs:18:8
+ --> $DIR/ptr_null_checks.rs:16:8
|
LL | if (fn_ptr as *const ()) == std::ptr::null() {}
| ^------^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -30,7 +30,7 @@ LL | if (fn_ptr as *const ()) == std::ptr::null() {}
= help: wrap the function pointer inside an `Option` and use `Option::is_none` to check for null pointer value
warning: function pointers are not nullable, so checking them for null will always return false
- --> $DIR/ptr_null_checks.rs:20:8
+ --> $DIR/ptr_null_checks.rs:18:8
|
LL | if (fn_ptr as *mut ()) == std::ptr::null_mut() {}
| ^------^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -40,7 +40,7 @@ LL | if (fn_ptr as *mut ()) == std::ptr::null_mut() {}
= help: wrap the function pointer inside an `Option` and use `Option::is_none` to check for null pointer value
warning: function pointers are not nullable, so checking them for null will always return false
- --> $DIR/ptr_null_checks.rs:22:8
+ --> $DIR/ptr_null_checks.rs:20:8
|
LL | if (fn_ptr as *const ()) == (0 as *const ()) {}
| ^------^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -50,7 +50,7 @@ LL | if (fn_ptr as *const ()) == (0 as *const ()) {}
= help: wrap the function pointer inside an `Option` and use `Option::is_none` to check for null pointer value
warning: function pointers are not nullable, so checking them for null will always return false
- --> $DIR/ptr_null_checks.rs:24:8
+ --> $DIR/ptr_null_checks.rs:22:8
|
LL | if <*const _>::is_null(fn_ptr as *const ()) {}
| ^^^^^^^^^^^^^^^^^^^^------^^^^^^^^^^^^^^
@@ -60,7 +60,7 @@ LL | if <*const _>::is_null(fn_ptr as *const ()) {}
= help: wrap the function pointer inside an `Option` and use `Option::is_none` to check for null pointer value
warning: function pointers are not nullable, so checking them for null will always return false
- --> $DIR/ptr_null_checks.rs:26:8
+ --> $DIR/ptr_null_checks.rs:24:8
|
LL | if (fn_ptr as *mut fn() as *const fn() as *const ()).is_null() {}
| ^------^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -70,7 +70,7 @@ LL | if (fn_ptr as *mut fn() as *const fn() as *const ()).is_null() {}
= help: wrap the function pointer inside an `Option` and use `Option::is_none` to check for null pointer value
warning: function pointers are not nullable, so checking them for null will always return false
- --> $DIR/ptr_null_checks.rs:28:8
+ --> $DIR/ptr_null_checks.rs:26:8
|
LL | if (fn_ptr as *mut fn() as *const fn()).cast_mut().is_null() {}
| ^------^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -80,7 +80,7 @@ LL | if (fn_ptr as *mut fn() as *const fn()).cast_mut().is_null() {}
= help: wrap the function pointer inside an `Option` and use `Option::is_none` to check for null pointer value
warning: function pointers are not nullable, so checking them for null will always return false
- --> $DIR/ptr_null_checks.rs:30:8
+ --> $DIR/ptr_null_checks.rs:28:8
|
LL | if ((fn_ptr as *mut fn()).cast() as *const fn()).cast_mut().is_null() {}
| ^^------^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -90,7 +90,7 @@ LL | if ((fn_ptr as *mut fn()).cast() as *const fn()).cast_mut().is_null() {
= help: wrap the function pointer inside an `Option` and use `Option::is_none` to check for null pointer value
warning: function pointers are not nullable, so checking them for null will always return false
- --> $DIR/ptr_null_checks.rs:32:8
+ --> $DIR/ptr_null_checks.rs:30:8
|
LL | if (fn_ptr as fn() as *const ()).is_null() {}
| ^--------------^^^^^^^^^^^^^^^^^^^^^^^^
@@ -100,7 +100,7 @@ LL | if (fn_ptr as fn() as *const ()).is_null() {}
= help: wrap the function pointer inside an `Option` and use `Option::is_none` to check for null pointer value
warning: function pointers are not nullable, so checking them for null will always return false
- --> $DIR/ptr_null_checks.rs:34:8
+ --> $DIR/ptr_null_checks.rs:32:8
|
LL | if (c_fn as *const fn()).is_null() {}
| ^----^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -110,7 +110,7 @@ LL | if (c_fn as *const fn()).is_null() {}
= help: wrap the function pointer inside an `Option` and use `Option::is_none` to check for null pointer value
warning: references are not nullable, so checking them for null will always return false
- --> $DIR/ptr_null_checks.rs:38:8
+ --> $DIR/ptr_null_checks.rs:36:8
|
LL | if (&mut 8 as *mut i32).is_null() {}
| ^------^^^^^^^^^^^^^^^^^^^^^^^
@@ -118,13 +118,13 @@ LL | if (&mut 8 as *mut i32).is_null() {}
| expression has type `&mut i32`
warning: returned pointer of `from_mut` call is never null, so checking it for null will always return false
- --> $DIR/ptr_null_checks.rs:40:8
+ --> $DIR/ptr_null_checks.rs:38:8
|
LL | if ptr::from_mut(&mut 8).is_null() {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
warning: references are not nullable, so checking them for null will always return false
- --> $DIR/ptr_null_checks.rs:42:8
+ --> $DIR/ptr_null_checks.rs:40:8
|
LL | if (&8 as *const i32).is_null() {}
| ^--^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -132,25 +132,25 @@ LL | if (&8 as *const i32).is_null() {}
| expression has type `&i32`
warning: returned pointer of `from_ref` call is never null, so checking it for null will always return false
- --> $DIR/ptr_null_checks.rs:44:8
+ --> $DIR/ptr_null_checks.rs:42:8
|
LL | if ptr::from_ref(&8).is_null() {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^
warning: returned pointer of `from_ref` call is never null, so checking it for null will always return false
- --> $DIR/ptr_null_checks.rs:46:8
+ --> $DIR/ptr_null_checks.rs:44:8
|
LL | if ptr::from_ref(&8).cast_mut().is_null() {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
warning: returned pointer of `from_ref` call is never null, so checking it for null will always return false
- --> $DIR/ptr_null_checks.rs:48:8
+ --> $DIR/ptr_null_checks.rs:46:8
|
LL | if (ptr::from_ref(&8).cast_mut() as *mut i32).is_null() {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
warning: references are not nullable, so checking them for null will always return false
- --> $DIR/ptr_null_checks.rs:50:8
+ --> $DIR/ptr_null_checks.rs:48:8
|
LL | if (&8 as *const i32) == std::ptr::null() {}
| ^--^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -158,7 +158,7 @@ LL | if (&8 as *const i32) == std::ptr::null() {}
| expression has type `&i32`
warning: references are not nullable, so checking them for null will always return false
- --> $DIR/ptr_null_checks.rs:53:8
+ --> $DIR/ptr_null_checks.rs:51:8
|
LL | if (ref_num as *const i32) == std::ptr::null() {}
| ^-------^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -166,7 +166,7 @@ LL | if (ref_num as *const i32) == std::ptr::null() {}
| expression has type `&i32`
warning: references are not nullable, so checking them for null will always return false
- --> $DIR/ptr_null_checks.rs:55:8
+ --> $DIR/ptr_null_checks.rs:53:8
|
LL | if (b"\0" as *const u8).is_null() {}
| ^-----^^^^^^^^^^^^^^^^^^^^^^^^
@@ -174,7 +174,7 @@ LL | if (b"\0" as *const u8).is_null() {}
| expression has type `&[u8; 1]`
warning: references are not nullable, so checking them for null will always return false
- --> $DIR/ptr_null_checks.rs:57:8
+ --> $DIR/ptr_null_checks.rs:55:8
|
LL | if ("aa" as *const str).is_null() {}
| ^----^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -182,7 +182,7 @@ LL | if ("aa" as *const str).is_null() {}
| expression has type `&str`
warning: references are not nullable, so checking them for null will always return false
- --> $DIR/ptr_null_checks.rs:59:8
+ --> $DIR/ptr_null_checks.rs:57:8
|
LL | if (&[1, 2] as *const i32).is_null() {}
| ^-------^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -190,7 +190,7 @@ LL | if (&[1, 2] as *const i32).is_null() {}
| expression has type `&[i32; 2]`
warning: references are not nullable, so checking them for null will always return false
- --> $DIR/ptr_null_checks.rs:61:8
+ --> $DIR/ptr_null_checks.rs:59:8
|
LL | if (&mut [1, 2] as *mut i32) == std::ptr::null_mut() {}
| ^-----------^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -198,7 +198,7 @@ LL | if (&mut [1, 2] as *mut i32) == std::ptr::null_mut() {}
| expression has type `&mut [i32; 2]`
warning: references are not nullable, so checking them for null will always return false
- --> $DIR/ptr_null_checks.rs:63:8
+ --> $DIR/ptr_null_checks.rs:61:8
|
LL | if (static_i32() as *const i32).is_null() {}
| ^------------^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -206,7 +206,7 @@ LL | if (static_i32() as *const i32).is_null() {}
| expression has type `&i32`
warning: references are not nullable, so checking them for null will always return false
- --> $DIR/ptr_null_checks.rs:65:8
+ --> $DIR/ptr_null_checks.rs:63:8
|
LL | if (&*{ static_i32() } as *const i32).is_null() {}
| ^------------------^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -214,13 +214,13 @@ LL | if (&*{ static_i32() } as *const i32).is_null() {}
| expression has type `&i32`
warning: returned pointer of `as_ptr` call is never null, so checking it for null will always return false
- --> $DIR/ptr_null_checks.rs:69:8
+ --> $DIR/ptr_null_checks.rs:67:8
|
LL | if ptr::NonNull::new(&mut 8).unwrap().as_ptr().is_null() {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
warning: returned pointer of `as_ptr` call is never null, so checking it for null will always return false
- --> $DIR/ptr_null_checks.rs:71:8
+ --> $DIR/ptr_null_checks.rs:69:8
|
LL | if ptr::NonNull::<u8>::dangling().as_ptr().is_null() {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
diff --git a/tests/ui/lint/reference_casting.rs b/tests/ui/lint/reference_casting.rs
index 25e0c75f7..84267c0af 100644
--- a/tests/ui/lint/reference_casting.rs
+++ b/tests/ui/lint/reference_casting.rs
@@ -1,7 +1,5 @@
// check-fail
-#![feature(ptr_from_ref)]
-
extern "C" {
// N.B., mutability can be easily incorrect in FFI calls -- as
// in C, the default is mutable pointers.
@@ -116,6 +114,13 @@ unsafe fn assign_to_ref() {
let value = num as *const i32 as *mut i32;
*value = 1;
//~^ ERROR assigning to `&T` is undefined behavior
+ let value = num as *const i32;
+ let value = value as *mut i32;
+ *value = 1;
+ //~^ ERROR assigning to `&T` is undefined behavior
+ let value = num as *const i32 as *mut i32;
+ *value = 1;
+ //~^ ERROR assigning to `&T` is undefined behavior
let value_rebind = value;
*value_rebind = 1;
//~^ ERROR assigning to `&T` is undefined behavior
diff --git a/tests/ui/lint/reference_casting.stderr b/tests/ui/lint/reference_casting.stderr
index 8d5f8da68..374a58d7b 100644
--- a/tests/ui/lint/reference_casting.stderr
+++ b/tests/ui/lint/reference_casting.stderr
@@ -1,5 +1,5 @@
error: casting `&T` to `&mut T` is undefined behavior, even if the reference is unused, consider instead using an `UnsafeCell`
- --> $DIR/reference_casting.rs:19:16
+ --> $DIR/reference_casting.rs:17:16
|
LL | let _num = &mut *(num as *const i32 as *mut i32);
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -8,7 +8,7 @@ LL | let _num = &mut *(num as *const i32 as *mut i32);
= note: `#[deny(invalid_reference_casting)]` on by default
error: casting `&T` to `&mut T` is undefined behavior, even if the reference is unused, consider instead using an `UnsafeCell`
- --> $DIR/reference_casting.rs:21:16
+ --> $DIR/reference_casting.rs:19:16
|
LL | let _num = &mut *(num as *const i32).cast_mut();
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -16,7 +16,7 @@ LL | let _num = &mut *(num as *const i32).cast_mut();
= note: for more information, visit <https://doc.rust-lang.org/book/ch15-05-interior-mutability.html>
error: casting `&T` to `&mut T` is undefined behavior, even if the reference is unused, consider instead using an `UnsafeCell`
- --> $DIR/reference_casting.rs:23:16
+ --> $DIR/reference_casting.rs:21:16
|
LL | let _num = &mut *std::ptr::from_ref(num).cast_mut();
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -24,7 +24,7 @@ LL | let _num = &mut *std::ptr::from_ref(num).cast_mut();
= note: for more information, visit <https://doc.rust-lang.org/book/ch15-05-interior-mutability.html>
error: casting `&T` to `&mut T` is undefined behavior, even if the reference is unused, consider instead using an `UnsafeCell`
- --> $DIR/reference_casting.rs:25:16
+ --> $DIR/reference_casting.rs:23:16
|
LL | let _num = &mut *std::ptr::from_ref({ num }).cast_mut();
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -32,7 +32,7 @@ LL | let _num = &mut *std::ptr::from_ref({ num }).cast_mut();
= note: for more information, visit <https://doc.rust-lang.org/book/ch15-05-interior-mutability.html>
error: casting `&T` to `&mut T` is undefined behavior, even if the reference is unused, consider instead using an `UnsafeCell`
- --> $DIR/reference_casting.rs:27:16
+ --> $DIR/reference_casting.rs:25:16
|
LL | let _num = &mut *{ std::ptr::from_ref(num) }.cast_mut();
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -40,7 +40,7 @@ LL | let _num = &mut *{ std::ptr::from_ref(num) }.cast_mut();
= note: for more information, visit <https://doc.rust-lang.org/book/ch15-05-interior-mutability.html>
error: casting `&T` to `&mut T` is undefined behavior, even if the reference is unused, consider instead using an `UnsafeCell`
- --> $DIR/reference_casting.rs:29:16
+ --> $DIR/reference_casting.rs:27:16
|
LL | let _num = &mut *(std::ptr::from_ref({ num }) as *mut i32);
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -48,7 +48,7 @@ LL | let _num = &mut *(std::ptr::from_ref({ num }) as *mut i32);
= note: for more information, visit <https://doc.rust-lang.org/book/ch15-05-interior-mutability.html>
error: casting `&T` to `&mut T` is undefined behavior, even if the reference is unused, consider instead using an `UnsafeCell`
- --> $DIR/reference_casting.rs:31:16
+ --> $DIR/reference_casting.rs:29:16
|
LL | let _num = &mut *(num as *const i32).cast::<i32>().cast_mut();
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -56,7 +56,7 @@ LL | let _num = &mut *(num as *const i32).cast::<i32>().cast_mut();
= note: for more information, visit <https://doc.rust-lang.org/book/ch15-05-interior-mutability.html>
error: casting `&T` to `&mut T` is undefined behavior, even if the reference is unused, consider instead using an `UnsafeCell`
- --> $DIR/reference_casting.rs:33:16
+ --> $DIR/reference_casting.rs:31:16
|
LL | let _num = &mut *(num as *const i32).cast::<i32>().cast_mut().cast_const().cast_mut();
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -64,7 +64,7 @@ LL | let _num = &mut *(num as *const i32).cast::<i32>().cast_mut().cast_cons
= note: for more information, visit <https://doc.rust-lang.org/book/ch15-05-interior-mutability.html>
error: casting `&T` to `&mut T` is undefined behavior, even if the reference is unused, consider instead using an `UnsafeCell`
- --> $DIR/reference_casting.rs:35:16
+ --> $DIR/reference_casting.rs:33:16
|
LL | let _num = &mut *(std::ptr::from_ref(static_u8()) as *mut i32);
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -72,7 +72,7 @@ LL | let _num = &mut *(std::ptr::from_ref(static_u8()) as *mut i32);
= note: for more information, visit <https://doc.rust-lang.org/book/ch15-05-interior-mutability.html>
error: casting `&T` to `&mut T` is undefined behavior, even if the reference is unused, consider instead using an `UnsafeCell`
- --> $DIR/reference_casting.rs:37:16
+ --> $DIR/reference_casting.rs:35:16
|
LL | let _num = &mut *std::mem::transmute::<_, *mut i32>(num);
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -80,7 +80,7 @@ LL | let _num = &mut *std::mem::transmute::<_, *mut i32>(num);
= note: for more information, visit <https://doc.rust-lang.org/book/ch15-05-interior-mutability.html>
error: casting `&T` to `&mut T` is undefined behavior, even if the reference is unused, consider instead using an `UnsafeCell`
- --> $DIR/reference_casting.rs:39:16
+ --> $DIR/reference_casting.rs:37:16
|
LL | let _num = &mut *(std::mem::transmute::<_, *mut i32>(num) as *mut i32);
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -88,7 +88,7 @@ LL | let _num = &mut *(std::mem::transmute::<_, *mut i32>(num) as *mut i32);
= note: for more information, visit <https://doc.rust-lang.org/book/ch15-05-interior-mutability.html>
error: casting `&T` to `&mut T` is undefined behavior, even if the reference is unused, consider instead using an `UnsafeCell`
- --> $DIR/reference_casting.rs:41:16
+ --> $DIR/reference_casting.rs:39:16
|
LL | let _num = &mut *std::cell::UnsafeCell::raw_get(
| ________________^
@@ -100,7 +100,7 @@ LL | | );
= note: for more information, visit <https://doc.rust-lang.org/book/ch15-05-interior-mutability.html>
error: casting `&T` to `&mut T` is undefined behavior, even if the reference is unused, consider instead using an `UnsafeCell`
- --> $DIR/reference_casting.rs:47:16
+ --> $DIR/reference_casting.rs:45:16
|
LL | let deferred = num as *const i32 as *mut i32;
| ----------------------------- casting happend here
@@ -110,7 +110,7 @@ LL | let _num = &mut *deferred;
= note: for more information, visit <https://doc.rust-lang.org/book/ch15-05-interior-mutability.html>
error: casting `&T` to `&mut T` is undefined behavior, even if the reference is unused, consider instead using an `UnsafeCell`
- --> $DIR/reference_casting.rs:50:16
+ --> $DIR/reference_casting.rs:48:16
|
LL | let deferred = (std::ptr::from_ref(num) as *const i32 as *const i32).cast_mut() as *mut i32;
| ---------------------------------------------------------------------------- casting happend here
@@ -120,7 +120,7 @@ LL | let _num = &mut *deferred;
= note: for more information, visit <https://doc.rust-lang.org/book/ch15-05-interior-mutability.html>
error: casting `&T` to `&mut T` is undefined behavior, even if the reference is unused, consider instead using an `UnsafeCell`
- --> $DIR/reference_casting.rs:53:16
+ --> $DIR/reference_casting.rs:51:16
|
LL | let deferred = (std::ptr::from_ref(num) as *const i32 as *const i32).cast_mut() as *mut i32;
| ---------------------------------------------------------------------------- casting happend here
@@ -131,7 +131,7 @@ LL | let _num = &mut *deferred_rebind;
= note: for more information, visit <https://doc.rust-lang.org/book/ch15-05-interior-mutability.html>
error: casting `&T` to `&mut T` is undefined behavior, even if the reference is unused, consider instead using an `UnsafeCell`
- --> $DIR/reference_casting.rs:55:16
+ --> $DIR/reference_casting.rs:53:16
|
LL | let _num = &mut *(num as *const _ as usize as *mut i32);
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -139,7 +139,7 @@ LL | let _num = &mut *(num as *const _ as usize as *mut i32);
= note: for more information, visit <https://doc.rust-lang.org/book/ch15-05-interior-mutability.html>
error: casting `&T` to `&mut T` is undefined behavior, even if the reference is unused, consider instead using an `UnsafeCell`
- --> $DIR/reference_casting.rs:57:16
+ --> $DIR/reference_casting.rs:55:16
|
LL | let _num = &mut *(std::mem::transmute::<_, *mut _>(num as *const i32) as *mut i32);
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -147,7 +147,7 @@ LL | let _num = &mut *(std::mem::transmute::<_, *mut _>(num as *const i32) a
= note: for more information, visit <https://doc.rust-lang.org/book/ch15-05-interior-mutability.html>
error: casting `&T` to `&mut T` is undefined behavior, even if the reference is unused, consider instead using an `UnsafeCell`
- --> $DIR/reference_casting.rs:64:16
+ --> $DIR/reference_casting.rs:62:16
|
LL | let num = NUM as *const i32 as *mut i32;
| ----------------------------- casting happend here
@@ -158,7 +158,7 @@ LL | let _num = &mut *num;
= note: for more information, visit <https://doc.rust-lang.org/book/ch15-05-interior-mutability.html>
error: casting `&T` to `&mut T` is undefined behavior, even if the reference is unused, consider instead using an `UnsafeCell`
- --> $DIR/reference_casting.rs:68:16
+ --> $DIR/reference_casting.rs:66:16
|
LL | let _num = &mut *(cell as *const _ as *mut i32);
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -167,7 +167,7 @@ LL | let _num = &mut *(cell as *const _ as *mut i32);
= note: even for types with interior mutability, the only legal way to obtain a mutable pointer from a shared reference is through `UnsafeCell::get`
error: casting `&T` to `&mut T` is undefined behavior, even if the reference is unused, consider instead using an `UnsafeCell`
- --> $DIR/reference_casting.rs:72:9
+ --> $DIR/reference_casting.rs:70:9
|
LL | &mut *((this as *const _) as *mut _)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -175,7 +175,7 @@ LL | &mut *((this as *const _) as *mut _)
= note: for more information, visit <https://doc.rust-lang.org/book/ch15-05-interior-mutability.html>
error: casting `&T` to `&mut T` is undefined behavior, even if the reference is unused, consider instead using an `UnsafeCell`
- --> $DIR/reference_casting.rs:77:18
+ --> $DIR/reference_casting.rs:75:18
|
LL | unsafe { &mut *std::cell::UnsafeCell::raw_get(x as *const _ as *const _) }
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -183,7 +183,7 @@ LL | unsafe { &mut *std::cell::UnsafeCell::raw_get(x as *const _ as *con
= note: for more information, visit <https://doc.rust-lang.org/book/ch15-05-interior-mutability.html>
error: casting `&T` to `&mut T` is undefined behavior, even if the reference is unused, consider instead using an `UnsafeCell`
- --> $DIR/reference_casting.rs:82:18
+ --> $DIR/reference_casting.rs:80:18
|
LL | unsafe { &mut *std::cell::UnsafeCell::raw_get(x as *const _ as *const _) }
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -191,7 +191,7 @@ LL | unsafe { &mut *std::cell::UnsafeCell::raw_get(x as *const _ as *con
= note: for more information, visit <https://doc.rust-lang.org/book/ch15-05-interior-mutability.html>
error: assigning to `&T` is undefined behavior, consider using an `UnsafeCell`
- --> $DIR/reference_casting.rs:92:5
+ --> $DIR/reference_casting.rs:90:5
|
LL | *(a as *const _ as *mut _) = String::from("Replaced");
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -199,7 +199,7 @@ LL | *(a as *const _ as *mut _) = String::from("Replaced");
= note: for more information, visit <https://doc.rust-lang.org/book/ch15-05-interior-mutability.html>
error: assigning to `&T` is undefined behavior, consider using an `UnsafeCell`
- --> $DIR/reference_casting.rs:94:5
+ --> $DIR/reference_casting.rs:92:5
|
LL | *(a as *const _ as *mut String) += " world";
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -207,7 +207,7 @@ LL | *(a as *const _ as *mut String) += " world";
= note: for more information, visit <https://doc.rust-lang.org/book/ch15-05-interior-mutability.html>
error: assigning to `&T` is undefined behavior, consider using an `UnsafeCell`
- --> $DIR/reference_casting.rs:96:5
+ --> $DIR/reference_casting.rs:94:5
|
LL | *std::ptr::from_ref(num).cast_mut() += 1;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -215,7 +215,7 @@ LL | *std::ptr::from_ref(num).cast_mut() += 1;
= note: for more information, visit <https://doc.rust-lang.org/book/ch15-05-interior-mutability.html>
error: assigning to `&T` is undefined behavior, consider using an `UnsafeCell`
- --> $DIR/reference_casting.rs:98:5
+ --> $DIR/reference_casting.rs:96:5
|
LL | *std::ptr::from_ref({ num }).cast_mut() += 1;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -223,7 +223,7 @@ LL | *std::ptr::from_ref({ num }).cast_mut() += 1;
= note: for more information, visit <https://doc.rust-lang.org/book/ch15-05-interior-mutability.html>
error: assigning to `&T` is undefined behavior, consider using an `UnsafeCell`
- --> $DIR/reference_casting.rs:100:5
+ --> $DIR/reference_casting.rs:98:5
|
LL | *{ std::ptr::from_ref(num) }.cast_mut() += 1;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -231,7 +231,7 @@ LL | *{ std::ptr::from_ref(num) }.cast_mut() += 1;
= note: for more information, visit <https://doc.rust-lang.org/book/ch15-05-interior-mutability.html>
error: assigning to `&T` is undefined behavior, consider using an `UnsafeCell`
- --> $DIR/reference_casting.rs:102:5
+ --> $DIR/reference_casting.rs:100:5
|
LL | *(std::ptr::from_ref({ num }) as *mut i32) += 1;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -239,7 +239,7 @@ LL | *(std::ptr::from_ref({ num }) as *mut i32) += 1;
= note: for more information, visit <https://doc.rust-lang.org/book/ch15-05-interior-mutability.html>
error: assigning to `&T` is undefined behavior, consider using an `UnsafeCell`
- --> $DIR/reference_casting.rs:104:5
+ --> $DIR/reference_casting.rs:102:5
|
LL | *std::mem::transmute::<_, *mut i32>(num) += 1;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -247,7 +247,7 @@ LL | *std::mem::transmute::<_, *mut i32>(num) += 1;
= note: for more information, visit <https://doc.rust-lang.org/book/ch15-05-interior-mutability.html>
error: assigning to `&T` is undefined behavior, consider using an `UnsafeCell`
- --> $DIR/reference_casting.rs:106:5
+ --> $DIR/reference_casting.rs:104:5
|
LL | *(std::mem::transmute::<_, *mut i32>(num) as *mut i32) += 1;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -255,7 +255,7 @@ LL | *(std::mem::transmute::<_, *mut i32>(num) as *mut i32) += 1;
= note: for more information, visit <https://doc.rust-lang.org/book/ch15-05-interior-mutability.html>
error: assigning to `&T` is undefined behavior, consider using an `UnsafeCell`
- --> $DIR/reference_casting.rs:108:5
+ --> $DIR/reference_casting.rs:106:5
|
LL | / std::ptr::write(
LL | |
@@ -267,7 +267,7 @@ LL | | );
= note: for more information, visit <https://doc.rust-lang.org/book/ch15-05-interior-mutability.html>
error: assigning to `&T` is undefined behavior, consider using an `UnsafeCell`
- --> $DIR/reference_casting.rs:113:5
+ --> $DIR/reference_casting.rs:111:5
|
LL | *((&std::cell::UnsafeCell::new(0)) as *const _ as *mut i32) = 5;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -276,7 +276,27 @@ LL | *((&std::cell::UnsafeCell::new(0)) as *const _ as *mut i32) = 5;
= note: even for types with interior mutability, the only legal way to obtain a mutable pointer from a shared reference is through `UnsafeCell::get`
error: assigning to `&T` is undefined behavior, consider using an `UnsafeCell`
- --> $DIR/reference_casting.rs:117:5
+ --> $DIR/reference_casting.rs:115:5
+ |
+LL | let value = num as *const i32 as *mut i32;
+ | ----------------------------- casting happend here
+LL | *value = 1;
+ | ^^^^^^^^^^
+ |
+ = note: for more information, visit <https://doc.rust-lang.org/book/ch15-05-interior-mutability.html>
+
+error: assigning to `&T` is undefined behavior, consider using an `UnsafeCell`
+ --> $DIR/reference_casting.rs:119:5
+ |
+LL | let value = value as *mut i32;
+ | ----------------- casting happend here
+LL | *value = 1;
+ | ^^^^^^^^^^
+ |
+ = note: for more information, visit <https://doc.rust-lang.org/book/ch15-05-interior-mutability.html>
+
+error: assigning to `&T` is undefined behavior, consider using an `UnsafeCell`
+ --> $DIR/reference_casting.rs:122:5
|
LL | let value = num as *const i32 as *mut i32;
| ----------------------------- casting happend here
@@ -286,7 +306,7 @@ LL | *value = 1;
= note: for more information, visit <https://doc.rust-lang.org/book/ch15-05-interior-mutability.html>
error: assigning to `&T` is undefined behavior, consider using an `UnsafeCell`
- --> $DIR/reference_casting.rs:120:5
+ --> $DIR/reference_casting.rs:125:5
|
LL | let value = num as *const i32 as *mut i32;
| ----------------------------- casting happend here
@@ -297,7 +317,7 @@ LL | *value_rebind = 1;
= note: for more information, visit <https://doc.rust-lang.org/book/ch15-05-interior-mutability.html>
error: assigning to `&T` is undefined behavior, consider using an `UnsafeCell`
- --> $DIR/reference_casting.rs:122:5
+ --> $DIR/reference_casting.rs:127:5
|
LL | *(num as *const i32).cast::<i32>().cast_mut() = 2;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -305,7 +325,7 @@ LL | *(num as *const i32).cast::<i32>().cast_mut() = 2;
= note: for more information, visit <https://doc.rust-lang.org/book/ch15-05-interior-mutability.html>
error: assigning to `&T` is undefined behavior, consider using an `UnsafeCell`
- --> $DIR/reference_casting.rs:124:5
+ --> $DIR/reference_casting.rs:129:5
|
LL | *(num as *const _ as usize as *mut i32) = 2;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -313,7 +333,7 @@ LL | *(num as *const _ as usize as *mut i32) = 2;
= note: for more information, visit <https://doc.rust-lang.org/book/ch15-05-interior-mutability.html>
error: assigning to `&T` is undefined behavior, consider using an `UnsafeCell`
- --> $DIR/reference_casting.rs:126:5
+ --> $DIR/reference_casting.rs:131:5
|
LL | let value = num as *const i32 as *mut i32;
| ----------------------------- casting happend here
@@ -324,7 +344,7 @@ LL | std::ptr::write(value, 2);
= note: for more information, visit <https://doc.rust-lang.org/book/ch15-05-interior-mutability.html>
error: assigning to `&T` is undefined behavior, consider using an `UnsafeCell`
- --> $DIR/reference_casting.rs:128:5
+ --> $DIR/reference_casting.rs:133:5
|
LL | let value = num as *const i32 as *mut i32;
| ----------------------------- casting happend here
@@ -335,7 +355,7 @@ LL | std::ptr::write_unaligned(value, 2);
= note: for more information, visit <https://doc.rust-lang.org/book/ch15-05-interior-mutability.html>
error: assigning to `&T` is undefined behavior, consider using an `UnsafeCell`
- --> $DIR/reference_casting.rs:130:5
+ --> $DIR/reference_casting.rs:135:5
|
LL | let value = num as *const i32 as *mut i32;
| ----------------------------- casting happend here
@@ -346,12 +366,12 @@ LL | std::ptr::write_volatile(value, 2);
= note: for more information, visit <https://doc.rust-lang.org/book/ch15-05-interior-mutability.html>
error: assigning to `&T` is undefined behavior, consider using an `UnsafeCell`
- --> $DIR/reference_casting.rs:134:9
+ --> $DIR/reference_casting.rs:139:9
|
LL | *(this as *const _ as *mut _) = a;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= note: for more information, visit <https://doc.rust-lang.org/book/ch15-05-interior-mutability.html>
-error: aborting due to 40 previous errors
+error: aborting due to 42 previous errors
diff --git a/tests/ui/lint/renamed-lints-still-apply.stderr b/tests/ui/lint/renamed-lints-still-apply.stderr
index e926719bb..9eaf71129 100644
--- a/tests/ui/lint/renamed-lints-still-apply.stderr
+++ b/tests/ui/lint/renamed-lints-still-apply.stderr
@@ -25,5 +25,5 @@ LL - fn _foo<'a>(_x: &'a u32) {}
LL + fn _foo(_x: &u32) {}
|
-error: aborting due to previous error; 1 warning emitted
+error: aborting due to 1 previous error; 1 warning emitted
diff --git a/tests/ui/lint/rfc-2383-lint-reason/expect_missing_feature_gate.stderr b/tests/ui/lint/rfc-2383-lint-reason/expect_missing_feature_gate.stderr
index b5601cf9e..b8e7d61a1 100644
--- a/tests/ui/lint/rfc-2383-lint-reason/expect_missing_feature_gate.stderr
+++ b/tests/ui/lint/rfc-2383-lint-reason/expect_missing_feature_gate.stderr
@@ -7,6 +7,6 @@ LL | #[expect(unused)]
= note: see issue #54503 <https://github.com/rust-lang/rust/issues/54503> for more information
= help: add `#![feature(lint_reasons)]` to the crate attributes to enable
-error: aborting due to previous error
+error: aborting due to 1 previous error
For more information about this error, try `rustc --explain E0658`.
diff --git a/tests/ui/lint/rfc-2383-lint-reason/expect_nested_lint_levels.stderr b/tests/ui/lint/rfc-2383-lint-reason/expect_nested_lint_levels.stderr
index 4852c3313..0e445d243 100644
--- a/tests/ui/lint/rfc-2383-lint-reason/expect_nested_lint_levels.stderr
+++ b/tests/ui/lint/rfc-2383-lint-reason/expect_nested_lint_levels.stderr
@@ -48,5 +48,5 @@ warning: this lint expectation is unfulfilled
LL | #[expect(unused_variables)]
| ^^^^^^^^^^^^^^^^
-error: aborting due to previous error; 4 warnings emitted
+error: aborting due to 1 previous error; 4 warnings emitted
diff --git a/tests/ui/lint/rustdoc-renamed.stderr b/tests/ui/lint/rustdoc-renamed.stderr
index 096e867aa..8491a4327 100644
--- a/tests/ui/lint/rustdoc-renamed.stderr
+++ b/tests/ui/lint/rustdoc-renamed.stderr
@@ -10,5 +10,5 @@ note: the lint level is defined here
LL | #![deny(renamed_and_removed_lints)]
| ^^^^^^^^^^^^^^^^^^^^^^^^^
-error: aborting due to previous error
+error: aborting due to 1 previous error
diff --git a/tests/ui/lint/unaligned_references_external_macro.stderr b/tests/ui/lint/unaligned_references_external_macro.stderr
index 94a95c1d8..9945c78e8 100644
--- a/tests/ui/lint/unaligned_references_external_macro.stderr
+++ b/tests/ui/lint/unaligned_references_external_macro.stderr
@@ -14,6 +14,6 @@ LL | | }
= help: copy the field contents to a local variable, or replace the reference with a raw pointer and use `read_unaligned`/`write_unaligned` (loads and stores via `*p` must be properly aligned even when using raw pointers)
= note: this error originates in the macro `unaligned_references_external_crate::mac` (in Nightly builds, run with -Z macro-backtrace for more info)
-error: aborting due to previous error
+error: aborting due to 1 previous error
For more information about this error, try `rustc --explain E0793`.
diff --git a/tests/ui/lint/unconditional_panic_98444.stderr b/tests/ui/lint/unconditional_panic_98444.stderr
index a34745809..29719b2da 100644
--- a/tests/ui/lint/unconditional_panic_98444.stderr
+++ b/tests/ui/lint/unconditional_panic_98444.stderr
@@ -6,5 +6,5 @@ LL | let _ = xs[7];
|
= note: `#[deny(unconditional_panic)]` on by default
-error: aborting due to previous error
+error: aborting due to 1 previous error
diff --git a/tests/ui/lint/unused/assoc-types.assoc_ty.stderr b/tests/ui/lint/unused/assoc-types.assoc_ty.stderr
new file mode 100644
index 000000000..190c4ef0c
--- /dev/null
+++ b/tests/ui/lint/unused/assoc-types.assoc_ty.stderr
@@ -0,0 +1,15 @@
+error: unused implementer of `Future` that must be used
+ --> $DIR/assoc-types.rs:19:5
+ |
+LL | T::foo();
+ | ^^^^^^^^
+ |
+ = note: futures do nothing unless you `.await` or poll them
+note: the lint level is defined here
+ --> $DIR/assoc-types.rs:4:9
+ |
+LL | #![deny(unused_must_use)]
+ | ^^^^^^^^^^^^^^^
+
+error: aborting due to 1 previous error
+
diff --git a/tests/ui/lint/unused/assoc-types.rpitit.stderr b/tests/ui/lint/unused/assoc-types.rpitit.stderr
new file mode 100644
index 000000000..190c4ef0c
--- /dev/null
+++ b/tests/ui/lint/unused/assoc-types.rpitit.stderr
@@ -0,0 +1,15 @@
+error: unused implementer of `Future` that must be used
+ --> $DIR/assoc-types.rs:19:5
+ |
+LL | T::foo();
+ | ^^^^^^^^
+ |
+ = note: futures do nothing unless you `.await` or poll them
+note: the lint level is defined here
+ --> $DIR/assoc-types.rs:4:9
+ |
+LL | #![deny(unused_must_use)]
+ | ^^^^^^^^^^^^^^^
+
+error: aborting due to 1 previous error
+
diff --git a/tests/ui/lint/unused/assoc-types.rs b/tests/ui/lint/unused/assoc-types.rs
new file mode 100644
index 000000000..cebb9b409
--- /dev/null
+++ b/tests/ui/lint/unused/assoc-types.rs
@@ -0,0 +1,23 @@
+// edition: 2021
+// revisions: rpitit assoc_ty
+
+#![deny(unused_must_use)]
+
+use std::future::Future;
+
+pub trait Tr {
+ type Fut: Future<Output = ()>;
+
+ #[cfg(rpitit)]
+ fn foo() -> impl Future<Output = ()>;
+
+ #[cfg(assoc_ty)]
+ fn foo() -> Self::Fut;
+}
+
+pub async fn bar<T: Tr>() {
+ T::foo();
+ //~^ ERROR unused implementer of `Future` that must be used
+}
+
+fn main() {}
diff --git a/tests/ui/lint/unused/issue-105061.stderr b/tests/ui/lint/unused/issue-105061.stderr
index f07aa2012..b41f14d82 100644
--- a/tests/ui/lint/unused/issue-105061.stderr
+++ b/tests/ui/lint/unused/issue-105061.stderr
@@ -16,5 +16,5 @@ LL - ((for<'a> fn(Inv<'a>)),): Trait,
LL + (for<'a> fn(Inv<'a>),): Trait,
|
-error: aborting due to previous error
+error: aborting due to 1 previous error
diff --git a/tests/ui/lint/unused/issue-30730.stderr b/tests/ui/lint/unused/issue-30730.stderr
index b299e99a3..c815045df 100644
--- a/tests/ui/lint/unused/issue-30730.stderr
+++ b/tests/ui/lint/unused/issue-30730.stderr
@@ -11,5 +11,5 @@ LL | #![deny(warnings)]
| ^^^^^^^^
= note: `#[deny(unused_imports)]` implied by `#[deny(warnings)]`
-error: aborting due to previous error
+error: aborting due to 1 previous error
diff --git a/tests/ui/lint/unused/issue-46576.stderr b/tests/ui/lint/unused/issue-46576.stderr
index 6f4d97068..44e4fb582 100644
--- a/tests/ui/lint/unused/issue-46576.stderr
+++ b/tests/ui/lint/unused/issue-46576.stderr
@@ -10,5 +10,5 @@ note: the lint level is defined here
LL | #![deny(unused_imports)]
| ^^^^^^^^^^^^^^
-error: aborting due to previous error
+error: aborting due to 1 previous error
diff --git a/tests/ui/lint/unused/issue-59896.stderr b/tests/ui/lint/unused/issue-59896.stderr
index 95b7938ae..3e8298c6b 100644
--- a/tests/ui/lint/unused/issue-59896.stderr
+++ b/tests/ui/lint/unused/issue-59896.stderr
@@ -13,5 +13,5 @@ note: the lint level is defined here
LL | #![deny(unused_imports)]
| ^^^^^^^^^^^^^^
-error: aborting due to previous error
+error: aborting due to 1 previous error
diff --git a/tests/ui/lint/unused/issue-85913.stderr b/tests/ui/lint/unused/issue-85913.stderr
index 8234ed3b1..b69ac3d97 100644
--- a/tests/ui/lint/unused/issue-85913.stderr
+++ b/tests/ui/lint/unused/issue-85913.stderr
@@ -14,5 +14,5 @@ help: use `let _ = ...` to ignore the resulting value
LL | let _ = function() && return 1;
| +++++++
-error: aborting due to previous error
+error: aborting due to 1 previous error
diff --git a/tests/ui/lint/unused/lint-unused-mut-variables.stderr b/tests/ui/lint/unused/lint-unused-mut-variables.stderr
index 5f66c0315..dcda1e530 100644
--- a/tests/ui/lint/unused/lint-unused-mut-variables.stderr
+++ b/tests/ui/lint/unused/lint-unused-mut-variables.stderr
@@ -226,5 +226,5 @@ LL | fn write_through_reference(mut arg: &mut Arg) {
| |
| help: remove this `mut`
-error: aborting due to previous error; 26 warnings emitted
+error: aborting due to 1 previous error; 26 warnings emitted
diff --git a/tests/ui/lint/unused/must_use-pin.rs b/tests/ui/lint/unused/must_use-pin.rs
new file mode 100644
index 000000000..b08515428
--- /dev/null
+++ b/tests/ui/lint/unused/must_use-pin.rs
@@ -0,0 +1,45 @@
+#![deny(unused_must_use)]
+
+use std::{ops::Deref, pin::Pin};
+
+#[must_use]
+struct MustUse;
+
+#[must_use]
+struct MustUsePtr<'a, T>(&'a T);
+
+impl<'a, T> Deref for MustUsePtr<'a, T> {
+ type Target = T;
+
+ fn deref(&self) -> &Self::Target {
+ self.0
+ }
+}
+
+fn pin_ref() -> Pin<&'static ()> {
+ Pin::new(&())
+}
+
+fn pin_ref_mut() -> Pin<&'static mut ()> {
+ Pin::new(unimplemented!())
+}
+
+fn pin_must_use_ptr() -> Pin<MustUsePtr<'static, ()>> {
+ Pin::new(MustUsePtr(&()))
+}
+
+fn pin_box() -> Pin<Box<()>> {
+ Box::pin(())
+}
+
+fn pin_box_must_use() -> Pin<Box<MustUse>> {
+ Box::pin(MustUse)
+}
+
+fn main() {
+ pin_ref();
+ pin_ref_mut();
+ pin_must_use_ptr(); //~ ERROR unused pinned `MustUsePtr` that must be used
+ pin_box();
+ pin_box_must_use(); //~ ERROR unused pinned boxed `MustUse` that must be used
+}
diff --git a/tests/ui/lint/unused/must_use-pin.stderr b/tests/ui/lint/unused/must_use-pin.stderr
new file mode 100644
index 000000000..c04f8fef4
--- /dev/null
+++ b/tests/ui/lint/unused/must_use-pin.stderr
@@ -0,0 +1,20 @@
+error: unused pinned `MustUsePtr` that must be used
+ --> $DIR/must_use-pin.rs:42:5
+ |
+LL | pin_must_use_ptr();
+ | ^^^^^^^^^^^^^^^^^^
+ |
+note: the lint level is defined here
+ --> $DIR/must_use-pin.rs:1:9
+ |
+LL | #![deny(unused_must_use)]
+ | ^^^^^^^^^^^^^^^
+
+error: unused pinned boxed `MustUse` that must be used
+ --> $DIR/must_use-pin.rs:44:5
+ |
+LL | pin_box_must_use();
+ | ^^^^^^^^^^^^^^^^^^
+
+error: aborting due to 2 previous errors
+
diff --git a/tests/ui/lint/unused/unused-macro-rules-malformed-rule.stderr b/tests/ui/lint/unused/unused-macro-rules-malformed-rule.stderr
index 797c86710..76b2a0556 100644
--- a/tests/ui/lint/unused/unused-macro-rules-malformed-rule.stderr
+++ b/tests/ui/lint/unused/unused-macro-rules-malformed-rule.stderr
@@ -4,5 +4,5 @@ error: macro rhs must be delimited
LL | () => 0;
| ^
-error: aborting due to previous error
+error: aborting due to 1 previous error
diff --git a/tests/ui/lint/unused/unused-macro-with-bad-frag-spec.stderr b/tests/ui/lint/unused/unused-macro-with-bad-frag-spec.stderr
index 6edf0a2cf..f027e169b 100644
--- a/tests/ui/lint/unused/unused-macro-with-bad-frag-spec.stderr
+++ b/tests/ui/lint/unused/unused-macro-with-bad-frag-spec.stderr
@@ -6,5 +6,5 @@ LL | ($wrong:t_ty) => ()
|
= help: valid fragment specifiers are `ident`, `block`, `stmt`, `expr`, `pat`, `ty`, `lifetime`, `literal`, `path`, `meta`, `tt`, `item` and `vis`
-error: aborting due to previous error
+error: aborting due to 1 previous error
diff --git a/tests/ui/lint/unused/unused-macro-with-follow-violation.stderr b/tests/ui/lint/unused/unused-macro-with-follow-violation.stderr
index 5eced4f06..a8a41e081 100644
--- a/tests/ui/lint/unused/unused-macro-with-follow-violation.stderr
+++ b/tests/ui/lint/unused/unused-macro-with-follow-violation.stderr
@@ -6,5 +6,5 @@ LL | ($e:expr +) => ()
|
= note: allowed there are: `=>`, `,` or `;`
-error: aborting due to previous error
+error: aborting due to 1 previous error
diff --git a/tests/ui/lint/unused/unused-mut-warning-captured-var.stderr b/tests/ui/lint/unused/unused-mut-warning-captured-var.stderr
index 20aeedcc2..d4fa96c10 100644
--- a/tests/ui/lint/unused/unused-mut-warning-captured-var.stderr
+++ b/tests/ui/lint/unused/unused-mut-warning-captured-var.stderr
@@ -12,5 +12,5 @@ note: the lint level is defined here
LL | #![forbid(unused_mut)]
| ^^^^^^^^^^
-error: aborting due to previous error
+error: aborting due to 1 previous error
diff --git a/tests/ui/lint/unused/unused-supertrait.stderr b/tests/ui/lint/unused/unused-supertrait.stderr
index cb45add9c..c7ccf30ea 100644
--- a/tests/ui/lint/unused/unused-supertrait.stderr
+++ b/tests/ui/lint/unused/unused-supertrait.stderr
@@ -11,5 +11,5 @@ note: the lint level is defined here
LL | #![deny(unused_must_use)]
| ^^^^^^^^^^^^^^^
-error: aborting due to previous error
+error: aborting due to 1 previous error
diff --git a/tests/ui/lint/unused_parens_json_suggestion.stderr b/tests/ui/lint/unused_parens_json_suggestion.stderr
index ea19e0cdc..4bdfee915 100644
--- a/tests/ui/lint/unused_parens_json_suggestion.stderr
+++ b/tests/ui/lint/unused_parens_json_suggestion.stderr
@@ -1,4 +1,4 @@
-{"message":"unnecessary parentheses around assigned value","code":{"code":"unused_parens","explanation":null},"level":"error","spans":[{"file_name":"$DIR/unused_parens_json_suggestion.rs","byte_start":577,"byte_end":578,"line_start":16,"line_end":16,"column_start":14,"column_end":15,"is_primary":true,"text":[{"text":" let _a = (1 / (2 + 3));
+{"$message_type":"diagnostic","message":"unnecessary parentheses around assigned value","code":{"code":"unused_parens","explanation":null},"level":"error","spans":[{"file_name":"$DIR/unused_parens_json_suggestion.rs","byte_start":577,"byte_end":578,"line_start":16,"line_end":16,"column_start":14,"column_end":15,"is_primary":true,"text":[{"text":" let _a = (1 / (2 + 3));
--> $DIR/unused_parens_json_suggestion.rs:16:14
|
LL | let _a = (1 / (2 + 3));
@@ -16,6 +16,6 @@ LL + let _a = 1 / (2 + 3);
|
"}
-{"message":"aborting due to previous error","code":null,"level":"error","spans":[],"children":[],"rendered":"error: aborting due to previous error
+{"$message_type":"diagnostic","message":"aborting due to 1 previous error","code":null,"level":"error","spans":[],"children":[],"rendered":"error: aborting due to 1 previous error
"}
diff --git a/tests/ui/lint/unused_parens_multibyte_recovery.stderr b/tests/ui/lint/unused_parens_multibyte_recovery.stderr
index adbf27fcc..ef4089f31 100644
--- a/tests/ui/lint/unused_parens_multibyte_recovery.stderr
+++ b/tests/ui/lint/unused_parens_multibyte_recovery.stderr
@@ -8,5 +8,5 @@ LL | fn f(){(print!(รก
| |unclosed delimiter
| unclosed delimiter
-error: aborting due to previous error
+error: aborting due to 1 previous error
diff --git a/tests/ui/lint/unused_parens_remove_json_suggestion.stderr b/tests/ui/lint/unused_parens_remove_json_suggestion.stderr
index f4c6ceaf1..7521d41cc 100644
--- a/tests/ui/lint/unused_parens_remove_json_suggestion.stderr
+++ b/tests/ui/lint/unused_parens_remove_json_suggestion.stderr
@@ -1,4 +1,4 @@
-{"message":"unnecessary parentheses around `if` condition","code":{"code":"unused_parens","explanation":null},"level":"error","spans":[{"file_name":"$DIR/unused_parens_remove_json_suggestion.rs","byte_start":481,"byte_end":482,"line_start":17,"line_end":17,"column_start":8,"column_end":9,"is_primary":true,"text":[{"text":" if (_b) {
+{"$message_type":"diagnostic","message":"unnecessary parentheses around `if` condition","code":{"code":"unused_parens","explanation":null},"level":"error","spans":[{"file_name":"$DIR/unused_parens_remove_json_suggestion.rs","byte_start":481,"byte_end":482,"line_start":17,"line_end":17,"column_start":8,"column_end":9,"is_primary":true,"text":[{"text":" if (_b) {
--> $DIR/unused_parens_remove_json_suggestion.rs:17:8
|
LL | if (_b) {
@@ -16,7 +16,7 @@ LL + if _b {
|
"}
-{"message":"unnecessary parentheses around `if` condition","code":{"code":"unused_parens","explanation":null},"level":"error","spans":[{"file_name":"$DIR/unused_parens_remove_json_suggestion.rs","byte_start":612,"byte_end":613,"line_start":28,"line_end":28,"column_start":7,"column_end":8,"is_primary":true,"text":[{"text":" if(c) {
+{"$message_type":"diagnostic","message":"unnecessary parentheses around `if` condition","code":{"code":"unused_parens","explanation":null},"level":"error","spans":[{"file_name":"$DIR/unused_parens_remove_json_suggestion.rs","byte_start":612,"byte_end":613,"line_start":28,"line_end":28,"column_start":7,"column_end":8,"is_primary":true,"text":[{"text":" if(c) {
--> $DIR/unused_parens_remove_json_suggestion.rs:28:7
|
LL | if(c) {
@@ -29,7 +29,7 @@ LL + if c {
|
"}
-{"message":"unnecessary parentheses around `if` condition","code":{"code":"unused_parens","explanation":null},"level":"error","spans":[{"file_name":"$DIR/unused_parens_remove_json_suggestion.rs","byte_start":692,"byte_end":693,"line_start":32,"line_end":32,"column_start":8,"column_end":9,"is_primary":true,"text":[{"text":" if (c){
+{"$message_type":"diagnostic","message":"unnecessary parentheses around `if` condition","code":{"code":"unused_parens","explanation":null},"level":"error","spans":[{"file_name":"$DIR/unused_parens_remove_json_suggestion.rs","byte_start":692,"byte_end":693,"line_start":32,"line_end":32,"column_start":8,"column_end":9,"is_primary":true,"text":[{"text":" if (c){
--> $DIR/unused_parens_remove_json_suggestion.rs:32:8
|
LL | if (c){
@@ -42,7 +42,7 @@ LL + if c {
|
"}
-{"message":"unnecessary parentheses around `while` condition","code":{"code":"unused_parens","explanation":null},"level":"error","spans":[{"file_name":"$DIR/unused_parens_remove_json_suggestion.rs","byte_start":774,"byte_end":775,"line_start":36,"line_end":36,"column_start":11,"column_end":12,"is_primary":true,"text":[{"text":" while (false && true){","highlight_start":11,"highlight_end":12}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"$DIR/unused_parens_remove_json_suggestion.rs","byte_start":788,"byte_end":789,"line_start":36,"line_end":36,"column_start":25,"column_end":26,"is_primary":true,"text":[{"text":" while (false && true){","highlight_start":25,"highlight_end":26}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"remove these parentheses","code":null,"level":"help","spans":[{"file_name":"$DIR/unused_parens_remove_json_suggestion.rs","byte_start":774,"byte_end":775,"line_start":36,"line_end":36,"column_start":11,"column_end":12,"is_primary":true,"text":[{"text":" while (false && true){","highlight_start":11,"highlight_end":12}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null},{"file_name":"$DIR/unused_parens_remove_json_suggestion.rs","byte_start":788,"byte_end":789,"line_start":36,"line_end":36,"column_start":25,"column_end":26,"is_primary":true,"text":[{"text":" while (false && true){","highlight_start":25,"highlight_end":26}],"label":null,"suggested_replacement":" ","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"error: unnecessary parentheses around `while` condition
+{"$message_type":"diagnostic","message":"unnecessary parentheses around `while` condition","code":{"code":"unused_parens","explanation":null},"level":"error","spans":[{"file_name":"$DIR/unused_parens_remove_json_suggestion.rs","byte_start":774,"byte_end":775,"line_start":36,"line_end":36,"column_start":11,"column_end":12,"is_primary":true,"text":[{"text":" while (false && true){","highlight_start":11,"highlight_end":12}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"$DIR/unused_parens_remove_json_suggestion.rs","byte_start":788,"byte_end":789,"line_start":36,"line_end":36,"column_start":25,"column_end":26,"is_primary":true,"text":[{"text":" while (false && true){","highlight_start":25,"highlight_end":26}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"remove these parentheses","code":null,"level":"help","spans":[{"file_name":"$DIR/unused_parens_remove_json_suggestion.rs","byte_start":774,"byte_end":775,"line_start":36,"line_end":36,"column_start":11,"column_end":12,"is_primary":true,"text":[{"text":" while (false && true){","highlight_start":11,"highlight_end":12}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null},{"file_name":"$DIR/unused_parens_remove_json_suggestion.rs","byte_start":788,"byte_end":789,"line_start":36,"line_end":36,"column_start":25,"column_end":26,"is_primary":true,"text":[{"text":" while (false && true){","highlight_start":25,"highlight_end":26}],"label":null,"suggested_replacement":" ","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"error: unnecessary parentheses around `while` condition
--> $DIR/unused_parens_remove_json_suggestion.rs:36:11
|
LL | while (false && true){
@@ -55,7 +55,7 @@ LL + while false && true {
|
"}
-{"message":"unnecessary parentheses around `if` condition","code":{"code":"unused_parens","explanation":null},"level":"error","spans":[{"file_name":"$DIR/unused_parens_remove_json_suggestion.rs","byte_start":802,"byte_end":803,"line_start":37,"line_end":37,"column_start":12,"column_end":13,"is_primary":true,"text":[{"text":" if (c) {
+{"$message_type":"diagnostic","message":"unnecessary parentheses around `if` condition","code":{"code":"unused_parens","explanation":null},"level":"error","spans":[{"file_name":"$DIR/unused_parens_remove_json_suggestion.rs","byte_start":802,"byte_end":803,"line_start":37,"line_end":37,"column_start":12,"column_end":13,"is_primary":true,"text":[{"text":" if (c) {
--> $DIR/unused_parens_remove_json_suggestion.rs:37:12
|
LL | if (c) {
@@ -68,7 +68,7 @@ LL + if c {
|
"}
-{"message":"unnecessary parentheses around `while` condition","code":{"code":"unused_parens","explanation":null},"level":"error","spans":[{"file_name":"$DIR/unused_parens_remove_json_suggestion.rs","byte_start":899,"byte_end":900,"line_start":43,"line_end":43,"column_start":10,"column_end":11,"is_primary":true,"text":[{"text":" while(true && false) {
+{"$message_type":"diagnostic","message":"unnecessary parentheses around `while` condition","code":{"code":"unused_parens","explanation":null},"level":"error","spans":[{"file_name":"$DIR/unused_parens_remove_json_suggestion.rs","byte_start":899,"byte_end":900,"line_start":43,"line_end":43,"column_start":10,"column_end":11,"is_primary":true,"text":[{"text":" while(true && false) {
--> $DIR/unused_parens_remove_json_suggestion.rs:43:10
|
LL | while(true && false) {
@@ -81,7 +81,7 @@ LL + while true && false {
|
"}
-{"message":"unnecessary parentheses around `for` iterator expression","code":{"code":"unused_parens","explanation":null},"level":"error","spans":[{"file_name":"$DIR/unused_parens_remove_json_suggestion.rs","byte_start":968,"byte_end":969,"line_start":44,"line_end":44,"column_start":18,"column_end":19,"is_primary":true,"text":[{"text":" for _ in (0 .. 3){
+{"$message_type":"diagnostic","message":"unnecessary parentheses around `for` iterator expression","code":{"code":"unused_parens","explanation":null},"level":"error","spans":[{"file_name":"$DIR/unused_parens_remove_json_suggestion.rs","byte_start":968,"byte_end":969,"line_start":44,"line_end":44,"column_start":18,"column_end":19,"is_primary":true,"text":[{"text":" for _ in (0 .. 3){
--> $DIR/unused_parens_remove_json_suggestion.rs:44:18
|
LL | for _ in (0 .. 3){
@@ -94,7 +94,7 @@ LL + for _ in 0 .. 3 {
|
"}
-{"message":"unnecessary parentheses around `for` iterator expression","code":{"code":"unused_parens","explanation":null},"level":"error","spans":[{"file_name":"$DIR/unused_parens_remove_json_suggestion.rs","byte_start":1069,"byte_end":1070,"line_start":49,"line_end":49,"column_start":14,"column_end":15,"is_primary":true,"text":[{"text":" for _ in (0 .. 3) {
+{"$message_type":"diagnostic","message":"unnecessary parentheses around `for` iterator expression","code":{"code":"unused_parens","explanation":null},"level":"error","spans":[{"file_name":"$DIR/unused_parens_remove_json_suggestion.rs","byte_start":1069,"byte_end":1070,"line_start":49,"line_end":49,"column_start":14,"column_end":15,"is_primary":true,"text":[{"text":" for _ in (0 .. 3) {
--> $DIR/unused_parens_remove_json_suggestion.rs:49:14
|
LL | for _ in (0 .. 3) {
@@ -107,7 +107,7 @@ LL + for _ in 0 .. 3 {
|
"}
-{"message":"unnecessary parentheses around `while` condition","code":{"code":"unused_parens","explanation":null},"level":"error","spans":[{"file_name":"$DIR/unused_parens_remove_json_suggestion.rs","byte_start":1128,"byte_end":1129,"line_start":50,"line_end":50,"column_start":15,"column_end":16,"is_primary":true,"text":[{"text":" while (true && false) {
+{"$message_type":"diagnostic","message":"unnecessary parentheses around `while` condition","code":{"code":"unused_parens","explanation":null},"level":"error","spans":[{"file_name":"$DIR/unused_parens_remove_json_suggestion.rs","byte_start":1128,"byte_end":1129,"line_start":50,"line_end":50,"column_start":15,"column_end":16,"is_primary":true,"text":[{"text":" while (true && false) {
--> $DIR/unused_parens_remove_json_suggestion.rs:50:15
|
LL | while (true && false) {
@@ -120,6 +120,6 @@ LL + while true && false {
|
"}
-{"message":"aborting due to 9 previous errors","code":null,"level":"error","spans":[],"children":[],"rendered":"error: aborting due to 9 previous errors
+{"$message_type":"diagnostic","message":"aborting due to 9 previous errors","code":null,"level":"error","spans":[],"children":[],"rendered":"error: aborting due to 9 previous errors
"}
diff --git a/tests/ui/lint/unused_variables-issue-82488.stderr b/tests/ui/lint/unused_variables-issue-82488.stderr
index dce03a0f7..3babc94b4 100644
--- a/tests/ui/lint/unused_variables-issue-82488.stderr
+++ b/tests/ui/lint/unused_variables-issue-82488.stderr
@@ -10,5 +10,5 @@ note: the lint level is defined here
LL | #![deny(unused_variables)]
| ^^^^^^^^^^^^^^^^
-error: aborting due to previous error
+error: aborting due to 1 previous error
diff --git a/tests/ui/lint/use_suggestion_json.stderr b/tests/ui/lint/use_suggestion_json.stderr
index d17514303..7dfd269a4 100644
--- a/tests/ui/lint/use_suggestion_json.stderr
+++ b/tests/ui/lint/use_suggestion_json.stderr
@@ -1,3 +1,3 @@
-{"message":"`--error-format=pretty-json` is unstable","code":null,"level":"error","spans":[],"children":[],"rendered":"\u001b[0m\u001b[1m\u001b[38;5;9merror\u001b[0m\u001b[0m\u001b[1m: `--error-format=pretty-json` is unstable\u001b[0m
+{"$message_type":"diagnostic","message":"`--error-format=pretty-json` is unstable","code":null,"level":"error","spans":[],"children":[],"rendered":"\u001b[0m\u001b[1m\u001b[38;5;9merror\u001b[0m\u001b[0m\u001b[1m: `--error-format=pretty-json` is unstable\u001b[0m
"}
diff --git a/tests/ui/lint/wide_pointer_comparisons.rs b/tests/ui/lint/wide_pointer_comparisons.rs
new file mode 100644
index 000000000..8334575cf
--- /dev/null
+++ b/tests/ui/lint/wide_pointer_comparisons.rs
@@ -0,0 +1,138 @@
+// check-pass
+
+use std::rc::Rc;
+use std::sync::Arc;
+use std::cmp::PartialEq;
+
+struct A;
+struct B;
+
+trait T {}
+impl T for A {}
+impl T for B {}
+
+fn main() {
+ let ab = (A, B);
+ let a = &ab.0 as *const dyn T;
+ let b = &ab.1 as *const dyn T;
+
+ let _ = a == b;
+ //~^ WARN ambiguous wide pointer comparison
+ let _ = a != b;
+ //~^ WARN ambiguous wide pointer comparison
+ let _ = a < b;
+ //~^ WARN ambiguous wide pointer comparison
+ let _ = a <= b;
+ //~^ WARN ambiguous wide pointer comparison
+ let _ = a > b;
+ //~^ WARN ambiguous wide pointer comparison
+ let _ = a >= b;
+ //~^ WARN ambiguous wide pointer comparison
+
+ let _ = PartialEq::eq(&a, &b);
+ //~^ WARN ambiguous wide pointer comparison
+ let _ = PartialEq::ne(&a, &b);
+ //~^ WARN ambiguous wide pointer comparison
+ let _ = a.eq(&b);
+ //~^ WARN ambiguous wide pointer comparison
+ let _ = a.ne(&b);
+ //~^ WARN ambiguous wide pointer comparison
+
+ {
+ // &*const ?Sized
+ let a = &a;
+ let b = &b;
+
+ let _ = a == b;
+ //~^ WARN ambiguous wide pointer comparison
+ let _ = a != b;
+ //~^ WARN ambiguous wide pointer comparison
+ let _ = a < b;
+ //~^ WARN ambiguous wide pointer comparison
+ let _ = a <= b;
+ //~^ WARN ambiguous wide pointer comparison
+ let _ = a > b;
+ //~^ WARN ambiguous wide pointer comparison
+ let _ = a >= b;
+ //~^ WARN ambiguous wide pointer comparison
+
+ let _ = PartialEq::eq(a, b);
+ //~^ WARN ambiguous wide pointer comparison
+ let _ = PartialEq::ne(a, b);
+ //~^ WARN ambiguous wide pointer comparison
+ let _ = PartialEq::eq(&a, &b);
+ //~^ WARN ambiguous wide pointer comparison
+ let _ = PartialEq::ne(&a, &b);
+ //~^ WARN ambiguous wide pointer comparison
+ let _ = a.eq(b);
+ //~^ WARN ambiguous wide pointer comparison
+ let _ = a.ne(b);
+ //~^ WARN ambiguous wide pointer comparison
+ }
+
+ let s = "" as *const str;
+ let _ = s == s;
+ //~^ WARN ambiguous wide pointer comparison
+
+ let s = &[8, 7][..] as *const [i32];
+ let _ = s == s;
+ //~^ WARN ambiguous wide pointer comparison
+
+ fn cmp<T: ?Sized>(a: *mut T, b: *mut T) -> bool {
+ let _ = a == b;
+ //~^ WARN ambiguous wide pointer comparison
+ let _ = a != b;
+ //~^ WARN ambiguous wide pointer comparison
+ let _ = a < b;
+ //~^ WARN ambiguous wide pointer comparison
+ let _ = a <= b;
+ //~^ WARN ambiguous wide pointer comparison
+ let _ = a > b;
+ //~^ WARN ambiguous wide pointer comparison
+ let _ = a >= b;
+ //~^ WARN ambiguous wide pointer comparison
+
+ let _ = PartialEq::eq(&a, &b);
+ //~^ WARN ambiguous wide pointer comparison
+ let _ = PartialEq::ne(&a, &b);
+ //~^ WARN ambiguous wide pointer comparison
+ let _ = a.eq(&b);
+ //~^ WARN ambiguous wide pointer comparison
+ let _ = a.ne(&b);
+ //~^ WARN ambiguous wide pointer comparison
+
+ let a = &a;
+ let b = &b;
+ &*a == &*b
+ //~^ WARN ambiguous wide pointer comparison
+ }
+
+ {
+ macro_rules! cmp {
+ ($a:ident, $b:ident) => { $a == $b }
+ //~^ WARN ambiguous wide pointer comparison
+ }
+
+ cmp!(a, b);
+ }
+
+ {
+ // this produce weird diagnostics
+ macro_rules! cmp {
+ ($a:expr, $b:expr) => { $a == $b }
+ //~^ WARN ambiguous wide pointer comparison
+ }
+
+ cmp!(&a, &b);
+ }
+
+ let _ = std::ptr::eq(a, b);
+ let _ = std::ptr::addr_eq(a, b);
+ let _ = a as *const () == b as *const ();
+
+ let a: Rc<dyn std::fmt::Debug> = Rc::new(1);
+ Rc::ptr_eq(&a, &a);
+
+ let a: Arc<dyn std::fmt::Debug> = Arc::new(1);
+ Arc::ptr_eq(&a, &a);
+}
diff --git a/tests/ui/lint/wide_pointer_comparisons.stderr b/tests/ui/lint/wide_pointer_comparisons.stderr
new file mode 100644
index 000000000..926b87759
--- /dev/null
+++ b/tests/ui/lint/wide_pointer_comparisons.stderr
@@ -0,0 +1,452 @@
+warning: ambiguous wide pointer comparison, the comparison includes metadata which may not be expected
+ --> $DIR/wide_pointer_comparisons.rs:19:13
+ |
+LL | let _ = a == b;
+ | ^^^^^^
+ |
+ = note: `#[warn(ambiguous_wide_pointer_comparisons)]` on by default
+help: use `std::ptr::addr_eq` or untyped pointers to only compare their addresses
+ |
+LL | let _ = std::ptr::addr_eq(a, b);
+ | ++++++++++++++++++ ~ +
+
+warning: ambiguous wide pointer comparison, the comparison includes metadata which may not be expected
+ --> $DIR/wide_pointer_comparisons.rs:21:13
+ |
+LL | let _ = a != b;
+ | ^^^^^^
+ |
+help: use `std::ptr::addr_eq` or untyped pointers to only compare their addresses
+ |
+LL | let _ = !std::ptr::addr_eq(a, b);
+ | +++++++++++++++++++ ~ +
+
+warning: ambiguous wide pointer comparison, the comparison includes metadata which may not be expected
+ --> $DIR/wide_pointer_comparisons.rs:23:13
+ |
+LL | let _ = a < b;
+ | ^^^^^
+ |
+help: use `std::ptr::addr_eq` or untyped pointers to only compare their addresses
+ |
+LL | let _ = a as *const () < b as *const ();
+ | ++++++++++++ ++++++++++++
+
+warning: ambiguous wide pointer comparison, the comparison includes metadata which may not be expected
+ --> $DIR/wide_pointer_comparisons.rs:25:13
+ |
+LL | let _ = a <= b;
+ | ^^^^^^
+ |
+help: use `std::ptr::addr_eq` or untyped pointers to only compare their addresses
+ |
+LL | let _ = a as *const () <= b as *const ();
+ | ++++++++++++ ++++++++++++
+
+warning: ambiguous wide pointer comparison, the comparison includes metadata which may not be expected
+ --> $DIR/wide_pointer_comparisons.rs:27:13
+ |
+LL | let _ = a > b;
+ | ^^^^^
+ |
+help: use `std::ptr::addr_eq` or untyped pointers to only compare their addresses
+ |
+LL | let _ = a as *const () > b as *const ();
+ | ++++++++++++ ++++++++++++
+
+warning: ambiguous wide pointer comparison, the comparison includes metadata which may not be expected
+ --> $DIR/wide_pointer_comparisons.rs:29:13
+ |
+LL | let _ = a >= b;
+ | ^^^^^^
+ |
+help: use `std::ptr::addr_eq` or untyped pointers to only compare their addresses
+ |
+LL | let _ = a as *const () >= b as *const ();
+ | ++++++++++++ ++++++++++++
+
+warning: ambiguous wide pointer comparison, the comparison includes metadata which may not be expected
+ --> $DIR/wide_pointer_comparisons.rs:32:13
+ |
+LL | let _ = PartialEq::eq(&a, &b);
+ | ^^^^^^^^^^^^^^^^^^^^^
+ |
+help: use `std::ptr::addr_eq` or untyped pointers to only compare their addresses
+ |
+LL | let _ = std::ptr::addr_eq(a, b);
+ | ~~~~~~~~~~~~~~~~~~ ~ ~
+
+warning: ambiguous wide pointer comparison, the comparison includes metadata which may not be expected
+ --> $DIR/wide_pointer_comparisons.rs:34:13
+ |
+LL | let _ = PartialEq::ne(&a, &b);
+ | ^^^^^^^^^^^^^^^^^^^^^
+ |
+help: use `std::ptr::addr_eq` or untyped pointers to only compare their addresses
+ |
+LL | let _ = !std::ptr::addr_eq(a, b);
+ | ~~~~~~~~~~~~~~~~~~~ ~ ~
+
+warning: ambiguous wide pointer comparison, the comparison includes metadata which may not be expected
+ --> $DIR/wide_pointer_comparisons.rs:36:13
+ |
+LL | let _ = a.eq(&b);
+ | ^^^^^^^^
+ |
+help: use `std::ptr::addr_eq` or untyped pointers to only compare their addresses
+ |
+LL | let _ = std::ptr::addr_eq(a, b);
+ | ++++++++++++++++++ ~ ~
+
+warning: ambiguous wide pointer comparison, the comparison includes metadata which may not be expected
+ --> $DIR/wide_pointer_comparisons.rs:38:13
+ |
+LL | let _ = a.ne(&b);
+ | ^^^^^^^^
+ |
+help: use `std::ptr::addr_eq` or untyped pointers to only compare their addresses
+ |
+LL | let _ = !std::ptr::addr_eq(a, b);
+ | +++++++++++++++++++ ~ ~
+
+warning: ambiguous wide pointer comparison, the comparison includes metadata which may not be expected
+ --> $DIR/wide_pointer_comparisons.rs:46:17
+ |
+LL | let _ = a == b;
+ | ^^^^^^
+ |
+help: use `std::ptr::addr_eq` or untyped pointers to only compare their addresses
+ |
+LL | let _ = std::ptr::addr_eq(*a, *b);
+ | +++++++++++++++++++ ~~~ +
+
+warning: ambiguous wide pointer comparison, the comparison includes metadata which may not be expected
+ --> $DIR/wide_pointer_comparisons.rs:48:17
+ |
+LL | let _ = a != b;
+ | ^^^^^^
+ |
+help: use `std::ptr::addr_eq` or untyped pointers to only compare their addresses
+ |
+LL | let _ = !std::ptr::addr_eq(*a, *b);
+ | ++++++++++++++++++++ ~~~ +
+
+warning: ambiguous wide pointer comparison, the comparison includes metadata which may not be expected
+ --> $DIR/wide_pointer_comparisons.rs:50:17
+ |
+LL | let _ = a < b;
+ | ^^^^^
+ |
+help: use `std::ptr::addr_eq` or untyped pointers to only compare their addresses
+ |
+LL | let _ = *a as *const () < *b as *const ();
+ | + ++++++++++++ + ++++++++++++
+
+warning: ambiguous wide pointer comparison, the comparison includes metadata which may not be expected
+ --> $DIR/wide_pointer_comparisons.rs:52:17
+ |
+LL | let _ = a <= b;
+ | ^^^^^^
+ |
+help: use `std::ptr::addr_eq` or untyped pointers to only compare their addresses
+ |
+LL | let _ = *a as *const () <= *b as *const ();
+ | + ++++++++++++ + ++++++++++++
+
+warning: ambiguous wide pointer comparison, the comparison includes metadata which may not be expected
+ --> $DIR/wide_pointer_comparisons.rs:54:17
+ |
+LL | let _ = a > b;
+ | ^^^^^
+ |
+help: use `std::ptr::addr_eq` or untyped pointers to only compare their addresses
+ |
+LL | let _ = *a as *const () > *b as *const ();
+ | + ++++++++++++ + ++++++++++++
+
+warning: ambiguous wide pointer comparison, the comparison includes metadata which may not be expected
+ --> $DIR/wide_pointer_comparisons.rs:56:17
+ |
+LL | let _ = a >= b;
+ | ^^^^^^
+ |
+help: use `std::ptr::addr_eq` or untyped pointers to only compare their addresses
+ |
+LL | let _ = *a as *const () >= *b as *const ();
+ | + ++++++++++++ + ++++++++++++
+
+warning: ambiguous wide pointer comparison, the comparison includes metadata which may not be expected
+ --> $DIR/wide_pointer_comparisons.rs:59:17
+ |
+LL | let _ = PartialEq::eq(a, b);
+ | ^^^^^^^^^^^^^^^^^^^
+ |
+help: use `std::ptr::addr_eq` or untyped pointers to only compare their addresses
+ |
+LL | let _ = std::ptr::addr_eq(*a, *b);
+ | ~~~~~~~~~~~~~~~~~~~ ~~~ ~
+
+warning: ambiguous wide pointer comparison, the comparison includes metadata which may not be expected
+ --> $DIR/wide_pointer_comparisons.rs:61:17
+ |
+LL | let _ = PartialEq::ne(a, b);
+ | ^^^^^^^^^^^^^^^^^^^
+ |
+help: use `std::ptr::addr_eq` or untyped pointers to only compare their addresses
+ |
+LL | let _ = !std::ptr::addr_eq(*a, *b);
+ | ~~~~~~~~~~~~~~~~~~~~ ~~~ ~
+
+warning: ambiguous wide pointer comparison, the comparison includes metadata which may not be expected
+ --> $DIR/wide_pointer_comparisons.rs:63:17
+ |
+LL | let _ = PartialEq::eq(&a, &b);
+ | ^^^^^^^^^^^^^^^^^^^^^
+ |
+help: use `std::ptr::addr_eq` or untyped pointers to only compare their addresses
+ |
+LL | let _ = std::ptr::addr_eq(*a, *b);
+ | ~~~~~~~~~~~~~~~~~~~ ~~~ ~
+
+warning: ambiguous wide pointer comparison, the comparison includes metadata which may not be expected
+ --> $DIR/wide_pointer_comparisons.rs:65:17
+ |
+LL | let _ = PartialEq::ne(&a, &b);
+ | ^^^^^^^^^^^^^^^^^^^^^
+ |
+help: use `std::ptr::addr_eq` or untyped pointers to only compare their addresses
+ |
+LL | let _ = !std::ptr::addr_eq(*a, *b);
+ | ~~~~~~~~~~~~~~~~~~~~ ~~~ ~
+
+warning: ambiguous wide pointer comparison, the comparison includes metadata which may not be expected
+ --> $DIR/wide_pointer_comparisons.rs:67:17
+ |
+LL | let _ = a.eq(b);
+ | ^^^^^^^
+ |
+help: use `std::ptr::addr_eq` or untyped pointers to only compare their addresses
+ |
+LL | let _ = std::ptr::addr_eq(*a, *b);
+ | +++++++++++++++++++ ~~~ ~
+
+warning: ambiguous wide pointer comparison, the comparison includes metadata which may not be expected
+ --> $DIR/wide_pointer_comparisons.rs:69:17
+ |
+LL | let _ = a.ne(b);
+ | ^^^^^^^
+ |
+help: use `std::ptr::addr_eq` or untyped pointers to only compare their addresses
+ |
+LL | let _ = !std::ptr::addr_eq(*a, *b);
+ | ++++++++++++++++++++ ~~~ ~
+
+warning: ambiguous wide pointer comparison, the comparison includes metadata which may not be expected
+ --> $DIR/wide_pointer_comparisons.rs:74:13
+ |
+LL | let _ = s == s;
+ | ^^^^^^
+ |
+help: use `std::ptr::addr_eq` or untyped pointers to only compare their addresses
+ |
+LL | let _ = std::ptr::addr_eq(s, s);
+ | ++++++++++++++++++ ~ +
+help: use explicit `std::ptr::eq` method to compare metadata and addresses
+ |
+LL | let _ = std::ptr::eq(s, s);
+ | +++++++++++++ ~ +
+
+warning: ambiguous wide pointer comparison, the comparison includes metadata which may not be expected
+ --> $DIR/wide_pointer_comparisons.rs:78:13
+ |
+LL | let _ = s == s;
+ | ^^^^^^
+ |
+help: use `std::ptr::addr_eq` or untyped pointers to only compare their addresses
+ |
+LL | let _ = std::ptr::addr_eq(s, s);
+ | ++++++++++++++++++ ~ +
+help: use explicit `std::ptr::eq` method to compare metadata and addresses
+ |
+LL | let _ = std::ptr::eq(s, s);
+ | +++++++++++++ ~ +
+
+warning: ambiguous wide pointer comparison, the comparison includes metadata which may not be expected
+ --> $DIR/wide_pointer_comparisons.rs:82:17
+ |
+LL | let _ = a == b;
+ | ^^^^^^
+ |
+help: use `std::ptr::addr_eq` or untyped pointers to only compare their addresses
+ |
+LL | let _ = std::ptr::addr_eq(a, b);
+ | ++++++++++++++++++ ~ +
+help: use explicit `std::ptr::eq` method to compare metadata and addresses
+ |
+LL | let _ = std::ptr::eq(a, b);
+ | +++++++++++++ ~ +
+
+warning: ambiguous wide pointer comparison, the comparison includes metadata which may not be expected
+ --> $DIR/wide_pointer_comparisons.rs:84:17
+ |
+LL | let _ = a != b;
+ | ^^^^^^
+ |
+help: use `std::ptr::addr_eq` or untyped pointers to only compare their addresses
+ |
+LL | let _ = !std::ptr::addr_eq(a, b);
+ | +++++++++++++++++++ ~ +
+help: use explicit `std::ptr::eq` method to compare metadata and addresses
+ |
+LL | let _ = !std::ptr::eq(a, b);
+ | ++++++++++++++ ~ +
+
+warning: ambiguous wide pointer comparison, the comparison includes metadata which may not be expected
+ --> $DIR/wide_pointer_comparisons.rs:86:17
+ |
+LL | let _ = a < b;
+ | ^^^^^
+ |
+help: use `std::ptr::addr_eq` or untyped pointers to only compare their addresses
+ |
+LL | let _ = a as *const () < b as *const ();
+ | ++++++++++++ ++++++++++++
+
+warning: ambiguous wide pointer comparison, the comparison includes metadata which may not be expected
+ --> $DIR/wide_pointer_comparisons.rs:88:17
+ |
+LL | let _ = a <= b;
+ | ^^^^^^
+ |
+help: use `std::ptr::addr_eq` or untyped pointers to only compare their addresses
+ |
+LL | let _ = a as *const () <= b as *const ();
+ | ++++++++++++ ++++++++++++
+
+warning: ambiguous wide pointer comparison, the comparison includes metadata which may not be expected
+ --> $DIR/wide_pointer_comparisons.rs:90:17
+ |
+LL | let _ = a > b;
+ | ^^^^^
+ |
+help: use `std::ptr::addr_eq` or untyped pointers to only compare their addresses
+ |
+LL | let _ = a as *const () > b as *const ();
+ | ++++++++++++ ++++++++++++
+
+warning: ambiguous wide pointer comparison, the comparison includes metadata which may not be expected
+ --> $DIR/wide_pointer_comparisons.rs:92:17
+ |
+LL | let _ = a >= b;
+ | ^^^^^^
+ |
+help: use `std::ptr::addr_eq` or untyped pointers to only compare their addresses
+ |
+LL | let _ = a as *const () >= b as *const ();
+ | ++++++++++++ ++++++++++++
+
+warning: ambiguous wide pointer comparison, the comparison includes metadata which may not be expected
+ --> $DIR/wide_pointer_comparisons.rs:95:17
+ |
+LL | let _ = PartialEq::eq(&a, &b);
+ | ^^^^^^^^^^^^^^^^^^^^^
+ |
+help: use `std::ptr::addr_eq` or untyped pointers to only compare their addresses
+ |
+LL | let _ = std::ptr::addr_eq(a, b);
+ | ~~~~~~~~~~~~~~~~~~ ~ ~
+help: use explicit `std::ptr::eq` method to compare metadata and addresses
+ |
+LL | let _ = std::ptr::eq(a, b);
+ | ~~~~~~~~~~~~~ ~ ~
+
+warning: ambiguous wide pointer comparison, the comparison includes metadata which may not be expected
+ --> $DIR/wide_pointer_comparisons.rs:97:17
+ |
+LL | let _ = PartialEq::ne(&a, &b);
+ | ^^^^^^^^^^^^^^^^^^^^^
+ |
+help: use `std::ptr::addr_eq` or untyped pointers to only compare their addresses
+ |
+LL | let _ = !std::ptr::addr_eq(a, b);
+ | ~~~~~~~~~~~~~~~~~~~ ~ ~
+help: use explicit `std::ptr::eq` method to compare metadata and addresses
+ |
+LL | let _ = !std::ptr::eq(a, b);
+ | ~~~~~~~~~~~~~~ ~ ~
+
+warning: ambiguous wide pointer comparison, the comparison includes metadata which may not be expected
+ --> $DIR/wide_pointer_comparisons.rs:99:17
+ |
+LL | let _ = a.eq(&b);
+ | ^^^^^^^^
+ |
+help: use `std::ptr::addr_eq` or untyped pointers to only compare their addresses
+ |
+LL | let _ = std::ptr::addr_eq(a, b);
+ | ++++++++++++++++++ ~ ~
+help: use explicit `std::ptr::eq` method to compare metadata and addresses
+ |
+LL | let _ = std::ptr::eq(a, b);
+ | +++++++++++++ ~ ~
+
+warning: ambiguous wide pointer comparison, the comparison includes metadata which may not be expected
+ --> $DIR/wide_pointer_comparisons.rs:101:17
+ |
+LL | let _ = a.ne(&b);
+ | ^^^^^^^^
+ |
+help: use `std::ptr::addr_eq` or untyped pointers to only compare their addresses
+ |
+LL | let _ = !std::ptr::addr_eq(a, b);
+ | +++++++++++++++++++ ~ ~
+help: use explicit `std::ptr::eq` method to compare metadata and addresses
+ |
+LL | let _ = !std::ptr::eq(a, b);
+ | ++++++++++++++ ~ ~
+
+warning: ambiguous wide pointer comparison, the comparison includes metadata which may not be expected
+ --> $DIR/wide_pointer_comparisons.rs:106:9
+ |
+LL | &*a == &*b
+ | ^^^^^^^^^^
+ |
+help: use `std::ptr::addr_eq` or untyped pointers to only compare their addresses
+ |
+LL | std::ptr::addr_eq(*a, *b)
+ | ~~~~~~~~~~~~~~~~~~ ~ +
+help: use explicit `std::ptr::eq` method to compare metadata and addresses
+ |
+LL | std::ptr::eq(*a, *b)
+ | ~~~~~~~~~~~~~ ~ +
+
+warning: ambiguous wide pointer comparison, the comparison includes metadata which may not be expected
+ --> $DIR/wide_pointer_comparisons.rs:112:39
+ |
+LL | ($a:ident, $b:ident) => { $a == $b }
+ | ^^^^^^^^
+...
+LL | cmp!(a, b);
+ | ---------- in this macro invocation
+ |
+ = note: this warning originates in the macro `cmp` (in Nightly builds, run with -Z macro-backtrace for more info)
+help: use `std::ptr::addr_eq` or untyped pointers to only compare their addresses
+ |
+LL | ($a:ident, $b:ident) => { std::ptr::addr_eq($a, $b) }
+ | ++++++++++++++++++ ~ +
+
+warning: ambiguous wide pointer comparison, the comparison includes metadata which may not be expected
+ --> $DIR/wide_pointer_comparisons.rs:122:37
+ |
+LL | ($a:expr, $b:expr) => { $a == $b }
+ | ^^
+...
+LL | cmp!(&a, &b);
+ | ------------ in this macro invocation
+ |
+ = help: use explicit `std::ptr::eq` method to compare metadata and addresses
+ = help: use `std::ptr::addr_eq` or untyped pointers to only compare their addresses
+ = note: this warning originates in the macro `cmp` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+warning: 37 warnings emitted
+