Commit graph

120716 commits

Author SHA1 Message Date
Fabian Wolff
e7a1186c6d Fix ICE with #[repr(simd)] on enum 2021-06-18 21:39:53 +02:00
bors
312b894cc1 Auto merge of #85421 - Smittyvb:rm_pushpop_unsafe, r=matthewjasper
Remove some last remants of {push,pop}_unsafe!

These macros have already been removed, but there was still some code handling these macros. That code is now removed.
2021-06-18 14:17:53 +00:00
bors
1989b9a0b5 Auto merge of #86428 - RalfJung:miri, r=RalfJung
update Miri

Fixes https://github.com/rust-lang/rust/issues/86409
2021-06-18 11:04:59 +00:00
Ralf Jung
124b944edb update Miri 2021-06-18 09:56:37 +02:00
bors
966361fe49 Auto merge of #86322 - trinity-1686a:rustdoc-fix-overflow-recursive-deref, r=jyn514
fix rustdoc stack overflow on mutually recursive Deref

fix #85095
fix #85037
2021-06-18 07:49:41 +00:00
bors
1a462831ad Auto merge of #86385 - JohnTitor:use-attrvec, r=davidtwco
Use `AttrVec` for `Arm`, `FieldDef`, and `Variant`

Uses `AttrVec` for `Arm`, `FieldDef`, and `Variant`, i.e., where the size of the vector can be empty often.
Skips `Crate` and `Item` because I think they may have the attributes on common cases and need more work outside of `rustc_ast` (e.g. rustc_expand needs a lot of tweaks). But if it's reasonable to change, I'm happy to do so.

Fixes #77662
2021-06-18 02:00:18 +00:00
Mara Bos
0274401f93
Rollup merge of #86401 - FabianWolff:issue-83512, r=LeSeulArtichaut
Fix ICE when using `#[doc(keyword = "...")]` on non-items

This pull request fixes #83512. The code for checking attributes calls `expect_item()` when it shouldn't, thus causing an ICE. I have implemented a proper check for the node kind, so that an error is reported instead of the ICE.
2021-06-17 23:41:02 +02:00
bors
e062e5d34e Auto merge of #83572 - pkubaj:patch-1, r=nagisa
Add support for powerpc64le-unknown-freebsd
2021-06-17 18:06:44 +00:00
Fabian Wolff
e9e844f44c Move regression test for #83512 into doc_keyword.rs 2021-06-17 17:28:55 +02:00
bors
4d3ce2e7da Auto merge of #86399 - JohnTitor:rollup-qlm2dvz, r=JohnTitor
Rollup of 7 pull requests

Successful merges:

 - #85663 (Document Arc::from)
 - #85802 (Rename IoSlice(Mut)::advance to advance_slice and add IoSlice(Mut)::advance)
 - #85970 (Remove methods under Implementors on trait pages)
 - #86340 (Use better error message for hard errors in CTFE)
 - #86343 (Do not emit invalid suggestions on multiple mutable borrow errors)
 - #86355 (Remove invalid suggestions for assoc consts on placeholder type error)
 - #86389 (Make `sum()` and `product()` documentation hyperlinks refer to `Iterator` methods.)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup
2021-06-17 15:12:56 +00:00
Fabian Wolff
2cedd86b1c Fix ICE when using #[doc(keyword = "...")] on non-items 2021-06-17 16:45:26 +02:00
Yuki Okushi
aff7994740
Rollup merge of #86355 - JohnTitor:issue-82158, r=estebank
Remove invalid suggestions for assoc consts on placeholder type error

Fixes #82158
This also moves some tests to typeck.
r? ``@estebank``
2021-06-17 21:56:45 +09:00
Yuki Okushi
afe70ee440
Rollup merge of #86343 - JohnTitor:issue-85581, r=estebank
Do not emit invalid suggestions on multiple mutable borrow errors

Fixes #85581
2021-06-17 21:56:44 +09:00
Yuki Okushi
c062f3dddd
Rollup merge of #86340 - Smittyvb:ctfe-hard-error-message, r=RalfJung
Use better error message for hard errors in CTFE

I noticed this while working on #86255: currently the same message is used for hard errors and soft errors in CTFE. This changes the error messages to make hard errors use a message that indicates the reality of the situation correctly, since usage of the constant is never allowed when there was a hard error evaluating it. This doesn't affect the behaviour of these error messages, only the content.

This changes the error logic to check if the error should be hard or soft where it is generated, instead of where it is emitted, to allow this distinction in error messages.
2021-06-17 21:56:43 +09:00
Yuki Okushi
9521da7179
Rollup merge of #85970 - jsha:remove-methods-implementors, r=GuillaumeGomez
Remove methods under Implementors on trait pages

As discussed at https://github.com/rust-lang/rust/issues/84326#issuecomment-842652412.

On a trait page, the "Implementors" section currently lists all methods of each implementor. That duplicates the method definitions on the trait itself, and is usually not very useful. So the implementors are collapsed by default. This PR changes rustdoc to just not render them at all. Any documentation specific to an implementor can be found by clicking through to the implementor's page.

This moves the "portability" info inside the `<summary>` tags so it is still visible on trait pages (as originally implemented in #79201). That also means it will be visible on struct/enum pages when methods are collapsed.

Add `#[doc(hidden)]` to all implementations of `Iterator::__iterator_get_unchecked` that didn't already have it. Otherwise, due to #86145, the structs/enums with those implementations would generate documentation for them, and that documentation would have a broken link into the Iterator page. Those links were already "broken" but not detected by the link-checker, because they pointed to one of the Implementors on the Iterator page, which happened to have the right anchor name.

This reduces the Read trait's page size from 128kB to 68kB (uncompressed) and from 12,125 bytes to 9,989 bytes (gzipped
Demo:

https://hoffman-andrews.com/rust/remove-methods-implementors/std/string/struct.String.html#trait-implementations
https://hoffman-andrews.com/rust/remove-methods-implementors/std/io/trait.Read.html#implementors

r? `@GuillaumeGomez`
2021-06-17 21:56:42 +09:00
bors
0ef2b4a29b Auto merge of #85755 - b-naber:unexpected_concrete_region, r=nikomatsakis
Replace parent substs of associated types with inference vars in borrow checker

Fixes https://github.com/rust-lang/rust/issues/83190
Fixes https://github.com/rust-lang/rust/issues/78450

When we normalize an associated type that refers to an opaque type, it can happen that the substs of the associated type do not occur in the projection (they are parent substs). We previously didn't replace those substs with inference vars, which left a concrete region after all regions should have already been replaced with inference vars and triggered a `delay_span_bug`. After we normalize the opaque type, we now try to replace any remaining concrete regions with inference vars.
2021-06-17 12:31:56 +00:00
bors
cb3c4ee718 Auto merge of #86164 - FabianWolff:issue-86053, r=davidtwco
Handle C-variadic arguments properly when reporting region errors

This pull request fixes #86053. The issue is that for a C-variadic function
```rust
#![feature(c_variadic)]
unsafe extern "C" fn foo(_: (), ...) {}
```
`foo`'s signature will contain only the first parameter (and have `c_variadic` set to `true`), whereas its body has a second argument (a `hir::Pat` for the `...`).

The code for reporting region errors iterates over the body's parameters and tries to fetch the corresponding parameter from the signature; this causes an out-of-bounds ICE for the `...` (though not in the example above, because there are no region errors to report).

I have simply restricted the iteration over the body parameters to exclude `...`, which is fine because `...` cannot cause a region error.
2021-06-17 06:34:12 +00:00
Jacob Hoffman-Andrews
bf81e139af Restore details for Impls on Foreign Types
These were previously removed along with the details in the
"Implementors" section of trait pages. But for "Implementations on
Foreign Types," we need to include the details because they will not be
documented anywhere else.
2021-06-16 22:48:31 -07:00
Jacob Hoffman-Andrews
2ac5c1721a Fix target highlighting in rustdoc.
Also factor out outer_version and const_outer_version into
render_rightside.
2021-06-16 22:48:23 -07:00
Jacob Hoffman-Andrews
c4fa6d5827 Move anchor earlier in the DOM for easier layout 2021-06-16 22:47:46 -07:00
Jacob Hoffman-Andrews
5de1391b88 Factor out render_rightside
This covers rendering of stability_since and the srclink across methods
and trait implementations, so their DOM representation is consistent.
2021-06-16 22:46:53 -07:00
Jacob Hoffman-Andrews
593d6d1cb1 Make portability part of the summary.
That means it will be visible under "Implementors" on trait pages, and
under "Implementations" on struct/enum pages, even when all methods are
collapsed.

Switch to a float layout for rightside elements.
2021-06-16 22:20:25 -07:00
Jacob Hoffman-Andrews
bff4f073c8 Use render_impl_summary when rendering traits. 2021-06-16 22:08:44 -07:00
Jacob Hoffman-Andrews
ce6472987d Remove methods under Implementors on trait pages
These were hidden by default, and duplicated information already on the
page anyhow.

Also remove the "Auto-hide trait implementors of a trait" setting,
which is not needed anymore.
2021-06-16 22:08:36 -07:00
Yuki Okushi
4f8e0ebcc5
Use AttrVec for Arm, FieldDef, and Variant 2021-06-17 08:04:54 +09:00
Yuki Okushi
129723553b
Rollup merge of #86361 - GuillaumeGomez:missing-backslashes, r=jsha
Add missing backslashes to prevent unwanted newlines in rustdoc HTML

Just adding some forgotten backslashes.

r? `@jsha`
2021-06-17 05:55:01 +09:00
Yuki Okushi
b5c3ef66e6
Rollup merge of #86260 - jsha:expand-methods, r=GuillaumeGomez
Open trait implementations' toggles by default.

This makes it possible to use Ctrl-F to find methods defined in traits.

As discussed in #85923. This modifies the approach suggested in #40363, but still achieves the goal of skimmability. For new users who aren't familiar with all the traits, their methods are readily visible and searchable. For experienced users who prefer to skim the list of all traits, there are two options: the "collapse all" shortcut, and the "auto hide trait implementations" setting.

Demo https://hoffman-andrews.com/rust/expand-methods/std/string/struct.String.html#trait-implementations

r? `@GuillaumeGomez`
2021-06-17 05:54:56 +09:00
Yuki Okushi
4ff55ecf04
Rollup merge of #86104 - FabianWolff:issue-86085, r=davidtwco
Fix span calculation in format strings

This pull request fixes #86085. The ICE described there is due to an error in the span calculation inside format strings, if the format string is the result of a macro invocation:
```rust
fn main() {
    format!(concat!("abc}"));
}
```
currently produces:
```
error: invalid format string: unmatched `}` found
 --> test.rs:2:17
  |
2 |     format!(concat!("abc}"));
  |                 ^ unmatched `}` in format string
```
which is obviously incorrect. This happens because the span of the entire `concat!()` is combined with the _relative_ location of the unmatched `` `}` `` in the _result_ of the macro invocation (i.e. 4).

In #86085, this has led to a span that starts or ends in the middle of a multibyte character, but the root cause was the same. This pull request fixes the problem.
2021-06-17 05:54:52 +09:00
Jacob Hoffman-Andrews
62658bfc22 Open trait implementations' toggles by default.
This makes it possible to use Ctrl-F to find methods defined in traits.
2021-06-16 10:24:59 -07:00
Trinity Pointard
5f7d44171d rename test-cases 2021-06-16 14:42:51 +02:00
Guillaume Gomez
a2a006d1cc Add missing backslashes to prevent unwanted backlines in rustdoc HTML 2021-06-16 14:39:51 +02:00
bors
8daad743c4 Auto merge of #86332 - rylev:fix-ice-docalias, r=GuillaumeGomez
Fix ICE when doc aliases were put on function params

Fixes #86239

r? `@GuillaumeGomez`
2021-06-16 10:01:20 +00:00
Yuki Okushi
fb06d9e0cd
Move some typeck-related tests to the typeck dir 2021-06-16 19:01:05 +09:00
Yuki Okushi
d828eadd7a
Remove invalid suggestions for assoc consts on placeholder type error 2021-06-16 18:57:53 +09:00
Yuki Okushi
98d58420c1
Rollup merge of #86327 - GuillaumeGomez:safe-intrinsics, r=lqd
Don't mark "safe" intrinsics as unsafe

A good example of this is [intrinsics::abort](https://doc.rust-lang.org/nightly/core/intrinsics/fn.abort.html).

Before:

![Screenshot from 2021-06-15 14-58-42](https://user-images.githubusercontent.com/3050060/122056942-65ddad00-cdea-11eb-829e-5f5e258387de.png)

After:

![Screenshot from 2021-06-15 14-59-22](https://user-images.githubusercontent.com/3050060/122056956-6aa26100-cdea-11eb-94d8-e18b4956cfa4.png)

cc ``@jyn514``
r? ``@lqd``
2021-06-16 13:31:12 +09:00
Yuki Okushi
daee58cab8
Rollup merge of #86293 - GuillaumeGomez:filter-gui-tests-run, r=jsha
Allow to run only a few GUI tests

It allows to specify only one (or more) GUI tests. Considering the tests are not super fast to run, this is very useful for development.

cc `@Mark-Simulacrum`
r? `@jsha`
2021-06-16 13:31:11 +09:00
Yuki Okushi
5387b2444f
Rollup merge of #86280 - JohnTitor:issue-76510, r=oli-obk
Add a regression test for issue-76510

Fixed by #78407, closes #76510
r? ``@oli-obk``
2021-06-16 13:31:09 +09:00
Yuki Okushi
9fcbbbb1fb
Rollup merge of #86242 - BoxyUwU:rustdoc-const-evaluatable-ice, r=oli-obk
rustdoc- dont ICE on `ConstEvaluatable` predicates

Fixes #77647

rustdoc doesn't need to be handling these as you cant write them, they just get added implicitly when you write a where clause containing an expression.
2021-06-16 13:31:08 +09:00
Yuki Okushi
163dbda22b
Rollup merge of #85283 - Swatinem:ordered-profraw, r=tmandry
Avoid possible filename collision in coverage tests

Previously, coverage tests were writing profiler data to files based on
their pid. As rustdoc spawns each doctest as its own process, it might
be possible in rare cases that a pid is being reused which would cause
a file to be overwritten, leading to incorrect coverage results.

should help with #83262

r? `@tmandry`
2021-06-16 13:31:04 +09:00
Yuki Okushi
c8a8a23a31
Do not emit invalid suggestions on multiple mutable borrow errors 2021-06-16 09:47:37 +09:00
Smitty
4fe4ff95f6 Use better error message for hard errors in CTFE
Currently the same message is used for hard errors and soft errors. This
makes hard errors use a message that indicates the reality of the
situation correctly, since usage of the constant is never allowed when
there was a hard error evaluating it.
2021-06-15 19:16:10 -04:00
Guillaume Gomez
f6830403b3 Add test for safe intrinsics 2021-06-15 22:47:26 +02:00
bors
607d6b00d4 Auto merge of #86321 - JohnTitor:rollup-q61c8q4, r=JohnTitor
Rollup of 10 pull requests

Successful merges:

 - #80269 (Explain non-dropped sender recv in docs)
 - #82179 (Add functions `Duration::try_from_secs_{f32, f64}`)
 - #85608 (Stabilize `ops::ControlFlow` (just the type))
 - #85792 (Refactor windows sockets impl methods)
 - #86220 (Improve maybe_uninit_extra docs)
 - #86277 (Remove must_use from ALLOWED_ATTRIBUTES)
 - #86285 (⬆️ rust-analyzer)
 - #86294 (Stabilize {std, core}::prelude::rust_*.)
 - #86306 (Add mailmap entries for myself)
 - #86314 (Remove trailing triple backticks in `mut_keyword` docs)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup
2021-06-15 20:15:23 +00:00
Guillaume Gomez
91f491ecf2 Don't mark "safe" intrinsics as unsafe 2021-06-15 22:14:00 +02:00
bors
246571a846 Auto merge of #86323 - hyd-dev:miri, r=RalfJung
Update Miri

Fixes #86316
Fixes #86261

r? `@RalfJung`
2021-06-15 17:11:28 +00:00
Ryan Levick
5f74ba50bc Fix ICE when doc aliases were put on function params 2021-06-15 19:01:11 +02:00
Trinity Pointard
2d76d44eae remove code for recursive Deref in sidebar
fix #85037
2021-06-15 14:30:14 +02:00
hyd-dev
2ee693c195
Update Miri 2021-06-15 20:16:46 +08:00
Trinity Pointard
aee50f417f fix rustdoc stack overflow on mutually recursive Deref
fix #85095
2021-06-15 11:47:17 +02:00
Yuki Okushi
178d17f917
Rollup merge of #86285 - lnicola:rust-analyzer-2021-06-14, r=jonas-schievink
⬆️ rust-analyzer
2021-06-15 17:40:13 +09:00