Auto merge of #105880 - Nilstrieb:make-newtypes-less-not-rust, r=oli-obk
Improve syntax of `newtype_index` This makes it more like proper Rust and also makes the implementation a lot simpler. Mostly just turns weird flags in the body into proper attributes. It should probably also be converted to an attribute macro instead of function-like, but that can be done in a future PR.
This commit is contained in:
commit
eb9e5e711d
37 changed files with 182 additions and 268 deletions
|
@ -10,10 +10,9 @@ use std::fmt;
|
|||
use std::hash::{Hash, Hasher};
|
||||
|
||||
rustc_index::newtype_index! {
|
||||
pub struct CrateNum {
|
||||
ENCODABLE = custom
|
||||
DEBUG_FORMAT = "crate{}"
|
||||
}
|
||||
#[custom_encodable]
|
||||
#[debug_format = "crate{}"]
|
||||
pub struct CrateNum {}
|
||||
}
|
||||
|
||||
/// Item definitions in the currently-compiled crate would have the `CrateNum`
|
||||
|
@ -194,13 +193,12 @@ rustc_index::newtype_index! {
|
|||
/// A DefIndex is an index into the hir-map for a crate, identifying a
|
||||
/// particular definition. It should really be considered an interned
|
||||
/// shorthand for a particular DefPath.
|
||||
#[custom_encodable] // (only encodable in metadata)
|
||||
#[debug_format = "DefIndex({})"]
|
||||
pub struct DefIndex {
|
||||
ENCODABLE = custom // (only encodable in metadata)
|
||||
|
||||
DEBUG_FORMAT = "DefIndex({})",
|
||||
/// The crate root is always assigned index 0 by the AST Map code,
|
||||
/// thanks to `NodeCollector::new`.
|
||||
const CRATE_DEF_INDEX = 0,
|
||||
const CRATE_DEF_INDEX = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -61,9 +61,8 @@ pub struct SyntaxContextData {
|
|||
|
||||
rustc_index::newtype_index! {
|
||||
/// A unique ID associated with a macro invocation and expansion.
|
||||
pub struct ExpnIndex {
|
||||
ENCODABLE = custom
|
||||
}
|
||||
#[custom_encodable]
|
||||
pub struct ExpnIndex {}
|
||||
}
|
||||
|
||||
/// A unique ID associated with a macro invocation and expansion.
|
||||
|
@ -82,11 +81,10 @@ impl fmt::Debug for ExpnId {
|
|||
|
||||
rustc_index::newtype_index! {
|
||||
/// A unique ID associated with a macro invocation and expansion.
|
||||
pub struct LocalExpnId {
|
||||
ENCODABLE = custom
|
||||
ORD_IMPL = custom
|
||||
DEBUG_FORMAT = "expn{}"
|
||||
}
|
||||
#[custom_encodable]
|
||||
#[no_ord_impl]
|
||||
#[debug_format = "expn{}"]
|
||||
pub struct LocalExpnId {}
|
||||
}
|
||||
|
||||
// To ensure correctness of incremental compilation,
|
||||
|
|
|
@ -1802,7 +1802,7 @@ impl fmt::Display for MacroRulesNormalizedIdent {
|
|||
pub struct Symbol(SymbolIndex);
|
||||
|
||||
rustc_index::newtype_index! {
|
||||
struct SymbolIndex { .. }
|
||||
struct SymbolIndex {}
|
||||
}
|
||||
|
||||
impl Symbol {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue