]> git.lizzy.rs Git - rust.git/log
rust.git
4 years agoRollup merge of #74392 - lcnr:const-generics-update, r=varkor
Manish Goregaokar [Thu, 16 Jul 2020 18:19:00 +0000 (11:19 -0700)]
Rollup merge of #74392 - lcnr:const-generics-update, r=varkor

const generics triage

I went through all const generics issues and closed all issues which are already fixed.

Some issues already have a regression test but were not closed. Also doing this as part of this PR.

uff r? @eddyb @varkor

closes #61936
closes #62878
closes #63695
closes #67144
closes #68596
closes #69816
closes #70217
closes #70507
closes #70586
closes #71348
closes #71805
closes #73120
closes #73508
closes #73730
closes #74255

4 years agoRollup merge of #74391 - ssomers:btree_refactor, r=Mark-Simulacrum
Manish Goregaokar [Thu, 16 Jul 2020 18:18:59 +0000 (11:18 -0700)]
Rollup merge of #74391 - ssomers:btree_refactor, r=Mark-Simulacrum

BtreeMap: superficially refactor root access

Remove or comment every unwrap in BTreeMap's main code and more.

r? @Mark-Simulacrum

4 years agoRollup merge of #74390 - ColoredCarrot:patch-1, r=lcnr
Manish Goregaokar [Thu, 16 Jul 2020 18:18:57 +0000 (11:18 -0700)]
Rollup merge of #74390 - ColoredCarrot:patch-1, r=lcnr

Fix typo in std::mem::transmute documentation

`u32::from_ge_bytes` function does not exist; replace with `u32::from_be_bytes`.
It is clear that `u32::from_le_bytes` is not meant from the context; the latter is used correctly while `from_be_bytes` is misspelled.

4 years agoRollup merge of #74370 - Manishearth:re-spotlight, r=GuillaumeGomez
Manish Goregaokar [Thu, 16 Jul 2020 18:18:55 +0000 (11:18 -0700)]
Rollup merge of #74370 - Manishearth:re-spotlight, r=GuillaumeGomez

Reintroduce spotlight / "important traits" feature

(Reopened version of https://github.com/rust-lang/rust/pull/74111 because Github is broken, see discussion there)

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

This PR reintroduces the "spotlight" ("important traits") feature.

A couple changes have been made:

As there were concerns about its visibility, it has been moved to be next to the return type, as opposed to being on the side.

It also no longer produces a modal, it shows the traits on hover, and it can be clicked on to pin the hover bubble.

![image](https://user-images.githubusercontent.com/1617736/86674555-a82d2600-bfad-11ea-9a4a-a1a9ffd66ae5.png)

![image](https://user-images.githubusercontent.com/1617736/86674533-a1061800-bfad-11ea-9e8a-c62ad86ed0d7.png)

It also works fine on mobile:

![image](https://user-images.githubusercontent.com/1617736/86674638-bda25000-bfad-11ea-8d8d-1798b608923e.png)

4 years agoRollup merge of #74359 - lzutao:rustdoc-tostring, r=GuillaumeGomez
Manish Goregaokar [Thu, 16 Jul 2020 18:18:53 +0000 (11:18 -0700)]
Rollup merge of #74359 - lzutao:rustdoc-tostring, r=GuillaumeGomez

rustdoc: Rename internal API fns to `into_string`

to avoid surprising listed in API guidelines.

4 years agoRollup merge of #74325 - GuillaumeGomez:focus-source-file-sidebar, r=kinnison
Manish Goregaokar [Thu, 16 Jul 2020 18:18:52 +0000 (11:18 -0700)]
Rollup merge of #74325 - GuillaumeGomez:focus-source-file-sidebar, r=kinnison

Focus on the current file in the source file sidebar

Fixes #73360.

r? @kinnison
cc @rust-lang/rustdoc

4 years agoRollup merge of #74221 - oli-obk:const_prop_ice, r=wesleywiser
Manish Goregaokar [Thu, 16 Jul 2020 18:18:50 +0000 (11:18 -0700)]
Rollup merge of #74221 - oli-obk:const_prop_ice, r=wesleywiser

Don't panic if the lhs of a div by zero is not statically known

Fixes #73993 for real this time

r? @wesleywiser

4 years agoRollup merge of #74171 - ehuss:44056-debug-macos, r=nikomatsakis
Manish Goregaokar [Thu, 16 Jul 2020 18:18:48 +0000 (11:18 -0700)]
Rollup merge of #74171 - ehuss:44056-debug-macos, r=nikomatsakis

Fix 44056 test with debug on macos.

The test `codegen/issue-44056-macos-tls-align.rs` fails on macos if `debug-assertions` is enabled in `config.toml`.  It has the following error:

```
/Users/eric/Proj/rust/rust/src/test/codegen/issue-44056-macos-tls-align.rs:9:11: error: CHECK: expected string not found in input
// CHECK: @STATIC_VAR_1 = thread_local local_unnamed_addr global <{ [32 x i8] }> zeroinitializer, section "__DATA,__thread_bss", align 4
          ^
/Users/eric/Proj/rust/rust/build/x86_64-apple-darwin/test/codegen/issue-44056-macos-tls-align/issue-44056-macos-tls-align.ll:1:1: note: scanning from here
; ModuleID = 'issue_44056_macos_tls_align.3a1fbbbh-cgu.0'
^
/Users/eric/Proj/rust/rust/build/x86_64-apple-darwin/test/codegen/issue-44056-macos-tls-align/issue-44056-macos-tls-align.ll:9:1: note: possible intended match here
@STATIC_VAR_1 = thread_local global <{ [32 x i8] }> zeroinitializer, section "__DATA,__thread_bss", align 4
^
```

Comparing the output, the actual output is missing the text "`local_unnamed_addr`".

The fix here is to ignore `local_unnamed_addr`, as it doesn't seem relevant to the test.

4 years agoRollup merge of #74159 - lcnr:const-generic-ty-decl, r=varkor
Manish Goregaokar [Thu, 16 Jul 2020 18:18:46 +0000 (11:18 -0700)]
Rollup merge of #74159 - lcnr:const-generic-ty-decl, r=varkor

forbid generic params in the type of const params

implements and closes #74152

fixes #74101, closes #71169, fixes #73491, closes #62878

@eddyb and I talked [on zulip](https://rust-lang.zulipchat.com/#narrow/stream/131828-t-compiler/topic/type.20of.20const.20parameters/near/203405696) about this and we probably want to also forbid generic consts in the default
type of a parameter, e.g. `struct Foo<T, U = [u8; std::mem::size_of::<T>()]>`, this is currently still allowed
and I will probably fix that in a followup PR.

r? @varkor @eddyb

4 years agoRollup merge of #74148 - GuillaumeGomez:doc-alias-check, r=Manishearth
Manish Goregaokar [Thu, 16 Jul 2020 18:18:44 +0000 (11:18 -0700)]
Rollup merge of #74148 - GuillaumeGomez:doc-alias-check, r=Manishearth

Move #[doc(alias)] check in rustc

Part of #73721.

r? @ollie27

4 years agoRollup merge of #74140 - sexxi-goose:precise_hir_projections, r=nikomatsakis
Manish Goregaokar [Thu, 16 Jul 2020 18:18:42 +0000 (11:18 -0700)]
Rollup merge of #74140 - sexxi-goose:precise_hir_projections, r=nikomatsakis

Make hir ProjectionKind more precise

This commit also categorizing access as Field, Index, or Subslice.

Ideas are taken from `mir::ProjectionElem`.

Proposed changes: https://github.com/rust-lang/project-rfc-2229/blob/master/hir-place-target.md

Closes: https://github.com/rust-lang/project-rfc-2229/issues/1,
Closes: https://github.com/rust-lang/project-rfc-2229/issues/2
r? @nikomatsakis @matthewjasper

4 years agoRollup merge of #73998 - euclio:search-index-determinism, r=nikomatsakis
Manish Goregaokar [Thu, 16 Jul 2020 18:18:40 +0000 (11:18 -0700)]
Rollup merge of #73998 - euclio:search-index-determinism, r=nikomatsakis

add regression test for #61216

Fixes #61216.

4 years agoRollup merge of #73981 - ehuss:remove-ignore-stage1, r=nikomatsakis
Manish Goregaokar [Thu, 16 Jul 2020 18:18:38 +0000 (11:18 -0700)]
Rollup merge of #73981 - ehuss:remove-ignore-stage1, r=nikomatsakis

Remove some `ignore-stage1` annotations.

These tests appear to no longer need the `ignore-stage1` marker.

- `run-make-fulldeps/issue-37839` and `run-make-fulldeps/issue-37893`: I believe these were due to the use of proc-macros, and probably were just missed in #49219 which fixed the proc-macro compatibility.

- `compile-fail/asm-src-loc-codegen-units.rs`: This was due to an old issue with landing pads (as mentioned in the linked issue #20184). `-Zno-landing-pads` was an option when building the first stage (it was much faster), but somewhere along the way (I think the switch from makefiles to rustbuild), the option was removed.
  - NOTE: This test doesn't actually test what it was originally written for, and is probably mostly pointless now. This test was asserting the message "build without -C codegen-units for more exact errors", but that was removed in #42682. It is now in essence identical to `asm-src-loc.rs`.

4 years agoRollup merge of #73926 - joaopaulocarreiro:github_rust-6, r=nikomatsakis
Manish Goregaokar [Thu, 16 Jul 2020 18:18:35 +0000 (11:18 -0700)]
Rollup merge of #73926 - joaopaulocarreiro:github_rust-6, r=nikomatsakis

Ignoring test case: [codegen] repr-transparent-aggregates-1.rs for aarch64

Ignoring test case: [codegen] repr-transparent-aggregates-1.rs for aarch64.

Copyright (c) 2020, Arm Limited.

4 years agoRollup merge of #73835 - GuillaumeGomez:cleanup-e0710, r=Dylan-DPC
Manish Goregaokar [Thu, 16 Jul 2020 18:18:33 +0000 (11:18 -0700)]
Rollup merge of #73835 - GuillaumeGomez:cleanup-e0710, r=Dylan-DPC

Clean up E0710 explanation

r? @Dylan-DPC

4 years agoRollup merge of #73807 - euclio:rustdoc-highlighting, r=ollie27,GuillaumeGomez
Manish Goregaokar [Thu, 16 Jul 2020 18:18:31 +0000 (11:18 -0700)]
Rollup merge of #73807 - euclio:rustdoc-highlighting, r=ollie27,GuillaumeGomez

rustdoc: glue tokens before highlighting

Fixes #72684.

This commit also modifies the signature of `Classifier::new` to avoid
copying the source being highlighted.

4 years agoRollup merge of #73794 - GuillaumeGomez:cleanup-e0705, r=Dylan-DPC
Manish Goregaokar [Thu, 16 Jul 2020 18:18:29 +0000 (11:18 -0700)]
Rollup merge of #73794 - GuillaumeGomez:cleanup-e0705, r=Dylan-DPC

Small cleanup for E0705 explanation

r? @Dylan-DPC

4 years agoRollup merge of #73771 - alexcrichton:ignore-unstable, r=estebank,GuillaumeGomez
Manish Goregaokar [Thu, 16 Jul 2020 18:18:26 +0000 (11:18 -0700)]
Rollup merge of #73771 - alexcrichton:ignore-unstable, r=estebank,GuillaumeGomez

Don't pollute docs/suggestions with libstd deps

Currently dependency crates of the standard library can sometimes leak
into error messages such as when traits to import are suggested.
Additionally they can leak into documentation such as in the list of
"all traits implemented by `u32`". The dependencies of the standard
library, however, are intended to be private.

The dependencies of the standard library can't actually be stabl-y
imported nor is the documentation that relevant since you can't import
them on stable either. This commit updates both the compiler and rustdoc
to ignore unstable traits in these two scenarios.

Specifically the suggestion for traits to import ignore unstable traits,
and similarly the list of traits implemented by a type excludes unstable
traits.

This commit is extracted from #73441 where the addition of some new
dependencies to the standard library was showed to leak into various
error messages and documentation. The intention here is to go ahead and
land these changes ahead of that since it will likely take some time to
land.

4 years agoRollup merge of #73566 - jyn514:name-resolve-first, r=eddyb
Manish Goregaokar [Thu, 16 Jul 2020 18:18:24 +0000 (11:18 -0700)]
Rollup merge of #73566 - jyn514:name-resolve-first, r=eddyb

Don't run `everybody_loops` for rustdoc; instead ignore resolution errors

r? @eddyb
cc @petrochenkov, @GuillaumeGomez, @Manishearth, @ecstatic-morse, @marmeladema

~~Blocked on https://github.com/rust-lang/rust/pull/73743~~ Merged.
~~Blocked on crater run.~~ Crater popped up some ICEs ([now fixed](https://github.com/rust-lang/rust/pull/73566#issuecomment-656934851)). See [crater run](https://crater-reports.s3.amazonaws.com/pr-73566/index.html), [ICEs](https://github.com/rust-lang/rust/pull/73566#issuecomment-653619212).
~~Blocked on #74070 so that we don't make typeck_tables_of public when it shouldn't be.~~ Merged.

Closes #71820, closes #71104, closes #65863.

## What is the motivation for this change?

As seen from a lengthy trail of PRs and issues (https://github.com/rust-lang/rust/pull/73532, https://github.com/rust-lang/rust/pull/73103, https://github.com/rust-lang/rust/issues/71820, https://github.com/rust-lang/rust/issues/71104), `everybody_loops` is causing bugs in rustdoc. The main issue is that it does not preserve the validity of the `DefId` tree, meaning that operations on DefIds may unexpectedly fail when called later. This is blocking intra-doc links (see https://github.com/rust-lang/rust/pull/73101).

This PR starts by removing `everybody_loops`, fixing #71104 and #71820. However, that brings back the bugs seen originally in https://github.com/rust-lang/rust/pull/43348: Since libstd documents items for all platforms, the function bodies sometimes do not type check. Here are the errors from documenting `libstd` with `everybody_loops` disabled and no other changes:

```rust
error[E0433]: failed to resolve: could not find `handle` in `sys`
  --> src/libstd/sys/windows/ext/process.rs:13:27
   |
13 |         let handle = sys::handle::Handle::new(handle as *mut _);
   |                           ^^^^^^ could not find `handle` in `sys`

error[E0425]: cannot find function `symlink_inner` in module `sys::fs`
   --> src/libstd/sys/windows/ext/fs.rs:544:14
    |
544 |     sys::fs::symlink_inner(src.as_ref(), dst.as_ref(), false)
    |              ^^^^^^^^^^^^^ not found in `sys::fs`

error[E0425]: cannot find function `symlink_inner` in module `sys::fs`
   --> src/libstd/sys/windows/ext/fs.rs:564:14
    |
564 |     sys::fs::symlink_inner(src.as_ref(), dst.as_ref(), true)
    |              ^^^^^^^^^^^^^ not found in `sys::fs`
```

## Why does this need changes to `rustc_resolve`?

Normally, this could be avoided by simply not calling the `typeck_item_bodies` pass. However, the errors above happen before type checking, in name resolution itself. Since name resolution is intermingled with macro expansion, and rustdoc needs expansion to happen before it knows all items to be documented, there needs to be someway to ignore _resolution_ errors in function bodies.

An alternative solution suggested by @petrochenkov was to not run `everybody_loops` on anything containing a nested `DefId`. This would solve some of the immediate issues, but isn't bullet-proof: the following functions still could not be documented if the items in the body failed to resolve:

- Functions containing a nested `DefId` (https://github.com/rust-lang/rust/issues/71104)
- ~~Functions returning `impl Trait` (https://github.com/rust-lang/rust/pull/43878)~~ These ended up not resolving anyway with this PR.
- ~~`const fn`, because `loop {}` in `const fn` is unstable (https://github.com/rust-lang/rust/issues/43636)~~ `const_loop` was just stabilized.

This also isn't exactly what rustdoc wants, which is to avoid looking at function bodies in the first place.

## What changes were made?

The hack implemented in this PR is to add an option to ignore all resolution errors in function bodies. This is enabled only for rustdoc. Since resolution errors are ignored, the MIR generated will be invalid, as can be seen in the following ICE:

```rust
error: internal compiler error: broken MIR in DefId(0:11 ~ doc_cfg[8787]::uses_target_feature[0]) ("return type"): bad type [type error]
  --> /home/joshua/src/rust/src/test/rustdoc/doc-cfg.rs:51:1
   |
51 | / pub unsafe fn uses_target_feature() {
52 | |     content::should::be::irrelevant();
53 | | }
   | |_^
```

Fortunately, rustdoc does not need to access MIR in order to generate documentation. Therefore this also removes the call to `analyze()` in `rustdoc::run_core`. This has the side effect of not generating all lints by default. Most lints are safe to ignore (does rustdoc really need to run liveness analysis?) but `missing_docs` in particular is disabled when it should not be. Re-running `missing_docs` specifically does not help, because it causes the typechecking pass to be run, bringing back the errors from #24658:

```
error[E0599]: no method named `into_handle` found for struct `sys::unix::pipe::AnonPipe` in the current scope
  --> src/libstd/sys/windows/ext/process.rs:71:27
   |
71 |         self.into_inner().into_handle().into_raw() as *mut _
   |                           ^^^^^^^^^^^ method not found in `sys::unix::pipe::AnonPipe`
   |
```

Because of #73743, we only run typeck on demand. So this only causes an issue for functions returning `impl Trait`, which were already special cased by `ReplaceFunctionWithBody`. However, it now considers `async fn f() -> T` to be considered `impl Future<Output = T>`, where before it was considered to have a concrete `T` type.

## How will this affect future changes to rustdoc?

- Any new changes to rustdoc will not be able to perform type checking without bringing back resolution errors in function bodies.
    + As a corollary, any new lints cannot require or perform type checking. In some cases this may require refactoring other parts of the compiler to perform type-checking only on-demand, see for example #73743.
    + As a corollary, rustdoc can never again call `tcx.analysis()` unless this PR is reverted altogether.

## Current status

- ~~I am not yet sure how to bring back `missing_docs` without running typeck. @eddyb suggested allowing lints to opt-out of type-checking, which would probably be another rabbit hole.~~ The opt-out was implemented in https://github.com/rust-lang/rust/pull/73743. However, of the rustc lints, now _only_ missing_docs is run and no other lints: https://github.com/rust-lang/rust/pull/73566#issuecomment-650213058. We need a team decision on whether that's an acceptable tradeoff. Note that all rustdoc lints are still run (`intra_doc_link_resolution_failure`, etc). **UPDATE**: This was deemed acceptable in https://github.com/rust-lang/rust/pull/73566#issuecomment-655750237
- ~~The implementation of optional errors in `rustc_resolve` is very brute force, it should probably be moved from `LateResolver` to `Resolver` to avoid duplicating the logic in many places.~~ I'm mostly happy with it now.

- This no longer allows errors in `async fn f() -> T`. This caused breakage in 50 crates out of a full crater run, all of which (that I looked at) didn't compile when run with rustc directly. In other words, it used to be that they could not be compiled but could still be documented; now they can't be documented either. This needs a decision from the rustdoc team on whether this is acceptable breakage. **UPDATE**: This was deemed acceptable in https://github.com/rust-lang/rust/pull/73566#issuecomment-655750237
- ~~This makes `fn typeck_tables_of` in `rustc_typeck` public. This is not desired behavior, but needs the changes from https://github.com/rust-lang/rust/pull/74070 in order to be fixed.~~ Reverted.

4 years agoDon't position:relative on all pres
Manish Goregaokar [Thu, 16 Jul 2020 16:01:30 +0000 (09:01 -0700)]
Don't position:relative on all pres

We need it for run buttons (https://github.com/rust-lang/rust/pull/44671), but not function defs

4 years agoRemove !important on border-color and background-color
Manish Goregaokar [Wed, 15 Jul 2020 16:29:34 +0000 (09:29 -0700)]
Remove !important on border-color and background-color

4 years agoAdd Ayu theme for spotlight
Manish Goregaokar [Wed, 15 Jul 2020 16:13:18 +0000 (09:13 -0700)]
Add Ayu theme for spotlight

4 years agoReview comments for JS
Manish Goregaokar [Wed, 15 Jul 2020 15:58:10 +0000 (08:58 -0700)]
Review comments for JS

4 years agoMake spotlight show on hover
Manish Goregaokar [Tue, 7 Jul 2020 00:18:04 +0000 (17:18 -0700)]
Make spotlight show on hover

This makes the spotlight show on hover instead of click. Clicks can be
used to persist it, which is also what's used on mobile.

4 years agoMove spotlight next to the return type
Manish Goregaokar [Mon, 6 Jul 2020 21:13:47 +0000 (14:13 -0700)]
Move spotlight next to the return type

4 years agoRevert "Remove spotlight usage"
Manish Goregaokar [Mon, 6 Jul 2020 19:54:33 +0000 (12:54 -0700)]
Revert "Remove spotlight usage"

This reverts commit 13c6d5819aae3c0de6a90e7f17ea967bf4487cbb.

4 years agoRevert "Remove "important traits" feature"
Manish Goregaokar [Mon, 6 Jul 2020 19:53:44 +0000 (12:53 -0700)]
Revert "Remove "important traits" feature"

This reverts commit 1244ced9580b942926afc06815e0691cf3f4a846.

4 years agoRemove elements iterator clone and only keep first element instead
Guillaume Gomez [Thu, 16 Jul 2020 16:34:49 +0000 (18:34 +0200)]
Remove elements iterator clone and only keep first element instead

4 years agoAuto merge of #72481 - marmeladema:duration-consts-2, r=oli-obk
bors [Thu, 16 Jul 2020 13:35:09 +0000 (13:35 +0000)]
Auto merge of #72481 - marmeladema:duration-consts-2, r=oli-obk

Constify most non-trait `Duration` methods as described in #72440

The remaining methods could probably be made const once https://github.com/rust-lang/rust/pull/72449 lands with support for `f<32|64>::is_finite()`.

4 years agoRemove unused lazy_static
Joshua Nelson [Thu, 16 Jul 2020 13:03:46 +0000 (09:03 -0400)]
Remove unused lazy_static

4 years agoSeparate off BTreeMap support functions and loose their irrelevant bounds
Stein Somers [Tue, 14 Jul 2020 11:23:15 +0000 (13:23 +0200)]
Separate off BTreeMap support functions and loose their irrelevant bounds

4 years agoClean up or comment every unwrap in BTreeMap's main code.
Stein Somers [Mon, 13 Jul 2020 14:51:37 +0000 (16:51 +0200)]
Clean up or comment every unwrap in BTreeMap's main code.

4 years agoadd regression test for #74255
Bastian Kauschke [Thu, 16 Jul 2020 10:46:02 +0000 (12:46 +0200)]
add regression test for #74255

4 years agoadd regression test for #73730
Bastian Kauschke [Thu, 16 Jul 2020 10:43:33 +0000 (12:43 +0200)]
add regression test for #73730

4 years agoadd regression test for #73508
Bastian Kauschke [Thu, 16 Jul 2020 10:39:02 +0000 (12:39 +0200)]
add regression test for #73508

4 years agoadd regression test for #73491
Bastian Kauschke [Thu, 16 Jul 2020 10:35:23 +0000 (12:35 +0200)]
add regression test for #73491

4 years agoadd regression test for #73120
Bastian Kauschke [Thu, 16 Jul 2020 10:32:43 +0000 (12:32 +0200)]
add regression test for #73120

4 years agoadd regression test for #71805
Bastian Kauschke [Thu, 16 Jul 2020 10:23:38 +0000 (12:23 +0200)]
add regression test for #71805

4 years agoAuto merge of #74202 - oli-obk:mir_const, r=RalfJung
bors [Thu, 16 Jul 2020 10:18:24 +0000 (10:18 +0000)]
Auto merge of #74202 - oli-obk:mir_const, r=RalfJung

Reduce the amount of interning and `layout_of` calls in const eval.

r? @ghost

If we just want to get at some bits of a constant, we don't need to intern it before extracting those bits.
Also, if we want to read a `usize` or `bool`, we can fetch the size without invoking a query.

4 years agoadd regression test for #71348
Bastian Kauschke [Thu, 16 Jul 2020 10:17:27 +0000 (12:17 +0200)]
add regression test for #71348

4 years agoadd regression test for #71169
Bastian Kauschke [Thu, 16 Jul 2020 10:14:03 +0000 (12:14 +0200)]
add regression test for #71169

4 years agoadd regression test for #70586
Bastian Kauschke [Thu, 16 Jul 2020 10:10:15 +0000 (12:10 +0200)]
add regression test for #70586

4 years agoadd regression test for #70217
Bastian Kauschke [Thu, 16 Jul 2020 10:03:00 +0000 (12:03 +0200)]
add regression test for #70217

4 years agoadd regression test for #68596
Bastian Kauschke [Thu, 16 Jul 2020 09:54:20 +0000 (11:54 +0200)]
add regression test for #68596

4 years agoadd regression tests for #67144
Bastian Kauschke [Thu, 16 Jul 2020 09:46:39 +0000 (11:46 +0200)]
add regression tests for #67144

4 years agobless ui tests
Bastian Kauschke [Thu, 16 Jul 2020 09:40:26 +0000 (11:40 +0200)]
bless ui tests

4 years agoupdate help message
Bastian Kauschke [Thu, 16 Jul 2020 09:10:22 +0000 (11:10 +0200)]
update help message

4 years agodon't supply generics to AnonConsts in param lists
Bastian Kauschke [Thu, 9 Jul 2020 20:26:49 +0000 (22:26 +0200)]
don't supply generics to AnonConsts in param lists

4 years agorelax Node lt bounds
Bastian Kauschke [Thu, 9 Jul 2020 20:18:22 +0000 (22:18 +0200)]
relax Node lt bounds

4 years agoadd self dependent const param test
Bastian Kauschke [Wed, 8 Jul 2020 20:25:22 +0000 (22:25 +0200)]
add self dependent const param test

4 years agoforbid generic params in the type of const params
Bastian Kauschke [Wed, 8 Jul 2020 20:16:18 +0000 (22:16 +0200)]
forbid generic params in the type of const params

4 years agoFix typo in std::mem::transmute documentation
ColoredCarrot [Thu, 16 Jul 2020 09:04:01 +0000 (11:04 +0200)]
Fix typo in std::mem::transmute documentation

u32::from_ge_bytes method does not exist; replace with u32::from_be_bytes

4 years agoGroup the try_eval functions before the eval functions
Oliver Scherer [Mon, 13 Jul 2020 17:07:37 +0000 (19:07 +0200)]
Group the try_eval functions before the eval functions

4 years agoMake `try_eval` private
Oliver Scherer [Mon, 13 Jul 2020 17:06:19 +0000 (19:06 +0200)]
Make `try_eval` private

4 years agoMove `ty::Const` and `ty::ConstKind` into their own modules
Oliver Scherer [Sat, 11 Jul 2020 07:49:22 +0000 (09:49 +0200)]
Move `ty::Const` and `ty::ConstKind` into their own modules

4 years agoAuto merge of #74388 - Manishearth:rollup-i7iueu8, r=Manishearth
bors [Thu, 16 Jul 2020 07:01:59 +0000 (07:01 +0000)]
Auto merge of #74388 - Manishearth:rollup-i7iueu8, r=Manishearth

Rollup of 7 pull requests

Successful merges:

 - #73421 (Clarify effect of orphan rule changes on From/Into)
 - #74037 (Update reference to CONTRIBUTING.md)
 - #74203 (Enforce the static symbol order.)
 - #74295 (Add and fix BTreeMap comments)
 - #74352 (Use local links in the alloc docs.)
 - #74377 (Move libstd's default feature to libtest)
 - #74381 (Update docs for str::as_bytes_mut.)

Failed merges:

r? @ghost

4 years agoRollup merge of #74381 - mbrubeck:docs, r=Mark-Simulacrum
Manish Goregaokar [Thu, 16 Jul 2020 07:01:13 +0000 (00:01 -0700)]
Rollup merge of #74381 - mbrubeck:docs, r=Mark-Simulacrum

Update docs for str::as_bytes_mut.

* Add "Safety" section describing UTF-8 invariant.

* Remove mention of `from_utf8_mut`.  It is not necessary to call
  a function to convert the byte slice back to a string slice.  The
  original string becomes accessible again after the byte slice is
  no longer used (as shown in the example code).

4 years agoRollup merge of #74377 - alexcrichton:test-default, r=Mark-Simulacrum
Manish Goregaokar [Thu, 16 Jul 2020 07:01:11 +0000 (00:01 -0700)]
Rollup merge of #74377 - alexcrichton:test-default, r=Mark-Simulacrum

Move libstd's default feature to libtest

This commit makes it so `std` no longer has a `default` feature, but
instead the `test` crate has a `default` feature doing the same thing.
The purpose of this commit is to allow Cargo's `-Zbuild-std` command,
which could customize the features of the standard library, to handle
the `default` feature for libstd. Currently Cargo's `-Zbuild-std`
support starts at libtests's manifest as the entry point to the std set
of crates.

4 years agoRollup merge of #74352 - ehuss:fix-alloc-links, r=Mark-Simulacrum
Manish Goregaokar [Thu, 16 Jul 2020 07:01:09 +0000 (00:01 -0700)]
Rollup merge of #74352 - ehuss:fix-alloc-links, r=Mark-Simulacrum

Use local links in the alloc docs.

Links to other crates (like core) from the alloc crate were incorrectly using the `https://doc.rust-lang.org/nightly/` absolute (remote) links, instead of relative (local) links.  For example, the link to `Result` at https://doc.rust-lang.org/1.44.1/alloc/vec/struct.Vec.html#method.try_reserve goes to /nightly/.

This is because alloc was being documented before core, and rustdoc relies on the existence of the local directory to know if it should use a local or remote link.

There was code that tried to compensate for this (`create_dir_all`), but in #54543 it was broken because instead of running `cargo doc` once for all the crates, it was changed to run `cargo rustdoc` for each crate individually. This means that `create_dir_all` was no longer doing what it was supposed to be doing (creating all the directories before starting).

The solution here is to just build in the correct order (from the dependency leaves towards the root).  An alternate solution would be to switch back to running `cargo doc` once (and use RUSTDOCFLAGS for passing in flags).  Another alternate solution would be to iterate over the list twice, creating the directories during the first pass.

I also did a little cleanup to remove the "crate-docs" directory. This was added in the past because different crates were built in different directories. Over time, things have been unified (and rustc docs no longer include std), so it is no longer necessary.

4 years agoRollup merge of #74295 - ssomers:btree_comments, r=Mark-Simulacrum
Manish Goregaokar [Thu, 16 Jul 2020 07:01:07 +0000 (00:01 -0700)]
Rollup merge of #74295 - ssomers:btree_comments, r=Mark-Simulacrum

Add and fix BTreeMap comments

No code changed (yet)

4 years agoRollup merge of #74203 - nnethercote:enforce-static-symbol-order, r=petrochenkov
Manish Goregaokar [Thu, 16 Jul 2020 07:01:05 +0000 (00:01 -0700)]
Rollup merge of #74203 - nnethercote:enforce-static-symbol-order, r=petrochenkov

Enforce the static symbol order.

By making the proc macro abort if any symbols are out of order.

The commit also changes the proc macro collect multiple errors (of order
or duplicated symbols) and prints them at the end, which is useful if
you have multiple errors.

r? @petrochenkov

4 years agoRollup merge of #74037 - JohnTitor:contributing-md, r=Mark-Simulacrum
Manish Goregaokar [Thu, 16 Jul 2020 07:01:04 +0000 (00:01 -0700)]
Rollup merge of #74037 - JohnTitor:contributing-md, r=Mark-Simulacrum

Update reference to CONTRIBUTING.md

CONTRIBUTING.md has been migrated to the rustc-dev-guide but some still refer there.
Update them with the appropriate links.

Fixes #74253

4 years agoRollup merge of #73421 - janikrabe:master, r=joshtriplett
Manish Goregaokar [Thu, 16 Jul 2020 07:01:02 +0000 (00:01 -0700)]
Rollup merge of #73421 - janikrabe:master, r=joshtriplett

Clarify effect of orphan rule changes on From/Into

Updated documentation for `std::convert` and `std::convert::From` to reflect changes to orphan rule in Rust 1.41. It should no longer be necessary to implement `Into` directly, unless targeting an older version.

r? @steveklabnik

4 years agoRename `sym::item_context` as `sym::ItemContext`.
Nicholas Nethercote [Fri, 10 Jul 2020 00:14:55 +0000 (10:14 +1000)]
Rename `sym::item_context` as `sym::ItemContext`.

Because it represents the symbol `ItemContext`, and `sym` identifiers
are supposed to match the actual symbol whenever possible.

4 years agoEnforce the static symbol order.
Nicholas Nethercote [Thu, 9 Jul 2020 23:46:38 +0000 (09:46 +1000)]
Enforce the static symbol order.

By making the proc macro abort if any symbols are out of order.

The commit also changes the proc macro collect multiple errors (of order
or duplicated symbols) and prints them at the end, which is useful if
you have multiple errors.

4 years agoAuto merge of #74375 - Manishearth:rollup-10vbpdh, r=Manishearth
bors [Thu, 16 Jul 2020 03:16:07 +0000 (03:16 +0000)]
Auto merge of #74375 - Manishearth:rollup-10vbpdh, r=Manishearth

Rollup of 14 pull requests

Successful merges:

 - #72973 (RISC-V GNU/Linux as host platform)
 - #73918 (Clean up E0715 explanation)
 - #73959 (Clean up E0716 explanation)
 - #74119 (Remove `Compiler::compile()`.)
 - #74196 (Add option to collapse automatically implementors)
 - #74218 (Add margin after doc search results)
 - #74276 (improve DiscriminantKind handling)
 - #74291 (Added docs for `From<c_int>` for `ExitStatus`)
 - #74294 (Update cross-compilation README)
 - #74337 (Handle case of incomplete local ty more gracefully)
 - #74344 (Remove string comparison and use diagnostic item instead)
 - #74347 (Initialize default providers only once)
 - #74353 (Edit docs for rustc_middle::dep_graph::dep_node)
 - #74374 (Add a 1.45 release note on lto vs. embed-bitcode)

Failed merges:

 - #74251 (Teach bootstrap about target files vs target triples)

r? @ghost

4 years agoUpdate docs for str::as_bytes_mut.
Matt Brubeck [Wed, 15 Jul 2020 20:21:02 +0000 (13:21 -0700)]
Update docs for str::as_bytes_mut.

* Add "Safety" section describing UTF-8 invariant.

* Remove mention of `from_utf8_mut`.  It is not necessary to call
  a function to convert the byte slice back to a string slice.  The
  original string becomes accessible again after the byte slice is
  no longer used (as shown in the example code).

4 years agoConstify most non-trait `Duration` methods as described in #72440
marmeladema [Thu, 21 May 2020 19:22:47 +0000 (20:22 +0100)]
Constify most non-trait `Duration` methods as described in #72440

4 years agoClarify effect of orphan rule changes on From/Into
Janik Rabe [Tue, 16 Jun 2020 13:14:16 +0000 (16:14 +0300)]
Clarify effect of orphan rule changes on From/Into

Updated documentation for `std::convert` and `std::convert::From` to
reflect changes to orphan rule in Rust 1.41. It should no longer be
necessary to implement Into directly, unless targeting an older version.

4 years agoMove libstd's default feature to libtest
Alex Crichton [Wed, 15 Jul 2020 18:31:48 +0000 (11:31 -0700)]
Move libstd's default feature to libtest

This commit makes it so `std` no longer has a `default` feature, but
instead the `test` crate has a `default` feature doing the same thing.
The purpose of this commit is to allow Cargo's `-Zbuild-std` command,
which could customize the features of the standard library, to handle
the `default` feature for libstd. Currently Cargo's `-Zbuild-std`
support starts at libtests's manifest as the entry point to the std set
of crates.

4 years agoRollup merge of #74374 - cuviper:lto-bitcode-1.45, r=Mark-Simulacrum
Manish Goregaokar [Wed, 15 Jul 2020 18:01:33 +0000 (11:01 -0700)]
Rollup merge of #74374 - cuviper:lto-bitcode-1.45, r=Mark-Simulacrum

Add a 1.45 release note on lto vs. embed-bitcode

I added a bullet for Cargo's use of `embed-bitcode`, since that was even noteworthy enough for the Inside Rust blog. Then more importantly, I added a compatibility note for how this may interact poorly with manually enabling LTO.

r? @Mark-Simulacrum

4 years agoRollup merge of #74353 - pierwill:pierwill-edit-dep-node, r=jonas-schievink
Manish Goregaokar [Wed, 15 Jul 2020 18:01:31 +0000 (11:01 -0700)]
Rollup merge of #74353 - pierwill:pierwill-edit-dep-node, r=jonas-schievink

Edit docs for rustc_middle::dep_graph::dep_node

Fixes some missing punctuation, and adds a blank line for a more concise summary.

4 years agoRollup merge of #74347 - jyn514:ive-got-a-small-query-for-you, r=eddyb
Manish Goregaokar [Wed, 15 Jul 2020 18:01:29 +0000 (11:01 -0700)]
Rollup merge of #74347 - jyn514:ive-got-a-small-query-for-you, r=eddyb

Initialize default providers only once

This avoids copying a new `Providers` struct for each downstream crate
that wants to use it.

Follow-up to https://github.com/rust-lang/rust/pull/74283 without the perf hit.

r? @eddyb

4 years agoRollup merge of #74344 - estebank:stringly-wobbly, r=eddyb
Manish Goregaokar [Wed, 15 Jul 2020 18:01:28 +0000 (11:01 -0700)]
Rollup merge of #74344 - estebank:stringly-wobbly, r=eddyb

Remove string comparison and use diagnostic item instead

r? @eddyb

4 years agoRollup merge of #74337 - estebank:ty-parse-recovery, r=varkor
Manish Goregaokar [Wed, 15 Jul 2020 18:01:26 +0000 (11:01 -0700)]
Rollup merge of #74337 - estebank:ty-parse-recovery, r=varkor

Handle case of incomplete local ty more gracefully

When encountering a local binding with a type that isn't completed, the
parser will reach a `=` token. When this happen, consider the type
"complete" as far as the parser is concerned to avoid further errors
being emitted by parse recovery logic.

4 years agoRollup merge of #74294 - msirringhaus:master, r=pietroalbini
Manish Goregaokar [Wed, 15 Jul 2020 18:01:24 +0000 (11:01 -0700)]
Rollup merge of #74294 - msirringhaus:master, r=pietroalbini

Update cross-compilation README

README seemed rather out of date. I hope the information in my PR is now correct (it was more or less assembled by asking in zulip and learning-by-doing).

4 years agoRollup merge of #74291 - regexident:from-docs, r=GuillaumeGomez
Manish Goregaokar [Wed, 15 Jul 2020 18:01:22 +0000 (11:01 -0700)]
Rollup merge of #74291 - regexident:from-docs, r=GuillaumeGomez

Added docs for `From<c_int>` for `ExitStatus`

Partially addresses https://github.com/rust-lang/rust/issues/51430

4 years agoRollup merge of #74276 - lcnr:discriminant-kind-what, r=nagisa
Manish Goregaokar [Wed, 15 Jul 2020 18:01:20 +0000 (11:01 -0700)]
Rollup merge of #74276 - lcnr:discriminant-kind-what, r=nagisa

improve DiscriminantKind handling

Adds a lang item `discriminant_type` for the associated type `DiscriminantKind::Discriminant`.

Changes the discriminant of generators from `i32` to `u32`, which should not be observable to fix an
oversight where MIR was using `u32` and codegen and typeck used `i32`.

4 years agoRollup merge of #74218 - GuillaumeGomez:search-results-bottom-margin, r=Dylan-DPC
Manish Goregaokar [Wed, 15 Jul 2020 18:01:18 +0000 (11:01 -0700)]
Rollup merge of #74218 - GuillaumeGomez:search-results-bottom-margin, r=Dylan-DPC

Add margin after doc search results

I found it not really on computer that the last result is right at the bottom of the page. I find it better with margin below (especially when you hover the last element!). A screenshot to show the result:

![Screenshot from 2020-07-10 16-32-23](https://user-images.githubusercontent.com/3050060/87166097-6103a580-c2cb-11ea-81a8-12772cf20f64.png)

r? @kinnison
cc @rust-lang/rustdoc @Manishearth @jyn514

4 years agoRollup merge of #74196 - GuillaumeGomez:auto-collapse-implementors, r=Manishearth
Manish Goregaokar [Wed, 15 Jul 2020 18:01:16 +0000 (11:01 -0700)]
Rollup merge of #74196 - GuillaumeGomez:auto-collapse-implementors, r=Manishearth

Add option to collapse automatically implementors

Fixes #73403

It adds an option (enabled by default) which collapses all implementors impl blocks.

r? @kinnison
cc @rust-lang/rustdoc

4 years agoRollup merge of #74119 - nnethercote:rm-Compiler-compile, r=Mark-Simulacrum
Manish Goregaokar [Wed, 15 Jul 2020 18:01:13 +0000 (11:01 -0700)]
Rollup merge of #74119 - nnethercote:rm-Compiler-compile, r=Mark-Simulacrum

Remove `Compiler::compile()`.

It's unused.

r? @Mark-Simulacrum

4 years agoRollup merge of #73959 - GuillaumeGomez:cleanup-e0716, r=Dylan-DPC
Manish Goregaokar [Wed, 15 Jul 2020 18:01:11 +0000 (11:01 -0700)]
Rollup merge of #73959 - GuillaumeGomez:cleanup-e0716, r=Dylan-DPC

Clean up E0716 explanation

r? @Dylan-DPC

4 years agoRollup merge of #73918 - GuillaumeGomez:cleanup-e0715, r=Dylan-DPC
Manish Goregaokar [Wed, 15 Jul 2020 18:01:08 +0000 (11:01 -0700)]
Rollup merge of #73918 - GuillaumeGomez:cleanup-e0715, r=Dylan-DPC

Clean up E0715 explanation

r? @Dylan-DPC

4 years agoRollup merge of #72973 - msizanoen1:riscv-host, r=pietroalbini
Manish Goregaokar [Wed, 15 Jul 2020 18:01:02 +0000 (11:01 -0700)]
Rollup merge of #72973 - msizanoen1:riscv-host, r=pietroalbini

RISC-V GNU/Linux as host platform

This PR add a new builder named `dist-riscv64-linux` that builds the compiler toolchain for RISC-V 64-bit GNU/Linux.

r? @alexcrichton

4 years agoAdd a 1.45 release note on lto vs. embed-bitcode
Josh Stone [Wed, 15 Jul 2020 17:27:51 +0000 (10:27 -0700)]
Add a 1.45 release note on lto vs. embed-bitcode

4 years agos/try_to_usize/try_to_machine_usize/
Oliver Scherer [Sat, 11 Jul 2020 07:28:10 +0000 (09:28 +0200)]
s/try_to_usize/try_to_machine_usize/

4 years agoReduce the amount of interning and `layout_of` calls in const eval.
Oliver Scherer [Thu, 9 Jul 2020 22:24:48 +0000 (00:24 +0200)]
Reduce the amount of interning and `layout_of` calls in const eval.

4 years agoDon't panic if the lhs of a div by zero is not statically known
Oliver Scherer [Fri, 10 Jul 2020 17:00:38 +0000 (19:00 +0200)]
Don't panic if the lhs of a div by zero is not statically known

4 years agoImprove settings wording
Guillaume Gomez [Thu, 9 Jul 2020 20:51:04 +0000 (22:51 +0200)]
Improve settings wording

4 years agoUse the default providers in rustc_interface instead of adding our own
Joshua Nelson [Wed, 15 Jul 2020 14:42:18 +0000 (10:42 -0400)]
Use the default providers in rustc_interface instead of adding our own

This avoids duplicating the same struct twice.

4 years agoCatch errors for any new item, not just trait implementations
Joshua Nelson [Wed, 15 Jul 2020 01:14:09 +0000 (21:14 -0400)]
Catch errors for any new item, not just trait implementations

This matches the previous behavior of everybody_loops and is also more
consistent than special-casing impls.

4 years agoAddress review comments
Joshua Nelson [Sun, 12 Jul 2020 01:50:25 +0000 (21:50 -0400)]
Address review comments

- Move static variables into the innermost scope in which they are used
- Clean up comments
- Remove external_providers; rename local_providers -> providers

4 years agoEMPTY_MAP -> EMPTY_SET
Joshua Nelson [Sun, 12 Jul 2020 00:54:47 +0000 (20:54 -0400)]
EMPTY_MAP -> EMPTY_SET

4 years agoFix comment
Joshua Nelson [Sat, 11 Jul 2020 12:52:36 +0000 (08:52 -0400)]
Fix comment

4 years agoUse mem::replace instead of rewriting it
Joshua Nelson [Sat, 11 Jul 2020 12:48:25 +0000 (08:48 -0400)]
Use mem::replace instead of rewriting it

4 years agoDon't ICE on infinitely recursive types
Joshua Nelson [Sat, 11 Jul 2020 04:28:42 +0000 (00:28 -0400)]
Don't ICE on infinitely recursive types

`evaluate_obligation` can only be run on types that are already valid.
So rustdoc still has to run typeck even though it doesn't care about the
result.

4 years ago--bless
Joshua Nelson [Fri, 10 Jul 2020 23:00:33 +0000 (19:00 -0400)]
--bless

4 years agoRemove unnecessary lifetime parameter
Joshua Nelson [Fri, 10 Jul 2020 22:07:31 +0000 (18:07 -0400)]
Remove unnecessary lifetime parameter

TyCtxt is a reference type and so can be passed by value.

4 years agoUse tcx as the only context for visitor
Joshua Nelson [Fri, 10 Jul 2020 21:59:29 +0000 (17:59 -0400)]
Use tcx as the only context for visitor

Previously two different parts of the context had to be passed
separately; there were two sources of truth.

4 years agoMention `cargo check` in help message
Joshua Nelson [Fri, 10 Jul 2020 21:51:38 +0000 (17:51 -0400)]
Mention `cargo check` in help message