diff options
| author | Felix S. Klock II <pnkfelix@pnkfx.org> | 2015-07-17 16:12:35 +0200 |
|---|---|---|
| committer | Felix S. Klock II <pnkfelix@pnkfx.org> | 2015-10-06 14:16:49 +0200 |
| commit | d778e57bf61b2284f33d28486f2ac63faa0422cf (patch) | |
| tree | c6b40557ab5e5f1d9de0724c3926bfd0abb5a28e /src/libarena/lib.rs | |
| parent | 9868df2fd5d9364a1a1d8b22847c7b442a77a88b (diff) | |
| download | rust-d778e57bf61b2284f33d28486f2ac63faa0422cf.tar.gz rust-d778e57bf61b2284f33d28486f2ac63faa0422cf.zip | |
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.)
Diffstat (limited to 'src/libarena/lib.rs')
| -rw-r--r-- | src/libarena/lib.rs | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/libarena/lib.rs b/src/libarena/lib.rs index 57e82720e8b..62463ecabbf 100644 --- a/src/libarena/lib.rs +++ b/src/libarena/lib.rs @@ -38,8 +38,14 @@ #![feature(ptr_as_ref)] #![feature(raw)] #![feature(staged_api)] +#![feature(dropck_parametricity)] #![cfg_attr(test, feature(test))] +// SNAP 1af31d4 +#![allow(unused_features)] +// SNAP 1af31d4 +#![allow(unused_attributes)] + extern crate alloc; use std::cell::{Cell, RefCell}; @@ -510,6 +516,7 @@ impl<T> TypedArena<T> { } impl<T> Drop for TypedArena<T> { + #[unsafe_destructor_blind_to_params] fn drop(&mut self) { unsafe { // Determine how much was filled. |
