Add RFC 1238's unsafe_destructor_blind_to_params (UGEH) where needed.
I needed it in `RawVec`, `Vec`, and `TypedArena` for `rustc` to bootstrap; but of course that alone was not sufficient for `make check`. Later I added `unsafe_destructor_blind_to_params` to collections, in particular `LinkedList` and `RawTable` (the backing representation for `HashMap` and `HashSet`), to get the regression tests exercising cyclic structure from PR #27185 building. ---- Note that the feature is `dropck_parametricity` (which is not the same as the attribute's name). We will almost certainly vary our strategy here in the future, so it makes some sense to have a not-as-ugly name for the feature gate. (The attribute name was deliberately selected to be ugly looking.)
This commit is contained in:
@@ -94,6 +94,11 @@
|
||||
#![feature(unboxed_closures)]
|
||||
#![feature(unique)]
|
||||
#![feature(unsafe_no_drop_flag, filling_drop)]
|
||||
// SNAP 1af31d4
|
||||
#![allow(unused_features)]
|
||||
// SNAP 1af31d4
|
||||
#![allow(unused_attributes)]
|
||||
#![feature(dropck_parametricity)]
|
||||
#![feature(unsize)]
|
||||
#![feature(core_slice_ext)]
|
||||
#![feature(core_str_ext)]
|
||||
|
||||
@@ -445,6 +445,7 @@ impl<T> RawVec<T> {
|
||||
}
|
||||
|
||||
impl<T> Drop for RawVec<T> {
|
||||
#[unsafe_destructor_blind_to_params]
|
||||
/// Frees the memory owned by the RawVec *without* trying to Drop its contents.
|
||||
fn drop(&mut self) {
|
||||
let elem_size = mem::size_of::<T>();
|
||||
|
||||
Reference in New Issue
Block a user