Commit graph

15222 commits

Author SHA1 Message Date
Eduard-Mihai Burtescu
e8d01ea4c7 rustc: store type parameter defaults outside of ty::Generics. 2017-02-25 17:07:59 +02:00
Eduard-Mihai Burtescu
207c763060 Rollup merge of #40086 - danobi:move-compiler_tests, r=brson
Move COMPILER_TESTS.md out of the root directory

See #39896.

r? @brson
2017-02-25 14:13:43 +02:00
Eduard-Mihai Burtescu
ecae5bf785 Rollup merge of #40064 - arielb1:virtual-enum, r=nikomatsakis
trans: don't ICE when trying to create ADT trans-items

ADTs are translated in-place from rustc_trans::callee, so no trans-items
are needed.

This fix will be superseded by the shimmir branch, but I prefer not to
backport that to beta.

Fixes #39823.

Beta-nominating because regression.

r? @michaelwoerister
2017-02-25 14:13:41 +02:00
Eduard-Mihai Burtescu
393d80dfdd Rollup merge of #40038 - nikomatsakis:issue-39828, r=michaelwoerister
detect "bootstrap outputs" when serializing the dep-graph

Fixes #39828.

r? @michaelwoerister
2017-02-25 14:13:39 +02:00
Eduard-Mihai Burtescu
582d5d9793 Rollup merge of #40037 - froydnj:overflow-checks, r=alexcrichton
add `-C overflow-checks` option

In addition to defining and handling the new option, we also add a method on librustc::Session for determining the necessity of overflow checks.  This method provides a single point to sort out the three (!) different ways for turning on overflow checks: -C debug-assertions, -C overflow-checks, and -Z force-overflow-checks.

I was seeing a [run-pass/issue-28950.rs](b1363a73ed/src/test/run-pass/issue-28950.rs) failure on my machine with these patches, but I was also seeing the failure without the changes to the core compiler.  We'll see what travis says.

Fixes #33134.  r? @alexcrichton
2017-02-25 14:13:38 +02:00
Eduard-Mihai Burtescu
4f9d6d6c9f Rollup merge of #40035 - er-1:master, r=alexcrichton
Ignore ASM tests on powerpc

Part of #39015
2017-02-25 14:13:37 +02:00
Eduard-Mihai Burtescu
6ffc9e4a33 Rollup merge of #40031 - cynicaldevil:master, r=est31
Added test for inclusive_range_syntax in compile-fail test suite

Fixes #39059
r? @est31

Forgot to leave a comment on the issue, hopefully nobody else is working on this one!
2017-02-25 14:13:36 +02:00
Eduard-Mihai Burtescu
69e596744f Rollup merge of #40027 - cramertj:stabilize_static_recursion, r=nrc
Stabilize static_recursion

Fix #29719.
2017-02-25 14:13:35 +02:00
Eduard-Mihai Burtescu
c3075f3d96 Rollup merge of #40025 - est31:master, r=eddyb
Implement non-capturing closure to fn coercion

Implements non capturing closure coercion ([RFC 1558](https://github.com/rust-lang/rfcs/blob/master/text/1558-closure-to-fn-coercion.md)).

cc tracking issue #39817
2017-02-25 14:13:33 +02:00
Eduard-Mihai Burtescu
ebde617c7d Rollup merge of #40022 - wagenet:lib-defaults, r=alexcrichton
Better handling of lib defaults

r? @alexcrichton
2017-02-25 14:13:31 +02:00
Eduard-Mihai Burtescu
3ece892490 Rollup merge of #40020 - alexcrichton:fix-unwind-safe, r=sfackler
std: Relax UnwindSafe impl for Unique

Add the `?Sized` bound as we don't require the type to be sized.

Closes #40011
2017-02-25 14:13:31 +02:00
Eduard-Mihai Burtescu
5c0b4b3691 Rollup merge of #39995 - Aatch:vtable-ptr-metadata, r=arielb1
Set metadata for vtable-related loads

Give LLVM much more information about vtable pointers. Without the extra
information, LLVM has to be rather pessimistic about vtables, preventing
a number of obvious optimisations.

* Makes the vtable pointer argument noalias and readonly.
* Marks loads of the vtable pointer as nonnull.
* Marks load from the vtable with `!invariant.load` metadata.

Fixes #39992
2017-02-25 14:13:28 +02:00
Eduard-Mihai Burtescu
33c19129c3 Rollup merge of #39980 - arielb1:privately-uninhabited, r=nikomatsakis
check_match: don't treat privately uninhabited types as uninhabited

Fixes #38972, which is a regression in 1.16 from @canndrew's patchset.

r? @nikomatsakis

beta-nominating because regression.
2017-02-25 14:13:25 +02:00
Eduard-Mihai Burtescu
a6a5c32e0e Rollup merge of #39953 - keeperofdakeys:macro-error, r=jseyfried
Provide suggestions for unknown macros imported with `use`

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

r? @jseyfried
2017-02-25 14:13:23 +02:00
Eduard-Mihai Burtescu
16202862b2 Rollup merge of #39945 - petrochenkov:llvmtarg, r=alexcrichton
Use ARM instead of SystemZ for testing uninstalled targets

This needs some explanation.
`config.toml` has section `targets` listing backends that are built during LLVM build:
```
targets = "X86;ARM;AArch64;Mips;PowerPC;SystemZ;JSBackend;MSP430;Sparc;NVPTX"
```
It would be reasonable to expect that `targets = "X86"` would be enough for doing a local build in typical case (building on x86 and not working on some non-x86 platform-specific functionality).
However, for `x.py test` to pass successfully you have to add ARM and SystemZ to the target list as well (`targets = "X86;ARM;SystemZ"`), because two tests (`compile-fail/issue-37131.rs` and `run-make\target-without-atomics`) require these architectures to be enabled in LLVM.
This patch moves `compile-fail/issue-37131.rs` from SystemZ to ARM, so `targets = "X86;ARM"` becomes sufficient for running the full test suite without errors.
2017-02-25 14:13:21 +02:00
Eduard-Mihai Burtescu
aa7eb65123 Rollup merge of #39905 - estebank:useless-error, r=arielb1
Properly display note/expected details

Given a file

```rust
fn takes_cb(f: fn(i8)) {}

fn main() {
    fn callback(x: i32) {}
    takes_cb(callback)
}
```

output

```rust
error[E0308]: mismatched types
 --> file2.rs:5:22
  |
5 |             takes_cb(callback)
  |                      ^^^^^^^^ expected i8, found i32
  |
  = note: expected type `fn(i8)`
             found type `fn(i32) {main::callback}`
```

Fix #39343.
2017-02-25 14:13:19 +02:00
Eduard-Mihai Burtescu
ad9079bae4 Rollup merge of #39864 - cramertj:normalize-breaks, r=nikomatsakis
Normalize labeled and unlabeled breaks

Part of #39849.
2017-02-25 14:13:16 +02:00
Daniel Xu
07a80260a6 Move COMPILER_TESTS.md out of the root directory 2017-02-25 00:13:00 -06:00
bors
674af8c7f5 Auto merge of #39851 - alexcrichton:verify-unstable, r=brson
test: Verify all sysroot crates are unstable

As we continue to add more crates to the compiler and use them to implement
various features we want to be sure we're not accidentally expanding the API
surface area of the compiler! To that end this commit adds a new `run-make` test
which will attempt to `extern crate foo` all crates in the sysroot, verifying
that they're all unstable.

This commit discovered that the `std_shim` and `test_shim` crates were
accidentally stable and fixes the situation by deleting those shims. The shims
are no longer necessary due to changes in Cargo that have happened since they
were originally incepted.
2017-02-24 02:40:16 +00:00
est31
77f131da1a Review changes
* use more convenient mk_substs function
	* remove type annotations
	* use map_bound one level farther outside
	* style improvements
2017-02-24 00:32:21 +01:00
est31
21c38988f4 Two more tests 2017-02-23 22:34:17 +01:00
est31
f753a6ef02 Feature gate 2017-02-23 22:32:25 +01:00
est31
1b9b322883 Implement non-capturing closure to fn coercion 2017-02-23 22:32:22 +01:00
Ariel Ben-Yehuda
87e544bca5 use a more conservative inhabitableness rule
This is a [breaking-change] from 1.15, because this used to compile:

```Rust
enum Void {}
fn foo(x: &Void) {
    match x {}
}
```
2017-02-23 22:46:22 +02:00
Peter Wagenet
69c5359bf2 Add tests for lib defaults 2017-02-23 11:25:26 -08:00
Ariel Ben-Yehuda
4e2c993bd3 trans: don't ICE when trying to create ADT trans-items
ADTs are translated in-place from rustc_trans::callee, so no trans-items
are needed.

This fix will be superseded by the shimmir branch, but I prefer not to
backport that to beta.

Fixes #39823.
2017-02-23 20:03:18 +02:00
Josh Driver
da6dc5331f Add macro suggestions for macros imported with use
This commit searchs modules for macro suggestions.
It also removes imported macro_rules from macro_names,
and adds more corner case checks for which macros
should be suggested in specific contexts.
2017-02-23 20:28:35 +10:30
Austin Bonander
dac25e2b27 Don't assume plugin-whitelisted attributes are proc macro attributes
closes #40001
2017-02-22 15:43:03 -08:00
Nikhil Shagrithaya
b7b58ffdf4 Added test for inclusive_range_syntax in compile-fail test suite 2017-02-23 00:50:29 +05:30
Niko Matsakis
b576abd2cc detect "bootstrap outputs" when serializing the dep-graph
Fixes #39828.
2017-02-22 12:02:41 -05:00
Nathan Froyd
ffc6ddd51b add -C overflow-checks option
In addition to defining and handling the new option, we also add a
method on librustc::Session for determining the necessity of overflow
checks.  This method provides a single point to sort out the three (!)
different ways for turning on overflow checks: -C debug-assertions, -C
overflow-checks, and -Z force-overflow-checks.

Fixes #33134.
2017-02-22 10:08:57 -05:00
er-1
f557e71f44 Ignore ASM tests on powerpc
Part of #39015
2017-02-22 15:49:07 +01:00
Taylor Cramer
802a826a57 Stabilize static_recursion 2017-02-21 23:41:04 -08:00
Alex Crichton
347e1af66b std: Relax UnwindSafe impl for Unique
Add the `?Sized` bound as we don't require the type to be sized.

Closes #40011
2017-02-21 14:36:24 -08:00
bors
0f34b532af Auto merge of #39765 - GuillaumeGomez:file-not-found-for-module-error, r=jseyfried
File not found for module error

Fixes #39542.

r? @jonathandturner

Maybe you want to take a look @pnkfelix?
2017-02-21 21:08:11 +00:00
James Miller
d80cf80b16 Update codegen test with new attributes 2017-02-22 09:49:12 +13:00
Alex Crichton
40aaa65734 test: Verify all sysroot crates are unstable
As we continue to add more crates to the compiler and use them to implement
various features we want to be sure we're not accidentally expanding the API
surface area of the compiler! To that end this commit adds a new `run-make` test
which will attempt to `extern crate foo` all crates in the sysroot, verifying
that they're all unstable.

This commit discovered that the `std_shim` and `test_shim` crates were
accidentally stable and fixes the situation by deleting those shims. The shims
are no longer necessary due to changes in Cargo that have happened since they
were originally incepted.
2017-02-21 11:38:17 -08:00
Ariel Ben-Yehuda
a84eb95a7d check_match: don't treat privately uninhabited types as uninhabited
Fixes #38972.
2017-02-20 20:36:30 +02:00
Corey Farwell
8918ceb67a Rollup merge of #39913 - nikomatsakis:inference-error, r=pnkfelix
Report full details of inference errors

When the old suggestion machinery was removed by @brson in https://github.com/rust-lang/rust/pull/37057, it was not completely removed. There was a bit of code that had the job of going through errors and finding those for which suggestions were applicable, and it remained, causing us not to emit the full details of such errors.  This PR removes that.

I've also added various lifetime tests to the UI test suite (so you can also see the before/after there). I have some concrete thoughts on how to improve these cases and am planning on writing those up in some mentoring issues (@CengizIO has expressed interest in working on those changes, so I plan to work with him on it, at least to start).

cc @jonathandturner
2017-02-20 12:42:53 -05:00
Guillaume Gomez
0a45dd7e71 Add tests for newly added error codes 2017-02-20 17:47:44 +01:00
Niko Matsakis
75da4b663e fix run-pass test that required Copy impl 2017-02-19 15:33:47 -05:00
Vadim Petrochenkov
9322a38534 Use ARM instead of SystemZ for testing not installed targets 2017-02-19 02:54:51 +03:00
Vadim Petrochenkov
8c7d0077ab Avoid ICE in Self::Assoc in impl headers 2017-02-19 00:34:08 +03:00
Vadim Petrochenkov
bf95c29c98 Privatize fields of PathResolution
Ensure Def::Err has depth == 0
2017-02-19 00:34:08 +03:00
Taylor Cramer
56e519dd5c Add tests for control flow in while condition 2017-02-18 12:43:25 -08:00
Taylor Cramer
4d65622dcd Properly implement labeled breaks in while conditions 2017-02-18 12:28:44 -08:00
bors
8f2fc9db15 Auto merge of #39887 - nikomatsakis:issue-39292, r=arielb1
erase late bound regions in `get_vtable_methods()`

Higher-ranked object types can otherwise cause late-bound regions to
sneak into the substs, leading to the false conclusion that some method
is unreachable.

r? @arielb1, who wrote the heart of this patch anyhow

Fixes #39292
2017-02-18 12:17:06 +00:00
Taylor Cramer
5205e2f8b8 Normalize labeled and unlabeled breaks 2017-02-17 18:58:32 -08:00
Niko Matsakis
9e0171f7c8 remove vestiges of the old suggestion machinery 2017-02-17 14:47:39 -05:00
Esteban Küber
038a166e09 Properly display note/expected details 2017-02-17 11:25:47 -08:00