| Age | Commit message (Collapse) | Author | Lines |
|
Rollup of 6 pull requests
Successful merges:
- #104269 (Fix hang in where-clause suggestion with `predicate_can_apply`)
- #104286 (copy doc output files by format)
- #104509 (Use obligation ctxt instead of dyn TraitEngine)
- #104721 (Remove more `ref` patterns from the compiler)
- #104744 (rustdoc: give struct fields CSS `display: block`)
- #104751 (Fix an ICE parsing a malformed attribute.)
Failed merges:
r? `@ghost`
`@rustbot` modify labels: rollup
|
|
Fix an ICE parsing a malformed attribute.
Fixes #104620.
r? `@petrochenkov`
|
|
r=GuillaumeGomez
rustdoc: give struct fields CSS `display: block`
Fixes #104737
|
|
Remove more `ref` patterns from the compiler
r? `@oli-obk`
Previous PR: https://github.com/rust-lang/rust/pull/104500
|
|
Use obligation ctxt instead of dyn TraitEngine
r? `@lcnr`
|
|
copy doc output files by format
This pr provides copying doc outputs by checking output format without removing output directory on each trigger.
Resolves #103785
|
|
Fix hang in where-clause suggestion with `predicate_can_apply`
Using `predicate_may_hold` during error reporting causes an evaluation overflow, which (because we use `evaluate_obligation_no_overflow`) then causes the predicate to need to be re-evaluated locally, which results in a hang.
... but since the "add a where clause" suggestion is best-effort, just throw any overflow errors. No need for 100% accuracy.
r? `@lcnr` who has been thinking about overflows... Let me know if you want more context about this issue, and as always, feel free to reassign.
Fixes #104225
|
|
Reduce `PlaceBuilder` cloning
Some API tweaks with an eye towards reducing clones.
|
|
|
|
|
|
|
|
optimize field ordering by grouping m*2^n-sized fields with equivalently aligned ones
```rust
use std::ptr::addr_of;
use std::mem;
struct Foo {
word: u32,
byte: u8,
ary: [u8; 4]
}
fn main() {
let foo: Foo = unsafe { mem::zeroed() };
println!("base: {:p}\nword: {:p}\nbyte: {:p}\nary: {:p}", &foo, addr_of!(foo.word), addr_of!(foo.byte), addr_of!(foo.ary));
}
```
prints
```
base: 0x7fffc1a8a668
word: 0x7fffc1a8a668
byte: 0x7fffc1a8a66c
ary: 0x7fffc1a8a66d
```
I.e. the `u8` in the middle causes the array to sit at an odd offset, which might prevent optimizations, especially on architectures where unaligned loads are costly.
Note that this will make field ordering niche-dependent, i.e. a `Bar<T>` with `T=char` and `T=u32` may result in different field order, this may break some code that makes invalid assumptions about `repr(Rust)` types.
|
|
Rollup of 6 pull requests
Successful merges:
- #103488 (Allow opaque types in trait impl headers and rely on coherence to reject unsound cases)
- #104359 (Refactor must_use lint into two parts)
- #104612 (Lower return type outside async block creation)
- #104621 (Fix --extern library finding errors)
- #104647 (enable fuzzy_provenance_casts lint in liballoc and libstd)
- #104750 (Bump `fd-lock` in `bootstrap` again)
Failed merges:
- #104732 (Refactor `ty::ClosureKind` related stuff)
r? `@ghost`
`@rustbot` modify labels: rollup
|
|
|
|
|
|
|
|
Bump `fd-lock` in `bootstrap` again
Followup to https://github.com/rust-lang/rust/pull/103778
Sorry for the quick succession but this fixes one more building issue for Tier 3 `windows-gnullvm` that I have previously missed, and it would be nice to have it in the release.
|
|
enable fuzzy_provenance_casts lint in liballoc and libstd
r? ````@thomcc````
|
|
Fix --extern library finding errors
- `crate_name` is not specified/passed to `metadata_crate_location_unknown_type`
https://github.com/rust-lang/rust/blob/c493bae0d8efd75723460ce5c371f726efa93f15/compiler/rustc_error_messages/locales/en-US/metadata.ftl#L274-L275
- `metadata_lib_filename_form` is missing `$`
- Add additional check to ensure that library is file
Testing
1. Create file `a.rs`
```rust
extern crate t;
fn main() {}
```
1. Create empty file `x`
1. Create empty directory `y`
1. Run
```sh
$ rustc -o a a.rs --extern t=x
$ rustc -o a a.rs --extern t=y
```
Both currently panic with stable.
|
|
Lower return type outside async block creation
This allows feeding a different output type to async blocks with a different `ImplTraitContext`. Spotted this while working on #104321
|
|
Refactor must_use lint into two parts
Before, the lint did the checking for `must_use` and pretty printing the types in a special format in one pass, causing quite complex and untranslatable code.
Now the collection and printing is split in two. That should also make it easier to translate or extract the type pretty printing in the future.
Also fixes an integer overflow in the array length pluralization
calculation.
fixes #104352
|
|
Allow opaque types in trait impl headers and rely on coherence to reject unsound cases
r? ````@lcnr````
fixes #99840
|
|
Update cargo
7 commits in eb5d35917b2395194593c9ca70c3778f60c1573b..ba607b23db8398723d659249d9abf5536bc322e5 2022-11-17 22:08:43 +0000 to 2022-11-22 20:52:39 +0000
- Fix failure to parse rustc's JSON output if it is too nested (rust-lang/cargo#11368)
- Add suggestions when `cargo add` multiple packages (rust-lang/cargo#11186)
- Update mod.rs (rust-lang/cargo#11395)
- Fix typo `try use` -> `try to use` (rust-lang/cargo#11394)
- Add warning when `cargo tree -i <spec>` can not find packages (rust-lang/cargo#11377)
- Clean profile, patch, and replace in cargo remove (rust-lang/cargo#11194)
- chore: Upgrade miow (rust-lang/cargo#11391)
|
|
Fixes #104620.
|
|
7 commits in eb5d35917b2395194593c9ca70c3778f60c1573b..ba607b23db8398723d659249d9abf5536bc322e5
2022-11-17 22:08:43 +0000 to 2022-11-22 20:52:39 +0000
- Fix failure to parse rustc's JSON output if it is too nested (rust-lang/cargo#11368)
- Add suggestions when `cargo add` multiple packages (rust-lang/cargo#11186)
- Update mod.rs (rust-lang/cargo#11395)
- Fix typo `try use` -> `try to use` (rust-lang/cargo#11394)
- Add warning when `cargo tree -i <spec>` can not find packages (rust-lang/cargo#11377)
- Clean profile, patch, and replace in cargo remove (rust-lang/cargo#11194)
- chore: Upgrade miow (rust-lang/cargo#11391)
|
|
Rollup of 7 pull requests
Successful merges:
- #101368 (Forbid inlining `thread_local!`'s `__getit` function on Windows)
- #102293 (Add powerpc64-ibm-aix as Tier-3 target)
- #104717 (Add failing test for projections used as const generic)
- #104720 (rustdoc: remove no-op CSS `.popover::before / a.test-arrow { display: inline-block }`)
- #104722 (Speed up mpsc_stress test)
- #104724 (Fix `ClosureKind::to_def_id`)
- #104728 (Use `tcx.require_lang_item` instead of unwrapping lang items)
Failed merges:
r? `@ghost`
`@rustbot` modify labels: rollup
|
|
Followup to https://github.com/rust-lang/rust/pull/103778
Sorry for the quick succession but this fixes one more building issue for Tier 3 `windows-gnullvm` that I have previously missed, and it would be nice to have it in the release.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
r=compiler-errors
Use `tcx.require_lang_item` instead of unwrapping lang items
I clearly remember esteban telling me that there is `require_lang_item` but he was from a phone atm and I couldn't find it, so I didn't use it. Stumbled on it today, so here we are :)
|
|
Fix `ClosureKind::to_def_id`
`Fn` and `FnOnce` were mixed up in https://github.com/rust-lang/rust/pull/99131.
|
|
Speed up mpsc_stress test
See https://rust-lang.zulipchat.com/#narrow/stream/122651-general/topic/mpsc_stress for context
r? windows
|
|
r=GuillaumeGomez
rustdoc: remove no-op CSS `.popover::before / a.test-arrow { display: inline-block }`
Since this box is absolutely positioned, its display type is [blockified] anyway. We just need to make sure it isn't `display: none`.
[blockified]: https://www.w3.org/TR/css-display-3/#transformations
|
|
GuillaumeGomez:test-projection-used-as-const-generic, r=oli-obk
Add failing test for projections used as const generic
Based on the experiment done in https://github.com/rust-lang/rust/pull/104443, we realized it's currently not possible to support projections in const generics. More information about it in https://github.com/rust-lang/rust/pull/104443#discussion_r1029375633.
This PR adds the UI test in any case so we can gather data in order to work towards adding `TyAlias` into the ABI in the future.
r? ``@oli-obk``
|
|
Add powerpc64-ibm-aix as Tier-3 target
This is part of the effort mentioned in https://github.com/rust-lang/compiler-team/issues/553.
A reference to these options are definitions from [clang](https://github.com/llvm/llvm-project/blob/ad6fe32032a6229e0c40510e9bed419a01c695b3/clang/lib/Basic/Targets/PPC.h#L414-L448) and [llvm](https://github.com/llvm/llvm-project/blob/main/llvm/lib/Target/PowerPC/PPCTargetMachine.cpp).
AIX has a system `ld` but [its options and behaviors](https://www.ibm.com/docs/en/aix/7.3?topic=l-ld-command) are different from GNU ld. Thanks to ``@bzEq`` for contributing the linking args.
|
|
Forbid inlining `thread_local!`'s `__getit` function on Windows
Sadly, this will make things slower to avoid UB in an edge case, but it seems hard to avoid... and really whenever I look at this code I can't help but think we're asking for trouble.
It's pretty dodgy for us to leave this as a normal function rather than `#[inline(never)]`, given that if it *does* get inlined into a dynamically linked component, it's extremely unsafe (you get some other thread local, or if you're lucky, crash). Given that it's pretty rare for people to use dylibs on Windows, the fact that we haven't gotten bug reports about it isn't really that convincing. Ideally we'd come up with some kind of compiler solution (that avoids paying for this cost when static linking, or *at least* for use within the same crate...), but it's not clear what that looks like.
Oh, and because all this is only needed when we're implementing `thread_local!` with `#[thread_local]`, this patch adjusts the `cfg_attr` to be `all(windows, target_thread_local)` as well.
r? ``@ChrisDenton``
See also #84933, which is about improving the situation.
|
|
Simd contains fix
Fixes #104726
The bug was introduced by an improvement late in the original PR (#103779) which added the backtracking when the last and first byte of the needle were the same. That changed the meaning of the variable for the last probe offset, which I should have split into the last byte offset and last probe offset. Not doing so lead to incorrect loop conditions.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Update Clippy
r? `@Manishearth`
Sorry for taking so long. There were so many blockers and so little time. This situation should be mitigated with #104007 in the future.
|
|
|