]> git.lizzy.rs Git - rust.git/log
rust.git
3 years agoRollup merge of #74364 - lcnr:lazy-norm-tests, r=nikomatsakis
Manish Goregaokar [Fri, 17 Jul 2020 21:09:16 +0000 (14:09 -0700)]
Rollup merge of #74364 - lcnr:lazy-norm-tests, r=nikomatsakis

add lazy normalization regression tests

We previously didn't have simple tests which fail if we aren't careful around lazy normalization.

We now do.

3 years agoRollup merge of #74300 - lzutao:iterator-intra, r=jyn514
Manish Goregaokar [Fri, 17 Jul 2020 21:09:15 +0000 (14:09 -0700)]
Rollup merge of #74300 - lzutao:iterator-intra, r=jyn514

Use intra-doc links in core::iter module

This will make core::iter doc depend less on std doc.

3 years agoRollup merge of #74288 - haraldh:test_aslr, r=petrochenkov
Manish Goregaokar [Fri, 17 Jul 2020 21:09:13 +0000 (14:09 -0700)]
Rollup merge of #74288 - haraldh:test_aslr, r=petrochenkov

Fix src/test/run-make/static-pie/test-aslr.rs

Might be subject to the birthday paradox occasionally, causing spurious failures.

Addresses: https://github.com/rust-lang/rust/pull/70740#pullrequestreview-430981320

3 years agoRollup merge of #74251 - shepmaster:bootstrap-target-files, r=Mark-Simulacrum
Manish Goregaokar [Fri, 17 Jul 2020 21:09:11 +0000 (14:09 -0700)]
Rollup merge of #74251 - shepmaster:bootstrap-target-files, r=Mark-Simulacrum

Teach bootstrap about target files vs target triples

`rustc` allows passing in predefined target triples as well as JSON
target specification files. This change allows bootstrap to have the
first inkling about those differences. This allows building a
cross-compiler for an out-of-tree architecture (even though that
compiler won't work for other reasons).

Even if no one ever uses this functionality, I think the newtype
around the `Interned<String>` improves the readability of the code.

3 years agoRollup merge of #74169 - ecstatic-morse:dataflow-unreachable, r=pnkfelix
Manish Goregaokar [Fri, 17 Jul 2020 21:09:08 +0000 (14:09 -0700)]
Rollup merge of #74169 - ecstatic-morse:dataflow-unreachable, r=pnkfelix

Stop processing unreachable blocks when solving dataflow

...instead we `debug_assert` that the user is not checking the dataflow state for an unreachable block. This resolves a FIXME in the dataflow engine. The old behavior was an artifact of the previous dataflow framework. Things should run a tiny bit faster now, but I suspect not enough to show up in benchmarks. AFAIK, only the generator transform runs dataflow on MIR with unreachable basic blocks.

This PR also adds some utility methods to `mir::traversal`.

r? @pnkfelix

3 years agoRollup merge of #74056 - fusion-engineering-forks:fmt-arguments-as-str, r=Amanieu
Manish Goregaokar [Fri, 17 Jul 2020 21:09:06 +0000 (14:09 -0700)]
Rollup merge of #74056 - fusion-engineering-forks:fmt-arguments-as-str, r=Amanieu

Add Arguments::as_str().

There exist quite a few macros in the Rust ecosystem which use `format_args!()` for formatting, but special case the one-argument case for optimization:

```rust
#[macro_export]
macro_rules! some_macro {
    ($s:expr) => { /* print &str directly, no formatting, no buffers */ };
    ($s:expr, $($tt:tt)*) => { /* use format_args to write to a buffer first */ }
}
```

E.g. [here](https://github.com/rust-embedded/cortex-m-semihosting/blob/7a961f0fbe6eb1b29a7ebde4bad4b9cf5f842b31/src/macros.rs#L48-L58), [here](https://github.com/rust-lang-nursery/failure/blob/20f9a9e223b7cd71aed541d050cc73a747fc00c4/src/macros.rs#L9-L17), and [here](https://github.com/fusion-engineering/px4-rust/blob/7b679cd6da9ffd95f36f6526d88345f8b36121da/px4/src/logging.rs#L45-L52).

The problem with these is that a forgotten argument such as in `some_macro!("{}")` will not be diagnosed, but just prints `"{}"`.

With this PR, it is possible to handle the no-arguments case separately *after* `format_args!()`, while simplifying the macro. Then these macros can give the proper error about a missing argument, just like `print!("{}")` does, while still using the same optimized implementation as before.

This is even more important with [RFC 2795](https://github.com/rust-lang/rfcs/pull/2795), to make sure `some_macro!("{some_variable}")` works as expected.

3 years agoRollup merge of #74009 - mati865:mingw-tests-implib, r=nikomatsakis
Manish Goregaokar [Fri, 17 Jul 2020 21:09:04 +0000 (14:09 -0700)]
Rollup merge of #74009 - mati865:mingw-tests-implib, r=nikomatsakis

Fix MinGW `run-make-fulldeps` tests

`compiler-rt-works-on-mingw` and `libs-search-path` were not ran because `only-mingw` doesn't match any target.
Enabled and verified few ignored tests with `windows-gnu` toolchain. They are still ignored on MSVC since I'm not experienced with this target.

3 years agoRollup merge of #73930 - a1phyr:feature_const_option, r=dtolnay
Manish Goregaokar [Fri, 17 Jul 2020 21:09:02 +0000 (14:09 -0700)]
Rollup merge of #73930 - a1phyr:feature_const_option, r=dtolnay

Make some Option methods const

Tracking issue: #67441

Constantify the following methods of `Option`:
- `as_ref`
- `is_some`
- `is_none`
- `iter` (not sure about this one, but it is possible, and will be useful when const traits are a thing)

cc @rust-lang/wg-const-eval @rust-lang/libs

3 years agoRollup merge of #71670 - GuillaumeGomez:enforce-codeblocks-attribute-check, r=Mark...
Manish Goregaokar [Fri, 17 Jul 2020 21:08:55 +0000 (14:08 -0700)]
Rollup merge of #71670 - GuillaumeGomez:enforce-codeblocks-attribute-check, r=Mark-Simulacrum

Enforce even more the code blocks attributes check through rustdoc

`rustdoc` now has a lint which allows it to warn if a code block attribute is malformated (which can end up in bad situations, even more in case of testing examples!). Now it'll fail if such a situation is encountered when testing markdown code blocks examples.

r? @Mark-Simulacrum

3 years agoFix various tests to run on windows-gnu
Mateusz Mikuła [Fri, 3 Jul 2020 18:55:13 +0000 (20:55 +0200)]
Fix various tests to run on windows-gnu

3 years agoAuto merge of #72983 - Lezzz:rename-typeck, r=nikomatsakis
bors [Fri, 17 Jul 2020 17:25:09 +0000 (17:25 +0000)]
Auto merge of #72983 - Lezzz:rename-typeck, r=nikomatsakis

Rename TypeckTables to TypeckResults.

Originally suggested by @eddyb.

3 years agoRemove invalid test
Mateusz Mikuła [Fri, 3 Jul 2020 18:40:00 +0000 (20:40 +0200)]
Remove invalid test

When ran on Windows `cp` will follow symlink: `checkout/build/<target>/<stage>/lib/rustlib/src/rust`.
It points to `checkout` which means the test will get stuck in copying loop until there is no space left.

3 years agoAllow matching test by target and env
Mateusz Mikuła [Fri, 3 Jul 2020 18:18:51 +0000 (20:18 +0200)]
Allow matching test by target and env

3 years agoCreate implib for dlls when testing MinGW targets
Mateusz Mikuła [Sat, 13 Jun 2020 12:18:02 +0000 (14:18 +0200)]
Create implib for dlls when testing MinGW targets

3 years agoAdd tracking issue number for fmt_as_str.
Mara Bos [Fri, 17 Jul 2020 13:59:31 +0000 (15:59 +0200)]
Add tracking issue number for fmt_as_str.

3 years agoMake fmt::Arguments::as_str() return a 'static str.
Mara Bos [Thu, 16 Jul 2020 19:02:34 +0000 (21:02 +0200)]
Make fmt::Arguments::as_str() return a 'static str.

3 years agoTeach bootstrap about target files vs target triples
Jake Goulding [Fri, 17 Jul 2020 14:08:04 +0000 (10:08 -0400)]
Teach bootstrap about target files vs target triples

`rustc` allows passing in predefined target triples as well as JSON
target specification files. This change allows bootstrap to have the
first inkling about those differences. This allows building a
cross-compiler for an out-of-tree architecture (even though that
compiler won't work for other reasons).

Even if no one ever uses this functionality, I think the newtype
around the `Interned<String>` improves the readability of the code.

3 years agoAuto merge of #74439 - RalfJung:miri, r=RalfJung
bors [Fri, 17 Jul 2020 13:54:21 +0000 (13:54 +0000)]
Auto merge of #74439 - RalfJung:miri, r=RalfJung

update Miri

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

3 years agoMake Arguments::as_str() work for empty format strings.
Mara Bos [Sun, 5 Jul 2020 14:00:35 +0000 (16:00 +0200)]
Make Arguments::as_str() work for empty format strings.

3 years agoAdd #[inline] to Arguments::as_str().
Mara Bos [Sun, 5 Jul 2020 13:27:24 +0000 (15:27 +0200)]
Add #[inline] to Arguments::as_str().

3 years agoAdd Arguments::as_str().
Mara Bos [Sat, 4 Jul 2020 15:59:37 +0000 (17:59 +0200)]
Add Arguments::as_str().

3 years agoDeny intra_doc_link_resolution_failure in libcore
Lzu Tao [Fri, 17 Jul 2020 13:25:06 +0000 (13:25 +0000)]
Deny intra_doc_link_resolution_failure in libcore

3 years agoupdate Miri
Ralf Jung [Fri, 17 Jul 2020 13:07:15 +0000 (15:07 +0200)]
update Miri

3 years agoRemove code span for impl
Lzu Tao [Tue, 14 Jul 2020 11:35:56 +0000 (11:35 +0000)]
Remove code span for impl

Because the old one is harder to read and confuse typing checkers.

3 years agoLink Some(item)
Lzu Tao [Tue, 14 Jul 2020 11:35:22 +0000 (11:35 +0000)]
Link Some(item)

3 years agoRemove unneeded link for Option
Lzu Tao [Mon, 13 Jul 2020 16:07:57 +0000 (16:07 +0000)]
Remove unneeded link for Option

3 years agoIntra-doc for iter Sum and Product traits
Lzu Tao [Mon, 13 Jul 2020 16:05:32 +0000 (16:05 +0000)]
Intra-doc for iter Sum and Product traits

3 years agoIntra-doc for DoubleEndIterator
Lzu Tao [Mon, 13 Jul 2020 16:01:58 +0000 (16:01 +0000)]
Intra-doc for DoubleEndIterator

3 years agoIntra doc for iter marker traits
Lzu Tao [Mon, 13 Jul 2020 15:58:57 +0000 (15:58 +0000)]
Intra doc for iter marker traits

3 years agoUse intra-doc link on Iterator page
Lzu Tao [Mon, 13 Jul 2020 15:50:30 +0000 (15:50 +0000)]
Use intra-doc link on Iterator page

3 years agoRename TypeckTables to TypeckResults.
Valentin Lazureanu [Fri, 17 Jul 2020 08:47:04 +0000 (08:47 +0000)]
Rename TypeckTables to TypeckResults.

3 years agoAuto merge of #73365 - Manishearth:rustdoc-vis, r=GuillaumeGomez
bors [Fri, 17 Jul 2020 07:22:32 +0000 (07:22 +0000)]
Auto merge of #73365 - Manishearth:rustdoc-vis, r=GuillaumeGomez

Record visibility of reexports for all items, not just type items

This fixes https://github.com/rust-lang/rust/issues/73363

Unfortunately I can't add a test for this since this bug is obscured by the cross-crate bug, being fixed in https://github.com/rust-lang/rust/issues/73363 . Tests will be added later.

cc @jyn514

r? @GuillaumeGomez

3 years agoUpdate src/test/rustdoc/intra-doc-crate/auxiliary/hidden.rs
Manish Goregaokar [Fri, 17 Jul 2020 05:09:17 +0000 (22:09 -0700)]
Update src/test/rustdoc/intra-doc-crate/auxiliary/hidden.rs

Co-authored-by: Joshua Nelson <joshua@yottadb.com>
3 years agoAdd test for doc(hidden) intra-doc cross-crate reexports
Manish Goregaokar [Tue, 16 Jun 2020 20:55:13 +0000 (13:55 -0700)]
Add test for doc(hidden) intra-doc cross-crate reexports

3 years agoRecord visibility of reexports for all items, not just type items
Manish Goregaokar [Mon, 15 Jun 2020 07:11:38 +0000 (00:11 -0700)]
Record visibility of reexports for all items, not just type items

3 years agoAuto merge of #74395 - Mark-Simulacrum:stage0-next, r=pietroalbini
bors [Fri, 17 Jul 2020 03:51:35 +0000 (03:51 +0000)]
Auto merge of #74395 - Mark-Simulacrum:stage0-next, r=pietroalbini

Bump version to 1.47

This also bumps to a more recent rustfmt version, just to keep us relatively up to date (though almost nothing has changed in rustfmt we use beyond bumps to the parser infra). No formatting changes as a result of this.

r? @pietroalbini

3 years agoAuto merge of #74422 - Manishearth:rollup-7mfrf6g, r=Manishearth
bors [Fri, 17 Jul 2020 00:09:49 +0000 (00:09 +0000)]
Auto merge of #74422 - Manishearth:rollup-7mfrf6g, r=Manishearth

Rollup of 8 pull requests

Successful merges:

 - #73101 (Resolve items for cross-crate imports relative to the original module)
 - #73269 (Enable some timeouts in SGX platform)
 - #74033 (Add build support for Cargo's build-std feature.)
 - #74351 (Do not render unstable items for rustc doc)
 - #74357 (Some `Symbol` related improvements)
 - #74371 (Improve ayu rustdoc theme)
 - #74386 (Add RISC-V GNU/Linux to src/tools/build-manifest as a host platform)
 - #74398 (Clean up E0723 explanation)

Failed merges:

r? @ghost

3 years agoRollup merge of #74398 - GuillaumeGomez:cleanup-e0723, r=Dylan-DPC
Manish Goregaokar [Fri, 17 Jul 2020 00:09:06 +0000 (17:09 -0700)]
Rollup merge of #74398 - GuillaumeGomez:cleanup-e0723, r=Dylan-DPC

Clean up E0723 explanation

r? @Dylan-DPC

3 years agoRollup merge of #74386 - msizanoen1:riscv-add-manifest-host, r=pietroalbini
Manish Goregaokar [Fri, 17 Jul 2020 00:09:04 +0000 (17:09 -0700)]
Rollup merge of #74386 - msizanoen1:riscv-add-manifest-host, r=pietroalbini

Add RISC-V GNU/Linux to src/tools/build-manifest as a host platform

Missed during https://github.com/rust-lang/rust/pull/72973

3 years agoRollup merge of #74371 - Aloso:patch-1, r=GuilliameGomez
Manish Goregaokar [Fri, 17 Jul 2020 00:09:02 +0000 (17:09 -0700)]
Rollup merge of #74371 - Aloso:patch-1, r=GuilliameGomez

Improve ayu rustdoc theme

This PR changes the following:

* It makes some lines darker
* It gives the crate selector and search bar a border
  * The search bar's border turns blue when focused
* ~~Gives the logo a bright shadow.~~

For standard library crates, it would be better to invert the logo, but that would be bad for crates with a colored logo, e.g. [async-std](https://docs.rs/async-std/1.6.2/async_std/).

Before:

![old](https://user-images.githubusercontent.com/15658558/87576611-ed4e0800-c6d1-11ea-9667-3924702f79e2.png)

After (note that this PR no longer includes the white shadow of the logo):

![new](https://user-images.githubusercontent.com/15658558/87576621-ef17cb80-c6d1-11ea-8e15-5d7f8b180c07.png)

3 years agoRollup merge of #74357 - nnethercote:symbol-related-improvements, r=oli-obk
Manish Goregaokar [Fri, 17 Jul 2020 00:09:01 +0000 (17:09 -0700)]
Rollup merge of #74357 - nnethercote:symbol-related-improvements, r=oli-obk

Some `Symbol` related improvements

These commits make things nicer and avoid some `Symbol::as_str()` calls.

r? @oli-obk

3 years agoRollup merge of #74351 - lzutao:remove-rustc-internal-compiler-warns, r=Mark-Simulacrum
Manish Goregaokar [Fri, 17 Jul 2020 00:08:59 +0000 (17:08 -0700)]
Rollup merge of #74351 - lzutao:remove-rustc-internal-compiler-warns, r=Mark-Simulacrum

Do not render unstable items for rustc doc

See the zulip conversion: https://rust-lang.zulipchat.com/#narrow/stream/131828-t-compiler/topic/rustc.20doc.3A.20.22internal.20compiler.20API.22.20warns.20are.20everywhere!/near/203850782

Before:
![image](https://user-images.githubusercontent.com/15225902/87501971-9cff8780-c68a-11ea-93b4-ea53ce18a77b.png)
After:
![image](https://user-images.githubusercontent.com/15225902/87501985-a7218600-c68a-11ea-81c0-a6b5b120832c.png)

Nothing changes in unstable items of std:
Before:
![image](https://user-images.githubusercontent.com/15225902/87502004-b7d1fc00-c68a-11ea-9224-a27a1d2a81d6.png)
After:
![image](https://user-images.githubusercontent.com/15225902/87502018-c0c2cd80-c68a-11ea-9773-4c63158025cb.png)

Closes  #54682

3 years agoRollup merge of #74033 - ehuss:std-compile-all-platforms, r=Mark-Simulacrum
Manish Goregaokar [Fri, 17 Jul 2020 00:08:57 +0000 (17:08 -0700)]
Rollup merge of #74033 - ehuss:std-compile-all-platforms, r=Mark-Simulacrum

Add build support for Cargo's build-std feature.

This makes some changes to the standard library to make it easier to use with Cargo's build-std feature. The primary goal is to make it so that Cargo and its users do not need to know which crates to build and which features to use for every platform.

Conditional cfgs are adjusted so that there is usually a fall-through for unsupported platforms. Additionally, there is a "restricted-std" feature to mark `std` as unstable when used with build-std on no_std platforms. There is no intent to stabilize this feature for the foreseeable future.

This borrows some of the implementation for wasm which already does what this needs. More code sharing can be done with some other platforms (there is a lot of duplication with cloudabi, hermit, and sgx), but I figure that can be done in a future PR.

There are some small changes to stable behavior in this PR:
- `std::env::consts::ARCH` on asmjs now reports "wasm32", to match its actual architecture.
- Some of the wasm error messages for unsupported features report a slightly different error message so that the code can be reused.

There should otherwise not be any changes to how std is built for distribution via bootstrap.

This does not yet support all platforms when used with build-std.

- It doesn't work with 16-bit targets (hashbrown does not support that).
- It does not work with JSON spec targets.
    - In particular, all target triple snooping will need to be replaced with appropriate target option checking.
- Switching to gimli (#73441) will make cross-building *much* easier.
- There are still a ton of issues on the Cargo side to resolve. A big one is panic strategy support.

Future PRs are intended to address some of these issues.

3 years agoRollup merge of #73269 - mzohreva:mz/sgx-wait-timeout, r=jethrogb
Manish Goregaokar [Fri, 17 Jul 2020 00:08:56 +0000 (17:08 -0700)]
Rollup merge of #73269 - mzohreva:mz/sgx-wait-timeout, r=jethrogb

Enable some timeouts in SGX platform

This would partially resolve https://github.com/fortanix/rust-sgx/issues/31

cc @jethrogb and @Goirad

3 years agoRollup merge of #73101 - jyn514:rustdoc-absolute-module, r=Manishearth
Manish Goregaokar [Fri, 17 Jul 2020 00:08:54 +0000 (17:08 -0700)]
Rollup merge of #73101 - jyn514:rustdoc-absolute-module, r=Manishearth

Resolve items for cross-crate imports relative to the original module

~~Blocked on https://github.com/rust-lang/rust/pull/73103 and https://github.com/rust-lang/rust/pull/73566~~

Closes https://github.com/rust-lang/rust/issues/65983.

I tested on the following code (as mentioned in https://github.com/rust-lang/rust/issues/65983#issuecomment-640250993):

```
pub use rand::Rng;
```
link: https://rust-random.github.io/rand/rand_core/trait.RngCore.html
3 years agoAdd zlib1g to builder deps
Mark Rousskov [Thu, 16 Jul 2020 18:53:06 +0000 (14:53 -0400)]
Add zlib1g to builder deps

3 years agoapply bootstrap cfgs
Mark Rousskov [Thu, 16 Jul 2020 13:12:59 +0000 (09:12 -0400)]
apply bootstrap cfgs

3 years agoBump to 1.47
Mark Rousskov [Thu, 16 Jul 2020 13:03:25 +0000 (09:03 -0400)]
Bump to 1.47

3 years agoRemove some `Symbol:as_str()` calls.
Nicholas Nethercote [Tue, 14 Jul 2020 06:29:44 +0000 (16:29 +1000)]
Remove some `Symbol:as_str()` calls.

3 years agoAdd `UnsafetyViolationDetails`.
Nicholas Nethercote [Tue, 14 Jul 2020 02:12:01 +0000 (12:12 +1000)]
Add `UnsafetyViolationDetails`.

This replaces the need for the `description` and `details` symbols in
`UnsafetyViolation`, which are static. As a result some
`Symbol::as_str()` calls are no longer necessary, which is nice.

3 years agoAvoid storing `SymbolStr` in a struct.
Nicholas Nethercote [Mon, 13 Jul 2020 06:45:35 +0000 (16:45 +1000)]
Avoid storing `SymbolStr` in a struct.

It's intended only for very temporary use.

3 years agoRemove `ExtCtxt::ident_of`.
Nicholas Nethercote [Tue, 14 Jul 2020 05:05:26 +0000 (15:05 +1000)]
Remove `ExtCtxt::ident_of`.

It's equivalent to `Ident::from_str_and_span`. The commit also
introduces some more static symbols so that `Ident::new` can be used in
various places instead of `Ident::from_str_and_span`.

The commit also changes `Path::path` from a `&str` to a `Symbol`, which
then allows the lifetime annotation to be removed from `Ty`. Also, the
use of `Symbol` in `Bounds` removes the need for its lifetime
annotation.

3 years agoFix invalid lint
Joshua Nelson [Thu, 16 Jul 2020 22:25:53 +0000 (18:25 -0400)]
Fix invalid lint

intra_doc_resolution_failure is not a lint.

3 years agoAdd (broken and ignored) test for #73829
Joshua Nelson [Wed, 15 Jul 2020 00:04:41 +0000 (20:04 -0400)]
Add (broken and ignored) test for #73829

3 years agoAdd more debugging
Joshua Nelson [Sun, 12 Jul 2020 16:39:11 +0000 (12:39 -0400)]
Add more debugging

3 years agoSupport intra-doc links on trait and module re-exports
Joshua Nelson [Sat, 11 Jul 2020 17:28:05 +0000 (13:28 -0400)]
Support intra-doc links on trait and module re-exports

Trait implementations are treated the same as modules for the purposes
of intra-doc links.

3 years agoSupport intra-doc links on macro re-exports
Joshua Nelson [Fri, 12 Jun 2020 02:58:09 +0000 (22:58 -0400)]
Support intra-doc links on macro re-exports

This includes both `macro_rules!` and proc-macros.

3 years agorand -> my_rand
Joshua Nelson [Wed, 10 Jun 2020 14:30:33 +0000 (10:30 -0400)]
rand -> my_rand

This fixes a failure in stage2 rustdoc tests.

3 years ago #![deny(intra_doc_resolution_failure)]
Joshua Nelson [Wed, 10 Jun 2020 12:56:44 +0000 (08:56 -0400)]
 #![deny(intra_doc_resolution_failure)]

3 years agoMove import to top of function
Joshua Nelson [Wed, 10 Jun 2020 01:00:06 +0000 (21:00 -0400)]
Move import to top of function

3 years agoAdd test for submodules in inner crate
Joshua Nelson [Wed, 10 Jun 2020 00:12:01 +0000 (20:12 -0400)]
Add test for submodules in inner crate

3 years agoAdd test for documenting the re-export
Joshua Nelson [Mon, 8 Jun 2020 02:11:03 +0000 (22:11 -0400)]
Add test for documenting the re-export

3 years agoAdd test for re-exports
Joshua Nelson [Mon, 8 Jun 2020 01:48:31 +0000 (21:48 -0400)]
Add test for re-exports

I had a hard time getting this to work without the `extern crate`,
suggestions are welcome.

3 years agoRemove warnings
Joshua Nelson [Mon, 8 Jun 2020 01:17:56 +0000 (21:17 -0400)]
Remove warnings

3 years agoAdd tests for basic intra-doc links
Joshua Nelson [Mon, 8 Jun 2020 01:16:54 +0000 (21:16 -0400)]
Add tests for basic intra-doc links

3 years agoMake sure that module_id is actually a module
Joshua Nelson [Sun, 7 Jun 2020 21:08:26 +0000 (17:08 -0400)]
Make sure that module_id is actually a module

3 years agounwrap() -> expect()
Joshua Nelson [Sun, 7 Jun 2020 17:45:02 +0000 (13:45 -0400)]
unwrap() -> expect()

3 years agoDon't panic on fake IDs
Joshua Nelson [Sun, 7 Jun 2020 17:05:01 +0000 (13:05 -0400)]
Don't panic on fake IDs

3 years agoUse DefId for modules
Joshua Nelson [Sun, 7 Jun 2020 03:06:21 +0000 (23:06 -0400)]
Use DefId for modules

3 years agoUse the scope of the imported variable for resolution, not the current scope
Joshua Nelson [Sat, 6 Jun 2020 17:09:05 +0000 (13:09 -0400)]
Use the scope of the imported variable for resolution, not the current scope

- Accept DefId in resolve_str_path_error

This will probably break lots of internal invariants.

3 years agoUse get_module instead of `module_map` for `resolve_str_path_error`
Joshua Nelson [Sat, 6 Jun 2020 21:19:21 +0000 (17:19 -0400)]
Use get_module instead of `module_map` for `resolve_str_path_error`

3 years agoSimplify `LifetimeBounds`.
Nicholas Nethercote [Tue, 14 Jul 2020 06:19:44 +0000 (16:19 +1000)]
Simplify `LifetimeBounds`.

The `lifetimes` field is always empty. This commit removes it, and
renames the type as `Bounds`.

3 years agoRemove unused `cx` parameter from `pathvec_std` and `path_std`.
Nicholas Nethercote [Tue, 14 Jul 2020 04:59:39 +0000 (14:59 +1000)]
Remove unused `cx` parameter from `pathvec_std` and `path_std`.

3 years agoSet "invalid_codeblock_attributes" lint to warning level by default
Guillaume Gomez [Thu, 16 Jul 2020 19:32:44 +0000 (21:32 +0200)]
Set "invalid_codeblock_attributes" lint to warning level by default

3 years agoAuto merge of #74408 - Manishearth:rollup-9gxn4od, r=Manishearth
bors [Thu, 16 Jul 2020 19:01:48 +0000 (19:01 +0000)]
Auto merge of #74408 - Manishearth:rollup-9gxn4od, r=Manishearth

Rollup of 21 pull requests

Successful merges:

 - #73566 (Don't run `everybody_loops` for rustdoc; instead ignore resolution errors)
 - #73771 (Don't pollute docs/suggestions with libstd deps)
 - #73794 (Small cleanup for E0705 explanation)
 - #73807 (rustdoc: glue tokens before highlighting)
 - #73835 (Clean up E0710 explanation)
 - #73926 (Ignoring test case: [codegen] repr-transparent-aggregates-1.rs for aarch64)
 - #73981 (Remove some `ignore-stage1` annotations.)
 - #73998 (add regression test for #61216)
 - #74140 (Make hir ProjectionKind more precise)
 - #74148 (Move #[doc(alias)] check in rustc)
 - #74159 (forbid generic params in the type of const params)
 - #74171 (Fix 44056 test with debug on macos.)
 - #74221 (Don't panic if the lhs of a div by zero is not statically known)
 - #74325 (Focus on the current file in the source file sidebar)
 - #74359 (rustdoc: Rename internal API fns to `into_string`)
 - #74370 (Reintroduce spotlight / "important traits" feature)
 - #74390 (Fix typo in std::mem::transmute documentation)
 - #74391 (BtreeMap: superficially refactor root access)
 - #74392 (const generics triage)
 - #74397 (Fix typo in the latest release note)
 - #74406 (Set shell for github actions CI)

Failed merges:

r? @ghost

3 years agoRollup merge of #74406 - Mark-Simulacrum:fix-windows-maybe, r=Mark-Simulacrum
Manish Goregaokar [Thu, 16 Jul 2020 18:19:04 +0000 (11:19 -0700)]
Rollup merge of #74406 - Mark-Simulacrum:fix-windows-maybe, r=Mark-Simulacrum

Set shell for github actions CI

r? @pietroalbini but because this seems at worst harmless and CI is broken self approving

3 years agoRollup merge of #74397 - rhysd:patch-1, r=jonas-schievink
Manish Goregaokar [Thu, 16 Jul 2020 18:19:02 +0000 (11:19 -0700)]
Rollup merge of #74397 - rhysd:patch-1, r=jonas-schievink

Fix typo in the latest release note

3 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

3 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

3 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.

3 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)

3 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.

3 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

3 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

3 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.

3 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

3 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

3 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

3 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.

3 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`.

3 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.

3 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

3 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.

3 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

3 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.

3 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.

3 years agoSet shell for github actions CI
Mark Rousskov [Thu, 16 Jul 2020 17:47:37 +0000 (13:47 -0400)]
Set shell for github actions CI

3 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

3 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

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