Commit graph

138988 commits

Author SHA1 Message Date
bors
67d16171d7 Auto merge of #106364 - JakobDegen:top-down-inlining, r=cjgillot
Reenable limited top-down MIR inlining

Reverts most of #105119 and uses an alternative strategy to prevent exponential blowup. Specifically, we allow doing top-down inlining up to depth at most five, and for at most one call site per nested body.

r? `@cjgillot`
2023-01-02 22:52:58 +00:00
bors
23b1cc197a Auto merge of #106272 - clubby789:codegen-test-103840, r=nikic
Add codegen test for issue 103840

Closes #103840
2023-01-02 17:18:58 +00:00
bors
fb9dfa8cef Auto merge of #84762 - cjgillot:resolve-span-opt, r=petrochenkov
Encode spans relative to the enclosing item -- enable on nightly

Follow-up to #84373 with the flag `-Zincremental-relative-spans` set by default.

This PR seeks to remove one of the main shortcomings of incremental: the handling of spans.
Changing the contents of a function may require redoing part of the compilation process for another function in another file because of span information is changed.
Within one file: all the spans in HIR change, so typechecking had to be re-done.
Between files: spans of associated types/consts/functions change, so type-based resolution needs to be re-done (hygiene information is stored in the span).

The flag `-Zincremental-relative-spans` encodes local spans relative to the span of an item, stored inside the `source_span` query.

Trap: stashed diagnostics are referenced by the "raw" span, so stealing them requires to remove the span's parent.

In order to avoid too much traffic in the span interner, span encoding uses the `ctxt_or_tag` field to encode:
- the parent when the `SyntaxContext` is 0;
- the `SyntaxContext` when the parent is `None`.
Even with this, the PR creates a lot of traffic to the Span interner, when a Span has both a LocalDefId parent and a non-root SyntaxContext. They appear in lowering, when we add a parent to all spans, including those which come from macros, and during inlining when we mark inlined spans.

The last commit changes how queries of `LocalDefId` manage their cache. I can put this in a separate PR if required.

Possible future directions:
- validate that all spans are marked in HIR validation;
- mark macro-expanded spans relative to the def-site and not the use-site.
2023-01-02 13:10:16 +00:00
bors
f89003eda8 Auto merge of #106301 - notriddle:notriddle/dir-entry, r=GuillaumeGomez
rustdoc: use the regular arrow indicator for dir-entry CSS

This mostly reverts 468acca108, while still fixing the problem it fixed by using an internal list-style-position. It results in a slight change in the hover indicator, but nothing misleading.

Preview: http://notriddle.com/notriddle-rustdoc-demos/dir-entry/src/std/lib.rs.html

## Before

![image](https://user-images.githubusercontent.com/1593513/210104247-642e6df0-07d3-452a-a2ab-4c700bc22e0e.png)

## After

![image](https://user-images.githubusercontent.com/1593513/210104271-a3832784-1e4d-4516-983e-6ecb9051857b.png)
2023-01-02 10:21:53 +00:00
bors
d5a7ddd99f Auto merge of #106284 - estebank:merge-mut-errors, r=jyn514
Merge multiple mutable borrows of immutable binding errors

Fix #53466.
2023-01-02 07:30:23 +00:00
Jakob Degen
ee6503a706 Reenable limited top-down MIR inlining 2023-01-01 22:01:29 -08:00
Esteban Küber
545406528a Verbose suggestions 2023-01-01 21:33:23 -08:00
Michael Howell
399fe5d0cd rustdoc: add test case for dir entry summary position 2023-01-01 19:52:30 -07:00
Troy Neubauer
4cb9030a66
Implement fix for #67535 2023-01-01 18:26:28 -08:00
bors
e11cb36c75 Auto merge of #106349 - LeSeulArtichaut:dyn-star-tracking-issue, r=jackh726
Use the correct tracking issue for `dyn_star`

`#![feature(dyn_star)]` now has its own tracking issue, #102425.
2023-01-01 21:41:35 +00:00
Léo Lanteri Thauvin
6289fe2cf1 Use the correct tracking issue for dyn_star 2023-01-01 19:56:10 +01:00
bors
77429957a0 Auto merge of #106350 - GuillaumeGomez:gui-test-explanation-2, r=notriddle
Add comment explaining what docblock-table GUI test is about

r? `@notriddle`
2023-01-01 18:35:04 +00:00
Esteban Küber
5bfcfeee2a Merge multiple mutable borrows of immutable binding errors
Fix #53466.
2023-01-01 10:09:26 -08:00
Guillaume Gomez
d14e63665e Add comment explaining what docblock-table GUI test is about 2023-01-01 17:21:59 +01:00
bors
bb6e76df06 Auto merge of #106312 - tgross35:update-book-target, r=JohnTitor
Added link from Targets to Platform Support in the book

If you search the web for "rust targets", the first result is the [targets page](https://doc.rust-lang.org/nightly/rustc/targets/index.html). However, usually when searching for this I'm interested in seeing the available triples with host information, so I just added a link to the correct page.

The entire `Targets` chapter could probably be combined into one page, since its three subchapters each only have a tiny section (I'll do this if requested)
2023-01-01 05:20:48 +00:00
bors
c9825f7087 Auto merge of #106336 - matthiaskrgr:rollup-4p6bgwf, r=matthiaskrgr
Rollup of 4 pull requests

Successful merges:

 - #106280 (docs: add link to `Path::join` in `PathBuf::push`)
 - #106297 (rustdoc: merge scrape-help CSS)
 - #106328 (Add comment explaining what the GUI scrape-examples-fonts test is about)
 - #106334 (Fix tidy unittest.)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup
2022-12-31 23:22:06 +00:00
Matthias Krüger
0b3c3c9b64
Rollup merge of #106334 - ehuss:fix-tidy-unittests, r=jyn514
Fix tidy unittest.

The tidy unittests weren't compiling due to a change made a long while ago to the `Version` type.
2022-12-31 23:51:35 +01:00
Matthias Krüger
0a08ab129d
Rollup merge of #106328 - GuillaumeGomez:gui-test-explanation, r=notriddle
Add comment explaining what the GUI scrape-examples-fonts test is about

r? `@notriddle`
2022-12-31 23:51:35 +01:00
Matthias Krüger
17263f2fa1
Rollup merge of #106297 - notriddle:notriddle/scrape-help, r=GuillaumeGomez
rustdoc: merge scrape-help CSS
2022-12-31 23:51:34 +01:00
Eric Huss
59b80f598f Run cargo test on tidy itself. 2022-12-31 12:34:23 -08:00
bors
574b64a97f Auto merge of #106282 - Ezrashaw:merge-e0465, r=estebank
refactor: merge error code `E0465` into `E0464`

`E0465` is an undocumented and untested error code that is functionally identical to `E0464`. This PR merges `E0465` into `E0464`, thus documenting and testing another error code (#61137).

r? `@GuillaumeGomez` (not sure if you want to review this but it's relevant to my other PRs that you have reviewed)
2022-12-31 20:10:02 +00:00
Eric Huss
4620f82a13 Fix tidy unittest. 2022-12-31 11:52:16 -08:00
bors
726bbfc8f0 Auto merge of #106302 - compiler-errors:terr-coerce-w-infer, r=estebank
Suppress errors due to TypeError not coercing with inference variables

Fixes #75331
Fixes #68507
Fixes #82323

cc `@estebank`
2022-12-31 11:32:15 +00:00
Guillaume Gomez
b542f28d9b Add comment explaining what the GUI scrape-examples-fonts test is about 2022-12-31 11:15:42 +01:00
bors
96c1f338bb Auto merge of #106245 - estebank:mutability-suggestions, r=jyn514
Use verbose suggestions for mutability errors
2022-12-31 08:43:24 +00:00
Ezra Shaw
24b39ece2f
refactor: merge E0465 into E0464 2022-12-31 20:44:54 +13:00
Michael Goulet
7f930b4a54
Rollup merge of #106314 - jyn514:fix-panic, r=jyn514
Fix panic on `x build --help`

Fixes https://github.com/rust-lang/rust/issues/106313. This avoids trying to run `get_help` unless we actually need to see the paths that are available for the subcommand.

This originally regressed in https://github.com/rust-lang/rust/pull/106166.
2022-12-30 21:26:36 -08:00
Michael Goulet
96e32a49c9
Rollup merge of #106310 - compiler-errors:old-git, r=jyn514
Dont use `--merge-base` during bootstrap formatting subcommand

I use a development image with Ubuntu 20.04 LTS, which has git 2.25.

Recently, `./x.py test tidy --bless` regressed in #105702 because it uses the `--merge-base` option on `diff-index`, which was only introduced in git 2.30 (git/git@0f5a1d449b). Luckily, it can be replicated via two calls to `git merge-base` + `git diff-index`, so let's just use that.
2022-12-30 21:26:36 -08:00
Michael Goulet
93032e8112
Rollup merge of #106305 - jyn514:tail-args, r=Mark-Simulacrum
bootstrap: Get rid of tail_args in stream_cargo

Based on https://github.com/rust-lang/rust/pull/106303 for convenience.

r? ````@Mark-Simulacrum````
2022-12-30 21:26:35 -08:00
Michael Goulet
9644684dec
Rollup merge of #106295 - GuillaumeGomez:extend-scraped-examples-layout-test, r=notriddle
Extend scraped examples layout GUI test for position of buttons

This is a regression test for https://github.com/rust-lang/rust/pull/106279.

r? ````@notriddle````
2022-12-30 21:26:35 -08:00
Michael Goulet
81808b7baf
Rollup merge of #106286 - Nilstrieb:tidy-cowows, r=jyn514
Make tidy errors red

This makes it easier to see them (and makes people go owo).

I also changes the error codes check to not print too many things and use `tidy_error`.

r? ```@jyn514```
2022-12-30 21:26:34 -08:00
Michael Goulet
5b74a33b8d
Rollup merge of #106248 - dtolnay:revertupcastlint, r=jackh726
Revert "Implement allow-by-default `multiple_supertrait_upcastable` lint"

This is a clean revert of #105484.

I confirmed that reverting that PR fixes the regression reported in #106247. ~~I can't say I understand what this code is doing, but maybe it can be re-landed with a different implementation.~~ **Edit:** https://github.com/rust-lang/rust/issues/106247#issuecomment-1367174384 has an explanation of why #105484 ends up surfacing spurious `where_clause_object_safety` errors. The implementation of `where_clause_object_safety` assumes we only check whether a trait is object safe when somebody actually uses that trait with `dyn`. However the implementation of `multiple_supertrait_upcastable` added in the problematic PR involves checking *every* trait for whether it is object-safe.

FYI `@nbdd0121` `@compiler-errors`
2022-12-30 21:26:34 -08:00
Michael Goulet
fad73392dc
Rollup merge of #106232 - maurer:transparent-subst, r=rcvalle
CFI: Monomorphize transparent ADTs before typeid

Monomorphise `#[repr(transparent)]` parameterized ADTs before turning them into an Itanium mangled String.

`#[repr(transparent)]` ADTs currently use the single field to represent them in their CFI type ID to ensure that they are compatible. However, if that type involves a type parameter instantiated at the ADT level, as in `ManuallyDrop`, this will currently ICE as the `Parameter` type cannot be mangled. Since this happens at lowering time, it should always be concrete after substitution.

Fixes #106230
2022-12-30 21:26:33 -08:00
Joshua Nelson
90a10cae4b Revert "Auto merge of #105058 - Nilstrieb:no-merge-commits-for-you-only-bors-is-allowed-to-do-that, r=jyn514"
This reverts commit 4839886f0a, reversing
changes made to ce85c98575.
2022-12-31 01:55:24 +00:00
Joshua Nelson
6d2fe52dc5 Fix panic on x build --help 2022-12-31 00:53:46 +00:00
Trevor Gross
a582919b66 Added link from Targets to Platform Support in the book 2022-12-30 18:06:13 -05:00
bors
4839886f0a Auto merge of #105058 - Nilstrieb:no-merge-commits-for-you-only-bors-is-allowed-to-do-that, r=jyn514
Add tidy check to deny merge commits

This will prevent users with the pre-push hook from pushing a merge commit.

Exceptions are added for subtree updates. These exceptions are a little hacky and may be non-exhaustive but can be extended in the future.

I added a link to `@jyn514's` blog post for the error case because that's the best resource to solve merge commits. But it would probably be better if it was integrated into https://rustc-dev-guide.rust-lang.org/git.html#no-merge-policy, then we could link that instead.

r? `@jyn514`
2022-12-30 22:55:51 +00:00
Michael Goulet
e2c5999265 Dont use --merge-base during bootstrap formatting subcommand 2022-12-30 22:44:01 +00:00
Nilstrieb
75b3ee26cb Make tidy errors red
This makes it easier to see them (and makes people go owo).
2022-12-30 21:47:11 +01:00
Joshua Nelson
9dfe50440e bootstrap: Get rid of tail_args in stream_cargo 2022-12-30 20:38:34 +00:00
Joshua Nelson
c8c849ef5c Use more consistent progress messages in bootstrap
Before:
```
Testing ["rustc_interface"] stage0 (aarch64-unknown-linux-gnu -> aarch64-unknown-linux-gnu)
```

After:
```
Testing {rustc_interface} stage0 (aarch64-unknown-linux-gnu -> aarch64-unknown-linux-gnu)
```

Note there is a slight consistency between `build` and `test`: The
former doesn't print "compiler artifacts". It would be annoying to fix
and doesn't hurt anything, so I left it be.

```
; x t rustc_interface --stage 0 --dry-run
Testing {rustc_interface} stage0 (aarch64-unknown-linux-gnu -> aarch64-unknown-linux-gnu)
; x b rustc_interface --stage 0 --dry-run
Building {rustc_interface} stage0 compiler artifacts (aarch64-unknown-linux-gnu -> aarch64-unknown-linux-gnu)
```
2022-12-30 20:37:48 +00:00
Michael Goulet
f6b45e399e Suppress errors due to TypeError not coercing with inference variables 2022-12-30 19:53:34 +00:00
Nilstrieb
878af66b53 Add build_helper crate to share code between tidy and bootstrap 2022-12-30 20:41:47 +01:00
Michael Howell
dd0f5882d9 rustdoc: use the regular arrow indicator for dir-entry CSS
This mostly reverts 468acca108, while still
fixing the problem it fixed by using an internal list-style-position. It
results in a slight change in the hover indicator, but nothing misleading.
2022-12-30 11:58:58 -07:00
Gary Guo
4271ed48e9
Regression test for issue 106247 2022-12-30 10:14:26 -08:00
Michael Howell
ac0bb74adb rustdoc: merge scrape-help CSS 2022-12-30 10:43:06 -07:00
Matthias Krüger
3f9909a7c4
Rollup merge of #106273 - notriddle:notriddle/source-content-overflow, r=GuillaumeGomez
rustdoc: remove redundant CSS `.source .content { overflow: visible }`

When added in 7669f04fb0 / #16066, the page itself was set to scroll. Now it's set so that the `example-wrap` is scrolling inside the page, so the overflow setting for the content is irrelevant.
2022-12-30 17:01:40 +01:00
Guillaume Gomez
87bc29d02b Extend scraped examples layout GUI test for position of buttons 2022-12-30 16:27:56 +01:00
Nilstrieb
f9cc011269 Tidy up tidy error codes check 2022-12-30 12:17:17 +01:00
Nilstrieb
ad9806b73c Checkout master branch in CI 2022-12-30 11:23:01 +01:00