File tree 2 files changed +104
-14
lines changed
compiler/rustc_parse/src/parser
2 files changed +104
-14
lines changed Original file line number Diff line number Diff line change @@ -1537,14 +1537,16 @@ impl<'a> Parser<'a> {
1537
1537
1538
1538
// we don't need N spans, but we want at least one, so print all of prev_token
1539
1539
dbg_fmt. field ( "prev_token" , & parser. prev_token ) ;
1540
- // make it easier to peek farther ahead by taking TokenKinds only until EOF
1541
- let tokens = ( 0 ..* lookahead)
1542
- . map ( |i| parser. look_ahead ( i, |tok| tok. kind . clone ( ) ) )
1543
- . scan ( parser. prev_token == TokenKind :: Eof , |eof, tok| {
1544
- let current = eof. then_some ( tok. clone ( ) ) ; // include a trailing EOF token
1545
- * eof |= & tok == & TokenKind :: Eof ;
1546
- current
1547
- } ) ;
1540
+ let mut tokens = vec ! [ ] ;
1541
+ for i in 0 ..* lookahead {
1542
+ let tok = parser. look_ahead ( i, |tok| tok. kind . clone ( ) ) ;
1543
+ let is_eof = tok == TokenKind :: Eof ;
1544
+ tokens. push ( tok) ;
1545
+ if is_eof {
1546
+ // Don't look ahead past EOF.
1547
+ break ;
1548
+ }
1549
+ }
1548
1550
dbg_fmt. field_with ( "tokens" , |field| field. debug_list ( ) . entries ( tokens) . finish ( ) ) ;
1549
1551
dbg_fmt. field ( "approx_token_stream_pos" , & parser. num_bump_calls ) ;
1550
1552
Original file line number Diff line number Diff line change @@ -1541,11 +1541,36 @@ fn debug_lookahead() {
1541
1541
ctxt: #0,
1542
1542
},
1543
1543
},
1544
- tokens: [],
1544
+ tokens: [
1545
+ Ident(
1546
+ \" fn\" ,
1547
+ No,
1548
+ ),
1549
+ Ident(
1550
+ \" f\" ,
1551
+ No,
1552
+ ),
1553
+ OpenDelim(
1554
+ Parenthesis,
1555
+ ),
1556
+ Ident(
1557
+ \" x\" ,
1558
+ No,
1559
+ ),
1560
+ Colon,
1561
+ Ident(
1562
+ \" u32\" ,
1563
+ No,
1564
+ ),
1565
+ CloseDelim(
1566
+ Parenthesis,
1567
+ ),
1568
+ ],
1545
1569
approx_token_stream_pos: 1,
1546
1570
..
1547
1571
}"
1548
1572
) ;
1573
+ // There are 13 tokens. We request 15, get 14; the last one is `Eof`.
1549
1574
assert_eq ! (
1550
1575
& format!( "{:#?}" , p. debug_lookahead( 15 ) ) ,
1551
1576
"Parser {
@@ -1561,7 +1586,51 @@ fn debug_lookahead() {
1561
1586
ctxt: #0,
1562
1587
},
1563
1588
},
1564
- tokens: [],
1589
+ tokens: [
1590
+ Ident(
1591
+ \" fn\" ,
1592
+ No,
1593
+ ),
1594
+ Ident(
1595
+ \" f\" ,
1596
+ No,
1597
+ ),
1598
+ OpenDelim(
1599
+ Parenthesis,
1600
+ ),
1601
+ Ident(
1602
+ \" x\" ,
1603
+ No,
1604
+ ),
1605
+ Colon,
1606
+ Ident(
1607
+ \" u32\" ,
1608
+ No,
1609
+ ),
1610
+ CloseDelim(
1611
+ Parenthesis,
1612
+ ),
1613
+ OpenDelim(
1614
+ Brace,
1615
+ ),
1616
+ Ident(
1617
+ \" x\" ,
1618
+ No,
1619
+ ),
1620
+ CloseDelim(
1621
+ Brace,
1622
+ ),
1623
+ Ident(
1624
+ \" struct\" ,
1625
+ No,
1626
+ ),
1627
+ Ident(
1628
+ \" S\" ,
1629
+ No,
1630
+ ),
1631
+ Semi,
1632
+ Eof,
1633
+ ],
1565
1634
approx_token_stream_pos: 1,
1566
1635
..
1567
1636
}"
@@ -1588,7 +1657,12 @@ fn debug_lookahead() {
1588
1657
ctxt: #0,
1589
1658
},
1590
1659
},
1591
- tokens: [],
1660
+ tokens: [
1661
+ Ident(
1662
+ \" x\" ,
1663
+ No,
1664
+ ),
1665
+ ],
1592
1666
approx_token_stream_pos: 9,
1593
1667
..
1594
1668
}"
@@ -1610,7 +1684,23 @@ fn debug_lookahead() {
1610
1684
ctxt: #0,
1611
1685
},
1612
1686
},
1613
- tokens: [],
1687
+ tokens: [
1688
+ Ident(
1689
+ \" x\" ,
1690
+ No,
1691
+ ),
1692
+ CloseDelim(
1693
+ Brace,
1694
+ ),
1695
+ Ident(
1696
+ \" struct\" ,
1697
+ No,
1698
+ ),
1699
+ Ident(
1700
+ \" S\" ,
1701
+ No,
1702
+ ),
1703
+ ],
1614
1704
approx_token_stream_pos: 9,
1615
1705
..
1616
1706
}"
@@ -1637,8 +1727,6 @@ fn debug_lookahead() {
1637
1727
},
1638
1728
tokens: [
1639
1729
Eof,
1640
- Eof,
1641
- Eof,
1642
1730
],
1643
1731
approx_token_stream_pos: 15,
1644
1732
..
You can’t perform that action at this time.
0 commit comments