Point at named argument not found when using format_args_capture instead of whole format string

This commit is contained in:
Esteban Küber 2020-09-07 18:42:29 -07:00
parent c59199efca
commit 2ac89ff994
3 changed files with 22 additions and 24 deletions

View File

@ -543,9 +543,12 @@ impl<'a, 'b> Context<'a, 'b> {
let idx = self.args.len();
self.arg_types.push(Vec::new());
self.arg_unique_types.push(Vec::new());
self.args.push(
self.ecx.expr_ident(self.fmtsp, Ident::new(name, self.fmtsp)),
);
let span = if self.is_literal {
*self.arg_spans.get(self.curpiece).unwrap_or(&self.fmtsp)
} else {
self.fmtsp
};
self.args.push(self.ecx.expr_ident(span, Ident::new(name, span)));
self.names.insert(name, idx);
self.verify_arg_type(Exact(idx), ty)
} else {

View File

@ -5,7 +5,7 @@ fn main() {
//~^ ERROR: cannot find value `foo` in this scope
//~^^ ERROR: cannot find value `bar` in this scope
format!("{foo}"); //~ ERROR: cannot find value `foo` in this scope
format!("{foo}"); //~ ERROR: cannot find value `foo` in this scope
format!("{valuea} {valueb}", valuea=5, valuec=7);
//~^ ERROR cannot find value `valueb` in this scope
@ -16,7 +16,7 @@ fn main() {
{foo}
"##);
//~^^^^^ ERROR: cannot find value `foo` in this scope
//~^^^ ERROR: cannot find value `foo` in this scope
panic!("{foo} {bar}", bar=1); //~ ERROR: cannot find value `foo` in this scope
panic!("{foo} {bar}", bar=1); //~ ERROR: cannot find value `foo` in this scope
}

View File

@ -7,45 +7,40 @@ LL | format!("{valuea} {valueb}", valuea=5, valuec=7);
| formatting specifier missing
error[E0425]: cannot find value `foo` in this scope
--> $DIR/format-args-capture-missing-variables.rs:4:13
--> $DIR/format-args-capture-missing-variables.rs:4:17
|
LL | format!("{} {foo} {} {bar} {}", 1, 2, 3);
| ^^^^^^^^^^^^^^^^^^^^^^ not found in this scope
| ^^^^^ not found in this scope
error[E0425]: cannot find value `bar` in this scope
--> $DIR/format-args-capture-missing-variables.rs:4:13
--> $DIR/format-args-capture-missing-variables.rs:4:26
|
LL | format!("{} {foo} {} {bar} {}", 1, 2, 3);
| ^^^^^^^^^^^^^^^^^^^^^^ not found in this scope
| ^^^^^ not found in this scope
error[E0425]: cannot find value `foo` in this scope
--> $DIR/format-args-capture-missing-variables.rs:8:13
--> $DIR/format-args-capture-missing-variables.rs:8:14
|
LL | format!("{foo}");
| ^^^^^^^ not found in this scope
| ^^^^^ not found in this scope
error[E0425]: cannot find value `valueb` in this scope
--> $DIR/format-args-capture-missing-variables.rs:10:13
--> $DIR/format-args-capture-missing-variables.rs:10:23
|
LL | format!("{valuea} {valueb}", valuea=5, valuec=7);
| ^^^^^^^^^^^^^^^^^^^ not found in this scope
| ^^^^^^^^ not found in this scope
error[E0425]: cannot find value `foo` in this scope
--> $DIR/format-args-capture-missing-variables.rs:14:13
--> $DIR/format-args-capture-missing-variables.rs:16:9
|
LL | format!(r##"
| _____________^
LL | |
LL | | {foo}
LL | |
LL | | "##);
| |_______^ not found in this scope
LL | {foo}
| ^^^^^ not found in this scope
error[E0425]: cannot find value `foo` in this scope
--> $DIR/format-args-capture-missing-variables.rs:21:12
--> $DIR/format-args-capture-missing-variables.rs:21:13
|
LL | panic!("{foo} {bar}", bar=1);
| ^^^^^^^^^^^^^ not found in this scope
| ^^^^^ not found in this scope
error: aborting due to 7 previous errors