| Age | Commit message (Collapse) | Author | Lines |
|
Fix a minor grammar nit, update UI tests
Minor fix, but I noticed it while debugging some code
|
|
Polonius: more `ui` test suite fixes
Since #62736, new tests have been added, and the `run-pass` suite was merged into the `ui` suite.
This PR adds the missing tests expectations for Polonius, and updates the existing ones where the NLL output has changed in some manner (e.g. ordering of notes)
Those are the trivial cases, but a more-detailed explanation is available [in this write-up](https://hackmd.io/CjYB0fs4Q9CweyeTdKWyEg?both#26-async-awaitasync-borrowck-escaping-closure-errorrs-outputs-from-NLL-Polonius-diff) starting at test case 26: they are only differing in diagnostics and instances of other existing test cases differences.
Only 3 of the 9020 tests are still "failing" at the moment (1 failure, 2 OOMs).
r? @nikomatsakis
|
|
|
|
|
|
Fix issue22656 with LLDB 8
Closes https://github.com/rust-lang/rust/issues/64074
|
|
|
|
Load proc macro metadata in the correct order.
Serialized proc macro metadata is assumed to have a one-to-one
correspondence with the entries in static array generated by proc_macro_harness.
However, we were previously serializing proc macro metadata in a
different order than proc macros were laied out in the static array.
This lead to us associating the wrong data with a proc macro when
generating documentation, causing Rustdoc to generate incorrect docs for
proc macros.
This commit keeps track of the order in which we insert proc macros into
the generated static array. We use this same order when serializing proc
macro metadata, ensuring that we can later associate the metadata for a
proc macro with its entry in the static array.
Fixes #64251
|
|
Print out more information for `-Zunpretty=expanded,hygiene`
I've found this helpful when trying to understand how hygiene works.
Closes #16420
|
|
This ensures that we match the order used by proc macro metadata
serialization.
Fixes #64251
|
|
Rollup of 10 pull requests
Successful merges:
- #61626 (Get rid of special const intrinsic query in favour of `const_eval`)
- #64283 (Updated RELEASES.md for 1.38.0)
- #64394 (Shrink `SubregionOrigin`.)
- #64429 (Fix failure note `to_str` implementation)
- #64436 (improve Vec example soundness in mem::transmute docs)
- #64502 (avoid duplicate issues for Miri build failures)
- #64505 (Fix inconsistent link formatting)
- #64529 (Add an example to Pin::as_mut)
- #64541 (document Miri error categories)
- #64544 (build-manifest: re-add some comments)
Failed merges:
r? @ghost
|
|
r=Mark-Simulacrum
Fix failure note `to_str` implementation
Serialize the level to something a little more useful for a failure note struct. This fixes #60425.
|
|
|
|
r=davidtwco
adjust desugaring for async fn to correct drop order
Old desugaring, given a user function body `{ $stmts; $expr }`
```
{
let $param_pattern0 = $raw_param0;
...
let $param_patternN = $raw_paramN;
$stmts;
$expr
}
```
New desugaring:
```
{
let $param_pattern0 = $raw_param0;
...
let $param_patternN = $raw_paramN;
drop-temps {
$stmts;
$expr
}
}
```
The drop-temps is an internal bit of HIR that drops temporaries from the resulting expression, but it should be equivalent to `return { $stmts; $expr }`.
Fixes #64512
Fixes #64391
|
|
|
|
|
|
as its output was changed by https://github.com/rust-lang/rust/commit/2ff337a8e286a5b472f71b3bbdc3d4b6b840870f#diff-bd3f80b956148a5d1567aa8698b8a507
|
|
Polonius
|
|
Polonius
|
|
|
|
Co-Authored-By: Mazdak Farrokhzad <twingoow@gmail.com>
|
|
* Serialize the level to something a little more useful for a failure note
struct
* Update tests accordingly
|
|
Various refactorings to clean up nll diagnostics
- Create ErrorReportingCtx and ErrorConstraintInfo, vasting reducing the
number of arguments passed around everywhere in the error reporting code
- Create RegionErrorNamingCtx, making a given lifetime have consistent
numbering thoughout all error messages for that MIR def.
- Make the error reporting code return the DiagnosticBuilder rather than
directly buffer the Diagnostic. This makes it easier to modify the
diagnostic later, e.g. to add suggestions.
r? @estebank
Split out from https://github.com/rust-lang/rust/pull/58281
|
|
|
|
|
|
|
|
r=jonas-schievink
use println!() instead of println!("")
The empty string is unnecessary.
|
|
Hide diagnostics emitted during --cfg parsing
The early error is more than sufficient for fixing the problem.
Fixes https://github.com/rust-lang/rust/issues/31496.
|
|
Stabilize `Vec::new` and `String::new` as `const fn`s
Closes https://github.com/rust-lang/rust/issues/64022.
r? @oli-obk
|
|
Make sure interned constants are immutable
This makes sure that interning for constants (not statics) creates only immutable allocations.
Previously, the "main" allocation of `const FOO: Cell<i32> = Cell::new(0);` was marked as mutable, but I don't think we want that. It can be only copied, not written to.
Also, "leftover" allocations (behind raw pointers etc) were left mutable. I don't think we want to support that. I tried asserting that these are all already immutable (to double-check our static checks), but that failed in this one:
```rust
const NON_NULL_PTR2: NonNull<u8> = unsafe { mem::transmute(&0) };
```
Seems like maybe we want more precise mutability annotation inside Miri for locals (like `&0` here) so that this would actually become immutable to begin with?
I also factored `intern_shallow` out of the visitor so that we don't have to construct a visitor when we do not plan to visit anything. That confused me at first.
|
|
|
|
|
|
The early error is more than sufficient for fixing the problem.
|
|
Rollup of 3 pull requests
Successful merges:
- #63872 (Document platform-specific behavior of the iterator returned by std::fs::read_dir)
- #64250 (save-analysis: Nest typeck tables when processing functions/methods)
- #64472 (Don't mark expression with attributes as not needing parentheses)
Failed merges:
r? @ghost
|
|
Don't mark expression with attributes as not needing parentheses
This is not perfectly correct as `#[attr] (5)` will still not lint, but it does seem good enough, in particular as the parentheses in that case are not unambiguously incorrect; I might personally prefer to see them for clarity.
Fixes https://github.com/rust-lang/rust/issues/43279.
|
|
save-analysis: Nest typeck tables when processing functions/methods
Fixes an issue where we did not nest tables correctly when resolving
associated types in formal argument/return type positions.
This was the minimized reproduction case that I tested the fix on:
```rust
pub trait Trait {
type Assoc;
}
pub struct A;
pub fn func() {
fn _inner1<U: Trait>(_: U::Assoc) {}
fn _inner2<U: Trait>() -> U::Assoc { unimplemented!() }
impl A {
fn _inner1<U: Trait>(self, _: U::Assoc) {}
fn _inner2<U: Trait>(self) -> U::Assoc { unimplemented!() }
}
}
```
using `debug_assertions`-enabled rustc and by additionally passing `-Zsave-analysis`.
Unfortunately the original assertion fired is a *debug* one and from what I can tell we don't run the tests with these on, so I'm not adding a test here. If I missed it and there is a way to run tests with these on, I'd love to add a test case for this.
Closes #63663
Closes #50328
Closes #43982
|
|
Permit impls referencing errors to overlap
Fixes #43400; previously this would emit an overlapping impls error, but no longer does.
|
|
|
|
|
|
resolve: Tweak some "cannot find" wording for macros
|
|
|
|
intern constants as immutable
|
|
|
|
|
|
|
|
Cleanup handling of hygiene for built-in macros
This makes most identifiers generated by built-in macros use def-site hygiene, not only the ones that previously used gensyms.
* `ExtCtxt::ident_of` now takes a `Span` and is preferred to `Ident::{from_str, from_str_and_span}`
* Remove `Span::with_legacy_ctxt`
* `assert` now uses call-site hygiene because it needs to resolve `panic` unhygienically.
* `concat_idents` now uses call-site hygiene because it wouldn't be very useful with def-site hygiene.
* everything else is moved to def-site hygiene
r? @petrochenkov
|
|
|
|
Rollup of 5 pull requests
Successful merges:
- #64457 (def_collector: Do not ICE on attributes on unnamed fields)
- #64463 (resolve: Tweak some expected/found wording)
- #64471 (Warn on no_start, crate_id attribute use)
- #64473 (Use try_fold instead of manually carrying an accumulator)
- #64475 (simplify the initialization)
Failed merges:
r? @ghost
|
|
Warn on no_start, crate_id attribute use
These attributes are now deprecated; they don't have any use anymore.
`no_start` stopped being applicable in 3ee916e50bd86768cb2a9141f9b2c52d2601b412 as part of #18967. Ideally we would've removed it pre-1.0, but since that didn't happen let's at least mark it deprecated.
`crate_id` was renamed to `crate_name` in 50ee1ec1b4f107122d8037ac7b0b312afa6eb0ac as part of #15319. Ideally we would've followed that up with a removal of crate_id itself as well, but that didn't happen; this PR finally marks it as deprecated at least.
Fixes https://github.com/rust-lang/rust/issues/43142 and resolves https://github.com/rust-lang/rust/issues/43144.
|
|
resolve: Tweak some expected/found wording
|
|
def_collector: Do not ICE on attributes on unnamed fields
The primary issue here is that the expansion infra needs to visit a field in isolation, and fields don't know their own indices during expansion, so they have to be kept in some other place (e.g. `struct Definitions`).
Fixes https://github.com/rust-lang/rust/issues/64385
|