Commit Graph

70562 Commits

Author SHA1 Message Date
kennytm
6b5f430a6c
Revert "Auto merge of #46360 - kennytm:workaround-travis-8821, r=kennytm"
This reverts commit dc0e227745, reversing
changes made to 77ab3a1d5f.

[skip ci]
2017-11-29 21:03:53 +08:00
bors
0a2e9ade83 Auto merge of #46362 - kennytm:rollup, r=kennytm
Rollup of 10 pull requests

- Successful merges: #45969, #46077, #46219, #46287, #46293, #46322, #46323, #46330, #46354, #46356
- Failed merges:
2017-11-29 12:17:45 +00:00
kennytm
51bd916af4 Rollup merge of #46356 - daboross:patch-2, r=sfackler
Reject '2' as a binary digit in internals of b: number formatting

The `radix!` macro generates an implementation of the private trait `GenericRadix`, and the code replaced changes Binary's implementation to no longer accept '2' as a valid digit to print.

Granted, this code is literally only ever called from another method in this private trait, and that method has logic to never hand a '2' to the printing function. Even given this, the code's there, I thought it would be best to fix this for clarity of anyone reading it.
2017-11-29 18:37:54 +08:00
kennytm
9a93df9b58 Rollup merge of #46354 - Mark-Simulacrum:alt-try, r=alexcrichton
Deploy builds both with asserts enabled and asserts disabled to CI.

This also removes uploads to the 'try' bucket, and instead dumps
everything into the two rustc-builds and rustc-builds-alt buckets. This
makes lives easier, as there is only one location for a given "type" of
build, and since we have the git commit hash in the filenames, this is
fine; we won't run into uploads of the same commit.

cc @aidanhs -- this will break crater's logic for downloading `try#xxx` commits since the try bucket won't be uploaded into

r? @alexcrichton
2017-11-29 18:37:53 +08:00
kennytm
1e49d4a6cd Rollup merge of #46330 - SimonSapin:patch-6, r=kennytm
Update comment on alternate builds in .travis.yml

https://github.com/rust-lang/rust/pull/45810#issuecomment-347257640
2017-11-29 18:37:52 +08:00
kennytm
30f1853649 Rollup merge of #46323 - ia0:fix_mpsc_error_conv, r=kennytm
Fix since for mpsc_error_conversions

This is a followup of #45506.
2017-11-29 18:37:51 +08:00
kennytm
a19c13a698 Rollup merge of #46322 - gnzlbg:mmx, r=alexcrichton
white list MMX and MSA target features

r? @alexcrichton
2017-11-29 18:37:50 +08:00
kennytm
fc9abbd7b7 Rollup merge of #46293 - ollie27:atomic_bool_from, r=BurntSushi
impl From<bool> for AtomicBool

This seems like an obvious omission from #45610. ~~I've used the same feature name and version in the hope that this can be backported to beta so it's stabilized with the other impls. If it can't be I'll change it to `1.24.0`.~~
2017-11-29 18:37:50 +08:00
kennytm
0e78c29bea Rollup merge of #46287 - SimonSapin:stable-constness, r=aturon
Stabilize const-calling existing const-fns in std

Fixes #46038
2017-11-29 18:37:47 +08:00
kennytm
6006c0f35f Rollup merge of #46219 - rust-lang:frewsxcv-issue-45636, r=GuillaumeGomez
Improve documentation for slice swap/copy/clone operations.

Fixes #45636.

- Demonstrate how to use these operations with slices of differing
  lengths
- Demonstrate how to swap/copy/clone sub-slices of a slice using
  `split_at_mut`
2017-11-29 18:37:45 +08:00
kennytm
963ab91dd4 Rollup merge of #46077 - LukasKalbertodt:stabilize-ascii-ctype, r=alexcrichton
Stabilize some `ascii_ctype` methods

As discussed in #39658, this PR stabilizes those methods for `u8` and `char`. All inherent `ascii_ctype` for `[u8]` and `str` are removed as we prefer the more explicit version `s.chars().all(|c| c.is_ascii_())`.

This PR doesn't modify the `AsciiExt` trait. There, the `ascii_ctype` methods are still unstable. It is planned to remove those in the future (I think). I had to modify some code in `ascii.rs` to properly implement `AsciiExt` for all types.

Fixes #39658.
2017-11-29 18:37:44 +08:00
kennytm
0ec3aee569 Rollup merge of #45969 - ia0:mpsc_recv_deadline, r=alexcrichton
Add std::sync::mpsc::Receiver::recv_deadline()

Essentially renames recv_max_until to recv_deadline (mostly copying recv_timeout
documentation). This function is useful to avoid the often unnecessary call to
Instant::now in recv_timeout (e.g. when the user already has a deadline). A
concrete example would be something along those lines:

```rust
use std::sync::mpsc::Receiver;
use std::time::{Duration, Instant};

/// Reads a batch of elements
///
/// Returns as soon as `max_size` elements have been received or `timeout` expires.
fn recv_batch_timeout<T>(receiver: &Receiver<T>, timeout: Duration, max_size: usize) -> Vec<T> {
    recv_batch_deadline(receiver, Instant::now() + timeout, max_size)
}

/// Reads a batch of elements
///
/// Returns as soon as `max_size` elements have been received or `deadline` is reached.
fn recv_batch_deadline<T>(receiver: &Receiver<T>, deadline: Instant, max_size: usize) -> Vec<T> {
    let mut result = Vec::new();
    while let Ok(x) = receiver.recv_deadline(deadline) {
        result.push(x);
        if result.len() == max_size {
            break;
        }
    }
    result
}
```
2017-11-29 18:37:43 +08:00
bors
dc0e227745 Auto merge of #46360 - kennytm:workaround-travis-8821, r=kennytm
Disable all macOS dist images to workaround travis-ci/travis-ci#8821

See: travis-ci/travis-ci#8821

Currently the [Travis status](https://www.traviscistatus.com/) is all green, I don't know how long it takes Travis to notice and fix it, so I'm merging this in immediately to keep the queue running today.

cc @rust-lang/infra
2017-11-29 09:44:04 +00:00
kennytm
666c24136b
Disable all macOS dist images to workaround travis-ci/travis-ci#8821
[skip ci]
2017-11-29 17:39:36 +08:00
Nick Cameron
1cec22e157 Update Rustfmt again 2017-11-29 20:34:06 +13:00
Nick Cameron
02c89f703d Rebased Cargo.lock 2017-11-29 19:17:20 +13:00
Nick Cameron
500b791b30 Update Cargo
Pulls in https://github.com/rust-lang/cargo/pull/4762 fixing a broken test which prevented the RLS update
2017-11-29 19:15:54 +13:00
Nick Cameron
1b50f68135 Update RLS and Rustfmt 2017-11-29 19:15:46 +13:00
David Ross
2c98378ace
Reject '2' as a binary digit in internals of 'b' formatting
I don't believe the previous code `0 ... 2` would run into any real problems, but it seems confusing to read, given that '2' is never a valid binary digit.

As far as I can tell this code is only ever called from within another private method in the trait which has logic to never hand it '2' anyways. I thought we could change this for clarity anyways.
2017-11-28 21:35:18 -08:00
Jeffrey Seyfried
dfa6c25afd Fix hygiene bug. 2017-11-28 18:59:12 -08:00
Mark Simulacrum
2485afa123 Deploy builds both with asserts enabled and asserts disabled to CI.
This also removes uploads to the 'try' bucket, and instead dumps
everything into the two rustc-builds and rustc-builds-alt buckets. This
makes lives easier, as there is only one location for a given "type" of
build, and since we have the git commit hash in the filenames, this is
fine; we won't run into uploads of the same commit.
2017-11-28 19:55:19 -07:00
bors
77ab3a1d5f Auto merge of #46207 - kennytm:kill-grep, r=alexcrichton
Replace most call to grep in run-make by a script that cat the input.

Introduced a new `src/etc/cat-and-grep.sh` script (called in run-make as `$(CGREP)`), which prints the input and do a grep simultaneously. This is mainly used to debug spurious failures in run-make, such as the spurious error in #45810, as well as real errors such as #46126.

(cc #40713)

Some `grep` still remains, mainly the `grep -c` calls that count the number of matches and print the result to stdout.
2017-11-28 23:23:03 +00:00
Tamir Duberstein
94d02b896c
*: strip calls to cc::Build::compile
The documentation states: "The name output should be the name of the
library." and this is already done in more recently-added callers.
2017-11-28 18:15:30 -05:00
Tamir Duberstein
9067d9735a
rustc_llvm: use cc::Build::define 2017-11-28 18:15:30 -05:00
Tamir Duberstein
658ea389fd
rustc_llvm: remove stale references
...that were removed in 77c3bfa742.
2017-11-28 18:15:28 -05:00
Julian Kulesh
6506f9c253 Add case insensitive comparison, besides Levenstein 2017-11-29 00:02:09 +03:00
bors
73bca2b9fa Auto merge of #46094 - dtolnay:is_null, r=alexcrichton
Remove `T: Sized` on `ptr::is_null()`

Originally from #44932 -- this is purely a revert of the last commit of that PR, which was removing some changes from the previous commits in the PR. So a revert of a revert means this is code written by @cuviper!

@mikeyhew makes a compelling case in https://github.com/rust-lang/rfcs/issues/433#issuecomment-345495505 for why this is the right way to implement `is_null` for trait objects. And the behavior for slices makes sense to me as well.

```diff
  impl<T: ?Sized> *const T {
-     pub fn is_null(self) -> bool where T: Sized;
+     pub fn is_null(self) -> bool;
  }

  impl<T: ?Sized> *mut T {
-     pub fn is_null(self) -> bool where T: Sized;
+     pub fn is_null(self) -> bool;
  }
2017-11-28 20:40:51 +00:00
Julien Cretin
8e025d8009 Fix doc test of previous commit 2017-11-28 21:22:30 +01:00
Esteban Küber
677381a0c1 On type mismatch error highlight & when type matches
When the only difference between the two types in a type error is that
one is a reference to the other type (`T` vs `&T`) or both are
references differing only in their mutability (`&T` vs `&mut T`), don't
highlight the type (`T`).
2017-11-28 11:25:40 -08:00
bors
71340ca4e1 Auto merge of #46291 - alexcrichton:wasm-tests, r=kennytm
ci: Start running wasm32 tests on Travis

This commit allocates a builder to running wasm32 tests on Travis. Not all test
suites pass right now so this is starting out with just the run-pass and the
libcore test suites. This'll hopefully give us a pretty broad set of coverage
for integration in rustc itself as well as a somewhat broad coverage of the llvm
backend itself through integration/unit tests.
2017-11-28 17:58:58 +00:00
Alex Crichton
73970bf6f2 ci: Start running wasm32 tests on Travis
This commit allocates a builder to running wasm32 tests on Travis. Not all test
suites pass right now so this is starting out with just the run-pass and the
libcore test suites. This'll hopefully give us a pretty broad set of coverage
for integration in rustc itself as well as a somewhat broad coverage of the llvm
backend itself through integration/unit tests.
2017-11-28 09:27:35 -08:00
kennytm
918158debb
Disable the cdylib-fewer-symbols test for all Windows (test was broken). 2017-11-28 23:38:04 +08:00
kennytm
ab788a2ee1
Replace most call to grep in run-make by a script that cat the input.
Introduced a new src/etc/cat-and-grep.sh script (called in run-make as
$(CGREP)), which prints the input and do a grep simultaneously. This is
mainly used to debug spurious failures in run-make, such as the sanitizer
error in #45810, as well as real errors such as #46126.
2017-11-28 23:36:12 +08:00
Basile Desloges
1cd9d74a2d mir-borrowck: Update tests 2017-11-28 16:19:44 +01:00
bors
5a59704525 Auto merge of #46329 - arielb1:incoherent, r=eddyb
Revert "fix treatment of local types in "remote coherence" mode"

That commit had accidentally snuck in into #44884 and it causes regressions. Revert it.

This reverts commit c48650ec25.

@bors p=10 - fixes breakage in nightly
r? @eddyb
2017-11-28 15:12:58 +00:00
Julien Cretin
43323b3194 Fix since for mpsc_error_conversions 2017-11-28 15:58:36 +01:00
Basile Desloges
34f56c44a9 mir-borrowck: Add permission check for WriteKind::Mutate 2017-11-28 15:07:51 +01:00
Simon Sapin
a6d1895404
Update comment on alternate builds in .travis.yml
https://github.com/rust-lang/rust/pull/45810#issuecomment-347257640
2017-11-28 14:26:59 +01:00
Ariel Ben-Yehuda
bef4fe98b1 Revert "fix treatment of local types in "remote coherence" mode"
That commit had accidentally snuck in into #44884. Revert it.

This reverts commit c48650ec25.
2017-11-28 14:54:01 +02:00
Basile Desloges
503d25cbfd mir-borrowck: describe_lvalue() can fail if a local doesn't have a name 2017-11-28 13:44:09 +01:00
Michael Woerister
3bb25d6bfb incr.comp.: Add some missing DepNode [input] annotations. 2017-11-28 13:03:39 +01:00
Michael Woerister
687e099b44 incr.comp.: Make a bunch of query results encodable. 2017-11-28 13:03:39 +01:00
Michael Woerister
8fbc91cfe1 incr.comp.: Make MIR encoding fit for incr.comp. caching. 2017-11-28 12:44:45 +01:00
bors
3bde5e78ae Auto merge of #46175 - GuillaumeGomez:fix-global-search, r=QuietMisdreavus
Fix global search

Fixes #46021.

r? @QuietMisdreavus
2017-11-28 10:41:47 +00:00
gnzlbg
32a36d8f6e white list MMX and MSA target features 2017-11-28 10:28:15 +01:00
bors
436ac8928a Auto merge of #46123 - Gankro:c-repr, r=eddyb
Implement the special repr(C)-non-clike-enum layout

This is the second half of https://github.com/rust-lang/rfcs/pull/2195

which specifies that

```rust
#[repr(C, u8)]
#[derive(Copy, Clone, Eq, PartialEq, Debug)]
enum MyEnum {
    A(u32),                 // Single primitive value
    B { x: u8, y: i16 },    // Composite, and the offset of `y` depends on tag being internal
    C,                      // Empty
    D(Option<u32>),         // Contains an enum
    E(Duration),            // Contains a struct
}
```

Has the same layout as

```rust
#[repr(C)]
struct MyEnumRepr {
    tag: MyEnumTag,
    payload: MyEnumPayload,
}

#[repr(C)]
#[allow(non_snake_case)]
union MyEnumPayload {
    A: MyEnumVariantA,
    B: MyEnumVariantB,
    D: MyEnumVariantD,
    E: MyEnumVariantE,
}

#[repr(u8)] #[derive(Copy, Clone)] enum MyEnumTag { A, B, C, D, E }
#[repr(C)] #[derive(Copy, Clone)] struct MyEnumVariantA(u32);
#[repr(C)] #[derive(Copy, Clone)] struct MyEnumVariantB {x: u8, y: i16 }
#[repr(C)] #[derive(Copy, Clone)] struct MyEnumVariantD(Option<u32>);
#[repr(C)] #[derive(Copy, Clone)] struct MyEnumVariantE(Duration);

```
2017-11-28 08:04:58 +00:00
Lukas Kalbertodt
c5aad96739 Change since attribute from ctype methods from 1.23 to 1.24
The changes didn't land in time for 1.23 and stabilizations won't
be backported to beta.
2017-11-28 08:50:40 +01:00
Alexis Beingessner
0e63d2727c Fix and improve test for enum repr sizes 2017-11-28 00:54:16 -05:00
bors
7745a7a817 Auto merge of #46142 - eddyb:even-mirer-2, r=nikomatsakis
MIR: split Operand::Consume into Copy and Move.

By encoding the choice of leaving the source untouched (`Copy`) and invalidating it (`Move`) in MIR, we can express moves of copyable values and have MIR borrow-checking enforce them, *including* ownership transfer of stack locals in calls  (when the ABI passes by indirection).

Optimizations could turn a "last-use" `Copy` into a `Move`, and the MIR borrow-checker, at least within the confines of safe code, could even do this when the underlying lvalue was borrowed.
(However, that last part would be the first time lifetime inference affects code generation, AFAIK).

Furthermore, as `Move`s invalidate borrows as well, for any local that is initialized only once, we can ignore borrows that happened before a `Move` and safely reuse/replace its memory storage.
This will allow us to perform NRVO in the presence of short-lived borrows, unlike LLVM (currently), and even compute optimal `StorageLive...StorageDead` ranges instead of discarding them.
2017-11-28 05:38:19 +00:00
Eduard-Mihai Burtescu
919ed409b0 tests: update to include move annotations in MIR. 2017-11-28 04:18:32 +02:00