diff options
| author | Matthew Jasper <mjjasper1@gmail.com> | 2020-06-11 15:49:57 +0100 |
|---|---|---|
| committer | Matthew Jasper <mjjasper1@gmail.com> | 2020-08-14 17:34:30 +0100 |
| commit | cbcef3effcf64bd0d89ea2dc8973e18d7fcf94c3 (patch) | |
| tree | cf11d5e77bdfe87b0a19d5f93ff251b256770325 /src/librustc_session | |
| parent | 55b9adfafa11b2ced5c0477c949fd875b19b3877 (diff) | |
Rework `rustc_serialize`
- Move the type parameter from `encode` and `decode` methods to the trait. - Remove `UseSpecialized(En|De)codable` traits. - Remove blanket impls for references. - Add `RefDecodable` trait to allow deserializing to arena-allocated references safely. - Remove ability to (de)serialize HIR. - Create proc-macros `(Ty)?(En|De)codable` to help implement these new traits.
Diffstat (limited to 'src/librustc_session')
| -rw-r--r-- | src/librustc_session/Cargo.toml | 1 | ||||
| -rw-r--r-- | src/librustc_session/config.rs | 10 | ||||
| -rw-r--r-- | src/librustc_session/lib.rs | 2 | ||||
| -rw-r--r-- | src/librustc_session/search_paths.rs | 2 | ||||
| -rw-r--r-- | src/librustc_session/utils.rs | 2 |
5 files changed, 11 insertions, 6 deletions
diff --git a/src/librustc_session/Cargo.toml b/src/librustc_session/Cargo.toml index 35c227df850..cb6626d0f4b 100644 --- a/src/librustc_session/Cargo.toml +++ b/src/librustc_session/Cargo.toml @@ -12,6 +12,7 @@ path = "lib.rs" bitflags = "1.2.1" getopts = "0.2" log = { package = "tracing", version = "0.1" } +rustc_macros = { path = "../librustc_macros" } rustc_errors = { path = "../librustc_errors" } rustc_feature = { path = "../librustc_feature" } rustc_target = { path = "../librustc_target" } diff --git a/src/librustc_session/config.rs b/src/librustc_session/config.rs index 9fcdd46539c..c26c9bde3ee 100644 --- a/src/librustc_session/config.rs +++ b/src/librustc_session/config.rs @@ -39,7 +39,7 @@ pub struct Config { } bitflags! { - #[derive(Default, RustcEncodable, RustcDecodable)] + #[derive(Default, Encodable, Decodable)] pub struct SanitizerSet: u8 { const ADDRESS = 1 << 0; const LEAK = 1 << 1; @@ -194,7 +194,8 @@ impl SwitchWithOptPath { } } -#[derive(Copy, Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Hash, RustcEncodable, RustcDecodable)] +#[derive(Copy, Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] +#[derive(Encodable, Decodable)] pub enum SymbolManglingVersion { Legacy, V0, @@ -209,7 +210,8 @@ pub enum DebugInfo { Full, } -#[derive(Clone, Copy, PartialEq, Eq, Hash, Debug, PartialOrd, Ord, RustcEncodable, RustcDecodable)] +#[derive(Clone, Copy, PartialEq, Eq, Hash, Debug, PartialOrd, Ord)] +#[derive(Encodable, Decodable)] pub enum OutputType { Bitcode, Assembly, @@ -672,7 +674,7 @@ pub enum EntryFnType { impl_stable_hash_via_hash!(EntryFnType); -#[derive(Copy, PartialEq, PartialOrd, Clone, Ord, Eq, Hash, Debug, RustcEncodable, RustcDecodable)] +#[derive(Copy, PartialEq, PartialOrd, Clone, Ord, Eq, Hash, Debug, Encodable, Decodable)] pub enum CrateType { Executable, Dylib, diff --git a/src/librustc_session/lib.rs b/src/librustc_session/lib.rs index be9d2e7be27..c2ea141a06f 100644 --- a/src/librustc_session/lib.rs +++ b/src/librustc_session/lib.rs @@ -3,6 +3,8 @@ #[macro_use] extern crate bitflags; +#[macro_use] +extern crate rustc_macros; pub mod cgu_reuse_tracker; pub mod utils; diff --git a/src/librustc_session/search_paths.rs b/src/librustc_session/search_paths.rs index 4ff06acaa1f..e12364b7dac 100644 --- a/src/librustc_session/search_paths.rs +++ b/src/librustc_session/search_paths.rs @@ -33,7 +33,7 @@ impl SearchPathFile { } } -#[derive(PartialEq, Clone, Copy, Debug, Hash, Eq, RustcEncodable, RustcDecodable)] +#[derive(PartialEq, Clone, Copy, Debug, Hash, Eq, Encodable, Decodable)] pub enum PathKind { Native, Crate, diff --git a/src/librustc_session/utils.rs b/src/librustc_session/utils.rs index b97308c22cb..15447c01d1e 100644 --- a/src/librustc_session/utils.rs +++ b/src/librustc_session/utils.rs @@ -10,7 +10,7 @@ impl Session { } } -#[derive(Copy, Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Hash, RustcEncodable, RustcDecodable)] +#[derive(Copy, Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Hash, Encodable, Decodable)] pub enum NativeLibKind { /// Static library (e.g. `libfoo.a` on Linux or `foo.lib` on Windows/MSVC) included /// when linking a final binary, but not when archiving an rlib. |
