Commit graph

8910 commits

Author SHA1 Message Date
Guillaume Gomez
64460a12af Update tests 2020-03-08 11:09:48 +01:00
Mazdak Farrokhzad
93a57cf3a8
Rollup merge of #69727 - JohnTitor:sugg-unwrap, r=estebank
Avoid using `unwrap()` in suggestions

Fixes #69725

r? @estebank
2020-03-07 08:15:30 +01:00
Mazdak Farrokhzad
ba1f6cbb00
Rollup merge of #69690 - thekuom:test/67311-extend-bindings-after-at-tests, r=Centril
test(pattern): add tests for combinations of pattern features

Reference issue #67311

Tests combinations of the following pattern features:
- bindings_after_at
- or_patterns
- slice_patterns
- box_patterns

r? @Centril
2020-03-07 08:15:28 +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
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
Yuki Okushi
3d67649287
Add a regression test 2020-03-07 04:38:50 +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
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
Felix S. Klock II
9712fa4059 Fix #69191 2020-03-05 21:53:26 -05:00
Christoph Schmidler
527456e219 Bumped version number for const_eval_limit in active.rs
and renamed 'recursion_limit' in limits.rs to simple 'limit' because it does handle other limits too.
2020-03-05 08:10:39 +01:00
Christoph Schmidler
c94c74e2d9 Opt out of CTFE if the 'const_eval_limit' is set to 0 2020-03-05 08:09:52 +01:00
Christoph Schmidler
288e142737 Add a new test to reach const_limit setting, although with wrong WARNINGs yet
rename feature to const_eval_limit
2020-03-05 08:09:52 +01:00
Christoph Schmidler
ff38babc31 Disable CTFE if const_limit was set to 0, otherwise use the value set, which defaults to 1_000_000 2020-03-05 08:09:52 +01:00
Christoph Schmidler
337af5ef7a Prepare const_limit feature gate and attribute 2020-03-05 08:09:52 +01:00
Matthew Kuo
ea7b3c3c7b fix tidy error 2020-03-04 02:05:23 -06:00
Matthew Kuo
b4788a739b test(pattern): harden tests for or-patterns with slice-patterns
Some of the nested OR paths were being missed
2020-03-04 01:33:32 -06:00
Matthew Kuo
5456114858 test(pattern): add tests for combinations of pattern features
Reference issue #67311

Tests combinations of the following pattern features:
- bindings_after_at
- or_patterns
- slice_patterns
- box_patterns
2020-03-04 01:17:41 -06:00
bors
592e9c3700 Auto merge of #69678 - Dylan-DPC:rollup-yoaueud, r=Dylan-DPC
Rollup of 6 pull requests

Successful merges:

 - #69565 (miri engine: turn some debug_assert into assert)
 - #69621 (use question mark operator in a few places.)
 - #69650 (cleanup more iterator usages (and other things))
 - #69653 (use conditions directly)
 - #69665 (Invoke OptimizerLastEPCallbacks in PreLinkThinLTO)
 - #69670 (Add explanation for E0379)

Failed merges:

r? @ghost
2020-03-03 23:26:38 +00:00
Dylan DPC
587ca17cdb
Rollup merge of #69665 - tmiasko:new-pass-manager-thin-lto-opt, r=nikic
Invoke OptimizerLastEPCallbacks in PreLinkThinLTO

The default ThinLTO pre-link pipeline does not include optimizer last
extension points. Thus, when using the new LLVM pass manager & ThinLTO
& sanitizers on any opt-level different from zero, the sanitizer
function passes would be omitted from the pipeline.

Add optimizer last extensions points manually to the pipeline, but guard
registration with stage check in the case this behaviour changes in the
future.
2020-03-03 21:26:16 +01:00
bors
4ad6248825 Auto merge of #69506 - Centril:stmt-semi-none, r=petrochenkov
encode `;` stmt without expr as `StmtKind::Empty`

Instead of encoding `;` statements without a an expression as a tuple in AST, encode it as `ast::StmtKind::Empty`.

r? @petrochenkov
2020-03-03 19:57:07 +00:00
Yuki Okushi
9f3a192327
Rollup merge of #69620 - thekuom:doc/61137-add-long-error-code-e0719, r=davidtwco
doc(librustc_error_codes): add long error explanation for E0719

Reference issue #61137

- Updated error_codes.rs
- Added E0719.md in error_codes
- Updated necessary test .stderr files
2020-03-03 17:50:10 +09:00
Yuki Okushi
4699b29a04
Rollup merge of #69609 - TimDiekmann:excess, r=Amanieu
Remove `usable_size` APIs

This removes the usable size APIs:
- remove `usable_size` (obv)
- change return type of allocating methods to include the allocated size
- remove `_excess` API

r? @Amanieu
closes rust-lang/wg-allocators#17
2020-03-03 17:50:06 +09:00
Tomasz Miąsko
52c5f2a577 Add test for -Znew-llvm-pass-manager -Clto=thin -Zsanitizer=...
Additionally verify that the current implementation of LLVM version
check (which uses lexicographic ordering) is good enough to exclude
versions before LLVM 9, where the new LLVM pass manager is unsupported.
2020-03-03 08:41:08 +01:00
CAD97
b3777c952f Remove chalk integration 2020-03-02 18:11:53 -05:00
Tim Diekmann
d8e3557dba Remove usable_size APIs 2020-03-03 00:08:24 +01:00
bors
18c275b423 Auto merge of #69635 - Dylan-DPC:rollup-2oh8uu5, r=Dylan-DPC
Rollup of 6 pull requests

Successful merges:

 - #68682 (Add documentation to compiler intrinsics)
 - #69544 (Unrevert "Remove `checked_add` in `Layout::repeat`")
 - #69617 (constify mem::forget)
 - #69622 (Rename `syntax` in librustc_ast/README.md)
 - #69623 (stash API: remove panic to fix ICE.)
 - #69624 (Toolstate: Don't block beta week on already broken tools.)

Failed merges:

 - #69626 (Toolstate: don't duplicate nightly tool list.)

r? @ghost
2020-03-02 12:48:26 +00:00
Dylan DPC
0255561dea
Rollup merge of #69623 - Centril:fix-69396-tmp, r=petrochenkov
stash API: remove panic to fix ICE.

Implements the temporary solution suggested in https://github.com/rust-lang/rust/pull/69537#issuecomment-593143975.
Fixes https://github.com/rust-lang/rust/issues/69396.

r? @petrochenkov
2020-03-02 13:42:41 +01:00
bors
c839a7b4c2 Auto merge of #69257 - RalfJung:layout-visitor, r=eddyb
Adjust Miri value visitor, and doc-comment layout components

I realized that I still didn't have quite the right intuition for how our `LayoutDetails` work, so I had to adjust the Miri value visitor to the things I understood better now. I also added some doc-comments to `LayoutDetails` as a hopefully canonical place to note such things.

The main visitor change is that we *first* look at all the fields (according to `FieldPlacement`), and *then* check the variants and handle `Multiple` appropriately. I did not quite realize how orthogonal "fields" and "variants" are.
I also moved the check for the scalar ABI to *after* checking all the fields; this leads to better (more type-driven) error messages.

And it looks like we can finally remove that magic hack for `ty::Generator`. :D

r? @oli-obk for the Miri/visitor changes and @eddyb for the layout docs
The Miri PR is at: https://github.com/rust-lang/miri/pull/1178
2020-03-02 09:37:35 +00:00
Mazdak Farrokhzad
df20036848 stash API: remove panic to fix ICE. 2020-03-02 00:07:23 +01:00
Mazdak Farrokhzad
176fe3f8ac encode ; stmt w/o expr as StmtKind::Empty 2020-03-01 23:02:17 +01:00
Matthew Jasper
ebc86b441d Fix use of has_infer_types
* Add a new method `has_infer_types_or_consts` that's used instead most
  of the time, since there's generally no reason to only consider types.
*  Remove use of `has_closure_types`, because closures are no longer
  implicitly linked to the `InferCtxt`.
2020-03-01 21:42:34 +00:00
Matthew Kuo
275dac7bfb doc(librustc_error_codes): add long error explanation for E0719
Progresses #61137
2020-03-01 15:17:08 -06:00
Esteban Küber
7b6f5ed956 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-01 10:46:07 -08:00
Yuki Okushi
47d87d7ca5
Rollup merge of #69605 - JohnTitor:opt-def-id, r=petrochenkov
Use `opt_def_id()` over `def_id()`

Fixes #69588
2020-03-01 19:28:15 +09:00
Yuki Okushi
9801696214
Rollup merge of #69583 - LeSeulArtichaut:ice-69378, r=Centril
Do not ICE on invalid type node after parse recovery

Closes #69378.
r? @estebank
2020-03-01 19:28:13 +09:00
Yuki Okushi
f9c8c49c0b Use opt_def_id() over def_id() 2020-03-01 15:15:29 +09:00
Vadim Petrochenkov
e08c279eac Rename syntax to rustc_ast in source code 2020-02-29 21:59:09 +03:00
Vadim Petrochenkov
6054a30370 Make it build again 2020-02-29 20:47:10 +03:00
bors
e9bca510fe Auto merge of #69260 - GuillaumeGomez:create-E0747-error-code, r=varkor,estebank
Create E0747 error code for unterminated raw strings

Reopening of #66035.

r? @estebank
2020-02-29 13:59:45 +00:00
LeSeulArtichaut
febf72861b Add regression test 2020-02-29 14:38:39 +01:00
bors
55aee8d496 Auto merge of #69255 - estebank:e0599-details, r=varkor
Add more context to E0599 errors

Point at the intermediary unfulfilled trait bounds.

Fix #52523, fix #61661, cc #36513, fix #68131, fix #64417, fix #61768, cc #57457, cc #9082, fix #57994, cc #64934, cc #65149.
2020-02-29 03:52:53 +00:00
Esteban Küber
2fb35adc48 Ignore output for some platforms with diverging test output
Get around #53081.
2020-02-28 12:01:29 -08:00
Esteban Küber
a9a99df0a2 Do not suggest implementing traits if present in predicates 2020-02-28 11:37:59 -08:00
Esteban Küber
61bc7a3462 Reword message 2020-02-28 11:37:59 -08:00
Esteban Küber
a29f6916d8 Reduce verbosity when suggesting restricting type params 2020-02-28 11:37:59 -08:00
Esteban Küber
c764a82310 keep predicate order and tweak output 2020-02-28 11:37:59 -08:00
Esteban Küber
7c29441ef2 Review comments: split requirement text to multiple lines for readability 2020-02-28 11:37:59 -08:00
Esteban Küber
01286408c1 Account for arbitrary self types in E0599 2020-02-28 11:37:59 -08:00