Commit Graph

107938 Commits

Author SHA1 Message Date
Mazdak Farrokhzad
e9c3ddc8df
Rollup merge of #69680 - petrochenkov:nont4, r=Centril
rustc_expand: Factor out `Annotatable::into_tokens` to a separate method

Minor refactoring salvaged from https://github.com/rust-lang/rust/pull/69594.
r? @Centril
2020-03-07 08:15:26 +01:00
Mazdak Farrokhzad
5d1433b1f4
Rollup merge of #69656 - matthiaskrgr:iter_nth_zero, r=oli-obk
Use .next() instead of .nth(0) on iterators.
2020-03-07 08:15:24 +01:00
Mazdak Farrokhzad
111724f5e2
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.

Fixes #35813.
2020-03-07 08:15:21 +01:00
Mazdak Farrokhzad
e8bb6c05ab
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`
```

Fix #55631, fix #48062, cc #42876.
2020-03-07 08:15:19 +01:00
O01eg
dbd1514353
Add new option to the documentation. 2020-03-07 07:29:23 +03:00
Tim Diekmann
09d3ba13af
Update alloc.rs 2020-03-07 02:45:55 +01:00
Tim Diekmann
545ef9d83a Add Layout::dangling() to return a well-aligned NonNull<u8> 2020-03-07 02:40:54 +01:00
JOE1994
05f6482f43 mir-interpret: add method Memory::read wide_string 2020-03-06 19:14:51 -05:00
Esteban Küber
125159f30a When encountering an Item in a pat context, point at the item def 2020-03-06 15:29:26 -08:00
Ralf Jung
295c2d69bd bug on ty::GeneratorWitness 2020-03-06 22:41:50 +01:00
Ralf Jung
58f8cc2135 rename visit_primitive -> try_visit_primitive, and comments 2020-03-06 22:41:49 +01:00
Ralf Jung
f0586f9aea please tidy 2020-03-06 22:41:49 +01:00
Ralf Jung
4584e75c9b better error messages for invalid boxes (and a few more tests) 2020-03-06 22:41:49 +01:00
Ralf Jung
f481547622 test some more kinds of enums with uninhabited variants 2020-03-06 22:41:49 +01:00
Ralf Jung
4807e939cd test that we validate boxes 2020-03-06 22:41:49 +01:00
Ralf Jung
aa1435b0ae const validation ub tests: use transmute instead of unions 2020-03-06 22:41:49 +01:00
Ralf Jung
d47196b2ec miri value visitor: detect primitives by type, not layout 2020-03-06 22:41:49 +01:00
Ralf Jung
6548be2ba9 'fieldless enums' is not what I meant -- it's empty/uninhabited enums, really 2020-03-06 22:41:49 +01:00
Santiago Pastorino
0ed6e795fb
mir::Local is Copy we can pass it by value in these cases 2020-03-06 18:23:18 -03:00
LeSeulArtichaut
33ebc20513 Turn trailing tokens in assert!() into hard errors 2020-03-06 22:02:20 +01:00
Yuki Okushi
3d67649287
Add a regression test 2020-03-07 04:38:50 +09:00
Yuki Okushi
1631b4de1c
Avoid using unwrap() in suggestions 2020-03-07 04:24:13 +09:00
Matthias Krüger
83980aca20 Don't redundantly repeat field names (clippy::redundant_field_names) 2020-03-06 19:42:18 +01:00
Matthias Krüger
4c2b0f1631 bless tests 2020-03-06 19:37:22 +01:00
Yuki Okushi
18080e6072
Remove NO_DEBUG const 2020-03-07 03:32:01 +09:00
bors
2890b37b86 Auto merge of #69753 - pnkfelix:issue-69191-ice-on-uninhabited-enum-field, r=oli
Do not ICE when matching an uninhabited enum's field

Fix #69191
2020-03-06 17:52:52 +00:00
Vadim Petrochenkov
2d0c5b4337 rustc_expand: Factor out Annotatable::into_tokens to a separate method 2020-03-06 20:34:01 +03:00
Lukas
31183bbd5a
Fix missing ` in doc for File::with_options 2020-03-06 14:27:09 +00:00
Matthias Krüger
136ad015b6 fix various typos 2020-03-06 15:19:31 +01:00
Stein Somers
44c97c43b5 Fix & test leak of some BTreeMap nodes on panic during into_iter 2020-03-06 14:50:09 +01:00
Guillaume Gomez
13d5ee1c4f Cleanup E0390 explanation 2020-03-06 12:52:16 +01:00
Felix S. Klock II
b4422fb14b Added oli's multivariant test case (alpha renaming the enum name itself).
(And added Ralf's suggested test.)

Added my own three-variant multi-variant as well.
2020-03-06 06:46:37 -05:00
bors
865b44a3e3 Auto merge of #69614 - estebank:ice-age, r=davidtwco
`delay_span_bug` when codegen cannot select obligation

Fix #69602, introduced in #60126 by letting the compiler continue past
type checking after encountering errors.
2020-03-06 08:24:48 +00:00
Oliver Scherer
40809b0585
Add FIXME 2020-03-06 08:48:58 +01:00
Dylan Nugent
9afbf28ef6 Update deprecation version to 1.42 for Error::description
Error::description is deprecated as of version 1.42, as the commit was
not in the release for 1.41.
2020-03-05 21:55:36 -05:00
Felix S. Klock II
9712fa4059 Fix #69191 2020-03-05 21:53:26 -05:00
bors
4a1b69d53a Auto merge of #69586 - petrochenkov:unmerge, r=Centril
ast: Unmerge structures for associated items and foreign items

Follow-up to https://github.com/rust-lang/rust/pull/69194.
r? @Centril
2020-03-06 02:22:49 +00:00
Ralf Jung
2770f300b1 reduce test size for Miri 2020-03-05 23:41:17 +01:00
bors
b818ccc74c Auto merge of #69746 - Dylan-DPC:rollup-wr6dvdk, r=Dylan-DPC
Rollup of 8 pull requests

Successful merges:

 - #69697 (Add explanation for E0380)
 - #69698 (Use associated constants of integer types)
 - #69711 (Update macros.rs: fix documentation typo.)
 - #69713 (more clippy cleanups)
 - #69728 (Make link to `std::str` active)
 - #69732 (Clean E0382 and E0384 explanations)
 - #69736 (even more clippy cleanups)
 - #69742 (Fixed a typo)

Failed merges:

r? @ghost
2020-03-05 21:39:00 +00:00
Dylan DPC
80c843431d
Rollup merge of #69742 - TrolledWoods:patch-1, r=jonas-schievink
Fixed a typo

"vector" was used instead of "string". I think this is a typo?
2020-03-05 22:04:12 +01:00
Dylan DPC
67d735c4bf
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)
2020-03-05 22:04:10 +01:00
Dylan DPC
558115b86c
Rollup merge of #69732 - GuillaumeGomez:cleanup-e0382-e0384, r=Dylan-DPC
Clean E0382 and E0384 explanations

r? @Dylan-DPC
2020-03-05 22:04:09 +01:00
Dylan DPC
7aac135dd7
Rollup merge of #69728 - LeSeulArtichaut:patch-1, r=steveklabnik
Make link to `std::str` active

Closes #69726.

r? @dtolnay
2020-03-05 22:04:07 +01:00
Dylan DPC
22a743bc1c
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.
2020-03-05 22:04:05 +01:00
Dylan DPC
189626672d
Rollup merge of #69711 - penelopezone:patch-1, r=steveklabnik
Update macros.rs: fix documentation typo.
2020-03-05 22:04:04 +01:00
Dylan DPC
44f184acc0
Rollup merge of #69698 - RalfJung:int_assoc, r=davidtwco
Use associated constants of integer types

Take advantage of https://github.com/rust-lang/rust/pull/68952 in the interpreter and some nearby modules :)
2020-03-05 22:04:02 +01:00
Dylan DPC
e01dc83aa8
Rollup merge of #69697 - GuillaumeGomez:explanation-e0380, r=Dylan-DPC
Add explanation for E0380

r? @Dylan-DPC
2020-03-05 22:03:58 +01:00
TrolledWoods
79bc934ff3
Fixed a typo
"vector" was used instead of "string"
2020-03-05 20:20:02 +01:00
Tomasz Miąsko
30650f867b debuginfo: Use is unsigned flag when emitting enumerators 2020-03-05 20:13:01 +01:00
Tomasz Miąsko
ebd941b890 debuginfo: Generators use u32 as discriminant type repr 2020-03-05 20:13:01 +01:00