| Age | Commit message (Collapse) | Author | Lines |
|
|
|
|
|
interpret: support for per-byte provenance
Also factors the provenance map into its own module.
The third commit does the same for the init mask. I can move it in a separate PR if you prefer.
Fixes https://github.com/rust-lang/miri/issues/2181
r? `@oli-obk`
|
|
Rollup of 9 pull requests
Successful merges:
- #103439 (Show note where the macro failed to match)
- #103734 (Adjust stabilization version to 1.65.0 for wasi fds)
- #104148 (Visit attributes of trait impl items during AST validation)
- #104241 (Move most of unwind's build script to lib.rs)
- #104258 (Deduce closure signature from a type alias `impl Trait`'s supertraits)
- #104296 (Walk types more carefully in `ProhibitOpaqueTypes` visitor)
- #104309 (Slightly improve error message for invalid identifier)
- #104316 (Simplify suggestions for errors in generators.)
- #104339 (Add `rustc_deny_explicit_impl`)
Failed merges:
- #103484 (Add `rust` to `let_underscore_lock` example)
r? `@ghost`
`@rustbot` modify labels: rollup
|
|
|
|
r=davidtwco
Slightly improve error message for invalid identifier
fixes #104088
|
|
r=lcnr
Walk types more carefully in `ProhibitOpaqueTypes` visitor
The visitor didn't account for the case where you could have `<TAIT as Trait>::Assoc` normalize to itself, in the case of a `type TAIT = impl Trait` with an unconstrained associated type. That causes the visitor to loop on the same type over and over.
Fixes #104291
|
|
Deduce closure signature from a type alias `impl Trait`'s supertraits
r? `@oli-obk`
Basically pass the TAIT's bounds through the same method that we're using to deduce a signature from infer var closure bounds.
Does this need a new FCP? I see it as a logical extension of #101834, but happy to rfcbot a new one if it does.
|
|
Visit attributes of trait impl items during AST validation
Fixes #104140.
This fix might not be backward compatible (in practice) since we now validate more attributes than before.
Should I write more tests?
`@rustbot` label A-attributes
|
|
Show note where the macro failed to match
When feeding the wrong tokens, it used to fail with a very generic error that wasn't very helpful. This change tries to help by noting where specifically the matching went wrong.
```rust
macro_rules! uwu {
(a a a b) => {};
}
uwu! { a a a c }
```
```diff
error: no rules expected the token `c`
--> macros.rs:5:14
|
1 | macro_rules! uwu {
| ---------------- when calling this macro
...
4 | uwu! { a a a c }
| ^ no rules expected this token in macro call
|
+note: while trying to match `b`
+ --> macros.rs:2:12
+ |
+2 | (a a a b) => {};
+ | ^
```
|
|
Add new MIR constant propagation based on dataflow analysis
The current constant propagation in `rustc_mir_transform/src/const_prop.rs` fails to handle many cases that would be expected from a constant propagation optimization. For example:
```rust
let x = if true { 0 } else { 0 };
```
This pull request adds a new constant propagation MIR optimization pass based on the existing dataflow analysis framework. Since most of the analysis is not unique to constant propagation, a generic framework has been extracted. It works on top of the existing framework and could be reused for other optimzations.
Closes #80038. Closes #81605.
## Todo
### Essential
- [x] [Writes to inactive enum variants](https://github.com/rust-lang/rust/pull/101168#pullrequestreview-1089493974). Resolved by rejecting the registration of places with downcast projections for now. Could be improved by flooding other variants if mutable access to a variant is observed.
- [X] Handle [`StatementKind::CopyNonOverlapping`](https://github.com/rust-lang/rust/pull/101168#discussion_r957774914). Resolved by flooding the destination.
- [x] Handle `UnsafeCell` / `!Freeze` correctly.
- [X] Overflow propagation of `CheckedBinaryOp`: Decided to not propagate if overflow flag is `true` (`false` will still be propagated)
- [x] More documentation in general.
- [x] Arguments for correctness, documentation of necessary assumptions.
- [x] Better performance, or alternatively, require `-Zmir-opt-level=3` for now.
### Extra
- [x] Add explicit unreachability, i.e. upgrading the lattice from $\mathbb{P} \to \mathbb{V}$ to $\set{\bot} \cup (\mathbb{P} \to \mathbb{V})$.
- [x] Use storage statements to improve precision.
- [ ] Consider opening issue for duplicate diagnostics: https://github.com/rust-lang/rust/pull/101168#issuecomment-1276609950
- [ ] Flood moved-from places with $\bot$ (requires some changes for places with tracked projections).
- [ ] Add downcast projections back in.
- [ ] [Algebraic simplifications](https://github.com/rust-lang/rust/pull/101168#discussion_r957967878) (possibly with a shared API; done by old const prop).
- [ ] Propagation through slices / arrays.
- [ ] Find other optimizations that are done by old `const_prop.rs`, but not by this one.
|
|
Today it always copies it for *every* appended element, but one of those clones is avoidable.
|
|
add ui tests
|
|
Rollup of 13 pull requests
Successful merges:
- #103842 (Adding Fuchsia compiler testing script, docs)
- #104354 (Remove leading newlines from `NonZero*` doc examples)
- #104372 (Update compiler-builtins)
- #104380 (rustdoc: remove unused CSS `code { opacity: 1 }`)
- #104381 (Remove dead NoneError diagnostic handling)
- #104383 (Remove unused symbols and diagnostic items)
- #104391 (Deriving cleanups)
- #104403 (Specify language of code comment to generate document)
- #104404 (Fix missing minification for static files)
- #104413 ([llvm-wrapper] adapt for LLVM API change)
- #104415 (rustdoc: fix corner case in search keyboard commands)
- #104422 (Fix suggest associated call syntax)
- #104426 (Add test for #102154)
Failed merges:
r? `@ghost`
`@rustbot` modify labels: rollup
|
|
remove `find_skips`
remove unnecessary variables
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Add test for #102154
Closes #102154
|
|
compiler-errors:fix-suggest_associated_call_syntax, r=BoxyUwU
Fix suggest associated call syntax
Fixes #104412
|
|
|
|
This rule was added in 152e8889052adaaa6c12652486292be34059713c to push the
out-of-band content to the right while allowing it to line wrap when it got
too big. The idea was that the justification rule would fill the space
between the `<h1>` element and the `<div class="out-of-band">` element.
A later commit, 3cb03cb34247383ffb67a017ae70134741e8c4da, flattened the
in-band element into the `<h1>`, copying the `flex-grow` rule. This means
the `<h1>` element now grows to fill the space, so there's no need to
justify-content any more.
This commit also adds a test case for this.
|
|
|
|
|
|
|
|
Co-authored-by: Daniel Henry-Mantilla <daniel.henry.mantilla@gmail.com>
|
|
|
|
|
|
This shows a small note on what the macro matcher was currently
processing to aid with "no rules expected the token X" errors.
|
|
Bump chalk to v0.87
1. Removes `ReEmpty` from chalk
2. Adds support for the `std::marker::Tuple` trait
|
|
rustdoc: Resolve doc links in external traits having local impls
For external impls it was done in https://github.com/rust-lang/rust/pull/103192 right away, but the local impl case was forgotten.
Fixes https://github.com/rust-lang/rust/issues/104145.
|
|
r=davidtwco
Don't ICE with inline const errors during MIR build
Fixes #104277
|
|
Don't print full paths in overlap errors
We don't print the full path in other diagnostics -- I don't think it particularly helps with the error message. I also delayed the printing until actually needing to render the error message.
r? diagnostics
|
|
Recover from function pointer types with generic parameter list
Give a more helpful error when encountering function pointer types with a generic parameter list like `fn<'a>(&'a str) -> bool` or `fn<T>(T) -> T` and suggest moving lifetime parameters to a `for<>` parameter list.
I've added a bunch of extra code to properly handle (unlikely?) corner cases like `for<'a> fn<'b>()` (where there already exists a `for<>` parameter list) correctly suggesting `for<'a, 'b> fn()` (merging the lists). If you deem this useless, I can simplify the code by suggesting nothing at all in this case.
I am quite open to suggestions regarding the wording of the diagnostic messages.
Fixes #103487.
``@rustbot`` label A-diagnostics
r? diagnostics
|
|
Since the empty main is used for `not(unix)`, all the targets that will
use this empty main will also need `allow(unused_imports)`.
Originally part of https://github.com/rust-lang/rust/pull/100316
Signed-off-by: Ayush Singh <ayushsingh1325@gmail.com>
|
|
|
|
|
|
Regression test for coercion of mut-ref to dyn-star
Closes #102430
|
|
Add a few known-bug tests
The labels of these tests should be changed from `S-bug-has-mcve` to `S-bug-has-test` once this is merged.
cc:
#101518
#99492
#90950
#89196
#104034
#101350
#103705
#103899
I couldn't reproduce the failures in #101962 and #100772 (so either these have started passing, or I didn't repro properly), so leaving those out for now.
#102065 was a bit more complicated, since it uses `rustc_private` and I didn't want to mess with that.
|
|
llvm: dwo only emitted when object code emitted
Fixes #103932.
`CompiledModule` should not think a DWARF object was emitted when a bitcode-only compilation has happened, this can confuse archive file creation (which expects to create an archive containing non-existent dwo files).
r? ``````@michaelwoerister``````
|
|
|
|
|
|
|
|
|
|
Signed-off-by: ozkanonur <work@onurozkan.dev>
|
|
Rollup of 5 pull requests
Successful merges:
- #103996 (Add small clarification around using pointers derived from references)
- #104315 (Improve spans with `use crate::{self}`)
- #104320 (Use `derive_const` and rm manual StructuralEq impl)
- #104357 (add is_sized method on Abi and Layout, and use it)
- #104365 (Add x tool to triagebot)
Failed merges:
r? `@ghost`
`@rustbot` modify labels: rollup
|
|
Improve spans with `use crate::{self}`
Fixes #104276.
The error becomes:
```
error: crate root imports need to be explicitly named: `use crate as name;`
--> src/lib.rs.rs:1:13
|
1 | use crate::{self};
| ^^^^
warning: unused import: `self`
--> src/lib.rs:1:13
|
1 | use crate::{self};
| ^^^^
|
= note: `#[warn(unused_imports)]` on by default
```
|