pub use UnsafeSource::*;
use crate::ptr::P;
-use crate::token::{self, CommentKind, DelimToken, Token};
+use crate::token::{self, CommentKind, Delimiter, Token};
use crate::tokenstream::{DelimSpan, LazyTokenStream, TokenStream, TokenTree};
use rustc_data_structures::stable_hasher::{HashStable, StableHasher};
}
}
-impl<CTX> HashStable<CTX> for Path {
+impl<CTX: rustc_span::HashStableContext> HashStable<CTX> for Path {
fn hash_stable(&self, hcx: &mut CTX, hasher: &mut StableHasher) {
self.segments.len().hash_stable(hcx, hasher);
for segment in &self.segments {
- segment.ident.name.hash_stable(hcx, hasher);
+ segment.ident.hash_stable(hcx, hasher);
}
}
}
pub bounds: GenericBounds,
pub is_placeholder: bool,
pub kind: GenericParamKind,
+ pub colon_span: Option<Span>,
}
impl GenericParam {
pub span: Span,
pub tokens: Option<LazyTokenStream>,
/// The following *isn't* a parse error, but will cause multiple errors in following stages.
- /// ```
+ /// ```compile_fail
/// let x = {
/// foo: var
/// };
}
impl MacArgs {
- pub fn delim(&self) -> DelimToken {
+ pub fn delim(&self) -> Option<Delimiter> {
match self {
- MacArgs::Delimited(_, delim, _) => delim.to_token(),
- MacArgs::Empty | MacArgs::Eq(..) => token::NoDelim,
+ MacArgs::Delimited(_, delim, _) => Some(delim.to_token()),
+ MacArgs::Empty | MacArgs::Eq(..) => None,
}
}
}
impl MacDelimiter {
- pub fn to_token(self) -> DelimToken {
+ pub fn to_token(self) -> Delimiter {
match self {
- MacDelimiter::Parenthesis => DelimToken::Paren,
- MacDelimiter::Bracket => DelimToken::Bracket,
- MacDelimiter::Brace => DelimToken::Brace,
+ MacDelimiter::Parenthesis => Delimiter::Parenthesis,
+ MacDelimiter::Bracket => Delimiter::Bracket,
+ MacDelimiter::Brace => Delimiter::Brace,
}
}
- pub fn from_token(delim: DelimToken) -> Option<MacDelimiter> {
+ pub fn from_token(delim: Delimiter) -> Option<MacDelimiter> {
match delim {
- token::Paren => Some(MacDelimiter::Parenthesis),
- token::Bracket => Some(MacDelimiter::Bracket),
- token::Brace => Some(MacDelimiter::Brace),
- token::NoDelim => None,
+ Delimiter::Parenthesis => Some(MacDelimiter::Parenthesis),
+ Delimiter::Bracket => Some(MacDelimiter::Bracket),
+ Delimiter::Brace => Some(MacDelimiter::Brace),
+ Delimiter::Invisible => None,
}
}
}