Remove built-in derive macros Send
and Sync
This commit is contained in:
parent
a96ba96915
commit
e1d871e2d9
@ -1022,6 +1022,12 @@ impl<'a> Resolver<'a> {
|
|||||||
|
|
||||||
fn suggest_macro_name(&mut self, name: Symbol, kind: MacroKind,
|
fn suggest_macro_name(&mut self, name: Symbol, kind: MacroKind,
|
||||||
err: &mut DiagnosticBuilder<'a>, span: Span) {
|
err: &mut DiagnosticBuilder<'a>, span: Span) {
|
||||||
|
if kind == MacroKind::Derive && (name.as_str() == "Send" || name.as_str() == "Sync") {
|
||||||
|
let msg = format!("unsafe traits like `{}` should be implemented explicitly", name);
|
||||||
|
err.span_note(span, &msg);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// First check if this is a locally-defined bang macro.
|
// First check if this is a locally-defined bang macro.
|
||||||
let suggestion = if let MacroKind::Bang = kind {
|
let suggestion = if let MacroKind::Bang = kind {
|
||||||
find_best_match_for_name(
|
find_best_match_for_name(
|
||||||
|
@ -6,14 +6,6 @@ use syntax::ast::MetaItem;
|
|||||||
use syntax::ext::base::{Annotatable, ExtCtxt};
|
use syntax::ext::base::{Annotatable, ExtCtxt};
|
||||||
use syntax_pos::Span;
|
use syntax_pos::Span;
|
||||||
|
|
||||||
pub fn expand_deriving_unsafe_bound(cx: &mut ExtCtxt<'_>,
|
|
||||||
span: Span,
|
|
||||||
_: &MetaItem,
|
|
||||||
_: &Annotatable,
|
|
||||||
_: &mut dyn FnMut(Annotatable)) {
|
|
||||||
cx.span_err(span, "this unsafe trait should be implemented explicitly");
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn expand_deriving_copy(cx: &mut ExtCtxt<'_>,
|
pub fn expand_deriving_copy(cx: &mut ExtCtxt<'_>,
|
||||||
span: Span,
|
span: Span,
|
||||||
mitem: &MetaItem,
|
mitem: &MetaItem,
|
||||||
|
@ -111,8 +111,6 @@ derive_traits! {
|
|||||||
|
|
||||||
"Default" => default::expand_deriving_default,
|
"Default" => default::expand_deriving_default,
|
||||||
|
|
||||||
"Send" => bounds::expand_deriving_unsafe_bound,
|
|
||||||
"Sync" => bounds::expand_deriving_unsafe_bound,
|
|
||||||
"Copy" => bounds::expand_deriving_copy,
|
"Copy" => bounds::expand_deriving_copy,
|
||||||
|
|
||||||
// deprecated
|
// deprecated
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
#[derive(Send)]
|
#[derive(Send)]
|
||||||
//~^ ERROR this unsafe trait should be implemented explicitly
|
//~^ ERROR cannot find derive macro `Send` in this scope
|
||||||
struct Test;
|
struct Test;
|
||||||
|
|
||||||
#[derive(Sync)]
|
#[derive(Sync)]
|
||||||
//~^ ERROR this unsafe trait should be implemented explicitly
|
//~^ ERROR cannot find derive macro `Sync` in this scope
|
||||||
struct Test1;
|
struct Test1;
|
||||||
|
|
||||||
pub fn main() {}
|
pub fn main() {}
|
||||||
|
@ -1,10 +1,22 @@
|
|||||||
error: this unsafe trait should be implemented explicitly
|
error: cannot find derive macro `Send` in this scope
|
||||||
|
--> $DIR/deriving-bounds.rs:1:10
|
||||||
|
|
|
||||||
|
LL | #[derive(Send)]
|
||||||
|
| ^^^^
|
||||||
|
|
|
||||||
|
note: unsafe traits like `Send` should be implemented explicitly
|
||||||
--> $DIR/deriving-bounds.rs:1:10
|
--> $DIR/deriving-bounds.rs:1:10
|
||||||
|
|
|
|
||||||
LL | #[derive(Send)]
|
LL | #[derive(Send)]
|
||||||
| ^^^^
|
| ^^^^
|
||||||
|
|
||||||
error: this unsafe trait should be implemented explicitly
|
error: cannot find derive macro `Sync` in this scope
|
||||||
|
--> $DIR/deriving-bounds.rs:5:10
|
||||||
|
|
|
||||||
|
LL | #[derive(Sync)]
|
||||||
|
| ^^^^
|
||||||
|
|
|
||||||
|
note: unsafe traits like `Sync` should be implemented explicitly
|
||||||
--> $DIR/deriving-bounds.rs:5:10
|
--> $DIR/deriving-bounds.rs:5:10
|
||||||
|
|
|
|
||||||
LL | #[derive(Sync)]
|
LL | #[derive(Sync)]
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#[derive(Clone,
|
#[derive(Clone,
|
||||||
Sync, //~ ERROR this unsafe trait should be implemented explicitly
|
Sync, //~ ERROR cannot find derive macro `Sync` in this scope
|
||||||
Copy)]
|
Copy)]
|
||||||
enum Foo {}
|
enum Foo {}
|
||||||
|
|
||||||
|
@ -1,4 +1,10 @@
|
|||||||
error: this unsafe trait should be implemented explicitly
|
error: cannot find derive macro `Sync` in this scope
|
||||||
|
--> $DIR/issue-33571.rs:2:10
|
||||||
|
|
|
||||||
|
LL | Sync,
|
||||||
|
| ^^^^
|
||||||
|
|
|
||||||
|
note: unsafe traits like `Sync` should be implemented explicitly
|
||||||
--> $DIR/issue-33571.rs:2:10
|
--> $DIR/issue-33571.rs:2:10
|
||||||
|
|
|
|
||||||
LL | Sync,
|
LL | Sync,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user