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
``