123340 Commits

Author SHA1 Message Date
Manish Goregaokar
65ac3948ae
Rollup merge of - eddyb:forall-tcx-providers, r=nikomatsakis
Use for<'tcx> fn pointers in Providers, instead of having Providers<'tcx>.

In order to work around normalization-under-HRTB (for `provide!` in `rustc_metadata`), we ended up with this:
```rust
struct Providers<'tcx> {
    type_of: fn(TyCtxt<'tcx>, DefId) -> Ty<'tcx>,
    // ...
}
```
But what I initially wanted to do, IIRC, was this:
```rust
struct Providers {
    type_of: for<'tcx> fn(TyCtxt<'tcx>, DefId) -> Ty<'tcx>,
    // ...
}
```

This PR moves to the latter, for the simple reason that only the latter allows keeping a `Providers` value, or a subset of its `fn` pointer fields, around in a `static` or `thread_local!`, which can be really useful for custom drivers that override queries.
(@jyn514 and I came across a concrete usecase of that in `rustdoc`)

The `provide!` macro in `rustc_metadata` is fixed by making the query key/value types available as type aliases under `ty::query::query_{keys,values}`, not just associated types (this is the first commit).

r? @nikomatsakis
2020-07-09 11:50:28 -07:00
Manish Goregaokar
d163524cf4
Rollup merge of - Manishearth:parens-intra-doc, r=GuillaumeGomez,jyn514
Allow for parentheses after macro intra-doc-links

None
2020-07-09 11:50:26 -07:00
Manish Goregaokar
5fc46fa9d2
Rollup merge of - poliorcetics:fix-link-in-partialeq, r=Dylan-DPC
Fixing broken link for the Eq trait

Fixes .
2020-07-09 11:50:17 -07:00
bors
be88122039 Auto merge of - giraffate:fix_a_broken_link, r=phansch
Fix a broken link in CONTRIBUTING.md

changelog: none
2020-07-09 18:21:44 +00:00
Manish Goregaokar
fe351e9b8e Add test 2020-07-09 10:27:48 -07:00
Manish Goregaokar
36a229b28d Move to unstable section 2020-07-09 09:19:50 -07:00
Esteban Küber
e771a4f989 Tweak :: -> : typo heuristic and reduce verbosity
Do not trigger on correct type ascription expressions with trailing
operators and _do_ trigger on likely path typos where a turbofish is
used.

On likely path typos, remove note explaining type ascription.
2020-07-09 09:09:25 -07:00
Esteban Küber
fc6ee8f38b Reduce indentation 2020-07-09 09:05:40 -07:00
Manish Goregaokar
08d3a74a8f Allow for parentheses after macro intra-doc-links 2020-07-09 08:44:28 -07:00
Manish Goregaokar
271e2a988f Update src/doc/rustdoc/src/intra-doc-links.md 2020-07-09 08:34:42 -07:00
Manish Goregaokar
09f51d41cc Add docs for intra-doc-links 2020-07-09 08:34:38 -07:00
Takayuki Nakata
c79c6888a5 Fix a broken link in CONTRIBUTING.md 2020-07-09 22:07:15 +09:00
bors
45eea9a822 Auto merge of - montrivo:bugfix/single-match-else, r=matthiaskrgr
single_match_else - single expr/stmt else block corner case

One approach to fix .
See discussion in the issue.

changelog: single_match_else - single expr/stmt else block corner case fix
2020-07-09 12:03:14 +00:00
Ralf Jung
35fae7364f update miri 2020-07-09 13:36:16 +02:00
Tim Nielens
dac19e3afc single_match_else - single expr/stmt else block corner case 2020-07-09 12:04:27 +02:00
bors
5db778affe Auto merge of - ollie27:rustdoc_invalid_codeblock_attributes_name, r=GuillaumeGomez
rustdoc: Rename invalid_codeblock_attribute lint to be plural

Lint names should be plural as per the lint naming conventions: https://github.com/rust-lang/rfcs/blob/master/text/0344-conventions-galore.md#lints

r? @GuillaumeGomez
2020-07-09 07:00:27 +00:00
Nicholas Nethercote
81c5bb6a3f Eliminate confusing "globals" terminology.
There are some structures that are called "globals", but are they global
to a compilation session, and not truly global. I have always found this
highly confusing, so this commit renames them as "session globals" and
adds a comment explaining things.

Also, the commit fixes an unnecessary nesting of `set()` calls
`src/librustc_errors/json/tests.rs`
2020-07-09 14:11:44 +10:00
Joshua M. Clulow
7fb421bd77 linker: illumos ld does not support --eh-frame-hdr
As of , the --eh-frame-hdr flag is unconditionally
passed to linkers on many platforms.  The illumos link editor does not
currently support this flag.

The linker machinery in the Rust toolchain currently seems to use the
(potentially cross-compiled) target to choose linker flags, rather than
looking at what might be running on the build system.  Disabling the
flag for all illumos/Solaris targets seems like the best we can do for
now without more serious surgery.
2020-07-08 23:36:05 +00:00
Bastian Kauschke
1f982305e4 ToPredicate by value 2020-07-08 23:40:06 +02:00
Tom Eccles
d9fec595e8 ci: fix context for disabled docker images
When the dockerfiles were moved into the host-x86_64 directory, paths
for COPY commands were updated with the new host-x86_64/ prefix. This
suggested that the intended context was src/ci/docker. However, the context
for disabled docker images was src/ci/docker/host-x86_64. This broke the new
paths and prevented src/ci/docker/scripts from being included in the
context at all.

This commit corrects this context allowing docker to find the files it
needs for COPY commands.
2020-07-08 22:02:31 +01:00
Tom Eccles
51b646e487 ci: disabled: riscv: minimise docker overlays
Suggested by @bjorn3

Every RUN command creates a new overlay on top of the image as of before
the RUN command. Using fewer RUN commands prevents intermediate overlays
(which in this case would have contained the entire Linux source tree).
2020-07-08 21:20:13 +01:00
bors
8aa18cbdc5 Auto merge of - ehuss:fix-bootstrap-test-librustc, r=Mark-Simulacrum
Fix x.py test for librustc crates.

 introduced a bug where `x.py test src/librustc_ast` would fail to actually run the tests. The issue is that `krate` and `all_krates` were changed to return relative paths. This caused the code to do a test of "relative_path ends with absolute path" which is always false.  The solution is to swap that around.

The change to `Crate` isn't necessary, it just simplifies the code and makes it uniform with `CrateLibrustc`.
2020-07-08 20:03:32 +00:00
Eduardo Broto
db1c946aaa unnecessary_sort_by: avoid linting if key borrows 2020-07-08 21:31:59 +02:00
Eric Huss
ca22091a90 Update cargo 2020-07-08 10:48:24 -07:00
Eric Huss
7238726399 Fix librustc_errors unit tests. 2020-07-08 10:44:29 -07:00
Seth Pellegrino
56b6b44641 Avoid running test on Windows platforms
There don't seem to be any other compiletests that are 1) building a standalone "no_core" create and then 2) trying to link against it. There seems to be a platform-specific limitation in doing so:

```
2020-07-08T16:07:42.9419409Z   = note:    Creating library D:\a\rust\rust\build\i686-pc-windows-msvc\test\rustdoc\intra-link-prim-methods-external-core\auxiliary\my_core.dll.lib and object D:\a\rust\rust\build\i686-pc-windows-msvc\test\rustdoc\intra-link-prim-methods-external-core\auxiliary\my_core.dll.exp
2020-07-08T16:07:42.9419810Z           LINK : error LNK2001: unresolved external symbol __DllMainCRTStartup@12
2020-07-08T16:07:42.9420032Z           D:\a\rust\rust\build\i686-pc-windows-msvc\test\rustdoc\intra-link-prim-methods-external-core\auxiliary\my_core.dll : fatal error LNK1120: 1 unresolved externals
```

Possibly this could be resolved by adding a `__DllMainCRTStartup` or `__DllMainCRTStartup@12` symbol in an architecture- and platform-specific way.
2020-07-08 09:48:15 -07:00
robojumper
37d75da266 make match_like_matches_macro only apply to matches with a wildcard 2020-07-08 18:37:20 +02:00
Tamir Duberstein
1e567c1168
Avoid "blacklist"
Other terms are more inclusive and precise.

Clippy still has a lint named "blacklisted-name", but renaming it would
be a breaking change, so is left for future work.

The target configuration option "abi-blacklist" has been depreciated and
renamed to "unsupported-abis". The old name continues to work.
2020-07-08 12:08:27 -04:00
bors
e12a316b01 Auto merge of - flip1995:rustup, r=flip1995
Rustup

changelog: none

r? @ghost
2020-07-08 15:56:23 +00:00
Eric Huss
26353eae4c Fix x.py test for librustc crates. 2020-07-08 08:52:48 -07:00
Seth Pellegrino
9366458c58 Apply #![crate_type = "rlib"] directly to the linker 2020-07-08 08:20:43 -07:00
Arlo Siemsen
59f979fa06 Fix cross-compilation of LLVM to aarch64 Windows targets
When cross-compiling, the LLVM build system recurses to build tools
that need to run on the host system. However, since we pass cmake defines
to set the compiler and target, LLVM still compiles these tools for the
target system, rather than the host. The tools then fail to execute
during the LLVM build.

This change sets defines for the tools that need to run on the
host (llvm-nm, llvm-tablegen, and llvm-config), so that the LLVM build
does not attempt to build them, and instead relies on the tools already built.

If compiling with clang-cl, this change also adds the `--target` option
to specify the target triple. MSVC compilers do not require this, since there
is a separate compiler binary for cross-compilation.
2020-07-08 08:19:50 -07:00
Ayaz Hafiz
3c63fba03d
Correctly mark the ending span of a match arm
Closes 

r? @matthewjasper
2020-07-08 07:28:07 -07:00
bors
1d919c9377 Auto merge of - ehuss:fix-doc-dry-run-up-to-date, r=Mark-Simulacrum
Fix occasional bootstrap panic in docs.

I am occasionally running into this panic when running `x.py`:

> thread 'main' panicked at 'source "/Users/eric/Proj/rust/rust/build/x86_64-apple-darwin/md-doc/unstable-book" failed to get metadata: No such file or directory (os error 2)', src/build_helper/lib.rs:173:19

I have not been able to figure out the exact sequence of commands that leads to this error (I tried for quite a while to reproduce it). I think it may involve updating my tree, but I am uncertain.  An artificial way to trigger it is to build the documentation, and then delete the `md-doc` directory manually.

The cause is that bootstrap does a "dry run" before every command, and in this case `up_to_date` panics because the destination exists (`build/x86_64-apple-darwin/doc/unstable-book/index.html `) but the source does not (`build/x86_64-apple-darwin/md-doc/unstable-book`).

I am uncertain if it is important that the last line `builder.run(…)` needs to be called during the dry run. This patch seems to fix the issue, though.
2020-07-08 09:47:41 +00:00
Dennis Hamester
c8b16cdbd0 rustdoc: Allow linking from private items to private types
Fixes 

After PR  this would trigger an intra_doc_link_resolution_failure warning
when rustdoc is invoked without --document-private-items. Links from private
items to private types are however never actually generated in that case and
thus shouldn't produce a warning. These links are in fact a very useful tool to
document crate internals.

Tests are added for all 4 combinations of public/private items and link
targets. Test 1 is the case mentioned above and fails without this commit. Tests
2 - 4 passed before already but are added nonetheless to prevent regressions.
2020-07-08 08:15:34 +02:00
Ivan Tham
0965443001
Remove unneeded ToString import in liballoc slice 2020-07-08 12:47:19 +08:00
Ivan Tham
7bc85e29c9
Liballoc use vec instead of vector
Keep congruency with other parts, full word vector is rarely used.
2020-07-08 12:44:43 +08:00
Dan Gohman
58fc61b79c Make WASI's FileExt's read_at/write_at consistent with other targets.
Rename the existing read_at/write_at to read_vectored_at/write_vectored_at,
for consistency with libstd's read_vectored/write_vectored. And,
introduce new read_at/write_at functions which take a single buffer,
similar to all other targets which provide these functions, so this will
make it easier for applications to share code between WASI and other
targets.

Note that WASI's FileExt is currently unstable.
2020-07-07 16:04:52 -07:00
Dan Gohman
653c091262 Add read_exact_at and write_all_at to WASI's FileExt
This adds `read_exact_at` and `write_all_at` to WASI's `FileExt`,
similar to the Unix versions of the same names.
2020-07-07 16:04:52 -07:00
Yuki Okushi
dd07774617
Fix broken link in rustdocdoc 2020-07-08 07:15:17 +09:00
Michael Forney
32025fd76a Update rust-installer to latest version
This pulls in a fix for the install script on some tr(1) implementations,
as well as an update to use `anyhow` instead of `failure` for error
handling.
2020-07-07 14:15:51 -07:00
Seth Pellegrino
8d267db31a Revert "Add guard to check for local core crate"
This reverts commit ee3a0f867e938f469cbbb422a76ed5662be2ecc7.
2020-07-07 14:15:31 -07:00
Eric Huss
b50c13cc28 Update books 2020-07-07 13:53:46 -07:00
bors
8ac1525e09 Auto merge of - euclio:sys-unix-static-mut, r=oli-obk
libstd: remove some mutable statics in sys::unix

My understanding is that this achieves the same behavior and performance with safe code.
2020-07-07 19:35:26 +00:00
Seth Pellegrino
f258d98f65 ignore-tidy-linelength for @has assertions 2020-07-07 10:39:10 -07:00
Oliver Middleton
56fb71786a rustdoc: Rename invalid_codeblock_attribute lint to be plural 2020-07-07 18:29:26 +01:00
Seth Pellegrino
865b930bc9 Assert current behavior for links
For the two of these tests that have a local `char` to link to, this behavior isn't what's expected, but is what's happening presently.
2020-07-07 10:23:29 -07:00
Aleksey Kladov
b82df31bf3 ⬆️ rust-analyzer 2020-07-07 18:37:41 +02:00
bors
e1beee4992 Auto merge of - RalfJung:miri-uninit-validation, r=oli-obk
Miri value validation: fix handling of uninit memory

Fixes https://github.com/rust-lang/miri/issues/1456
Fixes https://github.com/rust-lang/miri/issues/1467

r? @oli-obk
2020-07-07 14:21:18 +00:00
Takayuki Nakata
5307cb5614 Add a lint for .repeat(1)
fix .
2020-07-07 23:13:39 +09:00