-
Notifications
You must be signed in to change notification settings - Fork 13.7k
Closed
Labels
A-diagnosticsArea: Messages for errors, warnings, and lintsArea: Messages for errors, warnings, and lints
Description
fn main() {
format!("{:?}", ());
}
foo.rs:2:21: 3:1 error: unresolved import. maybe a missing `extern crate debug`?
foo.rs:2 format!("{:?}", ());
foo.rs:3 }
note: in expansion of format_args!
<std macros>:3:9: 3:51 note: expansion site
<std macros>:1:1: 5:2 note: in expansion of format!
foo.rs:2:5: 2:25 note: expansion site
foo.rs:2:21: 2:23 error: use of undeclared module `::debug::fmt`
foo.rs:2 format!("{:?}", ());
^~
note: in expansion of format_args!
<std macros>:3:9: 3:51 note: expansion site
<std macros>:1:1: 5:2 note: in expansion of format!
foo.rs:2:5: 2:25 note: expansion site
foo.rs:2:21: 2:23 error: unresolved name `debug::fmt::secret_poly`.
foo.rs:2 format!("{:?}", ());
^~
note: in expansion of format_args!
<std macros>:3:9: 3:51 note: expansion site
<std macros>:1:1: 5:2 note: in expansion of format!
foo.rs:2:5: 2:25 note: expansion site
error: aborting due to 3 previous errors
This is a lot of noise which makes it hard to understand the root problem. In a sense, this is a macro hygeine issue; the format!
macro wants to "close over" a reference to the crate debug
. Macros injecting crate dependencies would probably be bad, but we could allow them (at least procedural syntax extensions) to specify a list of crate dependencies, so that error messages can be more informative.
Metadata
Metadata
Assignees
Labels
A-diagnosticsArea: Messages for errors, warnings, and lintsArea: Messages for errors, warnings, and lints