Auto merge of #145882 - m-ou-se:format-args-extend-1-arg, r=petrochenkov
Extended temporary argument to format_args!() in all cases Fixes https://github.com/rust-lang/rust/issues/145880 by removing the special case.
This commit is contained in:
commit
40ace17fc3
11 changed files with 140 additions and 147 deletions
|
|
@ -487,26 +487,6 @@ fn expand_format_args<'hir>(
|
|||
// Generate:
|
||||
// []
|
||||
(vec![], ctx.arena.alloc(ctx.expr(macsp, hir::ExprKind::Array(&[]))))
|
||||
} else if argmap.len() == 1 && arguments.len() == 1 {
|
||||
// Only one argument, so we don't need to make the `args` tuple.
|
||||
//
|
||||
// Generate:
|
||||
// super let args = [<core::fmt::Argument>::new_display(&arg)];
|
||||
let args = ctx.arena.alloc_from_iter(argmap.iter().map(
|
||||
|(&(arg_index, ty), &placeholder_span)| {
|
||||
let arg = &arguments[arg_index];
|
||||
let placeholder_span =
|
||||
placeholder_span.unwrap_or(arg.expr.span).with_ctxt(macsp.ctxt());
|
||||
let arg = ctx.lower_expr(&arg.expr);
|
||||
let ref_arg = ctx.arena.alloc(ctx.expr_ref(arg.span.with_ctxt(macsp.ctxt()), arg));
|
||||
make_argument(ctx, placeholder_span, ref_arg, ty)
|
||||
},
|
||||
));
|
||||
let args = ctx.arena.alloc(ctx.expr(macsp, hir::ExprKind::Array(args)));
|
||||
let args_ident = Ident::new(sym::args, macsp);
|
||||
let (args_pat, args_hir_id) = ctx.pat_ident(macsp, args_ident);
|
||||
let let_statement = ctx.stmt_super_let_pat(macsp, args_pat, Some(args));
|
||||
(vec![let_statement], ctx.arena.alloc(ctx.expr_ident_mut(macsp, args_ident, args_hir_id)))
|
||||
} else {
|
||||
// Generate:
|
||||
// super let args = (&arg0, &arg1, &…);
|
||||
|
|
|
|||
|
|
@ -12,6 +12,12 @@ fn test_lifetime() {
|
|||
let a = format_args!("hello {a} {a:?}");
|
||||
assert_eq!(a.to_string(), "hello hello hello hello hello hello hello");
|
||||
|
||||
// Check that temporaries as arguments are extended.
|
||||
let b = format_args!("{}", String::new());
|
||||
let c = format_args!("{}{}", String::new(), String::new());
|
||||
assert_eq!(b.to_string(), "");
|
||||
assert_eq!(c.to_string(), "");
|
||||
|
||||
// Without arguments, it should also work in consts.
|
||||
const A: std::fmt::Arguments<'static> = format_args!("hello");
|
||||
assert_eq!(A.to_string(), "hello");
|
||||
|
|
|
|||
|
|
@ -10,34 +10,42 @@ if let StmtKind::Let(local) = stmt.kind
|
|||
&& paths::STD_IO_STDIO__PRINT.matches_path(cx, func) // Add the path to `clippy_utils::paths` if needed
|
||||
&& args.len() == 1
|
||||
&& let ExprKind::Block(block1, None) = args[0].kind
|
||||
&& block1.stmts.len() == 1
|
||||
&& block1.stmts.len() == 2
|
||||
&& let StmtKind::Let(local1) = block1.stmts[0].kind
|
||||
&& let Some(init1) = local1.init
|
||||
&& let ExprKind::Array(elements) = init1.kind
|
||||
&& let ExprKind::Tup(elements) = init1.kind
|
||||
&& elements.len() == 1
|
||||
&& let ExprKind::Call(func1, args1) = elements[0].kind
|
||||
&& paths::CORE_FMT_RT_ARGUMENT_NEW_DISPLAY.matches_path(cx, func1) // Add the path to `clippy_utils::paths` if needed
|
||||
&& args1.len() == 1
|
||||
&& let ExprKind::AddrOf(BorrowKind::Ref, Mutability::Not, inner) = args1[0].kind
|
||||
&& let ExprKind::AddrOf(BorrowKind::Ref, Mutability::Not, inner) = elements[0].kind
|
||||
&& let PatKind::Binding(BindingMode::NONE, _, name, None) = local1.pat.kind
|
||||
&& name.as_str() == "args"
|
||||
&& let StmtKind::Let(local2) = block1.stmts[1].kind
|
||||
&& let Some(init2) = local2.init
|
||||
&& let ExprKind::Array(elements1) = init2.kind
|
||||
&& elements1.len() == 1
|
||||
&& let ExprKind::Call(func1, args1) = elements1[0].kind
|
||||
&& paths::CORE_FMT_RT_ARGUMENT_NEW_DISPLAY.matches_path(cx, func1) // Add the path to `clippy_utils::paths` if needed
|
||||
&& args1.len() == 1
|
||||
&& let ExprKind::Field(object, field_name) = args1[0].kind
|
||||
&& field_name.as_str() == "0"
|
||||
&& let PatKind::Binding(BindingMode::NONE, _, name1, None) = local2.pat.kind
|
||||
&& name1.as_str() == "args"
|
||||
&& let Some(trailing_expr) = block1.expr
|
||||
&& let ExprKind::Call(func2, args2) = trailing_expr.kind
|
||||
&& paths::CORE_FMT_RT_NEW_V1.matches_path(cx, func2) // Add the path to `clippy_utils::paths` if needed
|
||||
&& args2.len() == 2
|
||||
&& let ExprKind::AddrOf(BorrowKind::Ref, Mutability::Not, inner1) = args2[0].kind
|
||||
&& let ExprKind::Array(elements1) = inner1.kind
|
||||
&& elements1.len() == 2
|
||||
&& let ExprKind::Lit(ref lit) = elements1[0].kind
|
||||
&& let ExprKind::Array(elements2) = inner1.kind
|
||||
&& elements2.len() == 2
|
||||
&& let ExprKind::Lit(ref lit) = elements2[0].kind
|
||||
&& let LitKind::Str(s, _) = lit.node
|
||||
&& s.as_str() == ""
|
||||
&& let ExprKind::Lit(ref lit1) = elements1[1].kind
|
||||
&& let ExprKind::Lit(ref lit1) = elements2[1].kind
|
||||
&& let LitKind::Str(s1, _) = lit1.node
|
||||
&& s1.as_str() == "\n"
|
||||
&& let ExprKind::AddrOf(BorrowKind::Ref, Mutability::Not, inner2) = args2[1].kind
|
||||
&& block.expr.is_none()
|
||||
&& let PatKind::Binding(BindingMode::NONE, _, name1, None) = local.pat.kind
|
||||
&& name1.as_str() == "print_text"
|
||||
&& let PatKind::Binding(BindingMode::NONE, _, name2, None) = local.pat.kind
|
||||
&& name2.as_str() == "print_text"
|
||||
{
|
||||
// report your lint here
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,28 +20,36 @@ if let Some(higher::ForLoop { pat: pat, arg: arg, body: body, .. }) = higher::Fo
|
|||
&& paths::STD_IO_STDIO__PRINT.matches_path(cx, func) // Add the path to `clippy_utils::paths` if needed
|
||||
&& args.len() == 1
|
||||
&& let ExprKind::Block(block2, None) = args[0].kind
|
||||
&& block2.stmts.len() == 1
|
||||
&& block2.stmts.len() == 2
|
||||
&& let StmtKind::Let(local) = block2.stmts[0].kind
|
||||
&& let Some(init) = local.init
|
||||
&& let ExprKind::Array(elements) = init.kind
|
||||
&& let ExprKind::Tup(elements) = init.kind
|
||||
&& elements.len() == 1
|
||||
&& let ExprKind::Call(func1, args1) = elements[0].kind
|
||||
&& paths::CORE_FMT_RT_ARGUMENT_NEW_DISPLAY.matches_path(cx, func1) // Add the path to `clippy_utils::paths` if needed
|
||||
&& args1.len() == 1
|
||||
&& let ExprKind::AddrOf(BorrowKind::Ref, Mutability::Not, inner) = args1[0].kind
|
||||
&& let ExprKind::AddrOf(BorrowKind::Ref, Mutability::Not, inner) = elements[0].kind
|
||||
&& let PatKind::Binding(BindingMode::NONE, _, name1, None) = local.pat.kind
|
||||
&& name1.as_str() == "args"
|
||||
&& let StmtKind::Let(local1) = block2.stmts[1].kind
|
||||
&& let Some(init1) = local1.init
|
||||
&& let ExprKind::Array(elements1) = init1.kind
|
||||
&& elements1.len() == 1
|
||||
&& let ExprKind::Call(func1, args1) = elements1[0].kind
|
||||
&& paths::CORE_FMT_RT_ARGUMENT_NEW_DISPLAY.matches_path(cx, func1) // Add the path to `clippy_utils::paths` if needed
|
||||
&& args1.len() == 1
|
||||
&& let ExprKind::Field(object, field_name) = args1[0].kind
|
||||
&& field_name.as_str() == "0"
|
||||
&& let PatKind::Binding(BindingMode::NONE, _, name2, None) = local1.pat.kind
|
||||
&& name2.as_str() == "args"
|
||||
&& let Some(trailing_expr) = block2.expr
|
||||
&& let ExprKind::Call(func2, args2) = trailing_expr.kind
|
||||
&& paths::CORE_FMT_RT_NEW_V1.matches_path(cx, func2) // Add the path to `clippy_utils::paths` if needed
|
||||
&& args2.len() == 2
|
||||
&& let ExprKind::AddrOf(BorrowKind::Ref, Mutability::Not, inner1) = args2[0].kind
|
||||
&& let ExprKind::Array(elements1) = inner1.kind
|
||||
&& elements1.len() == 2
|
||||
&& let ExprKind::Lit(ref lit2) = elements1[0].kind
|
||||
&& let ExprKind::Array(elements2) = inner1.kind
|
||||
&& elements2.len() == 2
|
||||
&& let ExprKind::Lit(ref lit2) = elements2[0].kind
|
||||
&& let LitKind::Str(s, _) = lit2.node
|
||||
&& s.as_str() == ""
|
||||
&& let ExprKind::Lit(ref lit3) = elements1[1].kind
|
||||
&& let ExprKind::Lit(ref lit3) = elements2[1].kind
|
||||
&& let LitKind::Str(s1, _) = lit3.node
|
||||
&& s1.as_str() == "\n"
|
||||
&& let ExprKind::AddrOf(BorrowKind::Ref, Mutability::Not, inner2) = args2[1].kind
|
||||
|
|
|
|||
|
|
@ -1,30 +1,22 @@
|
|||
Function name: issue_83601::main
|
||||
Raw bytes (76): 0x[01, 01, 01, 05, 09, 0e, 01, 06, 01, 00, 0a, 01, 01, 09, 00, 0c, 01, 00, 0f, 00, 15, 01, 01, 05, 00, 0f, 05, 01, 09, 00, 0c, 05, 00, 0f, 00, 15, 05, 01, 05, 00, 0f, 02, 01, 05, 00, 0d, 02, 00, 0e, 00, 14, 02, 01, 05, 00, 0d, 02, 00, 0e, 00, 14, 02, 01, 05, 00, 0d, 02, 00, 0e, 00, 14, 02, 01, 01, 00, 02]
|
||||
Raw bytes (74): 0x[01, 01, 00, 0e, 01, 06, 01, 00, 0a, 01, 01, 09, 00, 0c, 01, 00, 0f, 00, 15, 01, 01, 05, 00, 0f, 01, 01, 09, 00, 0c, 01, 00, 0f, 00, 15, 01, 01, 05, 00, 0f, 01, 01, 05, 00, 0d, 01, 00, 0e, 00, 14, 01, 01, 05, 00, 0d, 01, 00, 0e, 00, 14, 01, 01, 05, 00, 0d, 01, 00, 0e, 00, 14, 01, 01, 01, 00, 02]
|
||||
Number of files: 1
|
||||
- file 0 => $DIR/issue-83601.rs
|
||||
Number of expressions: 1
|
||||
- expression 0 operands: lhs = Counter(1), rhs = Counter(2)
|
||||
Number of expressions: 0
|
||||
Number of file 0 mappings: 14
|
||||
- Code(Counter(0)) at (prev + 6, 1) to (start + 0, 10)
|
||||
- Code(Counter(0)) at (prev + 1, 9) to (start + 0, 12)
|
||||
- Code(Counter(0)) at (prev + 0, 15) to (start + 0, 21)
|
||||
- Code(Counter(0)) at (prev + 1, 5) to (start + 0, 15)
|
||||
- Code(Counter(1)) at (prev + 1, 9) to (start + 0, 12)
|
||||
- Code(Counter(1)) at (prev + 0, 15) to (start + 0, 21)
|
||||
- Code(Counter(1)) at (prev + 1, 5) to (start + 0, 15)
|
||||
- Code(Expression(0, Sub)) at (prev + 1, 5) to (start + 0, 13)
|
||||
= (c1 - c2)
|
||||
- Code(Expression(0, Sub)) at (prev + 0, 14) to (start + 0, 20)
|
||||
= (c1 - c2)
|
||||
- Code(Expression(0, Sub)) at (prev + 1, 5) to (start + 0, 13)
|
||||
= (c1 - c2)
|
||||
- Code(Expression(0, Sub)) at (prev + 0, 14) to (start + 0, 20)
|
||||
= (c1 - c2)
|
||||
- Code(Expression(0, Sub)) at (prev + 1, 5) to (start + 0, 13)
|
||||
= (c1 - c2)
|
||||
- Code(Expression(0, Sub)) at (prev + 0, 14) to (start + 0, 20)
|
||||
= (c1 - c2)
|
||||
- Code(Expression(0, Sub)) at (prev + 1, 1) to (start + 0, 2)
|
||||
= (c1 - c2)
|
||||
Highest counter ID seen: c1
|
||||
- Code(Counter(0)) at (prev + 1, 9) to (start + 0, 12)
|
||||
- Code(Counter(0)) at (prev + 0, 15) to (start + 0, 21)
|
||||
- Code(Counter(0)) at (prev + 1, 5) to (start + 0, 15)
|
||||
- Code(Counter(0)) at (prev + 1, 5) to (start + 0, 13)
|
||||
- Code(Counter(0)) at (prev + 0, 14) to (start + 0, 20)
|
||||
- Code(Counter(0)) at (prev + 1, 5) to (start + 0, 13)
|
||||
- Code(Counter(0)) at (prev + 0, 14) to (start + 0, 20)
|
||||
- Code(Counter(0)) at (prev + 1, 5) to (start + 0, 13)
|
||||
- Code(Counter(0)) at (prev + 0, 14) to (start + 0, 20)
|
||||
- Code(Counter(0)) at (prev + 1, 1) to (start + 0, 2)
|
||||
Highest counter ID seen: c0
|
||||
|
||||
|
|
|
|||
|
|
@ -73,20 +73,20 @@ Number of file 0 mappings: 4
|
|||
Highest counter ID seen: c0
|
||||
|
||||
Function name: issue_84561::test3
|
||||
Raw bytes (409): 0x[01, 01, 0a, 0d, 11, 0d, 15, 0d, 19, 1d, 21, 29, 2d, 25, 29, 25, 29, 25, 29, 27, 31, 29, 2d, 4d, 01, 08, 01, 00, 0b, 01, 01, 09, 00, 10, 01, 00, 13, 00, 2e, 01, 01, 09, 00, 0c, 01, 00, 0f, 00, 15, 01, 01, 05, 00, 0f, 05, 01, 09, 00, 0c, 05, 00, 0f, 00, 15, 05, 01, 05, 00, 0f, 09, 01, 05, 00, 0d, 09, 00, 0e, 00, 14, 09, 01, 05, 00, 0d, 09, 00, 0e, 00, 14, 09, 01, 05, 00, 0d, 09, 00, 0e, 00, 14, 09, 02, 05, 00, 0f, 09, 01, 05, 00, 0f, 09, 01, 05, 00, 0f, 09, 01, 09, 00, 0c, 09, 00, 0f, 00, 15, 09, 01, 05, 00, 0f, 0d, 01, 05, 00, 0f, 0d, 01, 05, 00, 0f, 00, 00, 20, 00, 30, 0d, 01, 05, 00, 0d, 0d, 00, 0e, 00, 14, 0d, 01, 05, 00, 0d, 0d, 00, 0e, 00, 14, 0d, 02, 05, 00, 0f, 00, 00, 20, 00, 24, 00, 00, 29, 00, 30, 00, 00, 33, 00, 41, 00, 00, 4b, 00, 5a, 0d, 01, 05, 00, 0f, 00, 05, 09, 00, 0d, 00, 03, 09, 00, 10, 00, 02, 0d, 00, 1b, 00, 02, 0d, 00, 1c, 0d, 04, 09, 00, 10, 0d, 00, 13, 00, 2e, 0d, 02, 05, 00, 0f, 0d, 04, 05, 00, 0f, 0d, 04, 05, 00, 0f, 0d, 04, 09, 00, 0c, 0d, 00, 0f, 00, 15, 0d, 01, 05, 00, 0f, 0d, 04, 08, 00, 0f, 11, 01, 09, 00, 13, 02, 05, 09, 00, 13, 0d, 05, 08, 00, 0f, 15, 01, 09, 00, 13, 00, 03, 0d, 00, 1d, 06, 03, 09, 00, 13, 00, 03, 0d, 00, 1d, 0d, 03, 05, 00, 0f, 0d, 01, 0c, 00, 13, 19, 01, 0d, 00, 13, 0a, 02, 0d, 00, 13, 1d, 04, 05, 00, 0f, 1d, 02, 0c, 00, 13, 21, 01, 0d, 00, 13, 0e, 02, 0d, 00, 13, 27, 03, 05, 00, 0f, 25, 01, 0c, 00, 13, 29, 01, 0d, 00, 17, 29, 04, 0d, 00, 13, 1e, 02, 0d, 00, 17, 1e, 01, 14, 00, 1b, 00, 01, 15, 00, 1b, 1e, 02, 15, 00, 1b, 2d, 04, 0d, 00, 13, 22, 03, 09, 00, 19, 31, 02, 05, 00, 0f, 31, 03, 09, 00, 22, 00, 02, 05, 00, 0f, 00, 03, 09, 00, 2c, 00, 02, 01, 00, 02]
|
||||
Raw bytes (409): 0x[01, 01, 0a, 01, 05, 01, 09, 01, 0d, 11, 15, 1d, 21, 19, 1d, 19, 1d, 19, 1d, 27, 25, 1d, 21, 4d, 01, 08, 01, 00, 0b, 01, 01, 09, 00, 10, 01, 00, 13, 00, 2e, 01, 01, 09, 00, 0c, 01, 00, 0f, 00, 15, 01, 01, 05, 00, 0f, 01, 01, 09, 00, 0c, 01, 00, 0f, 00, 15, 01, 01, 05, 00, 0f, 01, 01, 05, 00, 0d, 01, 00, 0e, 00, 14, 01, 01, 05, 00, 0d, 01, 00, 0e, 00, 14, 01, 01, 05, 00, 0d, 01, 00, 0e, 00, 14, 01, 02, 05, 00, 0f, 01, 01, 05, 00, 0f, 01, 01, 05, 00, 0f, 01, 01, 09, 00, 0c, 01, 00, 0f, 00, 15, 01, 01, 05, 00, 0f, 01, 01, 05, 00, 0f, 01, 01, 05, 00, 0f, 00, 00, 20, 00, 30, 01, 01, 05, 00, 0d, 01, 00, 0e, 00, 14, 01, 01, 05, 00, 0d, 01, 00, 0e, 00, 14, 01, 02, 05, 00, 0f, 00, 00, 20, 00, 24, 00, 00, 29, 00, 30, 00, 00, 33, 00, 41, 00, 00, 4b, 00, 5a, 01, 01, 05, 00, 0f, 00, 05, 09, 00, 0d, 00, 03, 09, 00, 10, 00, 02, 0d, 00, 1b, 00, 02, 0d, 00, 1c, 01, 04, 09, 00, 10, 01, 00, 13, 00, 2e, 01, 02, 05, 00, 0f, 01, 04, 05, 00, 0f, 01, 04, 05, 00, 0f, 01, 04, 09, 00, 0c, 01, 00, 0f, 00, 15, 01, 01, 05, 00, 0f, 01, 04, 08, 00, 0f, 05, 01, 09, 00, 13, 02, 05, 09, 00, 13, 01, 05, 08, 00, 0f, 09, 01, 09, 00, 13, 00, 03, 0d, 00, 1d, 06, 03, 09, 00, 13, 00, 03, 0d, 00, 1d, 01, 03, 05, 00, 0f, 01, 01, 0c, 00, 13, 0d, 01, 0d, 00, 13, 0a, 02, 0d, 00, 13, 11, 04, 05, 00, 0f, 11, 02, 0c, 00, 13, 15, 01, 0d, 00, 13, 0e, 02, 0d, 00, 13, 27, 03, 05, 00, 0f, 19, 01, 0c, 00, 13, 1d, 01, 0d, 00, 17, 1d, 04, 0d, 00, 13, 1e, 02, 0d, 00, 17, 1e, 01, 14, 00, 1b, 00, 01, 15, 00, 1b, 1e, 02, 15, 00, 1b, 21, 04, 0d, 00, 13, 22, 03, 09, 00, 19, 25, 02, 05, 00, 0f, 25, 03, 09, 00, 22, 00, 02, 05, 00, 0f, 00, 03, 09, 00, 2c, 00, 02, 01, 00, 02]
|
||||
Number of files: 1
|
||||
- file 0 => $DIR/issue-84561.rs
|
||||
Number of expressions: 10
|
||||
- expression 0 operands: lhs = Counter(3), rhs = Counter(4)
|
||||
- expression 1 operands: lhs = Counter(3), rhs = Counter(5)
|
||||
- expression 2 operands: lhs = Counter(3), rhs = Counter(6)
|
||||
- expression 3 operands: lhs = Counter(7), rhs = Counter(8)
|
||||
- expression 4 operands: lhs = Counter(10), rhs = Counter(11)
|
||||
- expression 5 operands: lhs = Counter(9), rhs = Counter(10)
|
||||
- expression 6 operands: lhs = Counter(9), rhs = Counter(10)
|
||||
- expression 7 operands: lhs = Counter(9), rhs = Counter(10)
|
||||
- expression 8 operands: lhs = Expression(9, Add), rhs = Counter(12)
|
||||
- expression 9 operands: lhs = Counter(10), rhs = Counter(11)
|
||||
- expression 0 operands: lhs = Counter(0), rhs = Counter(1)
|
||||
- expression 1 operands: lhs = Counter(0), rhs = Counter(2)
|
||||
- expression 2 operands: lhs = Counter(0), rhs = Counter(3)
|
||||
- expression 3 operands: lhs = Counter(4), rhs = Counter(5)
|
||||
- expression 4 operands: lhs = Counter(7), rhs = Counter(8)
|
||||
- expression 5 operands: lhs = Counter(6), rhs = Counter(7)
|
||||
- expression 6 operands: lhs = Counter(6), rhs = Counter(7)
|
||||
- expression 7 operands: lhs = Counter(6), rhs = Counter(7)
|
||||
- expression 8 operands: lhs = Expression(9, Add), rhs = Counter(9)
|
||||
- expression 9 operands: lhs = Counter(7), rhs = Counter(8)
|
||||
Number of file 0 mappings: 77
|
||||
- Code(Counter(0)) at (prev + 8, 1) to (start + 0, 11)
|
||||
- Code(Counter(0)) at (prev + 1, 9) to (start + 0, 16)
|
||||
|
|
@ -94,85 +94,85 @@ Number of file 0 mappings: 77
|
|||
- Code(Counter(0)) at (prev + 1, 9) to (start + 0, 12)
|
||||
- Code(Counter(0)) at (prev + 0, 15) to (start + 0, 21)
|
||||
- Code(Counter(0)) at (prev + 1, 5) to (start + 0, 15)
|
||||
- Code(Counter(1)) at (prev + 1, 9) to (start + 0, 12)
|
||||
- Code(Counter(1)) at (prev + 0, 15) to (start + 0, 21)
|
||||
- Code(Counter(1)) at (prev + 1, 5) to (start + 0, 15)
|
||||
- Code(Counter(2)) at (prev + 1, 5) to (start + 0, 13)
|
||||
- Code(Counter(2)) at (prev + 0, 14) to (start + 0, 20)
|
||||
- Code(Counter(2)) at (prev + 1, 5) to (start + 0, 13)
|
||||
- Code(Counter(2)) at (prev + 0, 14) to (start + 0, 20)
|
||||
- Code(Counter(2)) at (prev + 1, 5) to (start + 0, 13)
|
||||
- Code(Counter(2)) at (prev + 0, 14) to (start + 0, 20)
|
||||
- Code(Counter(2)) at (prev + 2, 5) to (start + 0, 15)
|
||||
- Code(Counter(2)) at (prev + 1, 5) to (start + 0, 15)
|
||||
- Code(Counter(2)) at (prev + 1, 5) to (start + 0, 15)
|
||||
- Code(Counter(2)) at (prev + 1, 9) to (start + 0, 12)
|
||||
- Code(Counter(2)) at (prev + 0, 15) to (start + 0, 21)
|
||||
- Code(Counter(2)) at (prev + 1, 5) to (start + 0, 15)
|
||||
- Code(Counter(3)) at (prev + 1, 5) to (start + 0, 15)
|
||||
- Code(Counter(3)) at (prev + 1, 5) to (start + 0, 15)
|
||||
- Code(Counter(0)) at (prev + 1, 9) to (start + 0, 12)
|
||||
- Code(Counter(0)) at (prev + 0, 15) to (start + 0, 21)
|
||||
- Code(Counter(0)) at (prev + 1, 5) to (start + 0, 15)
|
||||
- Code(Counter(0)) at (prev + 1, 5) to (start + 0, 13)
|
||||
- Code(Counter(0)) at (prev + 0, 14) to (start + 0, 20)
|
||||
- Code(Counter(0)) at (prev + 1, 5) to (start + 0, 13)
|
||||
- Code(Counter(0)) at (prev + 0, 14) to (start + 0, 20)
|
||||
- Code(Counter(0)) at (prev + 1, 5) to (start + 0, 13)
|
||||
- Code(Counter(0)) at (prev + 0, 14) to (start + 0, 20)
|
||||
- Code(Counter(0)) at (prev + 2, 5) to (start + 0, 15)
|
||||
- Code(Counter(0)) at (prev + 1, 5) to (start + 0, 15)
|
||||
- Code(Counter(0)) at (prev + 1, 5) to (start + 0, 15)
|
||||
- Code(Counter(0)) at (prev + 1, 9) to (start + 0, 12)
|
||||
- Code(Counter(0)) at (prev + 0, 15) to (start + 0, 21)
|
||||
- Code(Counter(0)) at (prev + 1, 5) to (start + 0, 15)
|
||||
- Code(Counter(0)) at (prev + 1, 5) to (start + 0, 15)
|
||||
- Code(Counter(0)) at (prev + 1, 5) to (start + 0, 15)
|
||||
- Code(Zero) at (prev + 0, 32) to (start + 0, 48)
|
||||
- Code(Counter(3)) at (prev + 1, 5) to (start + 0, 13)
|
||||
- Code(Counter(3)) at (prev + 0, 14) to (start + 0, 20)
|
||||
- Code(Counter(3)) at (prev + 1, 5) to (start + 0, 13)
|
||||
- Code(Counter(3)) at (prev + 0, 14) to (start + 0, 20)
|
||||
- Code(Counter(3)) at (prev + 2, 5) to (start + 0, 15)
|
||||
- Code(Counter(0)) at (prev + 1, 5) to (start + 0, 13)
|
||||
- Code(Counter(0)) at (prev + 0, 14) to (start + 0, 20)
|
||||
- Code(Counter(0)) at (prev + 1, 5) to (start + 0, 13)
|
||||
- Code(Counter(0)) at (prev + 0, 14) to (start + 0, 20)
|
||||
- Code(Counter(0)) at (prev + 2, 5) to (start + 0, 15)
|
||||
- Code(Zero) at (prev + 0, 32) to (start + 0, 36)
|
||||
- Code(Zero) at (prev + 0, 41) to (start + 0, 48)
|
||||
- Code(Zero) at (prev + 0, 51) to (start + 0, 65)
|
||||
- Code(Zero) at (prev + 0, 75) to (start + 0, 90)
|
||||
- Code(Counter(3)) at (prev + 1, 5) to (start + 0, 15)
|
||||
- Code(Counter(0)) at (prev + 1, 5) to (start + 0, 15)
|
||||
- Code(Zero) at (prev + 5, 9) to (start + 0, 13)
|
||||
- Code(Zero) at (prev + 3, 9) to (start + 0, 16)
|
||||
- Code(Zero) at (prev + 2, 13) to (start + 0, 27)
|
||||
- Code(Zero) at (prev + 2, 13) to (start + 0, 28)
|
||||
- Code(Counter(3)) at (prev + 4, 9) to (start + 0, 16)
|
||||
- Code(Counter(3)) at (prev + 0, 19) to (start + 0, 46)
|
||||
- Code(Counter(3)) at (prev + 2, 5) to (start + 0, 15)
|
||||
- Code(Counter(3)) at (prev + 4, 5) to (start + 0, 15)
|
||||
- Code(Counter(3)) at (prev + 4, 5) to (start + 0, 15)
|
||||
- Code(Counter(3)) at (prev + 4, 9) to (start + 0, 12)
|
||||
- Code(Counter(3)) at (prev + 0, 15) to (start + 0, 21)
|
||||
- Code(Counter(3)) at (prev + 1, 5) to (start + 0, 15)
|
||||
- Code(Counter(3)) at (prev + 4, 8) to (start + 0, 15)
|
||||
- Code(Counter(4)) at (prev + 1, 9) to (start + 0, 19)
|
||||
- Code(Counter(0)) at (prev + 4, 9) to (start + 0, 16)
|
||||
- Code(Counter(0)) at (prev + 0, 19) to (start + 0, 46)
|
||||
- Code(Counter(0)) at (prev + 2, 5) to (start + 0, 15)
|
||||
- Code(Counter(0)) at (prev + 4, 5) to (start + 0, 15)
|
||||
- Code(Counter(0)) at (prev + 4, 5) to (start + 0, 15)
|
||||
- Code(Counter(0)) at (prev + 4, 9) to (start + 0, 12)
|
||||
- Code(Counter(0)) at (prev + 0, 15) to (start + 0, 21)
|
||||
- Code(Counter(0)) at (prev + 1, 5) to (start + 0, 15)
|
||||
- Code(Counter(0)) at (prev + 4, 8) to (start + 0, 15)
|
||||
- Code(Counter(1)) at (prev + 1, 9) to (start + 0, 19)
|
||||
- Code(Expression(0, Sub)) at (prev + 5, 9) to (start + 0, 19)
|
||||
= (c3 - c4)
|
||||
- Code(Counter(3)) at (prev + 5, 8) to (start + 0, 15)
|
||||
- Code(Counter(5)) at (prev + 1, 9) to (start + 0, 19)
|
||||
= (c0 - c1)
|
||||
- Code(Counter(0)) at (prev + 5, 8) to (start + 0, 15)
|
||||
- Code(Counter(2)) at (prev + 1, 9) to (start + 0, 19)
|
||||
- Code(Zero) at (prev + 3, 13) to (start + 0, 29)
|
||||
- Code(Expression(1, Sub)) at (prev + 3, 9) to (start + 0, 19)
|
||||
= (c3 - c5)
|
||||
= (c0 - c2)
|
||||
- Code(Zero) at (prev + 3, 13) to (start + 0, 29)
|
||||
- Code(Counter(3)) at (prev + 3, 5) to (start + 0, 15)
|
||||
- Code(Counter(3)) at (prev + 1, 12) to (start + 0, 19)
|
||||
- Code(Counter(6)) at (prev + 1, 13) to (start + 0, 19)
|
||||
- Code(Counter(0)) at (prev + 3, 5) to (start + 0, 15)
|
||||
- Code(Counter(0)) at (prev + 1, 12) to (start + 0, 19)
|
||||
- Code(Counter(3)) at (prev + 1, 13) to (start + 0, 19)
|
||||
- Code(Expression(2, Sub)) at (prev + 2, 13) to (start + 0, 19)
|
||||
= (c3 - c6)
|
||||
- Code(Counter(7)) at (prev + 4, 5) to (start + 0, 15)
|
||||
- Code(Counter(7)) at (prev + 2, 12) to (start + 0, 19)
|
||||
- Code(Counter(8)) at (prev + 1, 13) to (start + 0, 19)
|
||||
= (c0 - c3)
|
||||
- Code(Counter(4)) at (prev + 4, 5) to (start + 0, 15)
|
||||
- Code(Counter(4)) at (prev + 2, 12) to (start + 0, 19)
|
||||
- Code(Counter(5)) at (prev + 1, 13) to (start + 0, 19)
|
||||
- Code(Expression(3, Sub)) at (prev + 2, 13) to (start + 0, 19)
|
||||
= (c7 - c8)
|
||||
= (c4 - c5)
|
||||
- Code(Expression(9, Add)) at (prev + 3, 5) to (start + 0, 15)
|
||||
= (c10 + c11)
|
||||
- Code(Counter(9)) at (prev + 1, 12) to (start + 0, 19)
|
||||
- Code(Counter(10)) at (prev + 1, 13) to (start + 0, 23)
|
||||
- Code(Counter(10)) at (prev + 4, 13) to (start + 0, 19)
|
||||
= (c7 + c8)
|
||||
- Code(Counter(6)) at (prev + 1, 12) to (start + 0, 19)
|
||||
- Code(Counter(7)) at (prev + 1, 13) to (start + 0, 23)
|
||||
- Code(Counter(7)) at (prev + 4, 13) to (start + 0, 19)
|
||||
- Code(Expression(7, Sub)) at (prev + 2, 13) to (start + 0, 23)
|
||||
= (c9 - c10)
|
||||
= (c6 - c7)
|
||||
- Code(Expression(7, Sub)) at (prev + 1, 20) to (start + 0, 27)
|
||||
= (c9 - c10)
|
||||
= (c6 - c7)
|
||||
- Code(Zero) at (prev + 1, 21) to (start + 0, 27)
|
||||
- Code(Expression(7, Sub)) at (prev + 2, 21) to (start + 0, 27)
|
||||
= (c9 - c10)
|
||||
- Code(Counter(11)) at (prev + 4, 13) to (start + 0, 19)
|
||||
= (c6 - c7)
|
||||
- Code(Counter(8)) at (prev + 4, 13) to (start + 0, 19)
|
||||
- Code(Expression(8, Sub)) at (prev + 3, 9) to (start + 0, 25)
|
||||
= ((c10 + c11) - c12)
|
||||
- Code(Counter(12)) at (prev + 2, 5) to (start + 0, 15)
|
||||
- Code(Counter(12)) at (prev + 3, 9) to (start + 0, 34)
|
||||
= ((c7 + c8) - c9)
|
||||
- Code(Counter(9)) at (prev + 2, 5) to (start + 0, 15)
|
||||
- Code(Counter(9)) at (prev + 3, 9) to (start + 0, 34)
|
||||
- Code(Zero) at (prev + 2, 5) to (start + 0, 15)
|
||||
- Code(Zero) at (prev + 3, 9) to (start + 0, 44)
|
||||
- Code(Zero) at (prev + 2, 1) to (start + 0, 2)
|
||||
Highest counter ID seen: c12
|
||||
Highest counter ID seen: c9
|
||||
|
||||
|
|
|
|||
|
|
@ -1,10 +1,10 @@
|
|||
error[E0282]: type annotations needed
|
||||
--> $DIR/issue-107745-avoid-expr-from-macro-expansion.rs:17:22
|
||||
--> $DIR/issue-107745-avoid-expr-from-macro-expansion.rs:17:5
|
||||
|
|
||||
LL | println!("{:?}", []);
|
||||
| ^^ cannot infer type
|
||||
| ^^^^^^^^^^^^^^^^^^^^ cannot infer type
|
||||
|
|
||||
= note: this error originates in the macro `$crate::format_args_nl` which comes from the expansion of the macro `println` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||
= note: this error originates in the macro `println` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||
|
||||
error: aborting due to 1 previous error
|
||||
|
||||
|
|
|
|||
|
|
@ -1,3 +1,9 @@
|
|||
error[E0515]: cannot return reference to temporary value
|
||||
--> $DIR/issue-27592.rs:16:14
|
||||
|
|
||||
LL | write(|| format_args!("{}", String::from("Hello world")));
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ returns a reference to data owned by the current function
|
||||
|
||||
error[E0515]: cannot return value referencing temporary value
|
||||
--> $DIR/issue-27592.rs:16:14
|
||||
|
|
||||
|
|
@ -7,12 +13,6 @@ LL | write(|| format_args!("{}", String::from("Hello world")));
|
|||
| | temporary value created here
|
||||
| returns a value referencing data owned by the current function
|
||||
|
||||
error[E0515]: cannot return reference to temporary value
|
||||
--> $DIR/issue-27592.rs:16:14
|
||||
|
|
||||
LL | write(|| format_args!("{}", String::from("Hello world")));
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ returns a reference to data owned by the current function
|
||||
|
||||
error: aborting due to 2 previous errors
|
||||
|
||||
For more information about this error, try `rustc --explain E0515`.
|
||||
|
|
|
|||
|
|
@ -1,11 +1,8 @@
|
|||
error[E0277]: `<impl IntoIterator as IntoIterator>::Item` doesn't implement `std::fmt::Display`
|
||||
--> $DIR/issue-97760.rs:4:20
|
||||
--> $DIR/issue-97760.rs:4:19
|
||||
|
|
||||
LL | println!("{x}");
|
||||
| -^-
|
||||
| ||
|
||||
| |`<impl IntoIterator as IntoIterator>::Item` cannot be formatted with the default formatter
|
||||
| required by this formatting parameter
|
||||
| ^^^ `<impl IntoIterator as IntoIterator>::Item` cannot be formatted with the default formatter
|
||||
|
|
||||
= help: the trait `std::fmt::Display` is not implemented for `<impl IntoIterator as IntoIterator>::Item`
|
||||
= note: in format strings you may be able to use `{:?}` (or {:#?} for pretty-print) instead
|
||||
|
|
|
|||
|
|
@ -398,7 +398,8 @@ mod expressions {
|
|||
let expr;
|
||||
format_arguments::new_const(&[]);
|
||||
{
|
||||
super let args = [format_argument::new_display(&expr)];
|
||||
super let args = (&expr,);
|
||||
super let args = [format_argument::new_display(args.0)];
|
||||
format_arguments::new_v1(&[""], &args)
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -11,7 +11,8 @@ fn main() {
|
|||
// Should flatten to println!("a 123 b {x} xyz\n"):
|
||||
{
|
||||
::std::io::_print({
|
||||
super let args = [format_argument::new_display(&x)];
|
||||
super let args = (&x,);
|
||||
super let args = [format_argument::new_display(args.0)];
|
||||
format_arguments::new_v1(&["a 123 b ", " xyz\n"], &args)
|
||||
});
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue