Commit graph

5689 commits

Author SHA1 Message Date
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
Vadim Petrochenkov
d3411d3ee8 Address review comments 2019-01-13 15:02:18 +03:00
Vadim Petrochenkov
41c65992c5 Implement basic input validation for built-in attributes 2019-01-13 14:17:19 +03: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
Vadim Petrochenkov
ebdd072e3b resolve: Add a test for issue #57539 2019-01-13 00:15:23 +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
Vadim Petrochenkov
2f3db49c3d resolve: Prohibit use of imported tool modules 2019-01-12 16:18:20 +03:00
Vadim Petrochenkov
bf1e70cd1f resolve: Prohibit use of imported non-macro attributes 2019-01-12 16:18:20 +03:00
Vadim Petrochenkov
e1d1487fc4 resolve: Prohibit use of uniform paths in macros originating from 2015 edition
...while still keeping ambiguity errors future-proofing for uniform paths.
This corner case is not going to be stabilized for 1.32 and needs some more general experiments about retrofitting 2018 import rules to 2015 edition
2019-01-12 16:17:26 +03:00
Vadim Petrochenkov
099b3d86f9 resolve: Assign pub and pub(crate) visibilities to macro_rules items 2019-01-12 16:17:26 +03:00
bors
d6525ef539 Auto merge of #57542 - Centril:rollup, r=Centril
Rollup of 26 pull requests

Successful merges:

 - #56425 (Redo the docs for Vec::set_len)
 - #56906 (Issue #56905)
 - #57042 (Don't call `FieldPlacement::count` when count is too large)
 - #57175 (Stabilize `let` bindings and destructuring in constants and const fn)
 - #57192 (Change std::error::Error trait documentation to talk about `source` instead of `cause`)
 - #57296 (Fixed the link to the ? operator)
 - #57368 (Use CMAKE_{C,CXX}_COMPILER_LAUNCHER for ccache)
 - #57400 (Rustdoc: update Source Serif Pro and replace Heuristica italic)
 - #57417 (rustdoc: use text-based doctest parsing if a macro is wrapping main)
 - #57433 (Add link destination for `read-ownership`)
 - #57434 (Remove `CrateNum::Invalid`.)
 - #57441 (Supporting backtrace for x86_64-fortanix-unknown-sgx.)
 - #57450 (actually take a slice in this example)
 - #57459 (Reference tracking issue for inherent associated types in diagnostic)
 - #57463 (docs: Fix some 'second-edition' links)
 - #57466 (Remove outdated comment)
 - #57493 (use structured suggestion when casting a reference)
 - #57498 (make note of one more normalization that Paths do)
 - #57499 (note that FromStr does not work for borrowed types)
 - #57505 (Remove submodule step from README)
 - #57510 (Add a profiles section to the manifest)
 - #57511 (Fix undefined behavior)
 - #57519 (Correct RELEASES.md for 1.32.0)
 - #57522 (don't unwrap unexpected tokens in `format!`)
 - #57530 (Fixing a typographical error.)
 - #57535 (Stabilise irrefutable if-let and while-let patterns)

Failed merges:

r? @ghost
2019-01-12 11:22:20 +00:00
Mazdak Farrokhzad
3117784c18
Rollup merge of #57535 - varkor:stabilise-if-while-let-patterns, r=Centril
Stabilise irrefutable if-let and while-let patterns

This stabilises RFC 2086 (https://github.com/rust-lang/rust/issues/44495).

This replaces https://github.com/rust-lang/rust/pull/55639, as we want to stabilise this in time for the beta cut-off.

Closes https://github.com/rust-lang/rust/pull/55639.

r? @Centril
2019-01-12 10:55:25 +01:00
Mazdak Farrokhzad
e234d15724
Rollup merge of #57522 - euclio:format-ice, r=varkor
don't unwrap unexpected tokens in `format!`

Fixes #57512.
2019-01-12 10:55:22 +01:00
Mazdak Farrokhzad
e0cea0db5d
Rollup merge of #57493 - euclio:deref-suggest, r=oli-obk
use structured suggestion when casting a reference
2019-01-12 10:55:13 +01:00
Mazdak Farrokhzad
f7da074d2a
Rollup merge of #57459 - varkor:E0202-issue-reference, r=petrochenkov
Reference tracking issue for inherent associated types in diagnostic

This makes it clearer that associated types in inherent impls are an intended feature, like the diagnostic for equality constraints in where clauses. (This is more helpful, because the lack of associated types is a confusing omission and it lets users more easily track the state of the feature.)
2019-01-12 10:55:09 +01:00
Mazdak Farrokhzad
bd8f464877
Rollup merge of #57175 - oli-obk:const_let_stabilization, r=nikomatsakis
Stabilize `let` bindings and destructuring in constants and const fn

r? @Centril

This PR stabilizes the following features in constants and `const` functions:

* irrefutable destructuring patterns (e.g. `const fn foo((x, y): (u8, u8)) { ... }`)
* `let` bindings (e.g. `let x = 1;`)
* mutable `let` bindings (e.g. `let mut x = 1;`)
* assignment (e.g. `x = y`) and assignment operator (e.g. `x += y`) expressions, even where the assignment target is a projection (e.g. a struct field or index operation like `x[3] = 42`)
* expression statements (e.g. `3;`)

This PR does explicitly *not* stabilize:

* mutable references (i.e. `&mut T`)
* dereferencing mutable references
* refutable patterns (e.g. `Some(x)`)
* operations on `UnsafeCell` types (as that would need raw pointers and mutable references and such, not because it is explicitly forbidden. We can't explicitly forbid it as such values are OK as long as they aren't mutated.)
* We are not stabilizing `let` bindings in constants that use `&&` and `||` short circuiting operations. These are treated as `&` and `|` inside `const` and `static` items right now. If we stopped treating them as `&` and `|` after stabilizing `let` bindings, we'd break code like `let mut x = false; false && { x = true; false };`. So to use `let` bindings in constants you need to change `&&` and `||` to `&` and `|` respectively.
2019-01-12 10:54:56 +01:00
Mazdak Farrokhzad
6c623224dc const_let: --bless with --compare-mode=nll 2019-01-12 10:32:27 +01:00
bors
1190f7cdf7 Auto merge of #57532 - Centril:stabilize-2175, r=varkor
Stabilize #![feature(if_while_or_patterns)]

r? @varkor

Per https://github.com/rust-lang/rust/issues/56212#issue-384085857.
Leading `|` is also accepted per the comment in the stabilization proposal.
2019-01-12 08:40:17 +00:00
Mazdak Farrokhzad
0e1402dcda bless ui/while-let 2019-01-12 08:59:12 +01:00
Esteban Küber
1550787b13 Add label for invalid literal suffix 2019-01-11 23:37:49 -08:00
Esteban Küber
3ead6de40d Tweak incorrect discriminator value variant error 2019-01-11 23:12:29 -08:00
Esteban Küber
7feb802d89 Small tweaks to parser errors 2019-01-11 22:04:54 -08:00
Esteban Küber
de3c4be099 Tweak type argument after assoc type error 2019-01-11 21:45:24 -08:00
Esteban Küber
8119017746 Continue evaluating after finding incorrect .. in pattern 2019-01-11 21:33:57 -08:00
Esteban Küber
975f8b5e32 fix test 2019-01-11 21:21:30 -08:00
Esteban Küber
8bede50f23 Continue evaluating after incorrect float literal 2019-01-11 21:19:44 -08:00
Esteban Küber
65a8d7b1d8 fix tests 2019-01-11 21:07:46 -08:00
Esteban Küber
57f17e91d0 Continue evaluating after type argument in where clause 2019-01-11 21:05:48 -08:00
Esteban Küber
5d2f31cddc Continue evaluating after missing for in impl Trait for Foo 2019-01-11 20:58:51 -08:00
Esteban Küber
d8610b31ec Continue evaluating after parsing incorrect binary literal 2019-01-11 19:56:41 -08:00
Esteban Küber
fc4b54157f Continue parsing after lifetime in incorrect location 2019-01-11 19:41:43 -08:00
Esteban Küber
5c67ba615c Continue parser after trailing type argument attribute 2019-01-11 19:31:45 -08:00
varkor
afcb938116 Stabilise irrefutable if-let and while-let patterns
This stabilises RFC 2086 (https://github.com/rust-lang/rust/issues/44495).

Co-Authored-By: Sebastian Malton <sebastian@malton.name>
2019-01-12 03:10:59 +00:00