1111use ast:: NodeId ;
1212use early_buffered_lints:: BufferedEarlyLintId ;
1313use ext:: tt:: macro_parser;
14- use feature_gate:: { self , emit_feature_err , Features , GateIssue } ;
14+ use feature_gate:: Features ;
1515use parse:: { token, ParseSess } ;
1616use print:: pprust;
1717use symbol:: keywords;
1818use syntax_pos:: { edition:: Edition , BytePos , Span } ;
1919use tokenstream:: { self , DelimSpan } ;
20- use { ast, attr } ;
20+ use ast;
2121
2222use rustc_data_structures:: sync:: Lrc ;
2323use std:: iter:: Peekable ;
@@ -566,16 +566,16 @@ fn parse_sep_and_kleene_op_2018<I>(
566566 input : & mut Peekable < I > ,
567567 span : Span ,
568568 sess : & ParseSess ,
569- features : & Features ,
570- attrs : & [ ast:: Attribute ] ,
569+ _features : & Features ,
570+ _attrs : & [ ast:: Attribute ] ,
571571) -> ( Option < token:: Token > , KleeneOp )
572572where
573573 I : Iterator < Item = tokenstream:: TokenTree > ,
574574{
575575 // We basically look at two token trees here, denoted as #1 and #2 below
576576 let span = match parse_kleene_op ( input, span) {
577577 // #1 is a `?` (needs feature gate)
578- Ok ( Ok ( ( op, op1_span ) ) ) if op == KleeneOp :: ZeroOrOne => {
578+ Ok ( Ok ( ( op, _op1_span ) ) ) if op == KleeneOp :: ZeroOrOne => {
579579 return ( None , op) ;
580580 }
581581
@@ -585,7 +585,7 @@ where
585585 // #1 is a separator followed by #2, a KleeneOp
586586 Ok ( Err ( ( tok, span) ) ) => match parse_kleene_op ( input, span) {
587587 // #2 is the `?` Kleene op, which does not take a separator (error)
588- Ok ( Ok ( ( op, op2_span ) ) ) if op == KleeneOp :: ZeroOrOne => {
588+ Ok ( Ok ( ( op, _op2_span ) ) ) if op == KleeneOp :: ZeroOrOne => {
589589 // Error!
590590 sess. span_diagnostic . span_err (
591591 span,
0 commit comments