Commit graph

5600 commits

Author SHA1 Message Date
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
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
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
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
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
Mazdak Farrokhzad
2ead0072b6
Rollup merge of #61782 - Electron-libre:suggest_tuple_struct_syntax, r=estebank
suggest tuple struct syntax

refs #57242
2019-06-20 08:36:01 +02:00
bors
3c805ce183 Auto merge of #60341 - mtak-:macos-tlv-workaround, r=alexcrichton
macos tlv workaround

fixes: #60141

Includes:
* remove dead code: `requires_move_before_drop`. This hasn't been needed for a while now (oops I should have removed it in #57655)
* redox had a copy of `fast::Key` (not sure why?). That has been removed.
* Perform a `read_volatile` on OSX to reduce `tlv_get_addr` calls per `__getit` from (4-2 depending on context) to 1.

`tlv_get_addr` is relatively expensive (~1.5ns on my machine).

Previously, in contexts where `__getit` was inlined, 4 calls to `tlv_get_addr` were performed per lookup. For some reason when `__getit` is not inlined this is reduced to 2x - and performance improves to match.

After this PR, I have only ever seen 1x call to `tlv_get_addr` per `__getit`, and macos now benefits from situations where `__getit` is inlined.

I'm not sure if the `read_volatile(&&__KEY)` trick is working around an LLVM bug, or a rustc bug, or neither.

r? @alexcrichton
2019-06-20 02:36:49 +00:00
bors
7d10761349 Auto merge of #61947 - estebank:ice-ice-revolution, r=matthewjasper
Fix ICE involving mut references

Fix #61623, fix #61944, fix #61751.
2019-06-19 22:23:45 +00:00
Cedric
b72b1ac062 fix indentation 2019-06-19 19:47:52 +02:00
Mazdak Farrokhzad
7b3984b21b
Rollup merge of #61547 - petrochenkov:cfgen, r=Centril
Support `cfg` and `cfg_attr` on generic parameters

`cfg` attributes are supported in all other positions where attributes are accepted at all.

They were previously prohibited in https://github.com/rust-lang/rust/pull/51283 because they weren't implemented correctly before that and were simply ignored.
2019-06-19 17:34:36 +02:00
bors
e79b2a18a2 Auto merge of #61172 - matthewjasper:cleanup-implied-bounds-lint, r=varkor
Improve the explicit_outlives_requirements lint

* Don't use Strings to compare parameters
* Extend the lint to lifetime bounds
* Extend the lint to enums and unions
* Use the correct span for where clauses in tuple structs
* Try to early-out where possible
* Remove unnecessary bounds in rustc crates
2019-06-19 12:41:38 +00:00
bors
9cb052acfb Auto merge of #58351 - oli-obk:double_check_const_eval, r=RalfJung
Refactor interning to properly mark memory as mutable or immutable

r? @RalfJung

This implementation is incomplete out of multiple reasons

* [ ] add `-Zunleash_the_miri_inside_of_you` tests
* [ ] report an error if there's an `UnsafeCell` behind a reference in a constant
* [ ] make validity checks actually test whether the mutability of their allocations match what they see in the type
2019-06-19 09:43:58 +00:00
Cedric
70e52f8418 provide variant definition on tuple struct unknow field error 2019-06-19 11:09:17 +02:00
Cedric
c917ba325f adt hint pointing to adt span 2019-06-19 10:07:07 +02:00
Vadim Petrochenkov
0b58bb32f6 Support cfg and cfg_attr on generic parameters 2019-06-19 10:59:15 +03:00
Oliver Scherer
667f94cb24 Update ui test output 2019-06-19 09:52:36 +02:00
Oliver Scherer
104b108406 Add and update more tests 2019-06-19 09:52:35 +02:00
Oliver Scherer
4b6f3868b3 Make interning explicitly care about types and the mutability of memory 2019-06-19 09:52:35 +02:00
bors
a6cbf2d134 Auto merge of #61945 - Centril:rollup-xdqo2mn, r=Centril
Rollup of 11 pull requests

Successful merges:

 - #61505 (Only show methods that appear in `impl` blocks in the Implementors sections of trait doc pages)
 - #61701 (move stray run-pass const tests into const/ folder)
 - #61748 (Tweak transparent enums and unions diagnostic spans)
 - #61802 (Make MaybeUninit #[repr(transparent)])
 - #61839 (ci: Add a script for generating CPU usage graphs)
 - #61842 (Remove unnecessary lift calls)
 - #61843 (Turn down the myriad-closures test)
 - #61896 (rustc_typeck: correctly compute `Substs` for `Res::SelfCtor`.)
 - #61898 (syntax: Factor out common fields from `SyntaxExtension` variants)
 - #61938 (create an issue for miri even in status test-fail)
 - #61941 (Preserve generator and yield source for error messages)

Failed merges:

r? @ghost
2019-06-19 06:49:13 +00:00
Esteban Küber
3dd3c6dcd8 Fix ICE involving mut references 2019-06-18 18:39:08 -07:00
Mazdak Farrokhzad
fde341a4ef
Rollup merge of #61941 - cramertj:no-more-yield-errors, r=centril
Preserve generator and yield source for error messages

Previously, error messages after HIR lowering all referred
to generators and yield, regardless of whether the original
source was a generator or an async/await body. This change
tracks the kind of each generator and yield source in order
to provide appropriately tailored error messages.

Fixes #60615.
2019-06-19 01:52:13 +02:00
Mazdak Farrokhzad
dcd5b20177
Rollup merge of #61896 - eddyb:correct-self-ctor, r=petrochenkov
rustc_typeck: correctly compute `Substs` for `Res::SelfCtor`.

Fixes #61882.

r? @petrochenkov cc @varkor
2019-06-19 01:52:09 +02:00
Mazdak Farrokhzad
06d2a891c7
Rollup merge of #61748 - estebank:transparent-span, r=Centril
Tweak transparent enums and unions diagnostic spans
2019-06-19 01:52:01 +02:00
Taylor Cramer
d67db0042c Preserve generator and yield source for error messages
Previously, error messages after HIR lowering all referred
to generators and yield, regardless of whether the original
source was a generator or an async/await body. This change
tracks the kind of each generator and yield source in order
to provide appropriately tailored error messages.
2019-06-18 16:22:22 -07:00
Matthew Jasper
d5f80c8414 Improve the explicit_outlives_requirements lint
* Don't use Strings to compare parameters
* Extend the lint to lifetime bounds
* Extend the lint to enums and unions
* Use the correct span for where clauses in tuple structs
* Try to early-out where possible
2019-06-18 22:54:51 +01:00