Commit Graph

226572 Commits

Author SHA1 Message Date
许杰友 Jieyou Xu (Joe)
adbfd0da68
Fix ICE for while loop with assignment condition with LHS place expr 2023-06-08 02:38:12 +08:00
Amanieu d'Antras
0304e0a5b0 Force all native libraries to be statically linked when linking a static binary 2023-06-07 19:30:37 +01:00
bors
a97c36dd2e Auto merge of #109005 - Nilstrieb:dont-forgor-too-much-from-cfg, r=petrochenkov
Remember names of `cfg`-ed out items to mention them in diagnostics

# Examples

## `serde::Deserialize` without the `derive` feature (a classic beginner mistake)

I had to slightly modify serde so that it uses explicit re-exports instead of a glob re-export. (Update: a serde PR was merged that adds the manual re-exports)

```
error[E0433]: failed to resolve: could not find `Serialize` in `serde`
   --> src/main.rs:1:17
    |
1   | #[derive(serde::Serialize)]
    |                 ^^^^^^^^^ could not find `Serialize` in `serde`
    |
note: crate `serde` has an item named `Serialize` but it is inactive because its cfg predicate evaluated to false
   --> /home/gh-Nilstrieb/.cargo/registry/src/index.crates.io-6f17d22bba15001f/serde-1.0.160/src/lib.rs:343:1
    |
343 | #[cfg(feature = "serde_derive")]
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
344 | pub use serde_derive::{Deserialize, Serialize};
    |                                     ^^^^^^^^^
    = note: the item is gated behind the `serde_derive` feature
    = note: see https://doc.rust-lang.org/cargo/reference/features.html for how to activate a crate's feature
```
(the suggestion is not ideal but that's serde's fault)

I already tested the metadata size impact locally by compiling the `windows` crate without any features. `800k`  -> `809k`

r? `@ghost`
2023-06-07 17:38:57 +00:00
clubby789
053e6b80c7 Remove accidental comment 2023-06-07 17:16:34 +00:00
Guillaume Gomez
3522baa8ba Migrate GUI colors test to original CSS color format 2023-06-07 17:42:04 +02:00
bors
b2807b2bf3 Auto merge of #112383 - Dylan-DPC:rollup-et2z6nt, r=Dylan-DPC
Rollup of 6 pull requests

Successful merges:

 - #112076 (Fall back to bidirectional normalizes-to if no subst-relate candidate in alias-relate goal)
 - #112122 (Add `-Ztrait-solver=next-coherence`)
 - #112251 (rustdoc: convert `if let Some()` that always matches to variable)
 - #112345 (fix(expand): prevent infinity loop in macro containing only "///")
 - #112359 (Respect `RUST_BACKTRACE` for delayed bugs)
 - #112382 (download-rustc: Fix `x test core` on MacOS)

r? `@ghost`
`@rustbot` modify labels: rollup
2023-06-07 14:32:11 +00:00
Dylan DPC
90c361c837
Rollup merge of #112382 - jyn514:test-download-rustc-macos, r=albertlarsan68
download-rustc: Fix `x test core` on MacOS

before, this hardcoded `.so` as the extension for dynamically linked objects, which is incorrect everywhere except linux.
2023-06-07 18:01:31 +05:30
Dylan DPC
1dc4b4001f
Rollup merge of #112359 - Nilstrieb:i-can-only-handle-so-many-backtraces, r=compiler-errors
Respect `RUST_BACKTRACE` for delayed bugs

Sometimes, especially with MIR validation, the backtraces from delayed bugs are noise and make it harder to look at them. Respect the environment variable and don't print it when the user doesn't want it.
2023-06-07 18:01:30 +05:30
Dylan DPC
42cf6da6af
Rollup merge of #112345 - bvanjoi:fix-112342, r=nilstrieb,est31
fix(expand): prevent infinity loop in macro containing only "///"

Fixes https://github.com/rust-lang/rust/issues/112342

Issue #112342 was caused by an infinity loop in `parse_tt_inner`, and the state of it is as follows:

- `matcher`: `[Sequence, Token(Doc), SequenceKleeneOpNoSep(op: ZeroOrMore), Eof]`

-  loop:

| Iteration | Action |
| - | - |
| 0   |  enter `Sequence`|
| 1    |  enter `Token(Doc)` and `mp.idx += 1` had been executed |
| 2   |  enter `SequenceKleeneOpNoSep` and reset `mp.idx` to `1` |
| 3   | enter `Token(Doc)` again|

To prevent the infinite loop, a check for whether it only contains `DocComment` in `check_lhs_no_empty_seq` had been added.
2023-06-07 18:01:30 +05:30
Dylan DPC
c6fda401f6
Rollup merge of #112251 - notriddle:notriddle/cleanup-inlining, r=GuillaumeGomez
rustdoc: convert `if let Some()` that always matches to variable
2023-06-07 18:01:29 +05:30
Dylan DPC
0b002eb906
Rollup merge of #112122 - compiler-errors:next-coherence, r=lcnr
Add `-Ztrait-solver=next-coherence`

Flag that conditionally uses the trait solver *only* during coherence, for more testing and/or eventual partial-migration onto the trait solver (in the medium- to long-term).

* This still uses the selection context in some of the coherence methods I think, so it's not "complete". Putting this up for review and/or for further work in-tree.
* I probably need to spend a bit more time making sure that we don't sneakily create any other infcx's during coherence that also need the new solver enabled.

r? `@lcnr`
2023-06-07 18:01:29 +05:30
Dylan DPC
cbe429c7a5
Rollup merge of #112076 - compiler-errors:bidirectional-alias-eq, r=lcnr
Fall back to bidirectional normalizes-to if no subst-relate candidate in alias-relate goal

Sometimes we get into the case where the choice of normalizes-to branch in alias-relate are both valid, but we cannot make a choice of which one to take because they are different -- either returning equivalent but permuted region constraints, or equivalent opaque type definitions but differing modulo normalization.

In this case, we can make progress by considering a fourth candidate where we compute both normalizes-to branches together and canonicalize that as a response. This is essentially the AND intersection of both normalizes-to branches. In an ideal world, we'd be returning something more like the OR intersection of both branches, but we have no way of representing that either for regions (maybe eventually) or opaques (don't see that happening ever).

This is incomplete, so like the subst-relate fallback it's only considered outside of coherence. But it doesn't seem like a dramatic strengthening of inference or anything, and is useful for helping opaque type inference succeed when the hidden type is a projection.

## Example

Consider the goal - `AliasRelate(Tait, <[i32; 32] as IntoIterator>::IntoIter)`.

We have three ways of currently solving this goal:
1. SubstRelate - fails because we can't directly equate the substs of different alias kinds.
2. NormalizesToRhs - `Tait normalizes-to <[i32; 32] as IntoIterator>::IntoIter`
    * Ends up infering opaque definition - `Tait := <[i32; 32] as IntoIterator>::IntoIter`
3. NormalizesToLhs - `<[i32; 32] as IntoIterator>::IntoIter normalizes-to Tait`
    * Find impl candidate, substitute the associated type - `std::array::IntoIter<i32, 32>`
    * Equate `std::array::IntoIter<i32, 32>` and `Tait`
        * Ends up infering opaque definition - `Tait := std::array::IntoIter<i32, 32>`

The problem here is that 2 and 3 are essentially both valid, since we have aliases that normalize on both sides, but due to lazy norm, they end up inferring different opaque type definitions that are only equal *after* normalizing them further.

---

r? `@lcnr`
2023-06-07 18:01:28 +05:30
Jakub Beránek
41f9f63de6
Use `--keep-stage also for the final build 2023-06-07 14:16:28 +02:00
León Orell Valerian Liehr
5b5d84fd6a
use wf::object_region_bounds 2023-06-07 13:29:36 +02:00
León Orell Valerian Liehr
3490a510d5
rustdoc: re-elide cross-crate default trait object lifetime bounds 2023-06-07 13:29:36 +02:00
jyn
a2ab47f1e5 download-rustc: Fix x test core on MacOS
before, this hardcoded `.so` as the extension for dynamically linked objects, which is incorrect
everywhere except linux
2023-06-07 06:16:30 -05:00
bors
e94bda3bf1 Auto merge of #111047 - compiler-errors:rtn-no-ty-ct-params, r=spastorino
Emit an error when return-type-notation is used with type/const params

These are not intended to be supported initially, even though the compiler supports them internally...
2023-06-07 09:03:33 +00:00
Jakub Beránek
14ed9fa01c
Avoid one rustc rebuild in the optimized build pipeline 2023-06-07 10:58:45 +02:00
bors
10b7e468f3 Auto merge of #96875 - SabrinaJewson:noop-waker, r=m-ou-se
Add `task::Waker::noop`

I have found myself reimplementing this function many times when I need a `Context` but don't have a runtime or `futures` to hand.

Prior art: [`futures::task::noop_waker`](https://docs.rs/futures/0.3/futures/task/fn.noop_waker.html) and [`futures::task::noop_waker_ref`](https://docs.rs/futures/0.3/futures/task/fn.noop_waker_ref.html)

Tracking issue: https://github.com/rust-lang/rust/issues/98286

Unresolved questions:
1. Should we also add `RawWaker::noop()`? (I don't think so, I can't think of a use case for it)
2. Should we also add `Context::noop()`? Depending on the future direction `Context` goes a "noop context" might not even make sense in future.
3. Should it be an associated constant instead? That would allow for `let cx = &mut Context::from_waker(&Waker::NOOP);` to work on one line which is pretty nice. I don't really know what the guideline is here.

r? rust-lang/libs-api `@rustbot` label +T-libs-api -T-libs
2023-06-07 06:04:32 +00:00
bors
b3dd578767 Auto merge of #111819 - nikarh:vita-improved, r=Amanieu
Improved std support for ps vita target

Fixed a couple of things in std support for ps vita via Vita SDK newlib oss implementation:

- Added missing hardware features to target spec
- Compile in thumb by default (newlib is also compiled in thumb)
- Fixed fs calls. Vita newlib has a not-very-posix dirent. Also vita does not expose inodes, it's stubbed as 0 in stat, and I'm stubbing it here for dirent (because vita newlibs's dirent doesn't even have that field)
- Enabled signal handlers for panic unwinding
- Dropped static link requirement from the platform support md. Also, rearranged sections to better stick with the template.
2023-06-07 03:20:15 +00:00
bohan
5eafab30ba feat(expand): emit note for doc comment in macro matcher 2023-06-07 10:20:36 +08:00
Nicholas Nethercote
853345635b Move mono_item_placement construction.
It's currently created in `place_inlined_mono_items` and then used in
`internalize_symbols`. This commit moves the creation to
`internalize_symbols`.
2023-06-07 11:02:15 +10:00
Nicholas Nethercote
1defd30764 Remove PlacedRootMonoItems::roots.
It's no longer used.
2023-06-07 10:27:00 +10:00
Nicholas Nethercote
8dbb3475b9 Split loop in place_inlined_mono_item.
This loop is doing two different things. For inlined items, it's adding
them to the CGU. For all items, it's recording them in
`mono_item_placements`.

This commit splits it into two separate loops. This avoids putting root
mono items into `reachable`, and removes the low-value check that
`roots` doesn't contain inlined mono items.
2023-06-07 10:27:00 +10:00
Nicholas Nethercote
fe3b646565 Merge the two loops in internalize_symbols.
Because they have a lot of overlap.
2023-06-07 10:27:00 +10:00
Nicholas Nethercote
392045b7e7 Make the two loops in internalize_symbols have the same form.
Because the next commit will merge them.
2023-06-07 10:27:00 +10:00
Nicholas Nethercote
9fd6d97915 Improve sorting in debug_dump.
Currently it sorts by symbol name, which is a mangled name like
`_ZN1a4main17hb29587cdb6db5f42E`, which leads to non-obvious orderings.

This commit changes it to use the existing
`items_in_deterministic_order`, which iterates in source code order.
2023-06-07 10:26:58 +10:00
bors
7b28a6b08a Auto merge of #111495 - Kobzol:dist-tests, r=Mark-Simulacrum
Run tests on PGO/LTO/BOLT optimized dist artifacts

This PR adds baisc tests for the optimized dist builds on x64 Linux and Windows. A subset of the test suite is run, so it's not perfect, but it's better than the status quo (which is basically no testing at all, apart from the perf bot on Linux).

r? `@ghost`
2023-06-07 00:14:06 +00:00
Jing Peng
ade6c36e53 fix
- remove useless commands from test Makefile
- do not unnecessarily remove metadata temporary files because they'll be managed by MaybeTempDir
- remove unused FailedRemove error introduced by this PR
2023-06-06 17:54:34 -04:00
Jing Peng
9b1a1e1d95 Write to stdout if - is given as output file
If `-o -` or `--emit KIND=-` is provided, output will be written
to stdout instead. Binary output (`obj`, `llvm-bc`, `link` and
`metadata`) being written this way will result in an error unless
stdout is not a tty. Multiple output types going to stdout will
trigger an error too, as they will all be mixded together.
2023-06-06 17:53:29 -04:00
bors
afab3662eb Auto merge of #112361 - matthiaskrgr:rollup-39zxrw1, r=matthiaskrgr
Rollup of 8 pull requests

Successful merges:

 - #111250 (Add Terminator conversion from MIR to SMIR, part #2)
 - #112310 (Add new Tier-3 targets: `loongarch64-unknown-none*`)
 - #112334 (Add myself to highfive rotation)
 - #112340 (remove `TyCtxt::has_error_field` helper method)
 - #112343 (Prevent emitting `missing_docs` for `pub extern crate`)
 - #112350 (Avoid duplicate type sanitization of local decls in borrowck)
 - #112356 (Fix comment for `get_region_var_origins`)
 - #112358 (Remove default visitor impl in region constraint generation)

r? `@ghost`
`@rustbot` modify labels: rollup
2023-06-06 21:28:34 +00:00
Matthias Krüger
63e0423cde
Rollup merge of #112358 - Nilstrieb:fancy-more-borrowck-cleanups, r=compiler-errors
Remove default visitor impl in region constraint generation

I wanted to group it together with other possibly minor borrowck cleanups but that's all I have right now so I rather put it up than forget about it before doing something else.

r? `@compiler-errors`
2023-06-06 22:00:21 +02:00
Matthias Krüger
53881f91b0
Rollup merge of #112356 - Nilstrieb:get-region-var-origins, r=compiler-errors
Fix comment for `get_region_var_origins`

#109753 changed the logic but not the comment.

r? `@compiler-errors`
2023-06-06 22:00:21 +02:00
Matthias Krüger
fd6efcf960
Rollup merge of #112350 - Nilstrieb:borrow-me-some-cleanups, r=compiler-errors
Avoid duplicate type sanitization of local decls in borrowck

The type of the local decl is already sanitized in `visit_local_decl`.
2023-06-06 22:00:20 +02:00
Matthias Krüger
38ddff516c
Rollup merge of #112343 - GuillaumeGomez:extern-crate-missing-docs, r=notriddle
Prevent emitting `missing_docs` for `pub extern crate`

Fixes #112308.

r? `@notriddle`
2023-06-06 22:00:20 +02:00
Matthias Krüger
e937fa49dd
Rollup merge of #112340 - lcnr:tyctxt-cleanup, r=compiler-errors
remove `TyCtxt::has_error_field` helper method
2023-06-06 22:00:20 +02:00
Matthias Krüger
319a905a92
Rollup merge of #112334 - fee1-dead-contrib:add-rotation, r=Nilstrieb
Add myself to highfive rotation
2023-06-06 22:00:19 +02:00
Matthias Krüger
157d0f03ab
Rollup merge of #112310 - loongarch-rs:bare-metal, r=WaffleLapkin
Add new Tier-3 targets: `loongarch64-unknown-none*`

This PR adds new Tier-3 targets `loongarch64-unknown-none*` that are introduced by MCP rust-lang/compiler-team#628
2023-06-06 22:00:19 +02:00
Matthias Krüger
1788d49789
Rollup merge of #111250 - spastorino:smir-terminator-2, r=oli-obk
Add Terminator conversion from MIR to SMIR, part #2

r? `@oli-obk`
2023-06-06 22:00:18 +02:00
Nilstrieb
70980929b4 Respect RUST_BACKTRACE for delayed bugs
Sometimes, especially with MIR validation, the backtraces from delayed
bugs are noise and make it harder to look at them. Respect the
environment variable and don't print it when the user doesn't want it.
2023-06-06 19:24:33 +00:00
Michael Howell
0f1aaef7e9 rustdoc: convert if let Some() that always matches to variable 2023-06-06 12:20:54 -07:00
Nilstrieb
459bd2cbde Remove default visitor impl in region constraint generation 2023-06-06 19:00:47 +00:00
Nilstrieb
5593e7e2ba Avoid duplicate type sanitization of local decls
The type of the local decl is already sanitized in `visit_local_decl`.
2023-06-06 18:52:47 +00:00
Nilstrieb
0e01088f07 Fix comment for get_region_var_origins 2023-06-06 18:50:38 +00:00
Michael Goulet
3ea7c512bd Fall back to bidirectional normalizes-to if no subst-eq in alias-eq goal 2023-06-06 18:44:22 +00:00
Michael Goulet
7a2cdf20e4 Move alias-relate to its own module 2023-06-06 18:44:22 +00:00
Michael Goulet
aabdeedc7c bless coherence test 2023-06-06 18:43:20 +00:00
Michael Goulet
3d4da98273 Make TraitEngine::new use the right solver, add compare mode 2023-06-06 18:43:20 +00:00
Michael Goulet
b637048a89 Add -Ztrait-solver=next-coherence 2023-06-06 18:43:20 +00:00
Michael Goulet
e0acff796a New trait solver is a property of inference context 2023-06-06 18:43:06 +00:00