Commit Graph

104424 Commits

Author SHA1 Message Date
Oliver Scherer
e21d2c8f9b Move all functions used by the queries to query.rs 2019-12-26 12:11:12 +01:00
Oliver Scherer
43221a684d Move a function to make its adjacent impl block easier to discover 2019-12-26 12:11:11 +01:00
Oliver Scherer
eea51e3427 Make some functions crate local 2019-12-26 12:11:11 +01:00
Oliver Scherer
eda3fa9eb5 Move eval_body_using_ecx to the only module it is used in 2019-12-26 12:11:11 +01:00
Oliver Scherer
9a82458e70 Move eval_const_fn_call to the const_eval module 2019-12-26 12:11:11 +01:00
Oliver Scherer
2d67edd32c Move const eval query components into their own module 2019-12-26 12:11:11 +01:00
Oliver Scherer
3e7fa3c6f2 Move const eval machine into its own module 2019-12-26 12:10:36 +01:00
bors
c0b16b4e6a Auto merge of #67268 - estebank:assoc-types, r=oli-obk
Tweak errors for missing associated types and type parameters

* On `dyn Trait` missing associated types, provide a structured suggestion for them
* On missing type parameters, provide structured suggestion for them
* Point at trait definition when missing required type parameter
* Tweak output of E0658
* Tweak wording of E0719
* Account for `Trait1 + Trait2` case

Fix #66380, fix #60595. CC #63711.
2019-12-26 03:42:59 +00:00
bors
b13d65ab92 Auto merge of #67580 - RalfJung:miri-unleash-tests, r=oli-obk
test the unleashed Miri

In particular, test what happens when we try to drop something. Cc https://github.com/rust-lang/const-eval/issues/17

r? @oli-obk
2019-12-26 00:27:13 +00:00
bors
bbf13723bc Auto merge of #66919 - dtolnay:description, r=KodrAus
Deprecate Error::description for real

`description` has been documented as soft-deprecated since 1.27.0 (17 months ago). There is no longer any reason to call it or implement it.

This PR:

- adds `#[rustc_deprecated(since = "1.41.0")]` to `Error::description`;
- moves `description` (and `cause`, which is also deprecated) below the `source` and `backtrace` methods in the Error trait;
- reduces documentation of `description` and `cause` to take up much less vertical real estate in rustdocs, while preserving the example that shows how to render errors without needing to call `description`;
- removes the description function of all *currently unstable* Error impls in the standard library;
- marks `#[allow(deprecated)]` the description function of all *stable* Error impls in the standard library;
- replaces miscellaneous uses of `description` in example code and the compiler.

---

![description](https://user-images.githubusercontent.com/1940490/69910369-3bbaca80-13bf-11ea-94f7-2fe27a7ea333.png)
2019-12-25 21:10:49 +00:00
Esteban Küber
621d7e959b Fix rebase and sort assoc type list for deterministic output 2019-12-25 11:12:56 -08:00
bors
ed33453a37 Auto merge of #67524 - LukasKalbertodt:improve-into-iter-lint, r=matthewjasper
Generalize `array_into_iter` lint to also lint for boxed arrays

`Box` is special in that a method call on a box can move the value out
of the box. Thus, the same backwards-compatibility problem can arise
for boxed arrays as for simple arrays.

---

CC #66145
r? @matthewjasper  (as you reviewed the first PR)
2019-12-25 10:20:48 +00:00
Ralf Jung
40b8b7c338 use error-pattern 2019-12-25 11:19:05 +01:00
David Tolnay
4646a88b7a
Deprecate Error::description for real
`description` has been documented as soft-deprecated since 1.27.0 (17
months ago). There is no longer any reason to call it or implement it.

This commit:

- adds #[rustc_deprecated(since = "1.41.0")] to Error::description;

- moves description (and cause, which is also deprecated) below the
  source and backtrace methods in the Error trait;

- reduces documentation of description and cause to take up much less
  vertical real estate in rustdocs, while preserving the example that
  shows how to render errors without needing to call description;

- removes the description function of all *currently unstable* Error
  impls in the standard library;

- marks #[allow(deprecated)] the description function of all *stable*
  Error impls in the standard library;

- replaces miscellaneous uses of description in example code and the
  compiler.
2019-12-24 22:39:49 -08:00
Esteban Küber
93fb219579 Fix suggestion span for typo in associated type name 2019-12-24 22:25:45 -08:00
Esteban Küber
245f62eb8a Cleanup: move code to their own methods and deduplicate actions 2019-12-24 22:23:23 -08:00
Esteban Küber
80adfd8de3 Account for multiple trait bounds with missing associated types 2019-12-24 22:23:02 -08:00
Esteban Küber
83c5b4ec40 Avoid output dependency on std spans 2019-12-24 22:18:05 -08:00
Esteban Küber
8d316a5a67 Use structured suggestion for bad Fn traits 2019-12-24 22:17:29 -08:00
Esteban Küber
66ea471f9d Handle more specific case E0222 2019-12-24 22:10:15 -08:00
Esteban Küber
8e74f63054 review comments: move error reporting to their own methods 2019-12-24 22:09:28 -08:00
Esteban Küber
759df5fa35 Fix case in associated-type-projection-from-multiple-supertraits.rs
This still doesn't handle the case entirely correctly, requiring a more
targeted approach with a better suggestion, but at least now the
suggested syntax makes *some* sense.
2019-12-24 22:08:05 -08:00
Esteban Küber
547abe0c52 Tweak errors for missing associated types and type parameters 2019-12-24 22:02:43 -08:00
bors
7bc1665730 Auto merge of #67303 - dtolnay:rls, r=Xanewok
Update rls submodule

This pulls in https://github.com/rust-lang/rls/pull/1603 in order to unblock https://github.com/rust-lang/rust/pull/66919.

r? @Xanewok
2019-12-25 03:55:21 +00:00
bors
c5a2a9a99c Auto merge of #67596 - Mark-Simulacrum:tidy-silence-rustfmt, r=Centril
(Mostly) finish formatting the repository

Silences tidy line length warnings on rustfmt-controlled files.

This leaves two things out of formatting: CloudABI (mostly because it's not really ours to control, it's upstream code that's mostly generated), and tests. The latter is a hard problem and maybe not one to worry too much about, we rarely edit old tests and reformatting them as we go if possible isn't too bad (they're generally small).
2019-12-25 00:41:55 +00:00
Mark Rousskov
8d6d0e71a6 Format librustc_feature
Use #[rustfmt::skip] on the tidy-parsed macro invocations
2019-12-24 17:44:51 -05:00
Mark Rousskov
6891388e66 x.py fmt after previous deignore 2019-12-24 17:38:22 -05:00
Mark Rousskov
48291a9dda Silence line length warnings
rustfmt tries its best already, we should not fight with it.
2019-12-24 17:37:58 -05:00
bors
a5bc786399 Auto merge of #67445 - llogiq:todo, r=dtolnay
Differentiate todo! and unimplemented!

This updates the panic message and docs to make it clear that `todo!` is for unfinished code and `unimplemented!` is for partial trait or enum impls.

r? @Centril
2019-12-24 21:16:45 +00:00
bors
a9c1c04e98 Auto merge of #67241 - mark-i-m:simplify-borrow_check-3, r=matthewjasper
Refactorings to borrowck region diagnostic reporting

This PR is a followup to #66886 and #67404

EDIT: updated

In this PR:  Clean up how errors are collected from NLL: introduce `borrow_check::diagnostics::RegionErrors` to collect errors. This is later passed to `MirBorrowckCtx::report_region_errors` after the `MirBorrowckCtx` is created. This will allow us to refactor away some of the extra context structs floating around (but we don't do it in this PR).  `borrow_check::region_infer` is now mostly free of diagnostic generating code. The signatures of most of the functions in `region_infer` lose somewhere between 4 and 7 arguments :)

Left for future (feedback appreciated):

- Merge `ErrorRegionCtx` with `MirBorrowckCtx`, as suggested by @matthewjasper in https://github.com/rust-lang/rust/pull/66886#issuecomment-559949499
- Maybe move the contents of `borrow_check::nll` into `borrow_check` and remove the `nll` submodule altogether.
- Find a way to make `borrow_check::diagnostics::region_errors` less of a strange appendage to `RegionInferenceContext`. I'm not really sure how to do this yet. Ideas welcome.
2019-12-24 18:02:10 +00:00
Lukas Kalbertodt
f934b836ce
Generalize array_into_iter lint to also lint for boxed arrays
`Box` is special in that a method call on a box can move the value out
of the box. Thus, the same backwards-compatibility problem can arise
for boxed arrays as for simple arrays.
2019-12-24 18:30:04 +01:00
bors
f6dca76be5 Auto merge of #66221 - ohadravid:doc-constants, r=Dylan-DPC
Show the actual value of constant values in the documentation

Fixes #66099, making rustdoc show evaluated constant scalar values.

![image](https://user-images.githubusercontent.com/2358365/68474827-c7a95e80-0226-11ea-818a-ded7bbff861f.png)

where `main.rs` is
```
pub const VAL3: i32 = i32::max_value();
pub const VAL4: i32 = i32::max_value() - 1;
```

As a fallback, when a constant value is not evaluated (either because of an error or because it isn't a scalar), the original expression is used for consistency.

I mimicked the way min/max values of integers are [`pretty_print`ed](https://github.com/rust-lang/rust/blob/master/src/librustc/ty/print/pretty.rs#L900), to show both the value a the "hint". While a little goofy for `std`, in user crates I think it's actually rather helpful.
2019-12-24 14:40:33 +00:00
Andre Bogus
f4d0a04c64 Differentiate todo! and unimplemented! 2019-12-24 13:53:32 +01:00
bors
84d8f9ddd3 Auto merge of #67579 - RalfJung:miri, r=RalfJung
update miri
2019-12-24 11:38:45 +00:00
Ralf Jung
ffb6aa1288 this has sysroot spans to let's ignore it the usual way 2019-12-24 12:28:36 +01:00
Ralf Jung
072676023e better variable names 2019-12-24 12:24:32 +01:00
Ralf Jung
db20f248eb add test for dropping in const 2019-12-24 12:21:05 +01:00
Ralf Jung
04c740bee3 bootstrap miri: remove no longer used env var 2019-12-24 11:54:25 +01:00
Ralf Jung
0af399a282 update miri 2019-12-24 11:51:40 +01:00
Ohad Ravid
811bdeee00 Show value for consts in the documentation 2019-12-24 10:10:36 +01:00
bors
625375400c Auto merge of #67575 - Centril:rollup-feikoir, r=Centril
Rollup of 7 pull requests

Successful merges:

 - #67337 (Ensure that evaluating or validating a constant never reads from a static)
 - #67543 (Add regression tests for fixed ICEs)
 - #67547 (Cleanup err codes)
 - #67551 (Add long error code explanation message for E0627)
 - #67561 (remove `description` from `Error` impls in docs)
 - #67569 (Clean up unsafety in char::encode_utf8)
 - #67572 (Use the chocolatey CDN directly to avoid the flaky API)

Failed merges:

r? @ghost
2019-12-24 03:40:33 +00:00
Mazdak Farrokhzad
a76d67f22f
Rollup merge of #67572 - aidanhs:aphs-choco-direct-cdn, r=Mark-Simulacrum
Use the chocolatey CDN directly to avoid the flaky API
2019-12-24 04:40:03 +01:00
Mazdak Farrokhzad
20d5df91f4
Rollup merge of #67569 - Mark-Simulacrum:opt-char-encode, r=oli-obk
Clean up unsafety in char::encode_utf8

This originally started as an attempt to allow LLVM to optimize through
encode_utf8 to detect the try_encode_utf8 case (#52579, #52580), but due to a
typo my conclusion that my optimizations were successful was incorrect.

Furthermore, as far as I can tell, this optimization is probably just not
possible with LLVM today.  This [code](https://rust.godbolt.org/z/JggRj4)
compiles down to a long series of compares, notably, two identical series of
compares. That essentially means that LLVM is today unable to see that these two
ifs are identical and as such can be merged and then realize that no value of
the if condition can result in a call to `please_delete`. As such, for now, we
do not attempt to specifically optimize for that case.
2019-12-24 04:40:02 +01:00
Mazdak Farrokhzad
75b27ef59c
Rollup merge of #67561 - euclio:remove-description, r=jonas-schievink
remove `description` from `Error` impls in docs

Since `description` is soft-deprecated, there's no need to show it implemented in these examples.
2019-12-24 04:40:00 +01:00
Mazdak Farrokhzad
a75968a782
Rollup merge of #67551 - ldm0:E0627, r=Dylan-DPC
Add long error code explanation message for E0627

Part of #61137.

r? @GuillaumeGomez
2019-12-24 04:39:58 +01:00
Mazdak Farrokhzad
d130e8d550
Rollup merge of #67547 - GuillaumeGomez:cleanup-err-codes, r=Dylan-DPC
Cleanup err codes

r? @Dylan-DPC
2019-12-24 04:39:57 +01:00
Mazdak Farrokhzad
07effe18b0
Rollup merge of #67543 - JohnTitor:regression-tests, r=Centril
Add regression tests for fixed ICEs

Closes #61747 (fixed from 1.41.0-nightly (4007d4ef2 2019-12-01))
Closes #66205 (fixed from 1.41.0-nightly (4007d4ef2 2019-12-01))
Closes #66270 (fixed by #66246)
Closes #67424 (fixed by #67160)

Also picking a minor nit up from #67071 with 101dd7bad9

r? @Centril
2019-12-24 04:39:55 +01:00
Mazdak Farrokhzad
1ac8fc76d4
Rollup merge of #67337 - oli-obk:no_mut_static_ref_from_const, r=RalfJung
Ensure that evaluating or validating a constant never reads from a static

r? @RalfJung

as per https://github.com/rust-lang/rust/pull/66302#issuecomment-554663387

This does not yet address the fact that evaluation of a constant can read from a static (under unleash-miri)
2019-12-24 04:39:53 +01:00
Mark Rousskov
df4d490038 Minimize unsafety in encode_utf8
Use slice patterns to avoid having to skip bounds checking
2019-12-23 20:46:42 -05:00
Aidan Hobson Sayers
cefeb66366 Use the chocolatey CDN directly to avoid the flaky API 2019-12-24 00:59:37 +00:00