Commit Graph

104624 Commits

Author SHA1 Message Date
Oliver Scherer
3e7fa3c6f2 Move const eval machine into its own module 2019-12-26 12:10:36 +01:00
bors
acb6690e1d Auto merge of #66670 - crlf0710:normalize_ident, r=Dylan-DPC
Normalize ident

Perform unicode normalization on identifiers. Resolving the first bullet point in #55467.
2019-12-26 09:55:00 +00:00
Charles Lew
27e7a1baed Add unicode-normalization to whitelist. 2019-12-26 14:16:36 +08:00
Charles Lew
541d879f71 Add a test and bless existing test case. 2019-12-26 13:13:01 +08:00
Charles Lew
0bcddfe23a Normalize identifiers in librustc_parse. 2019-12-26 13:12:58 +08: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
Matthew Jasper
5d19d4d894 Use the correct type for static qualifs 2019-12-25 21:09:51 +00:00
Matthew Kraai
b8ccc0f8a6 Remove compiler_builtins_lib documentation
Fixes #67593
2019-12-25 11:56:19 -08:00
Mark Rousskov
4dcc6270e8 Fix skipped setting of syntax::GLOBALS 2019-12-25 14:26:42 -05:00
Esteban Küber
621d7e959b Fix rebase and sort assoc type list for deterministic output 2019-12-25 11:12:56 -08:00
Mark Rousskov
b98633b94c Store callbacks in global statics
The callbacks have precisely two states: the default, and the one
present throughout almost all of the rustc run (the filled in value
which has access to TyCtxt).

We used to store this as a thread local, and reset it on each thread to
the non-default value. But this is somewhat wasteful, since there is no
reason to set it globally -- while the callbacks themselves access TLS,
they do not do so in a manner that fails in when we do not have TLS to
work with.
2019-12-25 14:10:46 -05:00
Christian Poveda
dfcc44d769
rewrite scalar to integer methods 2019-12-25 12:41:05 -05:00
Lzu Tao
3a2ef17194 tidy: change msdn links to newer locations
see accouncement at https://docs.microsoft.com/welcome-to-docs
2019-12-25 15:35:54 +00:00
Christian Poveda
415ecc848d
Add Scalar::to_(u|i)16 methods 2019-12-25 09:20:15 -05:00
Konrad Borowski
43cb37e152 Use issue = "none" instead of "0" in intrinsics 2019-12-25 11:54:55 +01: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
matthewjasper
0a14cbea98 Use link in doc comment
Co-Authored-By: Mazdak Farrokhzad <twingoow@gmail.com>
2019-12-25 09:13:15 +00:00
Matthew Jasper
f1758a043f Feature gate or patterns in const contexts 2019-12-25 09:13:15 +00:00
Matthew Jasper
58a6a201c0 Split match_expr into smaller functions 2019-12-25 09:13:15 +00:00
Matthew Jasper
18df72142a Remove -Znll-dont-emit-read-for-match 2019-12-25 09:13:15 +00:00
Matthew Jasper
83a820047f Reduce log level from info to debug 2019-12-25 09:13:14 +00: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
jumbatm
dca0a339dc Run RustFmt 2019-12-25 11:12:08 +10:00
jumbatm
d0dc9323e1 Pass new instance instead of self.instance to simd_shuffle_indices. 2019-12-25 11:12:08 +10:00
jumbatm
697a38b17a Add test cases which exercise the fix. 2019-12-25 11:12:08 +10: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
oxalica
ac31c71698
Update libc to 0.2.66 2019-12-25 01:51:05 +08: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