bors [Sun, 8 Mar 2020 15:54:09 +0000 (15:54 +0000)]
Auto merge of #69829 - Centril:rollup-lm5lzsq, r=Centril
Rollup of 7 pull requests
Successful merges:
- #69631 (remove non-sysroot sources from rust-src component)
- #69646 (Miri visitor: detect primitive types based on type, not layout (also, more tests))
- #69651 (Try to ensure usize marker does not get merged)
- #69668 (More documentation and simplification of BTreeMap's internals)
- #69771 (Cleanup E0390 explanation)
- #69777 (Add missing ` in doc for File::with_options())
- #69812 (Refactorings to method/probe.rs and CrateId)
Rollup merge of #69651 - Mark-Simulacrum:black-box-marker, r=eddyb
Try to ensure usize marker does not get merged
This follows up on [this conversation](https://github.com/rust-lang/rust/pull/69209#discussion_r379911282). However, I'm not confident this is quite correct, so feedback is appreciated, as always.
Rollup merge of #69631 - RalfJung:rust-src, r=Mark-Simulacrum
remove non-sysroot sources from rust-src component
See https://github.com/rust-lang/rust/pull/69592#discussion_r386238725: these were likely added in https://github.com/rust-lang/rust/pull/58269 for the sake of compiler plugins, but those are being entirely phased out, so there is no good reason to ship these sources.
bors [Sun, 8 Mar 2020 10:51:46 +0000 (10:51 +0000)]
Auto merge of #69822 - Centril:rollup-360ca2j, r=Centril
Rollup of 8 pull requests
Successful merges:
- #69422 (Remove use of `unwrap()` from save-analysis)
- #69548 (Turn trailing tokens in `assert!()` into hard errors)
- #69561 (Clean up unstable book)
- #69599 (check_binding_alt_eq_ty: improve precision wrt. `if let`)
- #69641 (Update books)
- #69776 (Fix & test leak of some BTreeMap nodes on panic during `into_iter`)
- #69805 (resolve: Modernize some naming)
- #69810 (test(bindings_after_at): add dynamic drop tests for bindings_after_at)
Rollup merge of #69641 - ehuss:update-books, r=ehuss
Update books
## nomicon
8 commits in 3e6e1001dc6e095dbd5c88005e80969f60e384e1..9f797e65e6bcc79419975b17aff8e21c9adc039f
2019-12-14 22:08:52 +0000 to 2020-03-04 03:45:13 +0100
- Rustup to latest rustc (rust-lang-nursery/nomicon#203)
- (minor) Add backticks around type names (rust-lang-nursery/nomicon#197)
- Add book.toml (rust-lang-nursery/nomicon#185)
- Rename `Alloc` to `AllocRef` (rust-lang-nursery/nomicon#188)
- Lifetimes: explain how to fix destructor example (rust-lang-nursery/nomicon#195)
- mention soundness (rust-lang-nursery/nomicon#194)
- Fix example in FFI section Calling Rust from C (rust-lang-nursery/nomicon#193)
- Removed repeated word (rust-lang-nursery/nomicon#191)
## reference
8 commits in 64239df6d173562b9deb4f012e4c3e6e960c4754..559e09caa9661043744cf7af7bd88432d966f743
2020-02-10 19:05:13 +0100 to 2020-03-02 01:17:14 +0100
- Syntax error fix (rust-lang-nursery/reference#769)
- Fix incorrect pseudocode for #[repr(C)] struct alignment (rust-lang-nursery/reference#766)
- Replace "Field-Less" with "Fieldless" (rust-lang-nursery/reference#768)
- Removed repeated word (rust-lang-nursery/reference#767)
- Update for change in const lint name. (rust-lang-nursery/reference#764)
- semantic type -> resolved type (rust-lang-nursery/reference#761)
- add behavior change of relative paths without `self` in 2018 edition (rust-lang-nursery/reference#757)
- assignment operator expressions -> compound assignment expressions (rust-lang-nursery/reference#759)
## rust-by-example
3 commits in 32facd5522ddbbf37baf01e4e4b6562bc55c071a..db57f899ea2a56a544c8d280cbf033438666273d
2020-02-11 09:25:06 -0300 to 2020-02-18 17:46:46 -0300
- Minor typo fix in src/mod/visibility (rust-lang/rust-by-example#1309)
- Don't suggest Into implements a reverse conversion (rust-lang/rust-by-example#1307)
- Improve grammar in example of 'in let' section (rust-lang/rust-by-example#1308)
Follow up to https://github.com/rust-lang/rust/pull/69452 -- this tweaks the `check_binding_alt_eq_ty` logic wrt. wording so that `if let` doesn't include "in this arm" (because there can only ever be one arm).
Rollup merge of #69561 - JohnTitor:clean-up-unstable-book, r=Mark-Simulacrum
Clean up unstable book
- #58402's feature was renamed to `tidy_test_never_used_anywhere_else` and it is now used for tidy only
- `read_initializer` link is wrong and the doc should be auto-generated so removed
- Add dummy doc for `link_cfg`
- Stop generating `compiler_builtins_lib` doc in favor of b8ccc0f8a60ac16fdc00f4b2e36e1a5db8b78295
- Make `rustc_attrs` tracking issue "None"
bors [Sun, 8 Mar 2020 05:27:21 +0000 (05:27 +0000)]
Auto merge of #69804 - Centril:rollup-u86dc1g, r=Centril
Rollup of 8 pull requests
Successful merges:
- #69667 (Remove the `no_debug` feature)
- #69687 (resolve, inconsistent binding mode: tweak wording)
- #69708 (On mismatched delimiters, only point at empty blocks that are in the same line)
- #69765 (reduce test size for Miri)
- #69773 (fix various typos)
- #69787 (mir::Local is Copy we can pass it by value in these cases)
- #69794 (Add `Layout::dangling()` to return a well-aligned `NonNull<u8>`)
- #69797 (Correct version that relaxed orphan rules)
Rollup merge of #69797 - jongiddy:convert-version, r=Mark-Simulacrum
Correct version that relaxed orphan rules
Docs say
> Prior to Rust 1.40, if the destination type was not part of the current crate then you couldn't implement From directly
Version 1.41 of Rust introduced the change to the orphan rules - https://blog.rust-lang.org/2020/01/30/Rust-1.41.0.html#relaxed-restrictions-when-implementing-traits - so this should say
> Prior to Rust 1.41...
Rollup merge of #69708 - estebank:tiny, r=petrochenkov
On mismatched delimiters, only point at empty blocks that are in the same line
We point at empty blocks when we have mismatched braces to detect cases where editors auto insert `}` after writing `{`. Gate this to only the case where the entire span is in the same line so we never point at explicitly empty blocks.
bors [Sat, 7 Mar 2020 13:47:46 +0000 (13:47 +0000)]
Auto merge of #69676 - ecstatic-morse:fix-enum-discr-effect, r=oli-obk
Pass correct place to `discriminant_switch_effect`
PR #69562, which fixed a bug that was causing clippy to ICE, mistakenly passed the place holding the *result* of `Rvalue::Discriminant` instead of the place holding its *operand* to `apply_discriminant_switch_effect` as the enum place. As a result, no effect was applied at all, and we lost the perf benefits from marking inactive enum variants as uninitialized.
**edit:** The regression test has been split into #69744.
bors [Sat, 7 Mar 2020 08:07:10 +0000 (08:07 +0000)]
Auto merge of #69796 - Centril:rollup-xg85jmx, r=Centril
Rollup of 9 pull requests
Successful merges:
- #67741 (When encountering an Item in a pat context, point at the item def)
- #68985 (Parse & reject postfix operators after casts)
- #69656 (Use .next() instead of .nth(0) on iterators.)
- #69680 (rustc_expand: Factor out `Annotatable::into_tokens` to a separate method)
- #69690 (test(pattern): add tests for combinations of pattern features)
- #69706 (Use subslice patterns in slice methods)
- #69727 (Avoid using `unwrap()` in suggestions)
- #69754 (Update deprecation version to 1.42 for Error::description)
- #69782 (Don't redundantly repeat field names (clippy::redundant_field_names))
Rollup merge of #69706 - cuviper:subslice-methods, r=Centril
Use subslice patterns in slice methods
For all of the methods that pick off the first or last element, we can
use subslice patterns to implement them directly, rather than relying on
deeper indexing function calls. At a minimum, this means the generated
code will rely less on inlining for performance, but in some cases it
also optimizes better.
Rollup merge of #68985 - daboross:fix-35813, r=Centril
Parse & reject postfix operators after casts
This adds an explicit error messages for when parsing `x as Type[0]` or similar expressions. Our add an extra parse case for parsing any postfix operator (dot, indexing, method calls, await) that triggers directly after parsing `as` expressions.
My friend and I worked on this together, but they're still deciding on a github username and thus I'm submitting this for both of us.
It will immediately error out, but will also provide the rest of the parser with a useful parse tree to deal with.
There's one decision we made in how this produces the parse tree. In the situation `&x as T[0]`, one could imagine this parsing as either `&((x as T)[0])` or `((&x) as T)[0]`. We chose the latter for ease of implementation, and as it seemed the most intuitive.
Feedback welcome! This is our first change to the parser section, and it might be completely horrible.
Rollup merge of #67741 - estebank:point-at-pat-def, r=Centril
When encountering an Item in a pat context, point at the item def
```
error[E0308]: mismatched types
--> $DIR/const-in-struct-pat.rs:8:17
|
LL | struct foo;
| ----------- `foo` defined here
...
LL | let Thing { foo } = t;
| ^^^ expected struct `std::string::String`, found struct `foo`
|
= note: `foo` is interpreted as a unit struct, not a new binding
help: you can bind the struct field to a different name
|
LL | let Thing { foo: other_foo } = t;
| ^^^^^^^^^^^^^^
```
```
error[E0308]: mismatched types
--> $DIR/const.rs:14:9
|
LL | const FOO: Foo = Foo{bar: 5};
| ----------------------------- constant defined here
...
LL | FOO => {},
| ^^^
| |
| expected `&Foo`, found struct `Foo`
| `FOO` is interpreted as a constant, not a new binding
| help: use different name to introduce a new binding: `other_foo`
```
Dylan DPC [Thu, 5 Mar 2020 21:04:10 +0000 (22:04 +0100)]
Rollup merge of #69736 - matthiaskrgr:even_more_clippy, r=Dylan-DPC
even more clippy cleanups
* Don't pass &mut where immutable reference (&) is sufficient (clippy::unnecessary_mut_passed)
* Use more efficient &&str to String conversion (clippy::inefficient_to_string)
* Don't always eval arguments inside .expect(), use unwrap_or_else and closure. (clippy::expect_fun_call)
* Use righthand '&' instead of lefthand "ref". (clippy::toplevel_ref_arg)
* Use simple 'for i in x' loops instead of 'while let Some(i) = x.next()' loops on iterators. (clippy::while_let_on_iterator)
* Const items have by default a static lifetime, there's no need to annotate it. (clippy::redundant_static_lifetimes)
* Remove redundant patterns when matching ( x @ _ to x) (clippy::redundant_pattern)
Dylan DPC [Thu, 5 Mar 2020 21:04:05 +0000 (22:04 +0100)]
Rollup merge of #69713 - matthiaskrgr:more_cleanup, r=cramertj
more clippy cleanups
* Don't use .ok() before unwrapping via .expect() on a Result.
* Use .map() to modify data inside Options instead of using .and_then(|x| Some(y))
* Use .as_deref() instead of .as_ref().map(Deref::deref)
* Don't use "if let" bindings to only check a value and not actually bind anything.
* Use single-char patter on {ends,starts}_with and remove clone on copy type.
bors [Thu, 5 Mar 2020 17:46:58 +0000 (17:46 +0000)]
Auto merge of #67260 - TheSamsa:const-limit, r=oli-obk
const limit for CTFE
I tried to tackle the first steps for this issue.
The active feature flag does link to the issue below, I think this has to change, because there should be a tracking issue?
https://github.com/TheSamsa/rust/blob/1679a7647da0de672bac26b716db82d16f3896a8/src/librustc_feature/active.rs#L530
Also, I only put up the storage of the limit like "recursion_limit" but created a seperate file in the same place. Since I guess the invocation happens seperately.
https://github.com/TheSamsa/rust/blob/const-limit/src/librustc/middle/const_limit.rs
If this does not hold up for the issue and since there is a time pressure, just reject it.
hopefully this does not put more load on you than I expected...
Changes:
````
Rustup to rust-lang/rust#69506
Revive rls integration test
use question mark operator
Add regression test
Use `try_eval_usize` over `eval_usize`
Add path for display trait
Use lang items instead of get_trait_def_id where possible
Update stderr
Don't lint debug formatting in debug impl
Whitelist unused attribute for use items.
add test for #5238
````