Commit Graph

108863 Commits

Author SHA1 Message Date
Mazdak Farrokhzad
7a47df8169
Rollup merge of #70242 - DeeDeeG:improve-e0308, r=Dylan-DPC
Improve E0308 error message wording

Hi folks,

I made [a post on Reddit](https://old.reddit.com/r/rust/comments/fmi11x/consider_linting_rusts_documentationerror_text/) about how (IMO) the docs/error messages can be a bit intimidating, one thing led to another, and I was encouraged to submit a Pull Request if I felt I could re-phrase the error message that I used as an example.

So that's this Pull Request. Open to any feedback or style changes, and I understand this is subjective.

(On another note: I am happy to see [this message was recently improved](https://github.com/rust-lang/rust/pull/69139) in `master`, so it's already better than it is in stable Rust 1.42.0.)

Ideally the last sentence could be split into at least two: [sentence explaining the inferred type.] [Sentence explaining explicit type.] [Sentence that summarizes that "this is bad," and why.]

But I'm not sure how to do so; I'm wary of writing something that turns out to be technically incorrect.
2020-03-24 00:49:43 +01:00
Mazdak Farrokhzad
72c99f2cf0
Rollup merge of #70087 - ecstatic-morse:remove-const-eval-loop-detector, r=RalfJung
Remove const eval loop detector

Now that there is a configurable instruction limit for CTFE (see #67260), we can replace the loop detector with something much simpler. See #66946 for more discussion about this. Although the instruction limit is nightly-only, the only practical way to reach the default limit uses nightly-only features as well (although CTFE will still execute code using such features inside an array initializer on stable).

This will at the very least require a crater run, since it will result in an error wherever the "long running const eval" warning appeared before. We may need to increase the default for `const_eval_limit` to work around this.

Resolves #54384 cc #49980
r? @oli-obk cc @RalfJung
2020-03-24 00:49:41 +01:00
Mazdak Farrokhzad
a73ed5aad9
Rollup merge of #69981 - oli-obk:const_blocks, r=eddyb
Evaluate repeat expression lengths as late as possible

Fixes #68567

r? @varkor
2020-03-24 00:49:39 +01:00
Mazdak Farrokhzad
ee9094869c
Rollup merge of #69740 - mark-i-m:describe-it-3, r=eddyb
Replace some desc logic in librustc_lint with article_and_desc

r? @eddyb @Centril @matthewjasper

Followup to https://github.com/rust-lang/rust/pull/69674

Blocked on #69498
2020-03-24 00:49:37 +01:00
Mazdak Farrokhzad
9da25d9faf
Rollup merge of #67761 - cjgillot:split_graph, r=Zoxc
Move the dep_graph construction to a dedicated crate.

The interface for librustc consists in two traits: `DepKind` and `DepContext`.

The `DepKind` is the main interface. It allows to probe properties of the dependency.
As before, `DepNode` is the pair of a `DepKind` object and a hash fingerprint.

The `DepContext` takes the place of the `TyCtxt`, and handles communication with the query engine.

The use of the `ImplicitCtxt` through `ty::tls` is done through the `DepKind` trait.
This may not be the best choice, but it seemed like the simplest.
2020-03-24 00:49:36 +01:00
Oliver Scherer
9b1893f310 Run rustfmt 2020-03-24 00:16:05 +01:00
Camille GILLOT
0f918cba3f Move import. 2020-03-23 23:19:08 +01:00
Camille GILLOT
9f4c8889e5 Fully qualify the path to DepKind.
This is needed since `middle::cstore` defines another type named
`DepKind`, and we should not rely on shadowing to get the right one.
2020-03-23 23:17:59 +01:00
Camille GILLOT
e0f7b897ba Address review. 2020-03-23 23:17:17 +01:00
Camille GILLOT
d08cc0ba67 Put extract_def_id back on DepNode. 2020-03-23 23:16:35 +01:00
Camille GILLOT
3a8bb20230 Remove assert_ignored and with_ignore_deps. 2020-03-23 23:15:51 +01:00
Camille GILLOT
2326ae39b2 Merge ensure_node_can_be_forced into force_from_dep_node. 2020-03-23 23:15:08 +01:00
Camille GILLOT
db7bd5f828 Fallout in other crates. 2020-03-23 23:14:26 +01:00
Camille GILLOT
6624dc4045 Make librustc_query_system compile. 2020-03-23 23:07:19 +01:00
Camille GILLOT
a7e2641b9a Move dep_graph to new crate librustc_query_system. 2020-03-23 23:07:19 +01:00
Oliver Scherer
4f513b5fd7 Split out some impls from rustc::mir into a separate submodule 2020-03-23 22:39:59 +01:00
Oliver Scherer
5aa15bfa1c Remove leftover mentions of from_anon_const 2020-03-23 22:24:31 +01:00
bors
1edd389cc4 Auto merge of #70330 - Centril:rollup-ts0clvx, r=Centril
Rollup of 9 pull requests

Successful merges:

 - #68700 (Add Wake trait for safe construction of Wakers.)
 - #69494 (Stabilize --crate-version option in rustdoc)
 - #70080 (rustc_mir: remove extra space when pretty-printing MIR.)
 - #70195 (Add test for issue #53275)
 - #70199 (Revised span-to-lines conversion to produce an empty vec on DUMMY_SP.)
 - #70299 (add err_machine_stop macro)
 - #70300 (Reword unused variable warning)
 - #70315 (Rename remaining occurences of Void to Opaque.)
 - #70318 (Split long derive lists into two derive attributes.)

Failed merges:

r? @ghost
2020-03-23 18:48:02 +00:00
Oliver Scherer
124ab20d4b Limit from_anon_const to AnonConsts. 2020-03-23 19:35:19 +01:00
Oliver Scherer
9bcd9fe674 Address review comments 2020-03-23 19:19:07 +01:00
Mazdak Farrokhzad
5b29348cfe
Rollup merge of #70318 - anyska:multiple-derives, r=Dylan-DPC
Split long derive lists into two derive attributes.
2020-03-23 19:04:57 +01:00
Mazdak Farrokhzad
176e2eb271
Rollup merge of #70315 - anyska:void-rename, r=Mark-Simulacrum
Rename remaining occurences of Void to Opaque.

Two mentions of the type were missed when the type was renamed.
2020-03-23 19:04:55 +01:00
Mazdak Farrokhzad
1bb0c929cb
Rollup merge of #70300 - aleksator:66636_reword_unused_variable_warning, r=Dylan-DPC
Reword unused variable warning

Fixes #66636
2020-03-23 19:04:54 +01:00
Mazdak Farrokhzad
8cb3daa368
Rollup merge of #70299 - RalfJung:err_machine_stop, r=oli-obk
add err_machine_stop macro

We have that for all other error kinds, but here I somehow forgot it.

r? @oli-obk
2020-03-23 19:04:52 +01:00
Mazdak Farrokhzad
560eae31c5
Rollup merge of #70199 - pnkfelix:issue-68808-dont-turn-dummy-spans-into-invalid-lines, r=estebank
Revised span-to-lines conversion to produce an empty vec on DUMMY_SP.

This required revising some of the client code to stop relying on the returned set of lines being non-empty.

Fix #68808
2020-03-23 19:04:51 +01:00
Mazdak Farrokhzad
ad6d30314b
Rollup merge of #70195 - rylev:test-for-53275, r=Centril
Add test for issue #53275

Fixes #53275
2020-03-23 19:04:49 +01:00
Mazdak Farrokhzad
4d5eccae50
Rollup merge of #70080 - anyska:mir-double-space, r=oli-obk
rustc_mir: remove extra space when pretty-printing MIR.
2020-03-23 19:04:47 +01:00
Mazdak Farrokhzad
e37e81cad5
Rollup merge of #69494 - GuillaumeGomez:stabilize-crate-version, r=ehuss,aleksator,ollie27
Stabilize --crate-version option in rustdoc

I don't see any reason to not stabilize it anymore, so let's go!

cc @kinnison @ehuss

r? @ollie27
2020-03-23 19:04:45 +01:00
Mazdak Farrokhzad
e4d2f747e5
Rollup merge of #68700 - withoutboats:wake-trait, r=withoutboats
Add Wake trait for safe construction of Wakers.

Currently, constructing a waker requires calling the unsafe `Waker::from_raw` API. This API requires the user to manually construct a vtable for the waker themself - which is both cumbersome and very error prone. This API would provide an ergonomic, straightforward and guaranteed memory-safe way of constructing a waker.

It has been our longstanding intention that the `Waker` type essentially function as an `Arc<dyn Wake>`, with a `Wake` trait as defined here. Two considerations prevented the original API from being shipped as simply an `Arc<dyn Wake>`:

- We want to support futures on embedded systems, which may not have an allocator, and in optimized executors for which this API may not be best-suited. Therefore, we have always explicitly supported the maximally-flexible (but also memory-unsafe) `RawWaker` API, and `Waker` has always lived in libcore.
- Because `Waker` lives in libcore and `Arc` lives in liballoc, it has not been feasible to provide a constructor for `Waker` from `Arc<dyn Wake>`.

Therefore, the Wake trait was left out of the initial version of the task waker API.

However, as Rust 1.41, it is possible under the more flexible orphan rules to implement `From<Arc<W>> for Waker where W: Wake` in liballoc. Therefore, we can now define this constructor even though `Waker` lives in libcore.

This PR adds these APIs:

- A `Wake` trait, which contains two methods
    - A required method `wake`, which is called by `Waker::wake`
    - A provided method `wake_by_ref`, which is called by `Waker::wake_by_ref` and which implementors can override if they can optimize this use case.
- An implementation of `From<Arc<W>> for Waker where W: Wake + Send + Sync + 'static`
- A similar implementation of `From<Arc<W>> for RawWaker`.
2020-03-23 19:04:43 +01:00
Felix S Klock II
763121d68b
Update src/librustc_span/source_map.rs
Co-Authored-By: Mazdak Farrokhzad <twingoow@gmail.com>
2020-03-23 13:32:23 -04:00
bors
55299b2ba9 Auto merge of #70311 - RalfJung:miri, r=RalfJung
update miri

r? @ghost Cc @oli-obk

Fixes https://github.com/rust-lang/rust/issues/70220
2020-03-23 15:47:42 +00:00
Ana-Maria Mihalache
fcb4e771a6 Split long derive lists into two derive attributes. 2020-03-23 14:48:59 +00:00
Saoirse Shipwreckt
32f5724e8a Apply suggestions from code review
Co-Authored-By: Ashley Mannix <ashleymannix@live.com.au>
2020-03-23 15:45:30 +01:00
Saoirse Shipwreckt
caff9f92ab Update src/liballoc/task.rs
Co-Authored-By: Ashley Mannix <ashleymannix@live.com.au>
2020-03-23 15:45:30 +01:00
Saoirse Shipwreckt
a4875a797d Update src/libstd/lib.rs
Co-Authored-By: Ashley Mannix <ashleymannix@live.com.au>
2020-03-23 15:45:30 +01:00
Without Boats
3ae74cafe4 More explicit; CFG on atomic pointer 2020-03-23 15:45:30 +01:00
Without Boats
ede03a4175 typo 2020-03-23 15:45:30 +01:00
Without Boats
c9acdb0bd4 Improve safety implementation, fix typos 2020-03-23 15:45:30 +01:00
Without Boats
d8a835f1a1 Add wake_trait feature directive to std 2020-03-23 15:45:30 +01:00
Without Boats
06ede350c2 Add Wake trait for safe construction of Wakers.
Currently, constructing a waker requires calling the unsafe
`Waker::from_raw` API. This API requires the user to manually construct
a vtable for the waker themself - which is both cumbersome and very
error prone. This API would provide an ergonomic, straightforward and
guaranteed memory-safe way of constructing a waker.

It has been our longstanding intention that the `Waker` type essentially
function as an `Arc<dyn Wake>`, with a `Wake` trait as defined here. Two
considerations prevented the original API from being shipped as simply
an `Arc<dyn Wake>`:

- We want to support futures on embedded systems, which may not have an
  allocator, and in optimized executors for which this API may not be
  best-suited. Therefore, we have always explicitly supported the
  maximally-flexible (but also memory-unsafe) `RawWaker` API, and
  `Waker` has always lived in libcore.
- Because `Waker` lives in libcore and `Arc` lives in liballoc, it has
  not been feasible to provide a constructor for `Waker` from `Arc<dyn
  Wake>`.

Therefore, the Wake trait was left out of the initial version of the
task waker API.

However, as Rust 1.41, it is possible under the more flexible orphan
rules to implement `From<Arc<W>> for Waker where W: Wake` in liballoc.
Therefore, we can now define this constructor even though `Waker` lives
in libcore.

This PR adds these APIs:

- A `Wake` trait, which contains two methods
    - A required method `wake`, which is called by `Waker::wake`
    - A provided method `wake_by_ref`, which is called by
      `Waker::wake_by_ref` and which implementors can override if they
      can optimize this use case.
- An implementation of `From<Arc<W>> for Waker where W: Wake + Send +
  Sync + 'static`
- A similar implementation of `From<Arc<W>> for RawWaker`.
2020-03-23 15:44:58 +01:00
Ana-Maria Mihalache
403ba610c8 Rename remaining occurences of Void to Opaque. 2020-03-23 13:18:51 +00:00
Ralf Jung
648f72abdb update miri 2020-03-23 13:42:08 +01:00
bors
8549cfed4b Auto merge of #69649 - estebank:negative-impl-span, r=Centril
Tweak output for invalid negative impl errors

Follow up to #69722. Tweak negative impl errors emitted in the HIR:

```
error[E0192]: invalid negative impl
  --> $DIR/E0192.rs:9:6
   |
LL | impl !Trait for Foo { }
   |      ^^^^^^
   |
   = note: negative impls are only allowed for auto traits, like `Send` and `Sync`
```
2020-03-23 12:40:36 +00:00
Oliver Scherer
770be24ccd Use DefIds to identify anon consts when converting from HIR to ty::Const 2020-03-23 13:15:02 +01:00
Oliver Scherer
3f89c38bc0 Inline const_param_def_id at its only use site 2020-03-23 13:14:39 +01:00
Oliver Scherer
fa5a15c7d5 Document most methods on ty::Const 2020-03-23 13:14:38 +01:00
Oliver Scherer
799b15ed96 Evaluate repeat expression lengths as late as possible 2020-03-23 13:14:36 +01:00
Ryan Levick
821eef5a48 Make sure issue 53275 test goes through codegen 2020-03-23 11:11:54 +01:00
bors
5aa8f199c3 Auto merge of #70305 - Centril:rollup-zi13fz4, r=Centril
Rollup of 8 pull requests

Successful merges:

 - #69080 (rustc_codegen_llvm: don't generate any type debuginfo for -Cdebuginfo=1.)
 - #69940 (librustc_codegen_llvm: Replace deprecated API usage)
 - #69942 (Increase verbosity when suggesting subtle code changes)
 - #69968 (rustc: keep upvars tupled in {Closure,Generator}Substs.)
 - #70123 (Ensure LLVM is in the link path for rustc tools)
 - #70159 (Update the bundled wasi-libc with libstd)
 - #70233 (resolve: Do not resolve visibilities on proc macro definitions twice)
 - #70286 (Miri error type: remove UbExperimental variant)

Failed merges:

r? @ghost
2020-03-23 09:30:00 +00:00
Mazdak Farrokhzad
07e1043222
Rollup merge of #70286 - RalfJung:no-experiments, r=petrochenkov
Miri error type: remove UbExperimental variant

In https://github.com/rust-lang/miri/pull/1250, I will move Miri away from that variant, and use a custom `MachineStop` exception instead.
2020-03-23 10:29:18 +01:00