Skip to content

Commit ffbc5ad

Browse files
committed
Auto merge of #17581 - lnicola:sync-from-rust, r=lnicola
minor: Sync from rust
2 parents 5577e4e + bd6de0c commit ffbc5ad

File tree

5 files changed

+4
-84
lines changed

5 files changed

+4
-84
lines changed

crates/hir-expand/src/inert_attr_macro.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -142,9 +142,9 @@ pub const INERT_ATTRIBUTES: &[BuiltinAttribute] = &[
142142
allow, Normal, template!(List: r#"lint1, lint2, ..., /*opt*/ reason = "...""#),
143143
DuplicatesOk, @only_local: true,
144144
),
145-
gated!(
146-
expect, Normal, template!(List: r#"lint1, lint2, ..., /*opt*/ reason = "...""#), DuplicatesOk,
147-
lint_reasons, experimental!(expect)
145+
ungated!(
146+
expect, Normal, template!(List: r#"lint1, lint2, ..., /*opt*/ reason = "...""#),
147+
DuplicatesOk, @only_local: true,
148148
),
149149
ungated!(
150150
forbid, Normal, template!(List: r#"lint1, lint2, ..., /*opt*/ reason = "...""#),

crates/ide-db/src/generated/lints.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,6 @@ pub const DEFAULT_LINTS: &[Lint] = &[
4949
label: "bindings_with_variant_name",
5050
description: r##"detects pattern bindings with the same name as one of the matched variants"##,
5151
},
52-
Lint { label: "box_pointers", description: r##"use of owned (Box type) heap memory"## },
5352
Lint {
5453
label: "boxed_slice_into_iter",
5554
description: r##"detects calling `into_iter` on boxed slices in Rust 2015, 2018, and 2021"##,

crates/salsa/salsa-macros/src/database_storage.rs

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -241,11 +241,3 @@ impl Parse for QueryGroup {
241241
Ok(QueryGroup { group_path })
242242
}
243243
}
244-
245-
struct Nothing;
246-
247-
impl Parse for Nothing {
248-
fn parse(_input: ParseStream<'_>) -> syn::Result<Self> {
249-
Ok(Nothing)
250-
}
251-
}

crates/stdx/src/anymap.rs

Lines changed: 0 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,6 @@ pub type RawMap<A> = hash_map::HashMap<TypeId, Box<A>, BuildHasherDefault<TypeId
6868
/// The type parameter `A` allows you to use a different value type; normally you will want
6969
/// it to be `core::any::Any` (also known as `std::any::Any`), but there are other choices:
7070
///
71-
/// - If you want the entire map to be cloneable, use `CloneAny` instead of `Any`; with
72-
/// that, you can only add types that implement `Clone` to the map.
7371
/// - You can add on `+ Send` or `+ Send + Sync` (e.g. `Map<dyn Any + Send>`) to add those
7472
/// auto traits.
7573
///
@@ -79,9 +77,6 @@ pub type RawMap<A> = hash_map::HashMap<TypeId, Box<A>, BuildHasherDefault<TypeId
7977
/// also spelled [`AnyMap`] for convenience.
8078
/// - <code>[Map]&lt;dyn [core::any::Any] + Send&gt;</code>
8179
/// - <code>[Map]&lt;dyn [core::any::Any] + Send + Sync&gt;</code>
82-
/// - <code>[Map]&lt;dyn [CloneAny]&gt;</code>
83-
/// - <code>[Map]&lt;dyn [CloneAny] + Send&gt;</code>
84-
/// - <code>[Map]&lt;dyn [CloneAny] + Send + Sync&gt;</code>
8580
///
8681
/// ## Example
8782
///
@@ -205,12 +200,6 @@ mod tests {
205200
assert_debug::<Map<dyn Any>>();
206201
assert_debug::<Map<dyn Any + Send>>();
207202
assert_debug::<Map<dyn Any + Send + Sync>>();
208-
assert_send::<Map<dyn CloneAny + Send>>();
209-
assert_send::<Map<dyn CloneAny + Send + Sync>>();
210-
assert_sync::<Map<dyn CloneAny + Send + Sync>>();
211-
assert_debug::<Map<dyn CloneAny>>();
212-
assert_debug::<Map<dyn CloneAny + Send>>();
213-
assert_debug::<Map<dyn CloneAny + Send + Sync>>();
214203
}
215204

216205
#[test]
@@ -232,53 +221,6 @@ mod tests {
232221
}
233222
}
234223

235-
// impl some traits for dyn Any
236-
use core::fmt;
237-
238-
#[doc(hidden)]
239-
pub trait CloneToAny {
240-
/// Clone `self` into a new `Box<dyn CloneAny>` object.
241-
fn clone_to_any(&self) -> Box<dyn CloneAny>;
242-
}
243-
244-
impl<T: Any + Clone> CloneToAny for T {
245-
#[inline]
246-
fn clone_to_any(&self) -> Box<dyn CloneAny> {
247-
Box::new(self.clone())
248-
}
249-
}
250-
251-
macro_rules! impl_clone {
252-
($t:ty) => {
253-
impl Clone for Box<$t> {
254-
#[inline]
255-
fn clone(&self) -> Box<$t> {
256-
// SAFETY: this dance is to reapply any Send/Sync marker. I’m not happy about this
257-
// approach, given that I used to do it in safe code, but then came a dodgy
258-
// future-compatibility warning where_clauses_object_safety, which is spurious for
259-
// auto traits but still super annoying (future-compatibility lints seem to mean
260-
// your bin crate needs a corresponding allow!). Although I explained my plight¹
261-
// and it was all explained and agreed upon, no action has been taken. So I finally
262-
// caved and worked around it by doing it this way, which matches what’s done for
263-
// core::any², so it’s probably not *too* bad.
264-
//
265-
// ¹ https://github.com/rust-lang/rust/issues/51443#issuecomment-421988013
266-
// ² https://github.com/rust-lang/rust/blob/e7825f2b690c9a0d21b6f6d84c404bb53b151b38/library/alloc/src/boxed.rs#L1613-L1616
267-
let clone: Box<dyn CloneAny> = (**self).clone_to_any();
268-
let raw: *mut dyn CloneAny = Box::into_raw(clone);
269-
unsafe { Box::from_raw(raw as *mut $t) }
270-
}
271-
}
272-
273-
impl fmt::Debug for $t {
274-
#[inline]
275-
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
276-
f.pad(stringify!($t))
277-
}
278-
}
279-
};
280-
}
281-
282224
/// Methods for downcasting from an `Any`-like trait object.
283225
///
284226
/// This should only be implemented on trait objects for subtraits of `Any`, though you can
@@ -350,16 +292,3 @@ macro_rules! implement {
350292
implement!(Any);
351293
implement!(Any + Send);
352294
implement!(Any + Send + Sync);
353-
354-
/// [`Any`], but with cloning.
355-
///
356-
/// Every type with no non-`'static` references that implements `Clone` implements `CloneAny`.
357-
/// See [`core::any`] for more details on `Any` in general.
358-
pub trait CloneAny: Any + CloneToAny {}
359-
impl<T: Any + Clone> CloneAny for T {}
360-
implement!(CloneAny);
361-
implement!(CloneAny + Send);
362-
implement!(CloneAny + Send + Sync);
363-
impl_clone!(dyn CloneAny);
364-
impl_clone!(dyn CloneAny + Send);
365-
impl_clone!(dyn CloneAny + Send + Sync);

rust-version

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
3d5d7a24f76006b391d8a53d903ae64c1b4a52d2
1+
bcf1f6db4594ae6132378b179a30cdb3599a863d

0 commit comments

Comments
 (0)