| Age | Commit message (Collapse) | Author | Lines |
|
Replace them with equivalents of `Span::{def_site,call_site}` from proc macro API.
The new API is much less error prone and doesn't rely on macros having default transparency.
|
|
|
|
|
|
Remove gensym in format_args
This also fixes some things to allow us to export opaque macros from libcore:
* Don't consider items that are only reachable through opaque macros as public/exported (so they aren't linted as needing docs)
* Mark private items reachable from the root of libcore as unstable - they are now reachable (in principle) in other crates via macros in libcore
r? @petrochenkov
|
|
|
|
Cleanup syntax::attr
Mostly removing needless arguments to constructors
r? @petrochenkov
|
|
|
|
|
|
|
|
|
|
When positional width and precision formatting flags are present in a
formatting string that has an argument count mismatch, provide extra
information pointing at them making it easiser to understand where the
problem may lay:
```
error: 4 positional arguments in format string, but there are 3 arguments
--> $DIR/ifmt-bad-arg.rs:78:15
|
LL | println!("{} {:.*} {}", 1, 3.2, 4);
| ^^ ^^--^ ^^ --- this parameter corresponds to the precision flag
| |
| this precision flag adds an extra required argument at position 1, which is why there are 4 arguments expected
|
= note: positional arguments are zero-based
= note: for information about formatting flags, visit https://doc.rust-lang.org/std/fmt/index.html
error: 4 positional arguments in format string, but there are 3 arguments
--> $DIR/ifmt-bad-arg.rs:81:15
|
LL | println!("{} {:07$.*} {}", 1, 3.2, 4);
| ^^ ^^-----^ ^^ --- this parameter corresponds to the precision flag
| | |
| | this precision flag adds an extra required argument at position 1, which is why there are 4 arguments expected
| this width flag expects an `usize` argument at position 7, but there are 3 arguments
|
= note: positional arguments are zero-based
= note: for information about formatting flags, visit https://doc.rust-lang.org/std/fmt/index.html
error: 3 positional arguments in format string, but there are 3 arguments
--> $DIR/ifmt-bad-arg.rs:84:15
|
LL | println!("{} {:07$} {}", 1, 3.2, 4);
| ^^ ^^---^ ^^
| |
| this width flag expects an `usize` argument at position 7, but there are 3 arguments
|
= note: positional arguments are zero-based
= note: for information about formatting flags, visit https://doc.rust-lang.org/std/fmt/index.html
```
|
|
Handle more cases of typos misinterpreted as type ascription
Fix #60933, #54516.
CC #47666, #34255, #48016.
|
|
Specific error for positional args after named args in `format!()`
When writing positional arguments after named arguments in the
`format!()` and `println!()` macros, provide a targeted diagnostic.
Follow up to https://github.com/rust-lang/rust/pull/57522/files#r247278885
|
|
|
|
|
|
When writing positional arguments after named arguments in the
`format!()` and `println!()` macros, provide a targeted diagnostic.
|
|
|
|
|
|
|
|
This should be used when trying to get at subsets of a larger span,
especially when the larger span is not available in the code attempting
to work with those subsets (especially common in the fmt_macros crate).
This is usually a good replacement for (BytePos, BytePos) and (usize,
usize) tuples.
This commit also removes from_inner_byte_pos, since it took usize
arguments, which is error prone.
|
|
|
|
|
|
|
|
|
|
|
|
Because this function is hot.
Also remove the dead `ty_option` function.
|
|
|
|
|
|
Rename rustc_errors dependency in rust 2018 crates
I think this is a better solution than `use rustc_errors as errors` in `lib.rs` and `use crate::errors` in modules.
Related: rust-lang/cargo#5653
cc #58099
r? @Centril
|
|
Cosmetic improvements to doc comments
This has been factored out from https://github.com/rust-lang/rust/pull/58036 to only include changes to documentation comments (throughout the rustc codebase).
r? @steveklabnik
Once you're happy with this, maybe we could get it through with r=1, so it doesn't constantly get invalidated? (I'm not sure this will be an issue, but just in case...) Anyway, thanks for your advice so far!
|
|
|
|
|
|
|
|
|
|
|
|
Small perf improvement for fmt
Added benchmark is based on #10761
|
|
name old2 ns/iter new2 ns/iter diff ns/iter diff % speedup
fmt::write_str_macro1 12,295 12,308 13 0.11% x 1.00
fmt::write_str_macro2 24,079 21,451 -2,628 -10.91% x 1.12
fmt::write_str_macro_debug 238,363 230,807 -7,556 -3.17% x 1.03
fmt::write_str_ref 6,203 6,064 -139 -2.24% x 1.02
fmt::write_str_value 6,225 6,075 -150 -2.41% x 1.02
fmt::write_vec_macro1 17,144 17,121 -23 -0.13% x 1.00
fmt::write_vec_macro2 29,845 26,703 -3,142 -10.53% x 1.12
fmt::write_vec_macro_debug 248,840 242,117 -6,723 -2.70% x 1.03
fmt::write_vec_ref 5,954 6,438 484 8.13% x 0.92
fmt::write_vec_value 5,959 6,439 480 8.06% x 0.93
|
|
Fixes #57512.
|
|
This commit completely removes usage of the `panictry!` macro from
outside libsyntax. The macro causes parse errors to be fatal, so using
it in libsyntax_ext caused parse failures *within* a syntax extension to
be fatal, which is probably not intended.
Furthermore, this commit adds spans to diagnostics emitted by empty
extensions if they were missing, à la #56491.
|
|
|
|
|
|
|
|
Tweaks to format string diagnostics
Add label spans and fix incorrect spans.
Fix #55155, fix #55350.
|
|
|
|
|
|
Fix a number of uncovered deficiencies in diagnostics
|
|
Fix #55350.
|
|
When a format string has escaped whitespace characters format
arguments were shifted by one per each escaped character. Account
for these escaped characters when synthesizing the spans.
Fix #55155.
|
|
- Point at opening mismatched formatting brace
- Account for differences between raw and regular strings
- Account for differences between the code snippet and `InternedString`
- Add more tests
|
|
|