Commit graph

30568 commits

Author SHA1 Message Date
Yuki Okushi
2c46dd16a5
Rollup merge of #67287 - Centril:mismatch-range-improve-diag, r=estebank
typeck: note other end-point when checking range pats

Fixes #57389, alternative to #67214 that should be less invasive to type checking logic.

r? @estebank
2019-12-30 14:07:46 +09:00
Yuki Okushi
f0309f5a72
Rollup merge of #64273 - petrochenkov:stabattrmod, r=Centril
Stabilize attribute macros on inline modules

While still gating non-inline modules in proc macro input.

Split from https://github.com/rust-lang/rust/pull/63931
cc https://github.com/rust-lang/rust/issues/54727
2019-12-30 14:07:44 +09:00
Esteban Küber
cfa0b07c8d clean up logic 2019-12-29 19:16:53 -08:00
Esteban Küber
fb52883690 Account for existing type params when suggesting replacing _ for a new one 2019-12-29 19:16:15 -08:00
Esteban Küber
6c8b2dcb19 Account for all item kinds when collecting and gateing _ in item defs 2019-12-29 19:16:15 -08:00
Esteban Küber
8cb193a5cb Suggest type param when encountering _ in fn defs
When encountering `_` type placeholder in fn arguments and return type,
suggest using generic type parameters.
Expand what counts as an inferable return type to slice, array and
tuples of `_`.
2019-12-29 19:11:27 -08:00
bors
214548b8af Auto merge of #67631 - oli-obk:polymorphic_promotion, r=wesleywiser
Work around a resolve bug in const prop

r? @wesleywiser @anp

This isn't exposed right now, but further changes to rustc may start causing bugs without this.
2019-12-30 02:05:24 +00:00
Mazdak Farrokhzad
c4b6de2d6a note other end-point when typeck range pats 2019-12-30 02:48:35 +01:00
Wesley Wiser
5ca3a1bed1 Resolve long compile times when evaluating always valid constants
This extends the existing logic which skips validating every integer or
floating point number type to also skip validating empty structs because
they are also trivially valid.

Fixes #67539
2019-12-29 16:45:58 -05:00
bors
da3629b05f Auto merge of #67112 - Centril:expr-polish, r=estebank
Refactor expression parsing thoroughly

Based on https://github.com/rust-lang/rust/pull/66994 together with which this has refactored basically the entirety of `expr.rs`.

r? @estebank
2019-12-29 19:30:53 +00:00
bors
00fc203b65 Auto merge of #67334 - estebank:ignore-triple, r=nikomatsakis
Teach `compiletest` to ignore platform triples

The UI tests are written assuming `--remap-path-prefix` is *not used* (`remap-debuginfo` in `config.toml`). The consequence is that the error messages may include paths and snippets into the standard library. When `remap-debuginfo` is enabled, these messages change in format and structure because `rustc` will not show paths and snippets into the standard library.

This normally isn't a problem for the "main" platforms (linux/macos/windows), because the CI infrastructure is set up so that the tests run without `remap-debuginfo`, but the `dist` artifacts are built separately with `remap-debuginfo` enabled. However, some of the lower-tier platforms perform both tests and distribution in a single step with `remap-debuginfo` enabled. This also affects developers and distributors who use `remap-debuginfo`.

To sidestep this problem, we add a way to ignore tests in specific platform triples, and update the overly broad `ignore-x86` rule in affected tests.

Address #46948, #54546, #53081.
2019-12-28 23:02:09 +00:00
Esteban Küber
5e1b366fb6 Do not ICE on lifetime error involving closures 2019-12-28 13:51:29 -08:00
Esteban Küber
90bf0d2e33 Ignore i586-unknown-linux-gnu and i586-unknown-musl in tests 2019-12-28 12:26:48 -08:00
Vadim Petrochenkov
a0d8b794d6 resolve: Minor cleanup of duplicate macro reexports 2019-12-28 17:37:22 +03:00
Vadim Petrochenkov
e3155abd2e Stabilize attribute macros on inline modules 2019-12-28 11:42:26 +03:00
bors
8b4d22cb25 Auto merge of #67598 - jumbatm:issue67557_simd_shuffle, r=oli-obk
Fix ICE / miscompilation when inlining simd shuffle intrinsic in MIR.

Closes #67557.

r? @oli-obk
2019-12-28 06:02:45 +00:00
Oliver Scherer
9eb45e38dc
Rollup merge of #67654 - rossmacarthur:fix-51770-add-regression-test, r=Centril
Add regression test for old NLL ICE

This fails on nightly-2018-06-24.

Resolves #51770
2019-12-28 00:36:16 +01:00
Oliver Scherer
b88ce0ed4b
Rollup merge of #67621 - matthewjasper:correct-static-type, r=oli-obk
Use the correct type for static qualifs

Closes #67609
2019-12-28 00:36:08 +01:00
Sean McArthur
f35517ee86 core: add IntoFuture trait and support for await 2019-12-27 11:56:11 -08:00
Wesley Wiser
25a8b5d58e Fix Instance::resolve() incorrectly returning specialized instances
We only want to return specializations when `Reveal::All` is passed, not
when `Reveal::UserFacing` is. Resolving this fixes several issues with
the `ConstProp`, `SimplifyBranches`, and `Inline` MIR optimization
passes.

Fixes #66901
2019-12-27 13:04:32 -05:00
Ross MacArthur
749295cfbf
Add regression test for old NLL ICE 2019-12-27 13:36:41 +02:00
Mark Rousskov
48859db151 Relax bounds on HashSet to match hashbrown
No functional changes are made, and all APIs are moved to strictly less
restrictive bounds.

These APIs changed from the old bound listed to the new bound:

T: Hash + Eq -> T
* new
* with_capacity

T: Eq + Hash, S: BuildHasher -> T
* with_hasher
* with_capacity_and_hasher
* hasher

T: Eq + Hash + Debug -> T: Debug
S: BuildHasher -> S
<HashSet as Debug>

T: Eq + Hash -> T
S: BuildHasher + Default -> S: Default
<HashSet as Default>
2019-12-26 19:24:45 -05:00
Oliver Scherer
f65a91eb47 Make ui test bitwidth independent 2019-12-26 22:50:18 +01:00
Oliver Scherer
72ebce0e1b Remove unintended noisy log statement 2019-12-26 22:50:17 +01:00
Oliver Scherer
6b651b1a88 Add regression test for ZST statics being allowed to "read" from themselves 2019-12-26 22:50:17 +01:00
Oliver Scherer
a0bd1a695d Prevent an ICE on invalid transmutes 2019-12-26 22:50:16 +01:00
Oliver Scherer
1e40681f50 Don't ICE on the use of integer addresses for ZST constants in pattern matching 2019-12-26 22:46:22 +01:00
bors
3e0a1c0910 Auto merge of #67592 - matthewjasper:cleanup-match, r=Centril
Prepare for lowering or-patterns

This is probably best reviewed commit-by-commit.

* Rustfmt `rustc_mir::build::{self, matches}`
* Remove `-Znll-dont-emit-read-for-match`
* Split `match_expr` into smaller functions
* Feature gate or-patterns in const contexts

cc https://github.com/rust-lang/rust/issues/54883

r? @Centril
2019-12-26 16:44:52 +00:00
Oliver Scherer
097e14d19d Treat extern statics just like statics in the "const pointer to static" representation 2019-12-26 14:50:40 +01:00
bors
3ac40b69c7 Auto merge of #67327 - oli-obk:cleanup, r=RalfJung
Split up `const_eval.rs`

Fixes #67316

r? @RalfJung
2019-12-26 13:15:05 +00:00
Oliver Scherer
7d5f36a1e5 A cycle error on a diverging function is now a const stack overflow again 2019-12-26 12:11:12 +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
541d879f71 Add a test and bless existing test case. 2019-12-26 13:13:01 +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
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
Matthew Jasper
f1758a043f Feature gate or patterns in const contexts 2019-12-25 09:13:15 +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
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