Commit graph

5689 commits

Author SHA1 Message Date
Mazdak Farrokhzad
6070e2e876
Rollup merge of #62085 - JohnTitor:add-test-for-issue-38591, r=Centril
Add test for issue-38591

Closes #38591

r? @pnkfelix
2019-06-25 17:15:34 +02:00
Mazdak Farrokhzad
61fae230e6
Rollup merge of #62078 - petrochenkov:nosendync2, r=varkor
Remove built-in derive macros `Send` and `Sync`

Closes https://github.com/rust-lang/rust/issues/62050
2019-06-25 17:15:33 +02:00
Mazdak Farrokhzad
c5e6069194
Rollup merge of #62055 - matthewjasper:fix-error-counting, r=pnkfelix
Fix error counting

Count duplicate errors for `track_errors` and other error counting checks.
Add FIXMEs to make it clear that we should be moving away from this kind of logic.

Closes #61663
2019-06-25 17:15:31 +02:00
Mazdak Farrokhzad
d0e926fcfd
Rollup merge of #61814 - varkor:uninhabited-const-61744, r=oli-obk
Fix an ICE with uninhabited consts

Fixes https://github.com/rust-lang/rust/issues/61744.

r? @oli-obk
2019-06-25 17:15:29 +02:00
bors
303f77ee1d Auto merge of #60732 - jswrenn:arbitrary_enum_discriminant, r=pnkfelix
Implement arbitrary_enum_discriminant

Implements RFC rust-lang/rfcs#2363 (tracking issue #60553).
2019-06-25 15:12:11 +00:00
Eduard-Mihai Burtescu
fad27df3e7 rustc: correctly transform memory_index mappings for generators. 2019-06-25 13:59:49 +03:00
bors
10deeae326 Auto merge of #62094 - oli-obk:zst_intern, r=eddyb
Don't ICE on mutable zst slices

fixes #62045
2019-06-25 09:10:18 +00:00
varkor
b7a0e40175 Fix an ICE with uninhabited consts 2019-06-25 03:39:23 +01:00
Mazdak Farrokhzad
a60bbb0f6b --bless you. 2019-06-24 20:45:19 +02:00
bors
7e08576e42 Auto merge of #62081 - RalfJung:miri-pointer-checks, r=oli-obk
Refactor miri pointer checks

Centralize bounds, alignment and NULL checking for memory accesses in one function: `memory.check_ptr_access`. That function also takes care of converting a `Scalar` to a `Pointer`, should that be needed.  Not all accesses need that though: if the access has size 0, `None` is returned. Everyone accessing memory based on a `Scalar` should use this method to get the `Pointer` they need.

All operations on the `Allocation` work on `Pointer` inputs and expect all the checks to have happened (and will ICE if the bounds are violated). The operations on `Memory` work on `Scalar` inputs and do the checks themselves.

The only other public method to check pointers is `memory.ptr_may_be_null`, which is needed in a few places. No need for `check_align` or similar methods. That makes the public API surface much easier to use and harder to mis-use.

This should be largely no-functional-change, except that ZST accesses to a "true" pointer that is dangling or out-of-bounds are now considered UB. This is to be conservative wrt. whatever LLVM might be doing.

While I am at it, this also removes the assumption that the vtable part of a `dyn Trait`-fat-pointer is a `Pointer` (as opposed to a pointer cast to an integer, stored as raw bits).

r? @oli-obk
2019-06-24 17:44:13 +00:00
Mazdak Farrokhzad
5eaedda9f5 Address review comments. 2019-06-24 18:32:52 +02:00
Oliver Scherer
91a15e2857 Pacify tidy 2019-06-24 16:34:50 +02:00
Oliver Scherer
1140a916f6 Add regression test 2019-06-24 15:34:29 +02:00
Oliver Scherer
354163d478 Simplify vtable interning 2019-06-24 15:31:25 +02:00
Mazdak Farrokhzad
5baac07d4b lint-type-overflow2: warn -> deny. 2019-06-24 07:58:37 +02:00
Mazdak Farrokhzad
e4e0f959ce promoted_errors: warn -> deny. 2019-06-24 07:58:37 +02:00
Mazdak Farrokhzad
e364eb40d5 add '// ignore-pass' where applicable. 2019-06-24 07:58:37 +02:00
Yuki Okushi
a257dff99c Add test for issue-38591 2019-06-24 04:36:13 +09:00
bors
2cd5ed495c Auto merge of #61778 - petrochenkov:pass, r=Mark-Simulacrum
compiletest: Introduce `// {check,build,run}-pass` pass modes

Pass UI tests now have three modes
```
// check-pass
// build-pass
// run-pass
```
mirroring equivalent well-known `cargo` commands.

`// check-pass` will compile the test skipping codegen (which is expensive and isn't supposed to fail in most cases).
`// build-pass` will compile and link the test without running it.
`// run-pass` will compile, link and run the test.
Tests without a "pass" annotation are still considered "fail" tests.

Most UI tests would probably want to switch to `check-pass`.
Tests validating codegen would probably want to run the generated code as well and use `run-pass`.
`build-pass` should probably be rare (linking tests?).

https://github.com/rust-lang/rust/pull/61755 will provide a way to run the tests with any mode, e.g. bump `check-pass` tests to `run-pass` to satisfy especially suspicious people, and be able to make sure that codegen doesn't breaks in some entirely unexpected way.
Tests marked with any mode are expected to pass with any other mode, if that's not the case for some legitimate reason, then the test should be made a "fail" test rather than a "pass" test.
Perhaps some secondary CI can verify this invariant, but that's not super urgent.

`// compile-pass` still works and is equivalent to `build-pass`.
Why is `// compile-pass` bad - 1) it gives an impression that the test is only compiled, but not linked, 2) it doesn't mirror a cargo command.
It can be removed some time in the future in a separate PR.

cc https://github.com/rust-lang/rust/issues/61712
2019-06-23 17:16:22 +00:00
Ralf Jung
9c32ede099 comment tweaks, better validation errors, update UI tests 2019-06-23 18:03:57 +02:00
Vadim Petrochenkov
e1d871e2d9 Remove built-in derive macros Send and Sync 2019-06-23 15:33:39 +03:00
bors
5d677b2efd Auto merge of #60861 - Centril:let-chains-ast-intro, r=petrochenkov
[let_chains, 2/6] Introduce `Let(..)` in AST, remove IfLet + WhileLet and parse let chains

Here we remove `ast::ExprKind::{IfLet, WhileLet}` and introduce `ast::ExprKind::Let`.
Moreover, we also:
+ connect the parsing logic for let chains
+ introduce the feature gate
+ rewire HIR lowering a bit.

However, this does not connect the new syntax to semantics in HIR.
That will be the subject of a subsequent PR.

Per https://github.com/rust-lang/rust/issues/53667#issuecomment-471583239.
Next step after https://github.com/rust-lang/rust/pull/59288.

cc @Manishearth re. Clippy.

r? @oli-obk
2019-06-23 12:28:12 +00:00
Mazdak Farrokhzad
74380b3336
Rollup merge of #62068 - ia0:fix_meta_var, r=petrochenkov
Fix meta-variable binding errors in macros

The errors are either:
- The meta-variable used in the right-hand side is not bound (or defined) in the
  left-hand side.
- The meta-variable used in the right-hand side does not repeat with the same
  kleene operator as its binder in the left-hand side. Either it does not repeat
  enough, or it uses a different operator somewhere.

This change should have no semantic impact.

Found by https://github.com/rust-lang/rust/pull/62008
2019-06-23 01:59:20 +02:00
Mazdak Farrokhzad
675ac94f8b
Rollup merge of #62051 - Centril:unused-derive-, r=petrochenkov
Lint empty `#[derive()]` as unused attribute.

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

cc https://github.com/rust-lang/rust/issues/55112

r? @petrochenkov
2019-06-23 01:59:17 +02:00
Mazdak Farrokhzad
869680736d
Rollup merge of #62047 - Centril:cfg-attr-empty-lint, r=estebank
Trigger `unused_attribute` lint on `#[cfg_attr($pred,)]`

Lint on `#[cfg_attr($pred,)]` as decided in https://github.com/rust-lang/rust/issues/54881#issuecomment-441442173.

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

r? @estebank
2019-06-23 01:59:15 +02:00
Julien Cretin
b8106b59d2 Fix meta-variable binding errors in macros
The errors are either:
- The meta-variable used in the right-hand side is not bound (or defined) in the
  left-hand side.
- The meta-variable used in the right-hand side does not repeat with the same
  kleene operator as its binder in the left-hand side. Either it does not repeat
  enough, or it uses a different operator somewhere.

This change should have no semantic impact.
2019-06-23 01:30:41 +02:00
Mazdak Farrokhzad
5ae5086cc5 let_chains: --bless tests due to recovery in lowering. 2019-06-23 01:29:29 +02:00
Mazdak Farrokhzad
10234d286a let_chains: Adjust tests for pre-expansion gating. 2019-06-23 01:29:29 +02:00
Mazdak Farrokhzad
07f37c88fb let_chains: Account for const generics in validation tests. 2019-06-23 01:29:29 +02:00
Mazdak Farrokhzad
1ff947f596 let_chains: scrutinee -> head expression. 2019-06-23 01:29:29 +02:00
Mazdak Farrokhzad
86250a666e let_chains: Comment out Let in ident_can_begin_expr. 2019-06-23 01:29:29 +02:00
Mazdak Farrokhzad
530f954e92 let_chains: Test pretty output for simple stable if-let. 2019-06-23 01:29:29 +02:00
Mazdak Farrokhzad
b425df0be1 let_chains: Remove redundant tests in syntax-ambiguity-*.rs. 2019-06-23 01:29:29 +02:00
Mazdak Farrokhzad
d45dadd951 let_chains: Add test protecting the precedence of && in relation to other things. 2019-06-23 01:29:29 +02:00
Mazdak Farrokhzad
6a6b07906f let_chains: Adjust unnecessary parens tests. 2019-06-23 01:29:29 +02:00
Mazdak Farrokhzad
c0c5791049 let_chains: Add feature gate tests. 2019-06-23 01:29:29 +02:00
Mazdak Farrokhzad
357b49992c let_chains: Add tests for places where let expressions aren't allowed. 2019-06-23 01:29:29 +02:00
Matthew Jasper
95a32157af Count all errors for track_errors 2019-06-22 15:36:24 +01:00
Mazdak Farrokhzad
e994d35e9b Lint empty 'derive()' as unused attribute. 2019-06-22 13:19:55 +02:00
Mazdak Farrokhzad
af710c9e79 Add test for linting on 'cfg_attr(,)'. 2019-06-22 12:12:26 +02:00
bors
305930cffe Auto merge of #62010 - ecstatic-morse:kill-borrows-of-proj, r=pnkfelix
Kill conflicting borrows of places with projections.

Resolves #62007.

Due to a bug, the previous version of this check did not actually kill all conflicting borrows unless the borrowed place had no projections. Specifically, `sets.on_entry` will always be empty when `statement_effect` is called. It does not contain the set of borrows which are live at this point in the program.

@pnkfelix describes why this was not caught before in #62007, and created an example where the current borrow checker failed unnecessarily. This PR adds their example as a test, but they will likely want to add some additional ones.

r? @pnkfelix
2019-06-22 05:12:11 +00:00
Mazdak Farrokhzad
595f55cb8b
Rollup merge of #62016 - JohnTitor:add-test-for-issue-27697, r=alexcrichton
Add test for issue-27697

Closes #27697
2019-06-22 01:42:40 +02:00
Mazdak Farrokhzad
9eb88f3b82
Rollup merge of #61681 - asfreitas:addSendTrait, r=estebank
Changed the error message to more clearly explain what is allowed

This is in regard to #61634. I changed the language to make it more clear what is allowed.
2019-06-22 01:42:37 +02:00
Andrew
f4cd3c2054 adding in these files that didn't get added in previous commit 2019-06-22 00:18:15 +08:00
John Wrenn
ac98342e84 Implement arbitrary_enum_discriminant 2019-06-21 11:00:10 -04:00
Andrew
54acbd96f9 changed expected output in tests so it now passes with changed output 2019-06-21 22:12:07 +08:00
Felix S. Klock II
f483269625 Add test checking our behavior for assigning over a ConstIndex projection. 2019-06-21 13:08:15 +02:00
Felix S. Klock II
3b8ef01030 Add test that our handling of projections hasn't gone too far:
overwriting one field should not allow reborrow of an unrelated field.
2019-06-21 12:52:54 +02:00
Yuki Okushi
b4c73a297c Add test for issue-27697 2019-06-21 15:18:00 +09:00
Yuki Okushi
127edbac34 Add test for issue-54189 2019-06-21 00:19:11 +09:00