Commit graph

4260 commits

Author SHA1 Message Date
mark
aa1ce32b10 update test output 2019-01-15 16:40:10 -06:00
mark
dabe86db44 update/add tests 2019-01-15 12:48:44 -06:00
Mazdak Farrokhzad
cf436832f8
Rollup merge of #57587 - Aaron1011:fix/const-pat-ice, r=alexcrichton
Add 'rustc-env:RUST_BACKTRACE=0' to const-pat-ice test

This ensures that the test passes, regardless of what the user has set
RUST_BACKTRACE to.
2019-01-15 12:42:12 +01:00
Mazdak Farrokhzad
e8cfae4140
Rollup merge of #57467 - JohnTitor:implement-the-check-attribute-1, r=oli-obk
Implement `check_attribute` to forbid `#[allow_internal_unsafe]`

Fixes #56768.

r? @oli-obk
2019-01-15 12:42:08 +01:00
Mazdak Farrokhzad
5fa44c4b5a
Rollup merge of #57352 - arielb1:no-manual-markers, r=nikomatsakis
forbid manually impl'ing one of an object type's marker traits

This shouldn't break compatibility for crates that do not use
`feature(optin_builtin_traits)`, because as the test shows, it is
only possible to impl a marker trait for a trait object in the crate the
marker trait is defined in, which must define
`feature(optin_builtin_traits)`.

Fixes #56934.

r? @nikomatsakis
2019-01-15 12:42:06 +01:00
Yuki Okushi
bd1551e46e Fix tests 2019-01-15 18:02:46 +09:00
Ariel Ben-Yehuda
d38a59f8b5 fix test output changing in rebase 2019-01-15 00:27:00 +02:00
Yuki Okushi
a7623e70d5 Add error check 2019-01-15 06:56:21 +09:00
Yuki Okushi
efd111e502 Add test 2019-01-15 06:55:17 +09:00
Mazdak Farrokhzad
b03d414e3c
Rollup merge of #57585 - estebank:trailing-semicolon, r=petrochenkov
Recover from item trailing semicolon

CC https://github.com/rust-lang/rfcs/pull/2479

r? @petrochenkov
2019-01-14 20:31:58 +01:00
Mazdak Farrokhzad
feb48f334d
Rollup merge of #57572 - Centril:unaccept-extern-in-path, r=petrochenkov
Unaccept `extern_in_paths`

Based on completed fcp-close in https://github.com/rust-lang/rust/issues/55600, this removes `extern_in_path` (e.g. `extern::foo::bar`) from the language. The changes are primarily reversing 32db83b16e.

Closes https://github.com/rust-lang/rust/issues/55600

r? @petrochenkov
2019-01-14 20:31:57 +01:00
Mazdak Farrokhzad
2f7a226c4d
Rollup merge of #57540 - estebank:eval-more, r=petrochenkov
Modify some parser diagnostics to continue evaluating beyond the parser

Continue evaluating further errors after parser errors on:
 - trailing type argument attribute
 - lifetime in incorrect location
 - incorrect binary literal
 - missing `for` in `impl Trait for Foo`
 - type argument in `where` clause
 - incorrect float literal
 - incorrect `..` in pattern
 - associated types
 - incorrect discriminator value variant error

and others. All of these were found by making `continue-parse-after-error` `true` by default to identify errors that would need few changes. There are now only a handful of errors that have any change with `continue-parse-after-error` enabled.

These changes make it so `rust` _won't_ stop evaluation after finishing parsing, enabling type checking errors to be displayed on the existing code without having to fix the parse errors.

Each commit has an individual diagnostic change with their corresponding tests.

CC #48724.
2019-01-14 20:31:55 +01:00
Mazdak Farrokhzad
816e31b1c6
Rollup merge of #57481 - euclio:bool-cast-suggestion, r=estebank
provide suggestion for invalid boolean cast

Also, don't suggest comparing to zero for non-numeric expressions.
2019-01-14 20:31:53 +01:00
bors
d10680818b Auto merge of #57592 - Centril:rollup, r=Centril
Rollup of 6 pull requests

Successful merges:

 - #57232 (Parallelize and optimize parts of HIR map creation)
 - #57418 (MetadataOnlyCodegenBackend: run the collector only once)
 - #57465 (Stabilize cfg_target_vendor)
 - #57477 (clarify resolve typo suggestion)
 - #57556 (privacy: Fix private-in-public check for existential types)
 - #57584 (Remove the `connect_timeout_unroutable` test.)

Failed merges:

r? @ghost
2019-01-14 13:03:24 +00:00
Mazdak Farrokhzad
4112aef5f7
Rollup merge of #57556 - petrochenkov:privexist, r=arielb1
privacy: Fix private-in-public check for existential types

Fixes https://github.com/rust-lang/rust/issues/53546 (regression from https://github.com/rust-lang/rust/pull/56878)

r? @arielb1
2019-01-14 11:31:54 +01:00
Mazdak Farrokhzad
0b7d8f99ed
Rollup merge of #57477 - euclio:clarify-lev-suggestion, r=zackmdavis
clarify resolve typo suggestion

Include the kind of the binding that we're suggesting, and use a
structured suggestion.

Fixes #53445.
2019-01-14 11:31:53 +01:00
Mazdak Farrokhzad
74cc0be8f6
Rollup merge of #57465 - jethrogb:jb/stablize-cfg-target-vendor, r=joshtriplett,Centril
Stabilize cfg_target_vendor

This stabilizes the use of `cfg(target_vendor = "...")` and removes the corresponding `cfg_target_vendor` feature. Other unstable cfgs remain behind their existing feature gates.

This functionality was added back in 2015 in #28612 to complete the coverage of target tuples (`<arch><sub>-<vendor>-<os>-<env>`). [RFC 131](https://github.com/rust-lang/rfcs/blob/master/text/0131-target-specification.md) governs the target specification, not including `target_vendor` seems to have just been an oversight. `target_os`, `target_family`, and `target_arch` are stable as of 1.0.0. `target_env` was also not mentioned in RFC 131, was added in #24777, never behind a feature_gate, and insta-stable at 1.1.0.

The functionality is tested in [test/run-pass/cfg/cfg-target-vendor.rs](https://github.com/rust-lang/rust/blob/master/src/test/run-pass/cfg/cfg-target-vendor.rs).

Closes #29718
2019-01-14 11:31:52 +01:00
bors
1a3a3dfcdd Auto merge of #57322 - Centril:stabilize-identity, r=SimonSapin
Stabilize core::convert::identity

r? @SimonSapin

fixes https://github.com/rust-lang/rust/issues/53500

This is waiting for FCP to complete but in the interim it would be good to review.
2019-01-14 10:22:22 +00:00
Jethro Beekman
972bba7071 Stabilize cfg_target_vendor, #29718 2019-01-14 14:33:04 +05:30
bors
1d029c67e2 Auto merge of #57387 - euclio:nonstandard-style-suggestions, r=oli-obk
Use structured suggestions for nonstandard style lints

This PR modifies the lints in the nonstandard_style group to use structured suggestions. Note that there's a bit of tricky span calculation going on for the `crate_name` attribute. It also simplifies the code a bit: I don't think the "fallback" suggestions for these lints can actually be triggered.

Fixes #48103.
Fixes #52414.
2019-01-14 06:35:51 +00:00
Aaron Hill
f2dbdc4302
Add 'rustc-env:RUST_BACKTRACE=0' to const-pat-ice test
This ensures that the test passes, regardless of what the user has set
RUST_BACKTRACE to.
2019-01-14 01:16:27 -05:00
Esteban Küber
9567544902 Suggest removal of semicolon when appropriate 2019-01-13 17:36:29 -08:00
Esteban Küber
7fc1685c47 Tweak output of type mismatch between "then" and else if arms 2019-01-13 17:35:59 -08:00
Esteban Küber
3874c7755f Recover from item trailing semicolon 2019-01-13 17:29:32 -08:00
bors
9aee7ed335 Auto merge of #57580 - Centril:rollup, r=Centril
Rollup of 4 pull requests

Successful merges:

 - #56874 (Simplify foreign type rendering.)
 - #57113 (Move diagnostics out from QueryJob and optimize for the case with no diagnostics)
 - #57366 (Point at match discriminant on type error in match arm pattern)
 - #57538 (librustc_mir: Fix ICE with slice patterns)

Failed merges:

 - #57381 (Tweak output of type mismatch between "then" and `else` `if` arms)

r? @ghost
2019-01-13 22:20:43 +00:00
Mazdak Farrokhzad
35af111232
Rollup merge of #57538 - dlrobertson:fix_57472, r=zackmdavis
librustc_mir: Fix ICE with slice patterns

If a match arm does not include all fields in a structure and a later
pattern includes a field that is an array, we will attempt to use the
array type from the prior arm. When calculating the field type, treat
a array of an unknown size as a `TyErr`.

Fixes: #57472
2019-01-13 21:18:13 +01:00
Mazdak Farrokhzad
d7c1e0d1bf
Rollup merge of #57366 - estebank:point-match-discrim, r=varkor
Point at match discriminant on type error in match arm pattern

```
error[E0308]: mismatched types
 --> src/main.rs:5:9
  |
4 |    let temp: usize = match a + b {
  |                            ----- this expression has type `usize`
5 |         Ok(num) => num,
  |         ^^^^^^^ expected usize, found enum `std::result::Result`
  |
  = note: expected type `usize`
             found type `std::result::Result<_, _>`
```
Fix #57279.
2019-01-13 21:18:12 +01:00
bors
2fadb0a16c Auto merge of #51487 - Zoxc:incr-passes, r=michaelwoerister
Make more passes incremental

r? @michaelwoerister
2019-01-13 19:43:46 +00:00
Ariel Ben-Yehuda
de6566ce39 forbid manually impl'ing one of an object type's marker traits
This shouldn't break compatibility for crates that do not use
`feature(optin_builtin_traits)`, because as the test shows, it is
only possible to impl a marker trait for a trait object in the crate the
marker trait is defined in, which must define
`feature(optin_builtin_traits)`.

Fixes #56934
2019-01-13 19:44:28 +02:00
Mazdak Farrokhzad
e2311b31c6
Rollup merge of #57549 - taiki-e:must_use, r=estebank
Add #[must_use] message to Iterator and Future

~~Iterator's message is based on current iterator adaptor's #[must_use] message (added in #15561) and https://github.com/rust-lang/rust/pull/56677/files#r241236020~~
Future's message is the same as those used in [futures-rs](https://github.com/rust-lang-nursery/futures-rs/search?q=must_use&unscoped_q=must_use) and [tokio](https://github.com/tokio-rs/tokio/search?q=must_use&unscoped_q=must_use).

r? @Centril
2019-01-13 17:21:43 +01:00
Mazdak Farrokhzad
ca1e379090
Rollup merge of #57102 - davidtwco:issue-57100, r=nikomatsakis
NLL: Add union justifications to conflicting borrows.

Fixes #57100.

This PR adds justifications to error messages for conflicting borrows of union fields.

Where previously an error message would say ``cannot borrow `u.b` as mutable..``, it now says ``cannot borrow `u` (via `u.b`) as mutable..``.

r? @pnkfelix
2019-01-13 17:21:40 +01:00
Dan Robertson
d6c19191b0
librustc_mir: Fix ICE with slice patterns
If a match arm does not include all fields in a structure and a later
pattern includes a field that is an array, we will attempt to use the
array type from the prior arm. When calculating the field type, treat
a array of an unknown size as a TyErr.
2019-01-13 14:23:32 +00:00
Mazdak Farrokhzad
c4f6ef25d2 remove extern_in_paths. 2019-01-13 14:18:00 +01:00
Taiki Endo
a6535d78dc Change #[must_use] message of Iterator 2019-01-13 14:46:42 +09:00
Mazdak Farrokhzad
3e2dcf95ce
Rollup merge of #57564 - varkor:update-const_fn-tracking-issue, r=Centril
Update the const fn tracking issue to the new metabug

The new `const fn` tracking issue is #57563. We don't want to point to a closed issue in the diagnostics (or FIXMEs), so these have been updated (from the old issue, #24111).

r? @Centril
2019-01-13 05:27:01 +01:00
Mazdak Farrokhzad
33c5874966
Rollup merge of #57560 - petrochenkov:selfinmac, r=alexreg
hygiene: Do not treat `Self` ctor as a local variable

Fixes https://github.com/rust-lang/rust/issues/57523
2019-01-13 05:27:00 +01:00
Mazdak Farrokhzad
c04d6fa084
Rollup merge of #57557 - petrochenkov:ecused, r=varkor
resolve: Mark extern crate items as used in more cases

Fixes https://github.com/rust-lang/rust/issues/57421
2019-01-13 05:26:59 +01:00
Mazdak Farrokhzad
d3cb51c870
Rollup merge of #57412 - JohnTitor:improve-the-wording-1, r=varkor
Improve the wording

I'm sorry but re-opened the PR because I failed to squash commits(#57397).

Fixes #55752.
r? @varkor
2019-01-13 05:26:46 +01:00
Esteban Küber
486ecc5e27 Don't add label to the match expr when the type is not fully realized 2019-01-12 19:36:28 -08:00
Esteban Küber
72d965f7b7 Reword label as per review comment 2019-01-12 19:36:28 -08:00
Esteban Küber
a873337f21 Point at the match discriminant when arm pattern has a type mismatch 2019-01-12 19:36:28 -08:00
Esteban Küber
28ea03e114 Suggest correct location for lifetime parameters in use 2019-01-12 19:25:03 -08:00
varkor
1e4a8a01c4 Update the const fn tracking issue to the new metabug 2019-01-13 01:55:44 +00:00
Esteban Küber
db740313e0 Remove unrelated errors from parse stderr tests 2019-01-12 17:12:41 -08:00
Vadim Petrochenkov
805099cf3e hygiene: Do not treat Self ctor as a local variable 2019-01-13 02:18:53 +03:00
Vadim Petrochenkov
6aa7856369 resolve: Mark extern crate items as used in more cases 2019-01-13 01:50:53 +03:00
Vadim Petrochenkov
f8028b0b6c privacy: Fix private-in-public check for existential types 2019-01-13 00:41:11 +03:00
bors
75a369c5b1 Auto merge of #56759 - petrochenkov:prestabuni, r=nikomatsakis
Stabilize `uniform_paths`

Address all the things described in https://github.com/rust-lang/rust/issues/56417.

Assign visibilities to `macro_rules` items - `pub` to `macro_export`-ed macros and `pub(crate)` to non-exported macros, these visibilities determine how far these macros can be reexported with `use`.

Prohibit use of reexported inert attributes and "tool modules", after renaming (e.g. `use inline as imported_inline`) their respective tools and even compiler passes won't be able to recognize and properly check them.

Also turn use of uniform paths in 2015 macros into an error, I'd prefer to neither remove nor stabilize them right away because I still want to make some experiments in this area (uniform path fallback was added to 2015 macros used on 2018 edition in https://github.com/rust-lang/rust/pull/56053#issuecomment-441405140).

UPDATE: The last commit also stabilizes the feature `uniform_paths`.

Closes https://github.com/rust-lang/rust/issues/53130
Closes https://github.com/rust-lang/rust/issues/55618
Closes https://github.com/rust-lang/rust/issues/56326
Closes https://github.com/rust-lang/rust/issues/56398
Closes https://github.com/rust-lang/rust/issues/56417
Closes https://github.com/rust-lang/rust/issues/56821
Closes https://github.com/rust-lang/rust/issues/57252
Closes https://github.com/rust-lang/rust/issues/57422
2019-01-12 20:11:36 +00:00
Vadim Petrochenkov
250935d0c7 Fix a hole in generic parameter import future-proofing
Add some tests for buggy derive helpers
2019-01-12 16:18:55 +03:00
Vadim Petrochenkov
79134c0517 Stabilize uniform_paths 2019-01-12 16:18:55 +03:00