| Age | Commit message (Collapse) | Author | Lines |
|
These still generated a bunch of code back in Rust 1.63 (<https://rust.godbolt.org/z/z31P8h6rz>), but with LLVM 15 merged they no longer do :tada:
|
|
Add tests for the drop behavior of some control flow constructs
In #100513 it was shown that the drop behaviour of let_chains is not correct currently. Since drop behaviour is something pretty subtle, this adds explicit tests for the drop behavior of `if`, `if let` and `match` to make sure that it does not regress in the future.
The `println!`s were left in to make debugging easier in case something goes wrong, but they are not required for the test.
|
|
r=Mark-Simulacrum
Impl `Debug` for some structs of rustbuild
A small patch to impl `Debug` for some structs of rustbuild to make debugging easier.
(I was trying to impl `Debug` for the `Config` struct, but found to have a bit more things to do. So gave up for now.)
|
|
[rustdoc] remove Clean trait
Follow-up of https://github.com/rust-lang/rust/pull/99638.
This is (finally!) the last part.
r? `@Dylan-DPC`
|
|
Recover from mutable variable declaration where `mut` is placed before `let`
Closes #100197
|
|
rustdoc: Merge source code pages HTML elements together
We realized that the HTML generated for the source code pages could be improved quite a lot. This PR is a first pass toward this goal. Some explanations: it merges similar classes elements (even when there are white characters in between).
There is an exception to this: if this is an ident, I also merged it with "unclassified" elements. This part is up to debate and can be very easily removed as the check is performed in one place (in the `can_merge` function).
EDIT: The `ident` is now only kept in the code for the `span` it contains but it is not rendered into the HTML.
So now some numbers:
For these ones, on each page, I run this JS: `document.getElementsByTagName('*').length`. The goal is to count the number of DOM elements. I took some pages that seemed big, but don't hesitate to check some others.
| file name | before this PR | with this PR | diff | without ident | diff |
|-|-|-|-|-|-|
| std/lib.rs.html (source link on std crate page) | 3455 | 2776 | 20.7% | 2387 | 31% |
| alloc/vec/mod.rs.html (source on Vec type page) | 11012 | 8084 | 26.6% | 6682 | 39.4% |
| alloc/string.rs.html (source on String type page) | 10800 | 8214 | 24% | 6712 | 37.9% |
| std/sync/mutex.rs.html (source on Mutex type page) | 2953 | 2403 | 18.7% | 2139 | 27.6% |
You can test it [here](https://rustdoc.crud.net/imperio/merge-html-elements-together/src/std/lib.rs.html).
cc `@jsha`
r? `@notriddle`
|
|
In #100513 it was shown that the drop behavior of let_chains is not correct
currently. Since drop behavior is something pretty subtle, this adds
explicit tests for the drop behavior of `if`, `if let` and `match` to
make sure that it does not regress in the future.
The `println!`s were left in to make debugging easier in case something
goes wrong, but they are not required for the test.
|
|
`assert_{inhabited,zero_valid,uninit_valid}` intrinsics are safe
Those intrinsics either panic or do nothing. They are safe.
|
|
Suggest removing `let` if `const let` or `let const` is used
Closes #99910
|
|
orphan check: rationalize our handling of constants
cc `@rust-lang/types` `@rust-lang/project-const-generics` on whether you agree with this reasoning.
r? types
|
|
Delay a span bug if we see ty/const generic params during writeback
Fixes #99566
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Rollup of 8 pull requests
Successful merges:
- #99646 (Only point out a single function parameter if we have a single arg incompatibility)
- #100299 (make `clean::Item::span` return `Option` instead of dummy span)
- #100335 (Rustdoc-Json: Add `Path` type for traits.)
- #100367 (Suggest the path separator when a dot is used on a trait)
- #100431 (Enum variant ctor inherits the stability of the enum variant)
- #100446 (Suggest removing a semicolon after impl/trait items)
- #100468 (Use an extensionless `x` script for non-Windows)
- #100479 (Argument type error improvements)
Failed merges:
- #100483 (Point to generic or arg if it's the self type of unsatisfied projection predicate)
r? `@ghost`
`@rustbot` modify labels: rollup
|
|
r=lcnr
Argument type error improvements
Motivated by this interesting code snippet:
```rust
#[derive(Copy, Clone)]
struct Wrapper<T>(T);
fn foo(_: fn(i32), _: Wrapper<i32>) {}
fn f(_: u32) {}
fn main() {
let w = Wrapper::<isize>(1isize);
foo(f, w);
}
```
Which currently errors like:
```
error[E0308]: arguments to this function are incorrect
--> src/main.rs:10:5
|
10 | foo(f, w);
| ^^^ - - expected `i32`, found `isize`
| |
| expected `i32`, found `u32`
|
= note: expected fn pointer `fn(i32)`
found fn item `fn(u32) {f}`
= note: expected struct `Wrapper<i32>`
found struct `Wrapper<isize>`
note: function defined here
--> src/main.rs:4:4
|
4 | fn foo(_: fn(i32), _: Wrapper<i32>) {}
| ^^^ ---------- ---------------
```
Specifically, that double `expected .. found ..` which is very difficult to correlate to the types in the arguments. Also, the fact that "expected `i32`, found `isize`" and the other argument mismatch label don't even really explain what's going on here.
After this PR:
```
error[E0308]: arguments to this function are incorrect
--> $DIR/two-mismatch-notes.rs:10:5
|
LL | foo(f, w);
| ^^^
|
note: expected fn pointer, found fn item
--> $DIR/two-mismatch-notes.rs:10:9
|
LL | foo(f, w);
| ^
= note: expected fn pointer `fn(i32)`
found fn item `fn(u32) {f}`
note: expected struct `Wrapper`, found a different struct `Wrapper`
--> $DIR/two-mismatch-notes.rs:10:12
|
LL | foo(f, w);
| ^
= note: expected struct `Wrapper<i32>`
found struct `Wrapper<isize>`
note: function defined here
--> $DIR/two-mismatch-notes.rs:4:4
|
LL | fn foo(_: fn(i32), _: Wrapper<i32>) {}
| ^^^ ---------- ---------------
error: aborting due to previous error
For more information about this error, try `rustc --explain E0308`.
```
Yeah, it's a bit verbose, but much clearer IMO.
---
Open to discussions about how this could be further improved. Motivated by `@jyn514's` [tweet](https://mobile.twitter.com/joshuayn514/status/1558042020601634816) here.
|
|
Use an extensionless `x` script for non-Windows
#99992 added `x.sh` and `x.ps1`, but this broke my lazy `./xTAB` habit that used to get me to `./x.py`. If we rename `x.sh` to `x`, then I can adjust to `./xSPACE` for the same number of characters typed.
r? `@jyn514`
|
|
TaKO8Ki:suggest-removing-semicolon-after-impl-trait-items, r=compiler-errors
Suggest removing a semicolon after impl/trait items
fixes #99822
|
|
Enum variant ctor inherits the stability of the enum variant
Fixes #100399
Fixes #100420
Context #71481 for why enum variants don't need stability
|
|
Suggest the path separator when a dot is used on a trait
Fixes #100365.
`@rustbot` label A-diagnostics
r? diagnostics
|
|
Rustdoc-Json: Add `Path` type for traits.
Avoids using `Type` for trait fields, as a trait must always be a path, and not any other kind of type.
``@rustbot`` modify labels: +A-rustdoc-json +T-rustdoc
Closes #100106
|
|
make `clean::Item::span` return `Option` instead of dummy span
Fixes #100283
|
|
r=estebank
Only point out a single function parameter if we have a single arg incompatibility
Fixes #99635
|
|
update Miri
Fixes https://github.com/rust-lang/rust/issues/100424
|
|
|
|
r=compiler-errors
merge two test directories that mean the same thing
hopefully `hrtb` doesnt have a secret second meaning that i'm not aware of :laughing:
r? `@compiler-errors`
|
|
Give a helpful diagnostic when the next struct field has an attribute
Fixes #100461
|
|
Make `[rust] use-lld=true` work on windows
Before, it would fail with "error: ignoring unknown argument '-Wl,--icf=all'"
This option was introduced in https://github.com/rust-lang/rust/pull/99062 (well, technically https://github.com/rust-lang/rust/pull/99680)
See zulip thread: https://rust-lang.zulipchat.com/#narrow/stream/182449-t-compiler.2Fhelp/topic/rust-lld.3A.20error.3A.20ignoring.20unknown.20argument.20'-Wl.2C--icf.3Dall'
|
|
Remove more Clean trait implementations
Follow-up of https://github.com/rust-lang/rust/pull/99638.
r? ``@Dylan-DPC``
|
|
adapt test for msan message change
LLVM commit https://github.com/llvm/llvm-project/commit/057cabd997aeaef136e1e14f2ee645bd5bb197dd removed the function from the msan error message. This adapts our test accordingly.
Found via our experimental rust + llvm @ HEAD bot:
https://buildkite.com/llvm-project/rust-llvm-integrate-prototype/builds/12634#018289fe-b0bc-4bab-89b3-fb1d4e38f6db
|
|
Erase regions better in `promote_candidate`
Use `tcx.erase_regions` instead of manually walking through the substs.... this also makes the code slightly simpler :see_no_evil:
Fixes #100360
Fixes #89851
|
|
Fix HIR pretty printing of let else
Fixes #100373
Fixes #99318
Fixes #99319
|
|
rustdoc: Rename `@has FILE PATTERN` to `@hasraw FILE PATTERN`
Fixes #100354.
|
|
|
|
|
|
|
|
|
|
|
|
`@!has` (and `@!matches`) with two arguments used to treat the second
argument as a literal string of HTML code. Now, that feature has been
renamed into `@!hasraw` (and `@!matchesraw`), and the arity-2 `@!has`
version is an error.
These uses thought the second argument was being treated as an XPath, as
with the arity-3 version, but in fact was being treated as literal HTML.
Because these were checking for the *absence* of the string, the tests
silently did nothing -- an XPath string won't ever be showing up in the
test's generated HTML!
|
|
|
|
|
|
|
|
I think `@hasraw` is slightly clearer than `@hastext` since it is
actually matching against the raw HTML, not the text nodes.
|
|
|
|
Reasons:
1. It's shorter.
2. `@matches-literal` seems to contradict itself: a regex is
intrinsically not a literal match, while it is still a textual match.
|
|
See #100354 for the rationale.
|
|
Use llvm-libunwind="in-tree" for Fuchsia targets
With updates to Fuchsia CI's Zircon libraries #99833, we can introduce `llvm-libunwind="in-tree"` for Fuchsia targets. This PR restores functionality removed from https://github.com/rust-lang/rust/pull/93604#issuecomment-1136515651.
cc `@tmandry` `@djkoloski`
|