Skip to content

Commit 9936e13

Browse files
committed
Merge branch 'master' of https://github.com/DiuDiu777/rust
2 parents c8bef7e + 023521e commit 9936e13

File tree

763 files changed

+6001
-5667
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

763 files changed

+6001
-5667
lines changed

Cargo.lock

Lines changed: 171 additions & 134 deletions
Large diffs are not rendered by default.

compiler/rustc_abi/src/extern_abi/mod.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
use std::fmt;
22

33
use rustc_macros::{Decodable, Encodable, HashStable_Generic};
4-
use rustc_span::symbol::sym;
5-
use rustc_span::{Span, Symbol};
4+
use rustc_span::{Span, Symbol, sym};
65

76
#[cfg(test)]
87
mod tests;

compiler/rustc_ast/src/ast.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,7 @@ use rustc_data_structures::sync::Lrc;
3131
use rustc_macros::{Decodable, Encodable, HashStable_Generic};
3232
pub use rustc_span::AttrId;
3333
use rustc_span::source_map::{Spanned, respan};
34-
use rustc_span::symbol::{Ident, Symbol, kw, sym};
35-
use rustc_span::{DUMMY_SP, ErrorGuaranteed, Span};
34+
use rustc_span::{DUMMY_SP, ErrorGuaranteed, Ident, Span, Symbol, kw, sym};
3635
use thin_vec::{ThinVec, thin_vec};
3736

3837
pub use crate::format::*;

compiler/rustc_ast/src/attr/mod.rs

Lines changed: 31 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,10 @@
11
//! Functions dealing with attributes and meta items.
22
33
use std::fmt::Debug;
4-
use std::iter;
54
use std::sync::atomic::{AtomicU32, Ordering};
65

76
use rustc_index::bit_set::GrowableBitSet;
8-
use rustc_span::Span;
9-
use rustc_span::symbol::{Ident, Symbol, sym};
7+
use rustc_span::{Ident, Span, Symbol, sym};
108
use smallvec::{SmallVec, smallvec};
119
use thin_vec::{ThinVec, thin_vec};
1210

@@ -17,7 +15,9 @@ use crate::ast::{
1715
};
1816
use crate::ptr::P;
1917
use crate::token::{self, CommentKind, Delimiter, Token};
20-
use crate::tokenstream::{DelimSpan, LazyAttrTokenStream, Spacing, TokenStream, TokenTree};
18+
use crate::tokenstream::{
19+
DelimSpan, LazyAttrTokenStream, Spacing, TokenStream, TokenStreamIter, TokenTree,
20+
};
2121
use crate::util::comments;
2222
use crate::util::literal::escape_string_symbol;
2323

@@ -366,22 +366,19 @@ impl MetaItem {
366366
}
367367
}
368368

369-
fn from_tokens<'a, I>(tokens: &mut iter::Peekable<I>) -> Option<MetaItem>
370-
where
371-
I: Iterator<Item = &'a TokenTree>,
372-
{
369+
fn from_tokens(iter: &mut TokenStreamIter<'_>) -> Option<MetaItem> {
373370
// FIXME: Share code with `parse_path`.
374-
let tt = tokens.next().map(|tt| TokenTree::uninterpolate(tt));
371+
let tt = iter.next().map(|tt| TokenTree::uninterpolate(tt));
375372
let path = match tt.as_deref() {
376373
Some(&TokenTree::Token(
377374
Token { kind: ref kind @ (token::Ident(..) | token::PathSep), span },
378375
_,
379376
)) => 'arm: {
380377
let mut segments = if let &token::Ident(name, _) = kind {
381378
if let Some(TokenTree::Token(Token { kind: token::PathSep, .. }, _)) =
382-
tokens.peek()
379+
iter.peek()
383380
{
384-
tokens.next();
381+
iter.next();
385382
thin_vec![PathSegment::from_ident(Ident::new(name, span))]
386383
} else {
387384
break 'arm Path::from_ident(Ident::new(name, span));
@@ -391,16 +388,16 @@ impl MetaItem {
391388
};
392389
loop {
393390
if let Some(&TokenTree::Token(Token { kind: token::Ident(name, _), span }, _)) =
394-
tokens.next().map(|tt| TokenTree::uninterpolate(tt)).as_deref()
391+
iter.next().map(|tt| TokenTree::uninterpolate(tt)).as_deref()
395392
{
396393
segments.push(PathSegment::from_ident(Ident::new(name, span)));
397394
} else {
398395
return None;
399396
}
400397
if let Some(TokenTree::Token(Token { kind: token::PathSep, .. }, _)) =
401-
tokens.peek()
398+
iter.peek()
402399
{
403-
tokens.next();
400+
iter.next();
404401
} else {
405402
break;
406403
}
@@ -421,8 +418,8 @@ impl MetaItem {
421418
}
422419
_ => return None,
423420
};
424-
let list_closing_paren_pos = tokens.peek().map(|tt| tt.span().hi());
425-
let kind = MetaItemKind::from_tokens(tokens)?;
421+
let list_closing_paren_pos = iter.peek().map(|tt| tt.span().hi());
422+
let kind = MetaItemKind::from_tokens(iter)?;
426423
let hi = match &kind {
427424
MetaItemKind::NameValue(lit) => lit.span.hi(),
428425
MetaItemKind::List(..) => list_closing_paren_pos.unwrap_or(path.span.hi()),
@@ -439,25 +436,23 @@ impl MetaItem {
439436
impl MetaItemKind {
440437
// public because it can be called in the hir
441438
pub fn list_from_tokens(tokens: TokenStream) -> Option<ThinVec<MetaItemInner>> {
442-
let mut tokens = tokens.trees().peekable();
439+
let mut iter = tokens.iter();
443440
let mut result = ThinVec::new();
444-
while tokens.peek().is_some() {
445-
let item = MetaItemInner::from_tokens(&mut tokens)?;
441+
while iter.peek().is_some() {
442+
let item = MetaItemInner::from_tokens(&mut iter)?;
446443
result.push(item);
447-
match tokens.next() {
444+
match iter.next() {
448445
None | Some(TokenTree::Token(Token { kind: token::Comma, .. }, _)) => {}
449446
_ => return None,
450447
}
451448
}
452449
Some(result)
453450
}
454451

455-
fn name_value_from_tokens<'a>(
456-
tokens: &mut impl Iterator<Item = &'a TokenTree>,
457-
) -> Option<MetaItemKind> {
458-
match tokens.next() {
452+
fn name_value_from_tokens(iter: &mut TokenStreamIter<'_>) -> Option<MetaItemKind> {
453+
match iter.next() {
459454
Some(TokenTree::Delimited(.., Delimiter::Invisible(_), inner_tokens)) => {
460-
MetaItemKind::name_value_from_tokens(&mut inner_tokens.trees())
455+
MetaItemKind::name_value_from_tokens(&mut inner_tokens.iter())
461456
}
462457
Some(TokenTree::Token(token, _)) => {
463458
MetaItemLit::from_token(token).map(MetaItemKind::NameValue)
@@ -466,19 +461,17 @@ impl MetaItemKind {
466461
}
467462
}
468463

469-
fn from_tokens<'a>(
470-
tokens: &mut iter::Peekable<impl Iterator<Item = &'a TokenTree>>,
471-
) -> Option<MetaItemKind> {
472-
match tokens.peek() {
464+
fn from_tokens(iter: &mut TokenStreamIter<'_>) -> Option<MetaItemKind> {
465+
match iter.peek() {
473466
Some(TokenTree::Delimited(.., Delimiter::Parenthesis, inner_tokens)) => {
474467
let inner_tokens = inner_tokens.clone();
475-
tokens.next();
468+
iter.next();
476469
MetaItemKind::list_from_tokens(inner_tokens).map(MetaItemKind::List)
477470
}
478471
Some(TokenTree::Delimited(..)) => None,
479472
Some(TokenTree::Token(Token { kind: token::Eq, .. }, _)) => {
480-
tokens.next();
481-
MetaItemKind::name_value_from_tokens(tokens)
473+
iter.next();
474+
MetaItemKind::name_value_from_tokens(iter)
482475
}
483476
_ => Some(MetaItemKind::Word),
484477
}
@@ -594,22 +587,19 @@ impl MetaItemInner {
594587
self.meta_item().is_some()
595588
}
596589

597-
fn from_tokens<'a, I>(tokens: &mut iter::Peekable<I>) -> Option<MetaItemInner>
598-
where
599-
I: Iterator<Item = &'a TokenTree>,
600-
{
601-
match tokens.peek() {
590+
fn from_tokens(iter: &mut TokenStreamIter<'_>) -> Option<MetaItemInner> {
591+
match iter.peek() {
602592
Some(TokenTree::Token(token, _)) if let Some(lit) = MetaItemLit::from_token(token) => {
603-
tokens.next();
593+
iter.next();
604594
return Some(MetaItemInner::Lit(lit));
605595
}
606596
Some(TokenTree::Delimited(.., Delimiter::Invisible(_), inner_tokens)) => {
607-
tokens.next();
608-
return MetaItemInner::from_tokens(&mut inner_tokens.trees().peekable());
597+
iter.next();
598+
return MetaItemInner::from_tokens(&mut inner_tokens.iter());
609599
}
610600
_ => {}
611601
}
612-
MetaItem::from_tokens(tokens).map(MetaItemInner::MetaItem)
602+
MetaItem::from_tokens(iter).map(MetaItemInner::MetaItem)
613603
}
614604
}
615605

compiler/rustc_ast/src/entry.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
use rustc_span::Symbol;
2-
use rustc_span::symbol::sym;
1+
use rustc_span::{Symbol, sym};
32

43
use crate::attr::{self, AttributeExt};
54

compiler/rustc_ast/src/expand/allocator.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use rustc_macros::HashStable_Generic;
2-
use rustc_span::symbol::{Symbol, sym};
2+
use rustc_span::{Symbol, sym};
33

44
#[derive(Clone, Debug, Copy, Eq, PartialEq, HashStable_Generic)]
55
pub enum AllocatorKind {

compiler/rustc_ast/src/expand/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
//! Definitions shared by macros / syntax extensions and e.g. `rustc_middle`.
22
33
use rustc_macros::{Decodable, Encodable, HashStable_Generic};
4+
use rustc_span::Ident;
45
use rustc_span::def_id::DefId;
5-
use rustc_span::symbol::Ident;
66

77
use crate::MetaItem;
88

compiler/rustc_ast/src/format.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
use rustc_data_structures::fx::FxHashMap;
22
use rustc_macros::{Decodable, Encodable};
3-
use rustc_span::Span;
4-
use rustc_span::symbol::{Ident, Symbol};
3+
use rustc_span::{Ident, Span, Symbol};
54

65
use crate::Expr;
76
use crate::ptr::P;

compiler/rustc_ast/src/mut_visit.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,8 @@ use std::panic;
1313
use rustc_data_structures::flat_map_in_place::FlatMapInPlace;
1414
use rustc_data_structures::stack::ensure_sufficient_stack;
1515
use rustc_data_structures::sync::Lrc;
16-
use rustc_span::Span;
1716
use rustc_span::source_map::Spanned;
18-
use rustc_span::symbol::Ident;
17+
use rustc_span::{Ident, Span};
1918
use smallvec::{Array, SmallVec, smallvec};
2019
use thin_vec::ThinVec;
2120

compiler/rustc_ast/src/token.rs

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,10 @@ use rustc_data_structures::stable_hasher::{HashStable, StableHasher};
1111
use rustc_data_structures::sync::Lrc;
1212
use rustc_macros::{Decodable, Encodable, HashStable_Generic};
1313
use rustc_span::edition::Edition;
14+
use rustc_span::{DUMMY_SP, ErrorGuaranteed, Span, kw, sym};
1415
#[allow(clippy::useless_attribute)] // FIXME: following use of `hidden_glob_reexports` incorrectly triggers `useless_attribute` lint.
1516
#[allow(hidden_glob_reexports)]
16-
use rustc_span::symbol::{Ident, Symbol};
17-
use rustc_span::symbol::{kw, sym};
18-
use rustc_span::{DUMMY_SP, ErrorGuaranteed, Span};
17+
use rustc_span::{Ident, Symbol};
1918

2019
use crate::ast;
2120
use crate::ptr::P;
@@ -904,7 +903,8 @@ impl Token {
904903
self.is_non_raw_ident_where(|id| id.name == kw)
905904
}
906905

907-
/// Returns `true` if the token is a given keyword, `kw` or if `case` is `Insensitive` and this token is an identifier equal to `kw` ignoring the case.
906+
/// Returns `true` if the token is a given keyword, `kw` or if `case` is `Insensitive` and this
907+
/// token is an identifier equal to `kw` ignoring the case.
908908
pub fn is_keyword_case(&self, kw: Symbol, case: Case) -> bool {
909909
self.is_keyword(kw)
910910
|| (case == Case::Insensitive
@@ -917,6 +917,11 @@ impl Token {
917917
self.is_non_raw_ident_where(Ident::is_path_segment_keyword)
918918
}
919919

920+
/// Don't use this unless you're doing something very loose and heuristic-y.
921+
pub fn is_any_keyword(&self) -> bool {
922+
self.is_non_raw_ident_where(Ident::is_any_keyword)
923+
}
924+
920925
/// Returns true for reserved identifiers used internally for elided lifetimes,
921926
/// unnamed method parameters, crate root module, error recovery etc.
922927
pub fn is_special_ident(&self) -> bool {

0 commit comments

Comments
 (0)