1
1
use rustc_ast:: ptr:: P ;
2
- use rustc_ast:: token:: { self , Delimiter , NonterminalKind , Token } ;
2
+ use rustc_ast:: token:: { self , Delimiter , Nonterminal :: * , NonterminalKind , Token } ;
3
3
use rustc_ast:: HasTokens ;
4
4
use rustc_ast_pretty:: pprust;
5
5
use rustc_errors:: IntoDiagnostic ;
@@ -20,10 +20,7 @@ impl<'a> Parser<'a> {
20
20
pub fn nonterminal_may_begin_with ( kind : NonterminalKind , token : & Token ) -> bool {
21
21
/// Checks whether the non-terminal may contain a single (non-keyword) identifier.
22
22
fn may_be_ident ( nt : & token:: Nonterminal ) -> bool {
23
- !matches ! (
24
- * nt,
25
- token:: NtItem ( _) | token:: NtBlock ( _) | token:: NtVis ( _) | token:: NtLifetime ( _)
26
- )
23
+ !matches ! ( * nt, NtItem ( _) | NtBlock ( _) | NtVis ( _) | NtLifetime ( _) )
27
24
}
28
25
29
26
match kind {
@@ -46,20 +43,14 @@ impl<'a> Parser<'a> {
46
43
token:: OpenDelim ( Delimiter :: Brace ) => true ,
47
44
token:: Interpolated ( nt) => !matches ! (
48
45
* * nt,
49
- token:: NtItem ( _)
50
- | token:: NtPat ( _)
51
- | token:: NtTy ( _)
52
- | token:: NtIdent ( ..)
53
- | token:: NtMeta ( _)
54
- | token:: NtPath ( _)
55
- | token:: NtVis ( _)
46
+ NtItem ( _) | NtPat ( _) | NtTy ( _) | NtIdent ( ..) | NtMeta ( _) | NtPath ( _) | NtVis ( _)
56
47
) ,
57
48
_ => false ,
58
49
} ,
59
50
NonterminalKind :: Path | NonterminalKind :: Meta => match & token. kind {
60
51
token:: ModSep | token:: Ident ( ..) => true ,
61
52
token:: Interpolated ( nt) => match * * nt {
62
- token :: NtPath ( _) | token :: NtMeta ( _) => true ,
53
+ NtPath ( _) | NtMeta ( _) => true ,
63
54
_ => may_be_ident ( & nt) ,
64
55
} ,
65
56
_ => false ,
@@ -87,7 +78,7 @@ impl<'a> Parser<'a> {
87
78
NonterminalKind :: Lifetime => match & token. kind {
88
79
token:: Lifetime ( _) => true ,
89
80
token:: Interpolated ( nt) => {
90
- matches ! ( * * nt, token :: NtLifetime ( _) )
81
+ matches ! ( * * nt, NtLifetime ( _) )
91
82
}
92
83
_ => false ,
93
84
} ,
@@ -109,7 +100,7 @@ impl<'a> Parser<'a> {
109
100
// Note that TT is treated differently to all the others.
110
101
NonterminalKind :: TT => return Ok ( NtOrTt :: Tt ( self . parse_token_tree ( ) ) ) ,
111
102
NonterminalKind :: Item => match self . parse_item ( ForceCollect :: Yes ) ? {
112
- Some ( item) => token :: NtItem ( item) ,
103
+ Some ( item) => NtItem ( item) ,
113
104
None => {
114
105
return Err ( UnexpectedNonterminal :: Item ( self . token . span )
115
106
. into_diagnostic ( & self . sess . span_diagnostic ) ) ;
@@ -118,17 +109,17 @@ impl<'a> Parser<'a> {
118
109
NonterminalKind :: Block => {
119
110
// While a block *expression* may have attributes (e.g. `#[my_attr] { ... }`),
120
111
// the ':block' matcher does not support them
121
- token :: NtBlock ( self . collect_tokens_no_attrs ( |this| this. parse_block ( ) ) ?)
112
+ NtBlock ( self . collect_tokens_no_attrs ( |this| this. parse_block ( ) ) ?)
122
113
}
123
114
NonterminalKind :: Stmt => match self . parse_stmt ( ForceCollect :: Yes ) ? {
124
- Some ( s) => token :: NtStmt ( P ( s) ) ,
115
+ Some ( s) => NtStmt ( P ( s) ) ,
125
116
None => {
126
117
return Err ( UnexpectedNonterminal :: Statement ( self . token . span )
127
118
. into_diagnostic ( & self . sess . span_diagnostic ) ) ;
128
119
}
129
120
} ,
130
121
NonterminalKind :: PatParam { .. } | NonterminalKind :: PatWithOr => {
131
- token :: NtPat ( self . collect_tokens_no_attrs ( |this| match kind {
122
+ NtPat ( self . collect_tokens_no_attrs ( |this| match kind {
132
123
NonterminalKind :: PatParam { .. } => this. parse_pat_no_top_alt ( None , None ) ,
133
124
NonterminalKind :: PatWithOr => this. parse_pat_allow_top_alt (
134
125
None ,
@@ -140,15 +131,15 @@ impl<'a> Parser<'a> {
140
131
} ) ?)
141
132
}
142
133
143
- NonterminalKind :: Expr => token :: NtExpr ( self . parse_expr_force_collect ( ) ?) ,
134
+ NonterminalKind :: Expr => NtExpr ( self . parse_expr_force_collect ( ) ?) ,
144
135
NonterminalKind :: Literal => {
145
136
// The `:literal` matcher does not support attributes
146
- token :: NtLiteral (
137
+ NtLiteral (
147
138
self . collect_tokens_no_attrs ( |this| this. parse_literal_maybe_minus ( ) ) ?,
148
139
)
149
140
}
150
141
151
- NonterminalKind :: Ty => token :: NtTy (
142
+ NonterminalKind :: Ty => NtTy (
152
143
self . collect_tokens_no_attrs ( |this| this. parse_ty_no_question_mark_recover ( ) ) ?,
153
144
) ,
154
145
@@ -157,24 +148,24 @@ impl<'a> Parser<'a> {
157
148
if let Some ( ( ident, is_raw) ) = get_macro_ident ( & self . token ) =>
158
149
{
159
150
self . bump ( ) ;
160
- token :: NtIdent ( ident, is_raw)
151
+ NtIdent ( ident, is_raw)
161
152
}
162
153
NonterminalKind :: Ident => {
163
154
return Err ( UnexpectedNonterminal :: Ident {
164
155
span : self . token . span ,
165
156
token : self . token . clone ( ) ,
166
157
} . into_diagnostic ( & self . sess . span_diagnostic ) ) ;
167
158
}
168
- NonterminalKind :: Path => token :: NtPath (
159
+ NonterminalKind :: Path => NtPath (
169
160
P ( self . collect_tokens_no_attrs ( |this| this. parse_path ( PathStyle :: Type ) ) ?) ,
170
161
) ,
171
- NonterminalKind :: Meta => token :: NtMeta ( P ( self . parse_attr_item ( true ) ?) ) ,
172
- NonterminalKind :: Vis => token :: NtVis (
162
+ NonterminalKind :: Meta => NtMeta ( P ( self . parse_attr_item ( true ) ?) ) ,
163
+ NonterminalKind :: Vis => NtVis (
173
164
P ( self . collect_tokens_no_attrs ( |this| this. parse_visibility ( FollowedByType :: Yes ) ) ?) ,
174
165
) ,
175
166
NonterminalKind :: Lifetime => {
176
167
if self . check_lifetime ( ) {
177
- token :: NtLifetime ( self . expect_lifetime ( ) . ident )
168
+ NtLifetime ( self . expect_lifetime ( ) . ident )
178
169
} else {
179
170
return Err ( UnexpectedNonterminal :: Lifetime {
180
171
span : self . token . span ,
0 commit comments