Commit graph

123334 commits

Author SHA1 Message Date
Joshua Nelson
bbe4971095 Don't crash on Vec<DoesNotExist> 2020-07-15 10:54:05 -04:00
Joshua Nelson
3576f5d7e1 Address review comments about code style 2020-07-15 10:54:05 -04:00
Joshua Nelson
0cbc1cddcc Avoid unnecessary enum
Just use a boolean instead.
2020-07-15 10:54:05 -04:00
Joshua Nelson
cf844d2eab Don't make typeck_tables_of public 2020-07-15 10:54:05 -04:00
Joshua Nelson
d01044305a Add test case for #65863 2020-07-15 10:54:05 -04:00
Joshua Nelson
a93bcc9a7b Recurse into function bodies, but don't typeck closures
Previously, rustdoc would issue a delay_span_bug ICE on the following code:

```rust
pub fn a() -> impl Fn() -> u32 {
    || content::doesnt::matter()
}
```

This wasn't picked up earlier because having `type Alias = impl Trait;`
in the same module caused _all closures_ to be typechecked, even if they
wouldn't normally. Additionally, if _any_ error was emitted, no
delay_span_bug would be emitted. So as part of this commit all of the
tests were separated out into different files.
2020-07-15 10:54:05 -04:00
Joshua Nelson
768d6a4950 Don't ICE on errors in function returning impl trait
Instead, report the error.

This emits the errors on-demand, without special-casing `impl Trait`, so
it should catch all ICEs of this kind, including ones that haven't been
found yet.

Since the error is emitted during type-checking there is less info about
the error; see comments in the code for details.

- Add test case for -> impl Trait
- Add test for impl trait with alias
- Move EmitIgnoredResolutionErrors to rustdoc

This makes `fn typeck_item_bodies` public, which is not desired behavior.
That change should be removed once
https://github.com/rust-lang/rust/pull/74070 is merged.

- Don't visit nested closures twice
2020-07-15 10:54:05 -04:00
Dylan MacKenzie
14a8707cde Add rustdoc tests from #72088 2020-07-15 10:54:05 -04:00
Joshua Nelson
1b8accb749 Add an option not to report resolution errors for rustdoc
- Remove unnecessary `should_loop` variable
- Report errors for trait implementations

These should give resolution errors because they are visible outside the
current scope. Without these errors, rustdoc will give ICEs:

```
thread 'rustc' panicked at 'attempted .def_id() on invalid res: Err', /home/joshua/src/rust/src/libstd/macros.rs:16:9
  15: rustc_hir::def::Res<Id>::def_id
             at /home/joshua/src/rust/src/librustc_hir/def.rs:382
  16: rustdoc::clean::utils::register_res
             at src/librustdoc/clean/utils.rs:627
  17: rustdoc::clean::utils::resolve_type
             at src/librustdoc/clean/utils.rs:587
```

- Add much more extensive tests
  + fn -> impl -> fn
  + fn -> impl -> fn -> macro
  + errors in function parameters
  + errors in trait bounds
  + errors in the type implementing the trait
  + unknown bounds for the type
  + unknown types in function bodies
  + errors generated by macros

- Use explicit state instead of trying to reconstruct it from random info
- Use an enum instead of a boolean
- Add example of ignored error
2020-07-15 10:54:05 -04:00
Joshua Nelson
b3187aabd2 Don't run analysis pass in rustdoc
- Explicitly check for missing docs
- Don't run any lints except those we explicitly specified
2020-07-15 10:54:05 -04:00
Joshua Nelson
a5275ff415 Don't run everybody_loops for rustdoc
Instead, ignore resolution errors that occur in item bodies.

The reason this can't ignore item bodies altogether is because
`const fn` could be used in generic types, for example `[T; f()]`
2020-07-15 10:54:05 -04: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
d9e8d62907 Auto merge of #74214 - nnethercote:change-SymbolName-name, r=eddyb
Change `SymbolName::name` to a `&str`.

This eliminates a bunch of `Symbol::intern()` and `Symbol::as_str()`
calls, which is good, because they require locking the interner.

Note that the unsafety in `from_cycle_error()` is identical to the
unsafety on other adjacent impls.

r? @eddyb
2020-07-15 08:44:46 +00:00
bors
c714eae0e3 Auto merge of #71272 - jclulow:illumos-x86-ci, r=pietroalbini
build dist for x86_64-unknown-illumos

This change creates a new Docker image, "dist-x86_64-illumos", and sets
things up to build the full set of "dist" packages for illumos hosts, so
that illumos users can use "rustup" to install packages.  It also
adjusts the manifest builder to expect complete toolchains for this
platform.
2020-07-15 04:46:06 +00:00
Nicholas Nethercote
a1b8540390 Undo the const_str changes from the previous commit. 2020-07-15 14:38:00 +10:00
Nicholas Nethercote
7c4d431c06 Change SymbolName::name to a &str.
This eliminates a bunch of `Symbol::intern()` and `Symbol::as_str()`
calls, which is good, because they require locking the interner.

Note that the unsafety in `from_cycle_error()` is identical to the
unsafety on other adjacent impls.
2020-07-15 14:37:55 +10:00
bors
567ad7455d Auto merge of #74175 - nnethercote:more-static-symbols, r=oli-obk
More static symbols

These commits add some more static symbols and convert lots of places to use them.

r? @oli-obk
2020-07-15 00:16:25 +00:00
Nicholas Nethercote
5930081f34 Remove lots of Symbol::as_str() calls.
In various ways, such as changing functions to take a `Symbol` instead
of a `&str`.
2020-07-15 09:01:35 +10:00
Nicholas Nethercote
f04e866e57 Add and use more static symbols.
Note that the output of `unpretty-debug.stdout` has changed. In that
test the hash values are normalized from a symbol numbers to small
numbers like "0#0" and "0#1". The increase in the number of static
symbols must have caused the original numbers to contain more digits,
resulting in different pretty-printing prior to normalization.
2020-07-15 08:42:59 +10:00
Nicholas Nethercote
e284f5d050 Fix the ordering of the static symbols. 2020-07-15 08:42:59 +10:00
Nicholas Nethercote
026089bdb5 Rename sym::nontrapping_fptoint. 2020-07-15 08:42:59 +10:00
bors
23744c84d9 Auto merge of #74342 - Manishearth:rollup-l63pesj, r=Manishearth
Rollup of 11 pull requests

Successful merges:

 - #73759 (Add missing Stdin and StdinLock examples)
 - #74211 (Structured suggestion when not using struct pattern)
 - #74228 (Provide structured suggestion on unsized fields and fn params)
 - #74252 (Don't allow `DESTDIR` to influence LLVM builds)
 - #74263 (Slight reorganization of sys/(fast_)thread_local)
 - #74271 (process_unix: prefer i32::*_be_bytes over manually shifting bytes)
 - #74272 (pprust: support multiline comments within lines)
 - #74332 (Update cargo)
 - #74334 (bootstrap: Improve wording on docs for `verbose-tests`)
 - #74336 (typeck: use `item_name` in cross-crate packed diag)
 - #74340 (lint: use `transparent_newtype_field` to avoid ICE)

Failed merges:

r? @ghost
2020-07-14 20:19:59 +00:00
Manish Goregaokar
dbe7ed33cd
Rollup merge of #74340 - davidtwco:issue-73747-improper-ctypes-defns-is-zst-with-params, r=pnkfelix
lint: use `transparent_newtype_field` to avoid ICE

Fixes #73747.

This PR re-uses the `transparent_newtype_field` function instead of manually calling `is_zst` on normalized fields to determine which field in a transparent type is the non-zero-sized field, thus avoiding an ICE.
2020-07-14 13:19:39 -07:00
Manish Goregaokar
c4fcf5a7a4
Rollup merge of #74336 - davidtwco:issue-73112-cross-crate-packed-type-diagnostic, r=estebank
typeck: use `item_name` in cross-crate packed diag

Fixes #73112.

This PR replaces the use of `expect_local` and `hir().get` to fetch the identifier for a ADT with `item_name` - which works across crates.
2020-07-14 13:19:37 -07:00
Manish Goregaokar
aedb7c37b8
Rollup merge of #74334 - jyn514:config-toml-docs, r=spastorino
bootstrap: Improve wording on docs for `verbose-tests`

From https://github.com/rust-lang/rustc-dev-guide/pull/795#discussion_r454392291

r? @spastorino
2020-07-14 13:19:35 -07:00
Manish Goregaokar
1cd8c5e4ee
Rollup merge of #74332 - ehuss:update-cargo, r=ehuss
Update cargo

4 commits in 4f74d9b2a771c58b7ef4906b2668afd075bc8081..43cf77395cad5b79887b20b7cf19d418bbd703a9
2020-07-08 17:13:00 +0000 to 2020-07-13 17:35:42 +0000
- fix: add space to comments (rust-lang/cargo#8476)
- Allow configuring unstable flags via config file (rust-lang/cargo#8393)
- Add support for rustc's `-Z terminal-width`. (rust-lang/cargo#8427)
- Avoid colliding with older Cargo fingerprint changes (rust-lang/cargo#8473)
2020-07-14 13:19:33 -07:00
Manish Goregaokar
92e90f943c
Rollup merge of #74272 - davidtwco:issue-73626-multiline-mixed-comments, r=Mark-Simulacrum
pprust: support multiline comments within lines

Fixes #73626.

This PR adds support to `rustc_ast_pretty` for multiline comments that start and end within a line of source code.

Fun fact: [the commit which added this assert](d12ea39896) was from 2011!
d12ea39896/src/comp/pretty/pprust.rs (L1146-L1150)
2020-07-14 13:19:32 -07:00
Manish Goregaokar
7b1247c34f
Rollup merge of #74271 - lzutao:cmdbytes, r=LukasKalbertodt
process_unix: prefer i32::*_be_bytes over manually shifting bytes

This PR makes it more clear about the intend of the code.
2020-07-14 13:19:30 -07:00
Manish Goregaokar
fadd91c630
Rollup merge of #74263 - RalfJung:thread-local, r=Mark-Simulacrum
Slight reorganization of sys/(fast_)thread_local

I was long confused by the `thread_local` and `fast_thread_local` modules in the `sys(_common)` part of libstd. The names make it *sound* like `fast_thread_local` is just a faster version of `thread_local`, but really these are totally different APIs: one provides thread-local "keys", which are non-addressable pointer-sized pieces of local storage with an associated destructor; the other (the "fast" one) provides just a destructor.

So I propose we rename `fast_thread_local` to `thread_local_dtor`, and `thread_local` to `thread_local_key`. That's what this PR does.
2020-07-14 13:19:28 -07:00
Manish Goregaokar
1e74f28599
Rollup merge of #74252 - shepmaster:bootstrap-rust-destdir, r=Mark-Simulacrum
Don't allow `DESTDIR` to influence LLVM builds

When running a command like `DESTDIR=foo x.py install` in a completely
clean build directory, this will cause LLVM to be installed into
`DESTDIR`, which then causes the build to fail later when it attempts
to *use* those LLVM files.
2020-07-14 13:19:26 -07:00
Manish Goregaokar
a364c0a782
Rollup merge of #74228 - estebank:unsized-param, r=davidtwco
Provide structured suggestion on unsized fields and fn params

* Suggest borrowing or boxing unsized fields
* Suggest borrowing fn parameters
* Remove some verbosity of unsized errors
* Remove `on_unimplemented` note from `trait Sized`

Fix #23286, fix #28653.

r? @davidtwco
2020-07-14 13:19:24 -07:00
Manish Goregaokar
be5c7abfd6
Rollup merge of #74211 - estebank:struct-pat-as-unit, r=petrochenkov
Structured suggestion when not using struct pattern

r? @petrochenkov
2020-07-14 13:19:22 -07:00
Manish Goregaokar
353df59893
Rollup merge of #73759 - GuillaumeGomez:stdin-examples, r=Dylan-DPC
Add missing Stdin and StdinLock examples

r? @Dylan-DPC
2020-07-14 13:19:20 -07:00
Esteban Küber
ff75395ca8 Reword message 2020-07-14 12:19:50 -07:00
Esteban Küber
c38b127d84 Remove redundant explanatory note for type parameters 2020-07-14 12:19:44 -07:00
David Wood
cccc3109ff
lint: use transparent_newtype_field to avoid ICE
This commit re-uses the `transparent_newtype_field` function instead of
manually calling `is_zst` on normalized fields to determine which field
in a transparent type is the non-zero-sized field, thus avoiding an ICE.

Signed-off-by: David Wood <david@davidtw.co>
2020-07-14 19:26:34 +01:00
Esteban Küber
d989796b47 Suggest borrowing in more unsized fn param cases 2020-07-14 10:50:24 -07:00
Esteban Küber
b7db6bb5af Remove Sized on_unimplemented note 2020-07-14 10:50:24 -07:00
Esteban Küber
28e6f1f5b9 Suggest boxing or borrowing unsized fields 2020-07-14 10:50:24 -07:00
Esteban Küber
a15bda4036 Point at type on E0275 instead of whole field 2020-07-14 10:50:24 -07:00
Esteban Küber
c88409de13 Suggest borrowing unsized argument types 2020-07-14 10:50:24 -07:00
Esteban Küber
04298204ed Suggest struct pat on incorrect unit or tuple pat
When encountering a unit or tuple pattern for a struct-like item, suggest
using the correct pattern.

Use `insert_field_names_local` when evaluating variants and store field
names even when the list is empty in order to produce accurate
structured suggestions.
2020-07-14 10:41:44 -07:00
bors
2002ebacfb Auto merge of #74330 - Manishearth:rollup-mrc09pb, r=Manishearth
Rollup of 15 pull requests

Successful merges:

 - #71237 (Add Ayu theme to rustdoc)
 - #73720 (Clean up E0704 error explanation)
 - #73866 (Obviate #[allow(improper_ctypes_definitions)])
 - #73965 (typeck: check for infer before type impls trait)
 - #73986 (add (unchecked) indexing methods to raw (and NonNull) slices)
 - #74173 (Detect tuple struct incorrectly used as struct pat)
 - #74220 (Refactor Windows `parse_prefix`)
 - #74227 (Remove an unwrap in layout computation)
 - #74239 (Update llvm-project to latest origin/rustc/10.0-2020-05-05 commit )
 - #74257 (don't mark linux kernel module targets as a unix environment)
 - #74270 (typeck: report placeholder type error w/out span)
 - #74296 (Clarify the description for rfind)
 - #74310 (Use `ArrayVec` in `SparseBitSet`.)
 - #74316 (Remove unnecessary type hints from Wake internals)
 - #74324 (Update Clippy)

Failed merges:

r? @ghost
2020-07-14 17:11:02 +00:00
David Wood
d9485be595
typeck: use item_name in cross-crate packed diag
This commit replaces the use of `expect_local` and `hir().get` to fetch
the identifier for a ADT with `item_name` - which works across crates.

Signed-off-by: David Wood <david@davidtw.co>
2020-07-14 16:28:11 +01:00
Joshua Nelson
ba661d829d bootstrap: Improve wording on docs for verbose-tests 2020-07-14 11:11:24 -04:00
Eric Huss
4c9e67a7d7 Update cargo 2020-07-14 07:50:18 -07:00
Manish Goregaokar
5414eae452
Rollup merge of #74324 - flip1995:clippyup, r=Manishearth
Update Clippy

~~I'm not sure, if we can/should land this before beta is branched.~~ (Nvm, beta is already branched) The last Clippy update was 3 weeks ago: #73660

This includes, besides other minor things:

- New lints
- One lint deprecation
- One lint was moved to pedantic
- Some FP fixes
- I think an ICE fix?

cc @Mark-Simulacrum

r? @Manishearth

---

We probably should also think of some process when and how often we should sync Clippy to the rust repo, so that we don't end up with those huge updates. Maybe every 2 weeks? Or even every week? cc @rust-lang/clippy
2020-07-14 07:39:19 -07:00
Manish Goregaokar
2fb307aca5
Rollup merge of #74316 - yoshuawuyts:no-wake-type-hints, r=Mark-Simulacrum
Remove unnecessary type hints from Wake internals

While working on https://github.com/rust-lang/rust/pull/74304 I noticed we were writing out the type signature twice in some internal `Wake` impl methods; this streamlines that. Thanks!
2020-07-14 07:39:17 -07:00
Manish Goregaokar
99c0b9764a
Rollup merge of #74310 - nnethercote:use-ArrayVec-in-SparseBitSet, r=eddyb
Use `ArrayVec` in `SparseBitSet`.

Instead of `SmallVec`, because the maximum size is known.

r? @eddyb
2020-07-14 07:39:15 -07:00
Manish Goregaokar
e8703e88fc
Rollup merge of #74296 - Lynoure:rfind-doc-improvement, r=hanna-kruppe
Clarify the description for rfind

Changes the wording in rfind description to be clearer and the example code to illustrate the difference between
find and rfind
2020-07-14 07:39:13 -07:00