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

``