mirror of
https://github.com/rust-lang/rust.git
synced 2025-02-21 11:23:03 +00:00
Rollup merge of #106353 - lukas-code:reduce-red-lines-in-my-ide, r=wesleywiser
Reduce spans for `unsafe impl` errors Because huge spans aren't great for IDEs. Prior art: https://github.com/rust-lang/rust/pull/103749
This commit is contained in:
commit
5d828d2440
@ -21,7 +21,7 @@ pub(super) fn check_item(tcx: TyCtxt<'_>, def_id: LocalDefId) {
|
|||||||
(Unsafety::Normal, None, Unsafety::Unsafe, hir::ImplPolarity::Positive) => {
|
(Unsafety::Normal, None, Unsafety::Unsafe, hir::ImplPolarity::Positive) => {
|
||||||
struct_span_err!(
|
struct_span_err!(
|
||||||
tcx.sess,
|
tcx.sess,
|
||||||
item.span,
|
tcx.def_span(def_id),
|
||||||
E0199,
|
E0199,
|
||||||
"implementing the trait `{}` is not unsafe",
|
"implementing the trait `{}` is not unsafe",
|
||||||
trait_ref.print_only_trait_path()
|
trait_ref.print_only_trait_path()
|
||||||
@ -38,7 +38,7 @@ pub(super) fn check_item(tcx: TyCtxt<'_>, def_id: LocalDefId) {
|
|||||||
(Unsafety::Unsafe, _, Unsafety::Normal, hir::ImplPolarity::Positive) => {
|
(Unsafety::Unsafe, _, Unsafety::Normal, hir::ImplPolarity::Positive) => {
|
||||||
struct_span_err!(
|
struct_span_err!(
|
||||||
tcx.sess,
|
tcx.sess,
|
||||||
item.span,
|
tcx.def_span(def_id),
|
||||||
E0200,
|
E0200,
|
||||||
"the trait `{}` requires an `unsafe impl` declaration",
|
"the trait `{}` requires an `unsafe impl` declaration",
|
||||||
trait_ref.print_only_trait_path()
|
trait_ref.print_only_trait_path()
|
||||||
@ -61,7 +61,7 @@ pub(super) fn check_item(tcx: TyCtxt<'_>, def_id: LocalDefId) {
|
|||||||
(Unsafety::Normal, Some(attr_name), Unsafety::Normal, hir::ImplPolarity::Positive) => {
|
(Unsafety::Normal, Some(attr_name), Unsafety::Normal, hir::ImplPolarity::Positive) => {
|
||||||
struct_span_err!(
|
struct_span_err!(
|
||||||
tcx.sess,
|
tcx.sess,
|
||||||
item.span,
|
tcx.def_span(def_id),
|
||||||
E0569,
|
E0569,
|
||||||
"requires an `unsafe impl` declaration due to `#[{}]` attribute",
|
"requires an `unsafe impl` declaration due to `#[{}]` attribute",
|
||||||
attr_name
|
attr_name
|
||||||
|
@ -2,7 +2,7 @@ error[E0199]: implementing the trait `MySafeTrait` is not unsafe
|
|||||||
--> $DIR/coherence-default-trait-impl.rs:8:1
|
--> $DIR/coherence-default-trait-impl.rs:8:1
|
||||||
|
|
|
|
||||||
LL | unsafe impl MySafeTrait for Foo {}
|
LL | unsafe impl MySafeTrait for Foo {}
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
|
|
||||||
help: remove `unsafe` from this trait implementation
|
help: remove `unsafe` from this trait implementation
|
||||||
|
|
|
|
||||||
@ -14,7 +14,7 @@ error[E0200]: the trait `MyUnsafeTrait` requires an `unsafe impl` declaration
|
|||||||
--> $DIR/coherence-default-trait-impl.rs:13:1
|
--> $DIR/coherence-default-trait-impl.rs:13:1
|
||||||
|
|
|
|
||||||
LL | impl MyUnsafeTrait for Foo {}
|
LL | impl MyUnsafeTrait for Foo {}
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
|
|
||||||
= note: the trait `MyUnsafeTrait` enforces invariants that the compiler can't check. Review the trait documentation and make sure this implementation upholds those invariants before adding the `unsafe` keyword
|
= note: the trait `MyUnsafeTrait` enforces invariants that the compiler can't check. Review the trait documentation and make sure this implementation upholds those invariants before adding the `unsafe` keyword
|
||||||
help: add `unsafe` to this trait implementation
|
help: add `unsafe` to this trait implementation
|
||||||
|
@ -1,13 +1,8 @@
|
|||||||
error[E0569]: requires an `unsafe impl` declaration due to `#[may_dangle]` attribute
|
error[E0569]: requires an `unsafe impl` declaration due to `#[may_dangle]` attribute
|
||||||
--> $DIR/dropck-eyepatch-implies-unsafe-impl.rs:21:1
|
--> $DIR/dropck-eyepatch-implies-unsafe-impl.rs:21:1
|
||||||
|
|
|
|
||||||
LL | / impl<#[may_dangle] A, B: fmt::Debug> Drop for Pt<A, B> {
|
LL | impl<#[may_dangle] A, B: fmt::Debug> Drop for Pt<A, B> {
|
||||||
LL | |
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
LL | |
|
|
||||||
LL | | // (unsafe to access self.1 due to #[may_dangle] on A)
|
|
||||||
LL | | fn drop(&mut self) { println!("drop {} {:?}", self.0, self.2); }
|
|
||||||
LL | | }
|
|
||||||
| |_^
|
|
||||||
|
|
|
|
||||||
= note: the trait `Drop` enforces invariants that the compiler can't check. Review the trait documentation and make sure this implementation upholds those invariants before adding the `unsafe` keyword
|
= note: the trait `Drop` enforces invariants that the compiler can't check. Review the trait documentation and make sure this implementation upholds those invariants before adding the `unsafe` keyword
|
||||||
help: add `unsafe` to this trait implementation
|
help: add `unsafe` to this trait implementation
|
||||||
@ -18,13 +13,8 @@ LL | unsafe impl<#[may_dangle] A, B: fmt::Debug> Drop for Pt<A, B> {
|
|||||||
error[E0569]: requires an `unsafe impl` declaration due to `#[may_dangle]` attribute
|
error[E0569]: requires an `unsafe impl` declaration due to `#[may_dangle]` attribute
|
||||||
--> $DIR/dropck-eyepatch-implies-unsafe-impl.rs:27:1
|
--> $DIR/dropck-eyepatch-implies-unsafe-impl.rs:27:1
|
||||||
|
|
|
|
||||||
LL | / impl<#[may_dangle] 'a, 'b, B: fmt::Debug> Drop for Pr<'a, 'b, B> {
|
LL | impl<#[may_dangle] 'a, 'b, B: fmt::Debug> Drop for Pr<'a, 'b, B> {
|
||||||
LL | |
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
LL | |
|
|
||||||
LL | | // (unsafe to access self.1 due to #[may_dangle] on 'a)
|
|
||||||
LL | | fn drop(&mut self) { println!("drop {} {:?}", self.0, self.2); }
|
|
||||||
LL | | }
|
|
||||||
| |_^
|
|
||||||
|
|
|
|
||||||
= note: the trait `Drop` enforces invariants that the compiler can't check. Review the trait documentation and make sure this implementation upholds those invariants before adding the `unsafe` keyword
|
= note: the trait `Drop` enforces invariants that the compiler can't check. Review the trait documentation and make sure this implementation upholds those invariants before adding the `unsafe` keyword
|
||||||
help: add `unsafe` to this trait implementation
|
help: add `unsafe` to this trait implementation
|
||||||
|
@ -2,7 +2,7 @@ error[E0199]: implementing the trait `Bar` is not unsafe
|
|||||||
--> $DIR/E0199.rs:6:1
|
--> $DIR/E0199.rs:6:1
|
||||||
|
|
|
|
||||||
LL | unsafe impl Bar for Foo { }
|
LL | unsafe impl Bar for Foo { }
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
|
|
||||||
help: remove `unsafe` from this trait implementation
|
help: remove `unsafe` from this trait implementation
|
||||||
|
|
|
|
||||||
|
@ -2,7 +2,7 @@ error[E0200]: the trait `Bar` requires an `unsafe impl` declaration
|
|||||||
--> $DIR/E0200.rs:5:1
|
--> $DIR/E0200.rs:5:1
|
||||||
|
|
|
|
||||||
LL | impl Bar for Foo { }
|
LL | impl Bar for Foo { }
|
||||||
| ^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^
|
||||||
|
|
|
|
||||||
= note: the trait `Bar` enforces invariants that the compiler can't check. Review the trait documentation and make sure this implementation upholds those invariants before adding the `unsafe` keyword
|
= note: the trait `Bar` enforces invariants that the compiler can't check. Review the trait documentation and make sure this implementation upholds those invariants before adding the `unsafe` keyword
|
||||||
help: add `unsafe` to this trait implementation
|
help: add `unsafe` to this trait implementation
|
||||||
|
@ -1,12 +1,8 @@
|
|||||||
error[E0200]: the trait `Foo` requires an `unsafe impl` declaration
|
error[E0200]: the trait `Foo` requires an `unsafe impl` declaration
|
||||||
--> $DIR/safety-trait-impl-cc.rs:9:1
|
--> $DIR/safety-trait-impl-cc.rs:9:1
|
||||||
|
|
|
|
||||||
LL | / impl lib::Foo for Bar {
|
LL | impl lib::Foo for Bar {
|
||||||
LL | | fn foo(&self) -> isize {
|
| ^^^^^^^^^^^^^^^^^^^^^
|
||||||
LL | | panic!();
|
|
||||||
LL | | }
|
|
||||||
LL | | }
|
|
||||||
| |_^
|
|
||||||
|
|
|
|
||||||
= note: the trait `Foo` enforces invariants that the compiler can't check. Review the trait documentation and make sure this implementation upholds those invariants before adding the `unsafe` keyword
|
= note: the trait `Foo` enforces invariants that the compiler can't check. Review the trait documentation and make sure this implementation upholds those invariants before adding the `unsafe` keyword
|
||||||
help: add `unsafe` to this trait implementation
|
help: add `unsafe` to this trait implementation
|
||||||
|
@ -2,7 +2,7 @@ error[E0200]: the trait `UnsafeTrait` requires an `unsafe impl` declaration
|
|||||||
--> $DIR/safety-trait-impl.rs:14:1
|
--> $DIR/safety-trait-impl.rs:14:1
|
||||||
|
|
|
|
||||||
LL | impl UnsafeTrait for u16 { }
|
LL | impl UnsafeTrait for u16 { }
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
|
|
||||||
= note: the trait `UnsafeTrait` enforces invariants that the compiler can't check. Review the trait documentation and make sure this implementation upholds those invariants before adding the `unsafe` keyword
|
= note: the trait `UnsafeTrait` enforces invariants that the compiler can't check. Review the trait documentation and make sure this implementation upholds those invariants before adding the `unsafe` keyword
|
||||||
help: add `unsafe` to this trait implementation
|
help: add `unsafe` to this trait implementation
|
||||||
@ -14,7 +14,7 @@ error[E0199]: implementing the trait `SafeTrait` is not unsafe
|
|||||||
--> $DIR/safety-trait-impl.rs:16:1
|
--> $DIR/safety-trait-impl.rs:16:1
|
||||||
|
|
|
|
||||||
LL | unsafe impl SafeTrait for u32 { }
|
LL | unsafe impl SafeTrait for u32 { }
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
|
|
||||||
help: remove `unsafe` from this trait implementation
|
help: remove `unsafe` from this trait implementation
|
||||||
|
|
|
|
||||||
|
Loading…
Reference in New Issue
Block a user