Remove the bogus special case from Parser::look_ahead. · rust-lang/rust@ebe1305 (original) (raw)
`@@ -1424,12 +1424,15 @@ fn look_ahead() {
`
1424
1424
`look!(p, 1, token::Colon);
`
1425
1425
`look!(p, 2, token::Ident(sym::u32, raw_no));
`
1426
1426
`look!(p, 3, token::CloseDelim(Delimiter::Parenthesis));
`
1427
``
`-
// FIXME(nnethercote) If we lookahead any distance past a close delim
`
1428
``
`-
// we currently return that close delim.
`
1429
``
`-
look!(p, 4, token::CloseDelim(Delimiter::Parenthesis));
`
1430
``
`-
look!(p, 5, token::CloseDelim(Delimiter::Parenthesis));
`
1431
``
`-
look!(p, 6, token::CloseDelim(Delimiter::Parenthesis));
`
1432
``
`-
look!(p, 100, token::CloseDelim(Delimiter::Parenthesis));
`
``
1427
`+
look!(p, 4, token::OpenDelim(Delimiter::Brace));
`
``
1428
`+
look!(p, 5, token::Ident(sym_x, raw_no));
`
``
1429
`+
look!(p, 6, token::CloseDelim(Delimiter::Brace));
`
``
1430
`+
look!(p, 7, token::Ident(kw::Struct, raw_no));
`
``
1431
`+
look!(p, 8, token::Ident(sym_S, raw_no));
`
``
1432
`+
look!(p, 9, token::Semi);
`
``
1433
`+
look!(p, 10, token::Eof);
`
``
1434
`+
look!(p, 11, token::Eof);
`
``
1435
`+
look!(p, 100, token::Eof);
`
1433
1436
``
1434
1437
`` // Move forward to the ;.
``
1435
1438
`for _ in 0..9 {
`
`@@ -1454,12 +1457,13 @@ fn look_ahead() {
`
1454
1457
`});
`
1455
1458
`}
`
1456
1459
``
1457
``
`-
/// FIXME(nnethercote) Currently there is some buggy behaviour when using
`
1458
``
`` -
/// look_ahead not within the outermost token stream, as this test shows.
``
``
1460
`` +
/// There used to be some buggy behaviour when using look_ahead not within
``
``
1461
`+
/// the outermost token stream, which this test covers.
`
1459
1462
`#[test]
`
1460
1463
`fn look_ahead_non_outermost_stream() {
`
1461
1464
`create_default_session_globals_then(|| {
`
1462
1465
`let sym_f = Symbol::intern("f");
`
``
1466
`+
let sym_x = Symbol::intern("x");
`
1463
1467
`#[allow(non_snake_case)]
`
1464
1468
`let sym_S = Symbol::intern("S");
`
1465
1469
`let raw_no = IdentIsRaw::No;
`
`@@ -1475,20 +1479,21 @@ fn look_ahead_non_outermost_stream() {
`
1475
1479
`look!(p, 0, token::Ident(kw::Fn, raw_no));
`
1476
1480
`look!(p, 1, token::Ident(sym_f, raw_no));
`
1477
1481
`look!(p, 2, token::OpenDelim(Delimiter::Parenthesis));
`
1478
``
`` -
// FIXME(nnethercote) The current code incorrectly skips the x: u32)
``
1479
``
`-
// to the next token tree.
`
1480
``
`-
look!(p, 3, token::OpenDelim(Delimiter::Brace));
`
1481
``
`` -
// FIXME(nnethercote) The current code incorrectly skips the x }
``
1482
``
`-
// to the next token tree.
`
1483
``
`-
look!(p, 4, token::Ident(kw::Struct, raw_no));
`
1484
``
`-
look!(p, 5, token::Ident(sym_S, raw_no));
`
1485
``
`-
look!(p, 6, token::Semi);
`
1486
``
`-
// FIXME(nnethercote) If we lookahead any distance past a close delim
`
1487
``
`-
// we currently return that close delim.
`
1488
``
`-
look!(p, 7, token::CloseDelim(Delimiter::Brace));
`
1489
``
`-
look!(p, 8, token::CloseDelim(Delimiter::Brace));
`
``
1482
`+
look!(p, 3, token::Ident(sym_x, raw_no));
`
``
1483
`+
look!(p, 4, token::Colon);
`
``
1484
`+
look!(p, 5, token::Ident(sym::u32, raw_no));
`
``
1485
`+
look!(p, 6, token::CloseDelim(Delimiter::Parenthesis));
`
``
1486
`+
look!(p, 7, token::OpenDelim(Delimiter::Brace));
`
``
1487
`+
look!(p, 8, token::Ident(sym_x, raw_no));
`
1490
1488
`look!(p, 9, token::CloseDelim(Delimiter::Brace));
`
1491
``
`-
look!(p, 100, token::CloseDelim(Delimiter::Brace));
`
``
1489
`+
look!(p, 10, token::Ident(kw::Struct, raw_no));
`
``
1490
`+
look!(p, 11, token::Ident(sym_S, raw_no));
`
``
1491
`+
look!(p, 12, token::Semi);
`
``
1492
`+
look!(p, 13, token::CloseDelim(Delimiter::Brace));
`
``
1493
`` +
// Any lookahead past the end of the token stream returns Eof.
``
``
1494
`+
look!(p, 14, token::Eof);
`
``
1495
`+
look!(p, 15, token::Eof);
`
``
1496
`+
look!(p, 100, token::Eof);
`
1492
1497
`});
`
1493
1498
`}
`
1494
1499
``