Commit Graph

9421 Commits

Author SHA1 Message Date
LeSeulArtichaut
f474c0084a Added test 2020-01-02 00:50:52 +01:00
bors
0ec3706702 Auto merge of #67676 - wesleywiser:lint_overflowing_int_casts, r=oli-obk
Lint overflowing integer casts in const prop

This extends the invalid cases we catch in const prop to include
overflowing integer casts using the same machinery as the overflowing
binary and unary operation logic.

r? @oli-obk
2020-01-01 21:27:11 +00:00
Wesley Wiser
e8c1c4cd5b Ignore overflow lint on 32-bit platform 2020-01-01 12:31:36 -05:00
Wesley Wiser
717702dffd Revert "core: add IntoFuture trait and support for await"
This reverts commit f35517ee86.
2019-12-31 19:18:08 -05:00
Mazdak Farrokhzad
3cca3c6ace Rollup merge of #67744 - Centril:reduce-diversity, r=petrochenkov
parser: reduce diversity in error handling mechanisms

Instead of having e.g. `span_err`, `fatal`, etc., we prefer to move towards uniformly using `struct_span_err` thus making it harder to emit fatal and/or unstructured diagnostics.

This PR also de-fatalizes some diagnostics.

r? @estebank
2019-12-31 19:19:38 +01:00
Mazdak Farrokhzad
50fb8480db Rollup merge of #67730 - Centril:typeck-pat-cleanup, r=estebank
Cleanup pattern type checking, fix diagnostics bugs (+ improvements)

r? @estebank
2019-12-31 19:19:36 +01:00
bors
5095101528 Auto merge of #67752 - Dylan-DPC:rollup-7f9v4nx, r=Dylan-DPC
Rollup of 5 pull requests

Successful merges:

 - #67430 (doc: minus (U+2212) instead of dash (U+002D) for negative infinity)
 - #67697 (Move the region_scope_tree query to librustc_passes.)
 - #67719 (Add self to .mailmap)
 - #67723 (Add error code explanation for E0477)
 - #67735 (Support `-Z ui-testing=yes/no`)

Failed merges:

r? @ghost
2019-12-31 12:58:10 +00:00
Dylan DPC
529a42a1a6 Rollup merge of #67735 - petrochenkov:uibool, r=Mark-Simulacrum
Support `-Z ui-testing=yes/no`

`ui-testing` is now a boolean option (`-Z ui-testing=yes/no`) and can be specified multiple times with later values overriding earlier values (`-Z ui-testing=yes -Z ui-testing=no` == `-Z ui-testing=no`), so it can be set in a hierarchical way, e.g. UI testing infra may enable it by default with specific tests being able to opt-out.

This way we can remove the special opt-out support from `compiletest`.

Inspired by https://github.com/rust-lang/rust/pull/67709.
2019-12-31 18:14:07 +05:30
Dylan DPC
cf24b6bcbf Rollup merge of #67723 - ldm0:E0477, r=Dylan-DPC
Add error code explanation for E0477

Part of #61137
2019-12-31 18:14:06 +05:30
Ohad Ravid
1a4f6b85a7 Change wording for lifetime suggestion for opaque types from constraint to bound 2019-12-31 12:13:35 +01:00
bors
71bb0ff33e Auto merge of #67597 - estebank:placeholder-type, r=oli-obk
Suggest type param when encountering `_` in item signatures

Fix #27435.
2019-12-31 09:50:49 +00:00
Felix S. Klock II
7c5cff717f regression test for 66530.
it uses normalize-stderr-test because not all targets hit the same OS error number nor message ...

... and ignores tidy since I dont know how to make the normalize line shorter ...

and has effectively a no-op for its error-pattern because the targets' error
messages are so wildly different (and the error-pattern check occurs *before*
stderr normalization.)
2019-12-31 00:04:17 -05:00
Mazdak Farrokhzad
2e812c1c5f parser::pat: remove .fatal calls 2019-12-31 04:33:34 +01:00
Mazdak Farrokhzad
b6fc87c5b9 de-fatalize some errors 2019-12-31 04:33:34 +01:00
Wesley Wiser
e083273ec7 Lint overflowing integer casts in const prop
This extends the invalid cases we catch in const prop to include
overflowing integer casts using the same machinery as the overflowing
binary and unary operation logic.
2019-12-30 20:06:31 -05:00
Ohad Ravid
d4fbb55c9c Suggest adding a lifetime constraint when opaque type is responsible for "does not live long enough" error 2019-12-30 18:10:46 +01:00
Vadim Petrochenkov
208c1bff0a Support -Z ui-testing=yes/no 2019-12-30 20:01:34 +03:00
Matthew Jasper
4843f22788 Handle recursive instantiation of drop shims 2019-12-30 13:41:07 +00:00
Mazdak Farrokhzad
f8d2cce0ce Blame user type in pat type error. 2019-12-30 14:28:40 +01:00
Mazdak Farrokhzad
d7e2f3aee5 refactor and fix this-expression-has-type note 2019-12-30 14:05:17 +01:00
Mazdak Farrokhzad
f35840f77c Pass the span of <init> in let <pat> = <init>;
when type checking `<pat>`.
2019-12-30 13:50:20 +01:00
Mazdak Farrokhzad
960acb044b Show scrutinee expr type for struct fields.
TODO: The type is wrong and will be fixed in later commits.
2019-12-30 13:50:20 +01:00
Mazdak Farrokhzad
ab050d6a83 MatchExpressionArmPattern: Use more generic wording.
The existing wording was inappropriate for e.g.
`if let Ok(_) = expr { .. }`. The diagnostic would
leak the fact that we desugar to a `match`.
2019-12-30 13:50:20 +01:00
bors
0fb4380136 Auto merge of #67667 - wesleywiser:speed_up_trivially_valid_constants, r=oli-obk
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

r? @oli-obk
cc @RalfJung @spastorino
2019-12-30 11:31:04 +00:00
Donough Liu
751fe7c43d Add error code explanation for E0477 2019-12-30 14:41:46 +08:00
bors
d297b19663 Auto merge of #67721 - JohnTitor:rollup-o8zm4r9, r=JohnTitor
Rollup of 10 pull requests

Successful merges:

 - #64273 (Stabilize attribute macros on inline modules)
 - #67287 (typeck: note other end-point when checking range pats)
 - #67564 (docs: Iterator adapters have unspecified results after a panic)
 - #67622 (Some keyword documentation.)
 - #67657 (Clean up const-hack PRs now that const if / match exist.)
 - #67677 (resolve: Minor cleanup of duplicate macro reexports)
 - #67687 (Do not ICE on lifetime error involving closures)
 - #67698 (Move reachable_set and diagnostic_items to librustc_passes.)
 - #67701 (tidy: Enforce formatting rather than just check it if `--bless` is specified)
 - #67715 (Typo fix)

Failed merges:

r? @ghost
2019-12-30 05:12:48 +00:00
Yuki Okushi
3928aceb49 Rollup merge of #67687 - estebank:issue-67634, r=matthewjasper
Do not ICE on lifetime error involving closures

Fix #67634.
2019-12-30 14:07:53 +09:00
Yuki Okushi
f70847a863 Rollup merge of #67677 - petrochenkov:dupexp, r=Centril
resolve: Minor cleanup of duplicate macro reexports

Enabled by https://github.com/rust-lang/rust/pull/65785 which changed `duplicate_macro_exports` from a lint to a hard error.
2019-12-30 14:07:52 +09:00
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