Auto merge of #127241 - cjgillot:def-collector-span, r= · rust-lang/rust@04122fb (original) (raw)

`@@ -367,7 +367,7 @@ where

`

367

367

`}

`

368

368

``

369

369

`` // No noop_ prefix because there isn't a corresponding method in MutVisitor.

``

370

``

`-

fn visit_attrs<T: MutVisitor>(attrs: &mut AttrVec, vis: &mut T) {

`

``

370

`+

pub fn visit_attrs<T: MutVisitor>(attrs: &mut AttrVec, vis: &mut T) {

`

371

371

`for attr in attrs.iter_mut() {

`

372

372

` vis.visit_attribute(attr);

`

373

373

`}

`

`@@ -390,7 +390,7 @@ fn visit_bounds<T: MutVisitor>(bounds: &mut GenericBounds, vis: &mut T) {

`

390

390

`}

`

391

391

``

392

392

`` // No noop_ prefix because there isn't a corresponding method in MutVisitor.

``

393

``

`-

fn visit_fn_sig<T: MutVisitor>(FnSig { header, decl, span }: &mut FnSig, vis: &mut T) {

`

``

393

`+

pub fn visit_fn_sig<T: MutVisitor>(FnSig { header, decl, span }: &mut FnSig, vis: &mut T) {

`

394

394

` vis.visit_fn_header(header);

`

395

395

` vis.visit_fn_decl(decl);

`

396

396

` vis.visit_span(span);

`

`@@ -637,7 +637,7 @@ fn noop_visit_local<T: MutVisitor>(local: &mut P, vis: &mut T) {

`

637

637

` vis.visit_span(span);

`

638

638

`}

`

639

639

``

640

``

`-

fn noop_visit_attribute<T: MutVisitor>(attr: &mut Attribute, vis: &mut T) {

`

``

640

`+

pub fn noop_visit_attribute<T: MutVisitor>(attr: &mut Attribute, vis: &mut T) {

`

641

641

`let Attribute { kind, id: _, style: _, span } = attr;

`

642

642

`match kind {

`

643

643

`AttrKind::Normal(normal) => {

`

`@@ -836,7 +836,7 @@ fn visit_nonterminal<T: MutVisitor>(nt: &mut token::Nonterminal, vis: &mut T) {

`

836

836

`}

`

837

837

``

838

838

`` // No noop_ prefix because there isn't a corresponding method in MutVisitor.

``

839

``

`-

fn visit_defaultness<T: MutVisitor>(defaultness: &mut Defaultness, vis: &mut T) {

`

``

839

`+

pub fn visit_defaultness<T: MutVisitor>(defaultness: &mut Defaultness, vis: &mut T) {

`

840

840

`match defaultness {

`

841

841

`Defaultness::Default(span) => vis.visit_span(span),

`

842

842

`Defaultness::Final => {}

`

`@@ -871,7 +871,8 @@ fn visit_constness<T: MutVisitor>(constness: &mut Const, vis: &mut T) {

`

871

871

`fn noop_visit_closure_binder<T: MutVisitor>(binder: &mut ClosureBinder, vis: &mut T) {

`

872

872

`match binder {

`

873

873

`ClosureBinder::NotPresent => {}

`

874

``

`-

ClosureBinder::For { span: _, generic_params } => {

`

``

874

`+

ClosureBinder::For { span, generic_params } => {

`

``

875

`+

vis.visit_span(span);

`

875

876

` generic_params.flat_map_in_place(|param| vis.flat_map_generic_param(param));

`

876

877

`}

`

877

878

`}

`

`@@ -904,7 +905,10 @@ fn noop_visit_fn_ret_ty<T: MutVisitor>(fn_ret_ty: &mut FnRetTy, vis: &mut T) {

`

904

905

``

905

906

`fn noop_visit_param_bound<T: MutVisitor>(pb: &mut GenericBound, vis: &mut T) {

`

906

907

`match pb {

`

907

``

`-

GenericBound::Trait(ty, _modifier) => vis.visit_poly_trait_ref(ty),

`

``

908

`+

GenericBound::Trait(ty, modifier) => {

`

``

909

`+

vis.visit_poly_trait_ref(ty);

`

``

910

`+

visit_trait_bound_modifier(modifier, vis);

`

``

911

`+

}

`

908

912

`GenericBound::Outlives(lifetime) => noop_visit_lifetime(lifetime, vis),

`

909

913

`GenericBound::Use(args, span) => {

`

910

914

`for arg in args {

`

`@@ -915,6 +919,22 @@ fn noop_visit_param_bound<T: MutVisitor>(pb: &mut GenericBound, vis: &mut T) {

`

915

919

`}

`

916

920

`}

`

917

921

``

``

922

`+

fn visit_trait_bound_modifier<T: MutVisitor>(tbm: &mut TraitBoundModifiers, vis: &mut T) {

`

``

923

`+

let TraitBoundModifiers { constness, asyncness, polarity } = tbm;

`

``

924

`+

match constness {

`

``

925

`+

BoundConstness::Never => {}

`

``

926

`+

BoundConstness::Always(span) | BoundConstness::Maybe(span) => vis.visit_span(span),

`

``

927

`+

}

`

``

928

`+

match asyncness {

`

``

929

`+

BoundAsyncness::Normal => {}

`

``

930

`+

BoundAsyncness::Async(span) => vis.visit_span(span),

`

``

931

`+

}

`

``

932

`+

match polarity {

`

``

933

`+

BoundPolarity::Positive => {}

`

``

934

`+

BoundPolarity::Negative(span) | BoundPolarity::Maybe(span) => vis.visit_span(span),

`

``

935

`+

}

`

``

936

`+

}

`

``

937

+

918

938

`fn noop_visit_precise_capturing_arg<T: MutVisitor>(arg: &mut PreciseCapturingArg, vis: &mut T) {

`

919

939

`match arg {

`

920

940

`PreciseCapturingArg::Lifetime(lt) => {

`

`@@ -941,8 +961,9 @@ pub fn noop_flat_map_generic_param<T: MutVisitor>(

`

941

961

`GenericParamKind::Type { default } => {

`

942

962

`visit_opt(default, |default| vis.visit_ty(default));

`

943

963

`}

`

944

``

`-

GenericParamKind::Const { ty, kw_span: _, default } => {

`

``

964

`+

GenericParamKind::Const { ty, span, default } => {

`

945

965

` vis.visit_ty(ty);

`

``

966

`+

vis.visit_span(span);

`

946

967

`visit_opt(default, |default| vis.visit_anon_const(default));

`

947

968

`}

`

948

969

`}

`

`@@ -1368,21 +1389,24 @@ pub fn noop_visit_pat<T: MutVisitor>(pat: &mut P, vis: &mut T) {

`

1368

1389

` vis.visit_span(span);

`

1369

1390

`}

`

1370

1391

``

1371

``

`-

fn noop_visit_anon_const<T: MutVisitor>(AnonConst { id, value }: &mut AnonConst, vis: &mut T) {

`

``

1392

`+

pub fn noop_visit_anon_const<T: MutVisitor>(AnonConst { id, value }: &mut AnonConst, vis: &mut T) {

`

1372

1393

` vis.visit_id(id);

`

1373

1394

` vis.visit_expr(value);

`

1374

1395

`}

`

1375

1396

``

1376

1397

`fn noop_visit_inline_asm<T: MutVisitor>(asm: &mut InlineAsm, vis: &mut T) {

`

1377

``

`-

// FIXME: Visit spans inside all this currently ignored stuff.

`

1378

``

`-

let InlineAsm {

`

1379

``

`-

template: _,

`

1380

``

`-

template_strs: _,

`

1381

``

`-

operands,

`

1382

``

`-

clobber_abis: _,

`

1383

``

`-

options: _,

`

1384

``

`-

line_spans: _,

`

1385

``

`-

} = asm;

`

``

1398

`+

let InlineAsm { template, template_strs, operands, clobber_abis, options: _, line_spans } = asm;

`

``

1399

`+

for piece in template.iter_mut() {

`

``

1400

`+

match piece {

`

``

1401

`+

InlineAsmTemplatePiece::String(_str) => {}

`

``

1402

`+

InlineAsmTemplatePiece::Placeholder { operand_idx: _, modifier: _, span } => {

`

``

1403

`+

vis.visit_span(span)

`

``

1404

`+

}

`

``

1405

`+

}

`

``

1406

`+

}

`

``

1407

`+

for (_s1, _s2, span) in template_strs.iter_mut() {

`

``

1408

`+

vis.visit_span(span)

`

``

1409

`+

}

`

1386

1410

`for (op, span) in operands {

`

1387

1411

`match op {

`

1388

1412

`InlineAsmOperand::In { expr, reg: _ }

`

`@@ -1401,6 +1425,12 @@ fn noop_visit_inline_asm<T: MutVisitor>(asm: &mut InlineAsm, vis: &mut T) {

`

1401

1425

`}

`

1402

1426

` vis.visit_span(span);

`

1403

1427

`}

`

``

1428

`+

for (_s1, span) in clobber_abis.iter_mut() {

`

``

1429

`+

vis.visit_span(span)

`

``

1430

`+

}

`

``

1431

`+

for span in line_spans.iter_mut() {

`

``

1432

`+

vis.visit_span(span)

`

``

1433

`+

}

`

1404

1434

`}

`

1405

1435

``

1406

1436

`fn noop_visit_inline_asm_sym<T: MutVisitor>(

`

`@@ -1413,8 +1443,7 @@ fn noop_visit_inline_asm_sym<T: MutVisitor>(

`

1413

1443

`}

`

1414

1444

``

1415

1445

`fn noop_visit_format_args<T: MutVisitor>(fmt: &mut FormatArgs, vis: &mut T) {

`

1416

``

`-

// FIXME: visit the template exhaustively.

`

1417

``

`-

let FormatArgs { span, template: _, arguments } = fmt;

`

``

1446

`+

let FormatArgs { span, template, arguments } = fmt;

`

1418

1447

`for FormatArgument { kind, expr } in arguments.all_args_mut() {

`

1419

1448

`match kind {

`

1420

1449

`FormatArgumentKind::Named(ident) | FormatArgumentKind::Captured(ident) => {

`

`@@ -1424,9 +1453,48 @@ fn noop_visit_format_args<T: MutVisitor>(fmt: &mut FormatArgs, vis: &mut T) {

`

1424

1453

`}

`

1425

1454

` vis.visit_expr(expr);

`

1426

1455

`}

`

``

1456

`+

for piece in template.iter_mut() {

`

``

1457

`+

match piece {

`

``

1458

`+

FormatArgsPiece::Literal(_symbol) => {}

`

``

1459

`+

FormatArgsPiece::Placeholder(placeholder) => visit_format_placeholder(placeholder, vis),

`

``

1460

`+

}

`

``

1461

`+

}

`

1427

1462

` vis.visit_span(span);

`

1428

1463

`}

`

1429

1464

``

``

1465

`+

fn visit_format_placeholder<T: MutVisitor>(

`

``

1466

`+

FormatPlaceholder { argument, span, format_options, format_trait: _ }: &mut FormatPlaceholder,

`

``

1467

`+

vis: &mut T,

`

``

1468

`+

) {

`

``

1469

`+

visit_opt(span, |span| vis.visit_span(span));

`

``

1470

`+

let FormatArgPosition { span, index: _, kind: _ } = argument;

`

``

1471

`+

visit_opt(span, |span| vis.visit_span(span));

`

``

1472

`+

let FormatOptions {

`

``

1473

`+

width,

`

``

1474

`+

precision,

`

``

1475

`+

alignment: _,

`

``

1476

`+

fill: _,

`

``

1477

`+

sign: _,

`

``

1478

`+

alternate: _,

`

``

1479

`+

zero_pad: _,

`

``

1480

`+

debug_hex: _,

`

``

1481

`+

} = format_options;

`

``

1482

`+

match width {

`

``

1483

`+

None => {}

`

``

1484

`+

Some(FormatCount::Literal(_)) => {}

`

``

1485

`+

Some(FormatCount::Argument(FormatArgPosition { span, index: _, kind: _ })) => {

`

``

1486

`+

visit_opt(span, |span| vis.visit_span(span))

`

``

1487

`+

}

`

``

1488

`+

}

`

``

1489

`+

match precision {

`

``

1490

`+

None => {}

`

``

1491

`+

Some(FormatCount::Literal(_)) => {}

`

``

1492

`+

Some(FormatCount::Argument(FormatArgPosition { span, index: _, kind: _ })) => {

`

``

1493

`+

visit_opt(span, |span| vis.visit_span(span))

`

``

1494

`+

}

`

``

1495

`+

}

`

``

1496

`+

}

`

``

1497

+

1430

1498

`pub fn noop_visit_expr<T: MutVisitor>(

`

1431

1499

`Expr { kind, id, span, attrs, tokens }: &mut Expr,

`

1432

1500

`vis: &mut T,

`

`@@ -1460,7 +1528,8 @@ pub fn noop_visit_expr<T: MutVisitor>(

`

1460

1528

`visit_thin_exprs(call_args, vis);

`

1461

1529

` vis.visit_span(span);

`

1462

1530

`}

`

1463

``

`-

ExprKind::Binary(_binop, lhs, rhs) => {

`

``

1531

`+

ExprKind::Binary(Spanned { node: _binop, span }, lhs, rhs) => {

`

``

1532

`+

vis.visit_span(span);

`

1464

1533

` vis.visit_expr(lhs);

`

1465

1534

` vis.visit_expr(rhs);

`

1466

1535

`}

`

`@@ -1528,9 +1597,10 @@ pub fn noop_visit_expr<T: MutVisitor>(

`

1528

1597

`visit_opt(label, |label| vis.visit_label(label));

`

1529

1598

` vis.visit_block(blk);

`

1530

1599

`}

`

1531

``

`-

ExprKind::Gen(_capture_by, body, _kind, decl_span) => {

`

``

1600

`+

ExprKind::Gen(capture_clause, body, _kind, decl_span) => {

`

1532

1601

` vis.visit_block(body);

`

1533

1602

` vis.visit_span(decl_span);

`

``

1603

`+

vis.visit_capture_by(capture_clause);

`

1534

1604

`}

`

1535

1605

`ExprKind::Await(expr, await_kw_span) => {

`

1536

1606

` vis.visit_expr(expr);

`

`@@ -1541,7 +1611,8 @@ pub fn noop_visit_expr<T: MutVisitor>(

`

1541

1611

` vis.visit_expr(er);

`

1542

1612

` vis.visit_span(span);

`

1543

1613

`}

`

1544

``

`-

ExprKind::AssignOp(_op, el, er) => {

`

``

1614

`+

ExprKind::AssignOp(Spanned { node: _binop, span }, el, er) => {

`

``

1615

`+

vis.visit_span(span);

`

1545

1616

` vis.visit_expr(el);

`

1546

1617

` vis.visit_expr(er);

`

1547

1618

`}

`

`@@ -1593,7 +1664,7 @@ pub fn noop_visit_expr<T: MutVisitor>(

`

1593

1664

` fields.flat_map_in_place(|field| vis.flat_map_expr_field(field));

`

1594

1665

`match rest {

`

1595

1666

`StructRest::Base(expr) => vis.visit_expr(expr),

`

1596

``

`-

StructRest::Rest(_span) => {}

`

``

1667

`+

StructRest::Rest(span) => vis.visit_span(span),

`

1597

1668

`StructRest::None => {}

`

1598

1669

`}

`

1599

1670

`}

`

`@@ -1626,6 +1697,7 @@ pub fn noop_flat_map_stmt<T: MutVisitor>(

`

1626

1697

`vis: &mut T,

`

1627

1698

`) -> SmallVec<[Stmt; 1]> {

`

1628

1699

` vis.visit_id(&mut id);

`

``

1700

`+

vis.visit_span(&mut span);

`

1629

1701

`let stmts: SmallVec<_> = noop_flat_map_stmt_kind(kind, vis)

`

1630

1702

`.into_iter()

`

1631

1703

`.map(|kind| Stmt { id, kind, span })

`

`@@ -1636,7 +1708,6 @@ pub fn noop_flat_map_stmt<T: MutVisitor>(

`

1636

1708

` the visitor should implement custom statement visiting"

`

1637

1709

`);

`

1638

1710

`}

`

1639

``

`-

vis.visit_span(&mut span);

`

1640

1711

` stmts

`

1641

1712

`}

`

1642

1713

``