Commit Graph

123407 Commits

Author SHA1 Message Date
Mark Rousskov
8321b3fbe4 Add zlib1g to builder deps 2020-07-16 19:36:49 -04:00
Mark Rousskov
647d9b525f apply bootstrap cfgs 2020-07-16 19:36:49 -04:00
Mark Rousskov
6c50ae898b Bump to 1.47 2020-07-16 19:36:49 -04:00
bors
6ee1b62c81 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()`.
2020-07-16 13:35:09 +00:00
bors
125c58caeb 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.
2020-07-16 10:18:24 +00:00
Oliver Scherer
1bf09933ed Group the try_eval functions before the eval functions 2020-07-16 10:03:28 +02:00
Oliver Scherer
ef66bf067b Make try_eval private 2020-07-16 10:03:28 +02:00
Oliver Scherer
763aaef670 Move ty::Const and ty::ConstKind into their own modules 2020-07-16 10:03:28 +02:00
bors
4cd0ee9343 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
2020-07-16 07:01:59 +00:00
Manish Goregaokar
a77813b8d0
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).
2020-07-16 00:01:13 -07:00
Manish Goregaokar
4b4ea686ff
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.
2020-07-16 00:01:11 -07:00
Manish Goregaokar
2872da361e
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.
2020-07-16 00:01:09 -07:00
Manish Goregaokar
80a7a87be2
Rollup merge of #74295 - ssomers:btree_comments, r=Mark-Simulacrum
Add and fix BTreeMap comments

No code changed (yet)
2020-07-16 00:01:07 -07:00
Manish Goregaokar
5b10e47433
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
2020-07-16 00:01:05 -07:00
Manish Goregaokar
e598ee51e4
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
2020-07-16 00:01:04 -07:00
Manish Goregaokar
31121cbec3
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
2020-07-16 00:01:02 -07:00
Nicholas Nethercote
600b8247a8 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.
2020-07-16 16:53:31 +10:00
Nicholas Nethercote
fd8f177234 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.
2020-07-16 16:53:24 +10:00
bors
e2e29de5e8 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
2020-07-16 03:16:07 +00:00
Matt Brubeck
6da69ec08c 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).
2020-07-15 14:36:12 -07:00
marmeladema
4a96800aef Constify most non-trait Duration methods as described in #72440 2020-07-15 21:37:16 +01:00
Janik Rabe
d2fe7a7c76 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.
2020-07-15 22:27:48 +03:00
Alex Crichton
e158913f2b 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.
2020-07-15 11:37:46 -07:00
Manish Goregaokar
0bde1c3ae5
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
2020-07-15 11:01:33 -07:00
Manish Goregaokar
c43a115398
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.
2020-07-15 11:01:31 -07:00
Manish Goregaokar
dceafac96d
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
2020-07-15 11:01:29 -07:00
Manish Goregaokar
bee28990d3
Rollup merge of #74344 - estebank:stringly-wobbly, r=eddyb
Remove string comparison and use diagnostic item instead

r? @eddyb
2020-07-15 11:01:28 -07:00
Manish Goregaokar
f4bbd0e607
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.
2020-07-15 11:01:26 -07:00
Manish Goregaokar
64a27880de
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).
2020-07-15 11:01:24 -07:00
Manish Goregaokar
b7cf2cbd78
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
2020-07-15 11:01:22 -07:00
Manish Goregaokar
47f6a9d797
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`.
2020-07-15 11:01:20 -07:00
Manish Goregaokar
0d07db98ab
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
2020-07-15 11:01:18 -07:00
Manish Goregaokar
efad203144
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
2020-07-15 11:01:16 -07:00
Manish Goregaokar
0bb16c8efd
Rollup merge of #74119 - nnethercote:rm-Compiler-compile, r=Mark-Simulacrum
Remove `Compiler::compile()`.

It's unused.

r? @Mark-Simulacrum
2020-07-15 11:01:13 -07:00
Manish Goregaokar
1527126e07
Rollup merge of #73959 - GuillaumeGomez:cleanup-e0716, r=Dylan-DPC
Clean up E0716 explanation

r? @Dylan-DPC
2020-07-15 11:01:11 -07:00
Manish Goregaokar
7307af1f1c
Rollup merge of #73918 - GuillaumeGomez:cleanup-e0715, r=Dylan-DPC
Clean up E0715 explanation

r? @Dylan-DPC
2020-07-15 11:01:08 -07:00
Manish Goregaokar
af3d4cb936
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
2020-07-15 11:01:02 -07:00
Josh Stone
2ba58f9823 Add a 1.45 release note on lto vs. embed-bitcode 2020-07-15 10:27:51 -07:00
Oliver Scherer
5c0e172f91 s/try_to_usize/try_to_machine_usize/ 2020-07-15 19:21:15 +02:00
Oliver Scherer
a871fedf98 Reduce the amount of interning and layout_of calls in const eval. 2020-07-15 19:21:15 +02:00
Guillaume Gomez
39d99ea6e6 Improve settings wording 2020-07-15 17:40:20 +02:00
Joshua Nelson
f6764c42ab Initialize default providers only once
This avoids copying a new `Providers` struct for each downstream crate
that wants to use it.
2020-07-15 10:53:36 -04:00
bors
7e11379f3b Auto merge of #74113 - lcnr:type-dependent-consts-2, r=eddyb
Support const args in type dependent paths (Take 2)

once more, except it is sound this time 🥰 previously #71154

-----
```rust
#![feature(const_generics)]

struct A;
impl A {
    fn foo<const N: usize>(&self) -> usize { N }
}
struct B;
impl B {
    fn foo<const N: usize>(&self) -> usize { 42 }
}

fn main() {
    let a = A;
    a.foo::<7>();
}
```
When calling `type_of` for generic const arguments, we now use the `TypeckTables` of the surrounding body to get the expected type.

This alone causes cycle errors though, as we now have `typeck_tables_of(main)` -> `...` ->
`type_of(main_ANON0 := 7)` -> `typeck_tables_of(main)`  (see https://github.com/rust-lang/rust/issues/68400#issuecomment-611760290)

To prevent this we must not call `type_of(const_arg)` during `typeck_tables_of`. This is achieved by
calling `type_of(param_def_id)` instead.

We have to somehow remember the `DefId` of the param through all of typeck, which is done using the
struct `ty::WithOptConstParam<DefId>`, which replaces `DefId` where needed and contains an `Option<DefId>` to
be able to store the const parameter in case it exists.

Queries which are currently cached on disk are split into two variants: `query_name`(cached) and `query_name_(of|for)_const_arg`(not cached), with `query_name_of_const_arg` taking a pair `(did, param_did): (LocalDefId, DefId)`.

For some queries a method `query_name_of_opt_const_arg` is added to `TyCtxt` which takes a `ty::WithOptConstParam` and either calls `query_name` or `query_name_of_const_arg` depending on the value of `const_param_did`.

r? @eddyb @varkor
2020-07-15 12:49:25 +00:00
Bastian Kauschke
2666aed498 unify Instance::resolve 2020-07-15 13:06:47 +02:00
Bastian Kauschke
e070b45e6a unsafety_check_result_for_const_arg 2020-07-15 13:06:47 +02:00
Bastian Kauschke
aca66bd052 WithOptConstParam::dummy -> WithOptConstParam::unknown 2020-07-15 13:06:47 +02:00
Bastian Kauschke
8003ccfdcd ty_def_id -> def_id_for_type_of 2020-07-15 13:06:47 +02:00
Bastian Kauschke
a909eb6b65 improve naming 2020-07-15 13:06:47 +02:00
Bastian Kauschke
805c44d5d3 cleanup 2020-07-15 12:58:33 +02:00
Bastian Kauschke
a7fe4df04a update promoted_mir 2020-07-15 12:58:33 +02:00