]> git.lizzy.rs Git - rust.git/log
rust.git
6 years agoRollup merge of #47298 - cramertj:path-as-modrs, r=nikomatsakis
kennytm [Fri, 12 Jan 2018 18:26:30 +0000 (02:26 +0800)]
Rollup merge of #47298 - cramertj:path-as-modrs, r=nikomatsakis

Treat #[path] files as mod.rs files

Fixes https://github.com/rust-lang/rust/issues/46936, cc @briansmith, @SergioBenitez, @nikomatsakis.

This (insta-stable) change treats files included via `#[path = "bla.rs"] mod foo;` as though they were `mod.rs` files. Namely, it allows them to include `mod` statements and looks for the child modules in sibling directories, rather than in relative `modname/childmodule.rs` files as happens for non-`mod.rs` files.

This change makes the `non_modrs_mods` feature backwards compatible with the existing usage in https://github.com/briansmith/ring, several versions of which are currently broken in beta. If we decide to merge, this change should be backported to beta.

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

r? @jseyfried

6 years agoRollup merge of #47289 - etaoins:skip-linker-output-non-utf8-test-on-apple, r=kennytm
kennytm [Fri, 12 Jan 2018 18:26:29 +0000 (02:26 +0800)]
Rollup merge of #47289 - etaoins:skip-linker-output-non-utf8-test-on-apple, r=kennytm

Skip linker-output-non-utf8 test on Apple

This test fails on APFS filesystems with the following error:

```shell
mkdir: /Users/ryan/Code/rust/build/x86_64-apple-darwin/test/run-make/linker-output-non-utf8.stage2-x86_64-apple-darwin/zzz�: Illegal byte sequence
```

The mkdir does succeed on an HFS+ volume mounted on the same system:
```shell
$ mkdir zzz$$'\xff'
$ ls
zzz47432\xff
```

This is due to APFS now requiring that all paths are valid UTF-8. As APFS will be the default filesystem for all new Darwin-based systems the most straightforward fix is to skip this test on Darwin as well as Windows.

6 years agoRollup merge of #47288 - cuviper:jobserver-pipe2, r=alexcrichton
kennytm [Fri, 12 Jan 2018 18:26:28 +0000 (02:26 +0800)]
Rollup merge of #47288 - cuviper:jobserver-pipe2, r=alexcrichton

Update jobserver to 0.1.9

Fix for `ENOSYS` when calling `pipe2`, alexcrichton/jobserver-rs#5.

r? @alexcrichton

6 years agoRollup merge of #47283 - malbarbo:musl-1.1.18, r=alexcrichton
kennytm [Fri, 12 Jan 2018 18:26:27 +0000 (02:26 +0800)]
Rollup merge of #47283 - malbarbo:musl-1.1.18, r=alexcrichton

Update musl to 1.1.18

According to http://www.musl-libc.org/download.html:

This release corrects regressions in glob() and armv4t build failure
introduced in the previous release, and includes an important bug fix
for posix_spawnp in the presence of a large PATH environment variable.

6 years agoRollup merge of #47282 - malbarbo:i586-musl, r=alexcrichton
kennytm [Fri, 12 Jan 2018 18:26:26 +0000 (02:26 +0800)]
Rollup merge of #47282 - malbarbo:i586-musl, r=alexcrichton

Add i586-unknown-linux-musl target

6 years agoRollup merge of #47185 - ritiek:ui-test-failed-output, r=nikomatsakis
kennytm [Fri, 12 Jan 2018 18:26:25 +0000 (02:26 +0800)]
Rollup merge of #47185 - ritiek:ui-test-failed-output, r=nikomatsakis

Show only stderr diff when a ui test fails

Addresses #46826.

This PR will print the normalized output if expected text is empty otherwise it will just print the diff.

Should we also show a few (actual == expected) lines above & below when displaying the diff? What about indicating line numbers as well so one can quickly check mismatch lines in .stderr file?

6 years agoRollup merge of #47081 - pietroalbini:fix-nested-tree-dump, r=nrc
kennytm [Fri, 12 Jan 2018 18:26:24 +0000 (02:26 +0800)]
Rollup merge of #47081 - pietroalbini:fix-nested-tree-dump, r=nrc

Fix nested imports not included in the save_analysis output

This PR fixes #46823.

The bug was caused by the old access level checking code, which checked against the root UseTree even for nested trees. The problem with that is, for nested trees the root is lowered as an empty `ListStem`, which is not reachable by definition. The new code computes the access level with each tree's own ID, and with the root tree's visibility.

I tested this manually and it works, but I'm not really satisfied with that. I looked at the existing tests though, and no one checked for the save_analysis output as far as I can see. How should I proceed with that? I think having a test about this would be really nice.

6 years agoRollup merge of #47069 - Kagamihime:master, r=nrc
kennytm [Fri, 12 Jan 2018 18:26:23 +0000 (02:26 +0800)]
Rollup merge of #47069 - Kagamihime:master, r=nrc

rustfmt libarena/lib.rs

Note: it's my very first pull request. I'm trying to do something very simple to see how it works here, even if it's a tiny change or maybe it's not correct (sorry if it is the case).

r? @nrc

6 years agoRollup merge of #46985 - Diggsey:path-component-asref, r=alexcrichton
kennytm [Fri, 12 Jan 2018 18:26:22 +0000 (02:26 +0800)]
Rollup merge of #46985 - Diggsey:path-component-asref, r=alexcrichton

Implement AsRef<Path> for Component

Fixes #41866

6 years agoAuto merge of #46551 - jseyfried:improve_legacy_modern_macro_interaction, r=nrc
bors [Fri, 12 Jan 2018 10:00:09 +0000 (10:00 +0000)]
Auto merge of #46551 - jseyfried:improve_legacy_modern_macro_interaction, r=nrc

macros: improve 1.0/2.0 interaction

This PR supports using unhygienic macros from hygienic macros without breaking the latter's hygiene.
```rust
// crate A:
#[macro_export]
macro_rules! m1 { () => {
    f(); // unhygienic: this macro needs `f` in its environment
    fn g() {} // (1) unhygienic: `g` is usable outside the macro definition
} }

// crate B:
#![feature(decl_macro)]
extern crate A;
use A::m1;

macro m2() {
    fn f() {} // (2)
    m1!(); // After this PR, `f()` in the expansion resolves to (2), not (3)
    g(); // After this PR, this resolves to `fn g() {}` from the above expansion.
         // Today, it is a resolution error.
}

fn test() {
    fn f() {} // (3)
    m2!(); // Today, `m2!()` can see (3) even though it should be hygienic.
    fn g() {} // Today, this conflicts with `fn g() {}` from the expansion, even though it should be hygienic.
}
```

Once this PR lands, you can make an existing unhygienic macro hygienic by wrapping it in a hygienic macro. There is an [example](https://github.com/rust-lang/rust/pull/46551/commits/b766fa887dc0e4b923a38751fe4d570e35a75710) of this in the tests.

r? @nrc

6 years agoAdd i586-unknown-linux-musl target
Marco A L Barbosa [Thu, 4 Jan 2018 16:55:04 +0000 (14:55 -0200)]
Add i586-unknown-linux-musl target

6 years agoAuto merge of #47180 - varkor:range-iterator-overrides, r=alexcrichton
bors [Thu, 11 Jan 2018 12:22:54 +0000 (12:22 +0000)]
Auto merge of #47180 - varkor:range-iterator-overrides, r=alexcrichton

Add iterator method specialisations to Range*

Add specialised implementations of `max` for `Range`, and `last`, `min` and `max` for `RangeInclusive`, all of which lead to significant advantages in the generated assembly on x86.

Note that adding specialisations of `min` and `last` for `Range` led to no benefit, and adding `sum` for `Range` and `RangeInclusive` led to type inference issues (though this is possibly still worthwhile considering the performance gain).

This addresses some of the concerns in #39975.

6 years agoAuto merge of #47087 - Zoxc:incr_no_in_ignore, r=michaelwoerister
bors [Thu, 11 Jan 2018 03:24:16 +0000 (03:24 +0000)]
Auto merge of #47087 - Zoxc:incr_no_in_ignore, r=michaelwoerister

Replace uses of DepGraph.in_ignore with DepGraph.with_ignore

I currently plan to track tasks in thread local storage. Ignoring things in a closure ensures that the ignore tasks do not overlap the beginning or end of any other task. The TLS API will also use a closure to change a TLS value, so having the ignore task be a closure also helps there.

It also adds `assert_ignored` which is used before a `TyCtxt` is created. Instead of adding a new ignore task this simply ensures that we are in a context where reads are ignored.

r? @michaelwoerister

6 years agoAuto merge of #47243 - wesleywiser:incr_fingerprint_encoding, r=michaelwoerister
bors [Thu, 11 Jan 2018 00:23:23 +0000 (00:23 +0000)]
Auto merge of #47243 - wesleywiser:incr_fingerprint_encoding, r=michaelwoerister

[incremental] Specialize encoding and decoding of Fingerprints

This saves the storage space used by about 32 bits per `Fingerprint`.
On average, this reduces the size of the `/target/{mode}/incremental`
folder by roughly 5% [Full details here](https://gist.github.com/wesleywiser/264076314794fbd6a4c110d7c1adc43e).

Fixes #45875

r? @michaelwoerister

6 years agoAuto merge of #47167 - ivanbakel:builtin_indexing, r=nikomatsakis
bors [Wed, 10 Jan 2018 12:29:05 +0000 (12:29 +0000)]
Auto merge of #47167 - ivanbakel:builtin_indexing, r=nikomatsakis

Fix built-in indexing not being used where index type wasn't "obviously" usize

Fixes #33903
Fixes #46095

This PR was made possible thanks to the generous help of @eddyb

Following the example of binary operators, builtin checking for indexing has been moved from the typecheck stage to a writeback stage, after type constraints have been resolved.

6 years agoAuto merge of #46830 - Diggsey:cursor-vec-mut, r=alexcrichton
bors [Wed, 10 Jan 2018 06:33:31 +0000 (06:33 +0000)]
Auto merge of #46830 - Diggsey:cursor-vec-mut, r=alexcrichton

Implement `Write` for `Cursor<&mut Vec<T>>`

Fixes #30132

r? @dtolnay (I'm just going through `feature-accepted` issues I swear 😛)

6 years agoAuto merge of #47308 - frewsxcv:rollup, r=frewsxcv
bors [Wed, 10 Jan 2018 03:52:19 +0000 (03:52 +0000)]
Auto merge of #47308 - frewsxcv:rollup, r=frewsxcv

Rollup of 5 pull requests

- Successful merges: #46762, #46777, #47262, #47285, #47301
- Failed merges:

6 years agoRollup merge of #47301 - GuillaumeGomez:fix-error-index-display, r=QuietMisdreavus
Corey Farwell [Wed, 10 Jan 2018 03:28:26 +0000 (22:28 -0500)]
Rollup merge of #47301 - GuillaumeGomez:fix-error-index-display, r=QuietMisdreavus

Fix error index display

Fixes #47284.

r? @QuietMisdreavus

6 years agoRollup merge of #47285 - AndrewBrinker:master, r=kennytm
Corey Farwell [Wed, 10 Jan 2018 03:28:25 +0000 (22:28 -0500)]
Rollup merge of #47285 - AndrewBrinker:master, r=kennytm

Fixed a typo in the compile_error docs

Noticed a typo and fixed it.

6 years agoRollup merge of #47262 - estebank:issue-45562, r=petrochenkov
Corey Farwell [Wed, 10 Jan 2018 03:28:24 +0000 (22:28 -0500)]
Rollup merge of #47262 - estebank:issue-45562, r=petrochenkov

Account for `pub` in `const` -> `static` suggestion

Fix #45562.

6 years agoRollup merge of #46777 - frewsxcv:frewsxcv-rotate, r=alexcrichton
Corey Farwell [Wed, 10 Jan 2018 03:28:23 +0000 (22:28 -0500)]
Rollup merge of #46777 - frewsxcv:frewsxcv-rotate, r=alexcrichton

Deprecate [T]::rotate in favor of [T]::rotate_{left,right}.

Background
==========

Slices currently have an **unstable** [`rotate`] method which rotates
elements in the slice to the _left_ N positions. [Here][tracking] is the
tracking issue for this unstable feature.

```rust
let mut a = ['a', 'b' ,'c', 'd', 'e', 'f'];
a.rotate(2);
assert_eq!(a, ['c', 'd', 'e', 'f', 'a', 'b']);
```

Proposal
========

Deprecate the [`rotate`] method and introduce `rotate_left` and
`rotate_right` methods.

```rust
let mut a = ['a', 'b' ,'c', 'd', 'e', 'f'];
a.rotate_left(2);
assert_eq!(a, ['c', 'd', 'e', 'f', 'a', 'b']);
```

```rust
let mut a = ['a', 'b' ,'c', 'd', 'e', 'f'];
a.rotate_right(2);
assert_eq!(a, ['e', 'f', 'a', 'b', 'c', 'd']);
```

Justification
=============

I used this method today for my first time and (probably because I’m a
naive westerner who reads LTR) was surprised when the docs mentioned that
elements get rotated in a left-ward direction. I was in a situation
where I needed to shift elements in a right-ward direction and had to
context switch from the main problem I was working on and think how much
to rotate left in order to accomplish the right-ward rotation I needed.

Ruby’s `Array.rotate` shifts left-ward, Python’s `deque.rotate` shifts
right-ward. Both of their implementations allow passing negative numbers
to shift in the opposite direction respectively. The current `rotate`
implementation takes an unsigned integer argument which doesn't allow
the negative number behavior.

Introducing `rotate_left` and `rotate_right` would:

- remove ambiguity about direction (alleviating need to read docs 😉)
- make it easier for people who need to rotate right

[`rotate`]: https://doc.rust-lang.org/std/primitive.slice.html#method.rotate
[tracking]: https://github.com/rust-lang/rust/issues/41891

6 years agoRollup merge of #46762 - est31:master, r=alexcrichton
Corey Farwell [Wed, 10 Jan 2018 03:28:22 +0000 (22:28 -0500)]
Rollup merge of #46762 - est31:master, r=alexcrichton

Stabilize the panic_col feature

I've added the panic_col feature in PR #42938.
Now it's time to stabilize it!
Closes #42939.

6 years agoWe have Rust 1.25 now
est31 [Wed, 10 Jan 2018 02:24:24 +0000 (03:24 +0100)]
We have Rust 1.25 now

6 years agoStabilize the panic_col feature
est31 [Sat, 16 Dec 2017 07:54:52 +0000 (08:54 +0100)]
Stabilize the panic_col feature

I've added the panic_col feature in PR #42938.
Now it's time to stabilize it!
Closes #42939.

6 years ago[incremental] Specialize encoding and decoding of Fingerprints
Wesley Wiser [Sat, 23 Dec 2017 03:41:09 +0000 (22:41 -0500)]
[incremental] Specialize encoding and decoding of Fingerprints

This saves the storage space used by about 32 bits per `Fingerprint`.
On average, this reduces the size of the `/target/{mode}/incremental`
folder by roughly 5%.

Fixes #45875

6 years agoAuto merge of #47248 - EdSchouten:cloudabi-liblibc, r=kennytm
bors [Wed, 10 Jan 2018 00:59:00 +0000 (00:59 +0000)]
Auto merge of #47248 - EdSchouten:cloudabi-liblibc, r=kennytm

Upgrade liblibc to upstream version 0.2.35.

This version of liblibc is a prerequisite for getting libstd to build on
CloudABI.

6 years agoFix typo
Ryan Cumming [Tue, 9 Jan 2018 22:15:51 +0000 (09:15 +1100)]
Fix typo

6 years agoRestore the original Window comment
Ryan Cumming [Tue, 9 Jan 2018 22:10:59 +0000 (09:10 +1100)]
Restore the original Window comment

The Windows situation is more complicated than I realised

6 years agoFix error index display
Guillaume Gomez [Tue, 9 Jan 2018 21:26:26 +0000 (22:26 +0100)]
Fix error index display

6 years agoAdd `min` and `last` specialisations for `Range`
varkor [Mon, 8 Jan 2018 18:46:40 +0000 (18:46 +0000)]
Add `min` and `last` specialisations for `Range`

6 years agoTreat #[path] files as mod.rs files
Taylor Cramer [Tue, 9 Jan 2018 18:54:13 +0000 (10:54 -0800)]
Treat #[path] files as mod.rs files

6 years agoReplace uses of DepGraph.in_ignore with DepGraph.with_ignore
John Kåre Alsaker [Thu, 28 Dec 2017 05:05:45 +0000 (06:05 +0100)]
Replace uses of DepGraph.in_ignore with DepGraph.with_ignore

6 years agoAuto merge of #47269 - michaelwoerister:mangled-cgu-names, r=alexcrichton
bors [Tue, 9 Jan 2018 16:04:21 +0000 (16:04 +0000)]
Auto merge of #47269 - michaelwoerister:mangled-cgu-names, r=alexcrichton

Shorten names of some compiler generated artifacts.

This PR makes the compiler mangle codegen unit names by default. The name of every codegen unit name will now be a random string of 16 characters. It also makes the file extensions of some intermediate compiler products shorter. Hopefully, these changes will reduce the pressure on tools with path length restrictions like buildbot. The change should also solve problems with case-insensitive file system.

cc #47186 and #47222

r? @alexcrichton

6 years agoSkip linker-output-non-utf8 test on Apple
Ryan Cumming [Tue, 9 Jan 2018 08:54:13 +0000 (19:54 +1100)]
Skip linker-output-non-utf8 test on Apple

This test fails on APFS filesystems with the following error:

mkdir: /Users/ryan/Code/rust/build/x86_64-apple-darwin/test/run-make/linker-output-non-utf8.stage2-x86_64-apple-darwin/zzz�: Illegal byte sequence

This is due to APFS now requiring that all paths are valid UTF-8. As
APFS will be the default filesystem for all new Darwin-based systems the
most straightforward fix is to skip this test on Darwin as well as
Windows.

6 years agoAuto merge of #47231 - ereslibre:clean-emitted-diagnostics, r=nrc
bors [Tue, 9 Jan 2018 07:12:08 +0000 (07:12 +0000)]
Auto merge of #47231 - ereslibre:clean-emitted-diagnostics, r=nrc

Clean emitted diagnostics when `reset_err_count` is called.

When external tools like `rustfmt` calls to `reset_err_count` for handler
reusing, it will set the error count on the handler to 0, but since
https://github.com/rust-lang/rust/pull/47146 the handler will contain
status that will prevent the error count to be bumped if this handler is
reused.

This caused `rustfmt` idempotency tests to fail:
https://github.com/rust-lang-nursery/rustfmt/issues/2338

Fixes: https://github.com/rust-lang-nursery/rustfmt/issues/2338
6 years agoUpdate jobserver to 0.1.9
Josh Stone [Tue, 9 Jan 2018 06:00:45 +0000 (22:00 -0800)]
Update jobserver to 0.1.9

Fix for `ENOSYS` when calling `pipe2`, alexcrichton/jobserver-rs#5.

r? @alexcrichton

6 years agoAuto merge of #47276 - kennytm:rollup, r=kennytm
bors [Tue, 9 Jan 2018 04:22:50 +0000 (04:22 +0000)]
Auto merge of #47276 - kennytm:rollup, r=kennytm

Rollup of 10 pull requests

- Successful merges: #47210, #47233, #47246, #47254, #47256, #47258, #47259, #47263, #47270, #47272
- Failed merges: #47248

6 years agoFixed a typo in the compile_error docs
Andrew Brinker [Tue, 9 Jan 2018 00:35:06 +0000 (16:35 -0800)]
Fixed a typo in the compile_error docs

6 years agoUpdate musl to 1.1.18
Marco A L Barbosa [Mon, 8 Jan 2018 23:26:47 +0000 (21:26 -0200)]
Update musl to 1.1.18

According to http://www.musl-libc.org/download.html:

This release corrects regressions in glob() and armv4t build failure
introduced in the previous release, and includes an important bug fix
for posix_spawnp in the presence of a large PATH environment variable.

6 years agoRollup merge of #47272 - GuillaumeGomez:missing-links, r=QuietMisdreavus
kennytm [Mon, 8 Jan 2018 17:58:55 +0000 (01:58 +0800)]
Rollup merge of #47272 - GuillaumeGomez:missing-links, r=QuietMisdreavus

Add missing links

r? @QuietMisdreavus

(please wait for CI, I have a few doubts about the `Write` trait links...)

6 years agoRollup merge of #47270 - Zoxc:gen-layout-fix, r=eddyb
kennytm [Mon, 8 Jan 2018 17:58:54 +0000 (01:58 +0800)]
Rollup merge of #47270 - Zoxc:gen-layout-fix, r=eddyb

Don't look for niches inside generator types. Fixes #47253

r? @eddyb

6 years agoRollup merge of #47263 - ollie27:rustdoc_private_macro_import, r=GuillaumeGomez
kennytm [Mon, 8 Jan 2018 17:58:53 +0000 (01:58 +0800)]
Rollup merge of #47263 - ollie27:rustdoc_private_macro_import, r=GuillaumeGomez

rustdoc: Don't import macros from private imports

Fixes #47038

6 years agoRollup merge of #47259 - sfackler:map-remove-entry, r=dtolnay
kennytm [Mon, 8 Jan 2018 17:58:52 +0000 (01:58 +0800)]
Rollup merge of #47259 - sfackler:map-remove-entry, r=dtolnay

Add HashMap::remove_entry

Implements #46344

r? @dtolnay

6 years agoRollup merge of #47258 - rkruppe:struct-assert, r=eddyb
kennytm [Mon, 8 Jan 2018 17:58:51 +0000 (01:58 +0800)]
Rollup merge of #47258 - rkruppe:struct-assert, r=eddyb

rustc::ty: Rename struct_variant to non_enum_variant

r? @eddyb

6 years agoRollup merge of #47256 - rkruppe:misc-cleanup, r=eddyb
kennytm [Mon, 8 Jan 2018 17:58:50 +0000 (01:58 +0800)]
Rollup merge of #47256 - rkruppe:misc-cleanup, r=eddyb

Rename ReprExtern to ReprC

… and similarily rename a few other field and locals that mentioned "extern repr".

6 years agoRollup merge of #47254 - rkruppe:no-more-align-hack, r=alexcrichton
kennytm [Mon, 8 Jan 2018 17:58:49 +0000 (01:58 +0800)]
Rollup merge of #47254 - rkruppe:no-more-align-hack, r=alexcrichton

Replace empty array hack with repr(align)

As a side effect, this fixes the warning about repr(C, simd) that has been reported during x86_64 windows builds since #47111 (see also: #47103)

r? @alexcrichton

6 years agoRollup merge of #47246 - aidanhs:aphs-wasm-backtrace-feature, r=KodrAus
kennytm [Mon, 8 Jan 2018 17:58:47 +0000 (01:58 +0800)]
Rollup merge of #47246 - aidanhs:aphs-wasm-backtrace-feature, r=KodrAus

Make wasm obey backtrace feature, like other targets

E.g. https://github.com/rust-lang/rust/blob/6828cf90146c7fefc4ba4f16dffe75f763f2d910/src/libstd/sys/unix/mod.rs#L40-L41

6 years agoRollup merge of #47233 - dotdash:cleanup_llvm, r=alexcrichton
kennytm [Mon, 8 Jan 2018 17:58:46 +0000 (01:58 +0800)]
Rollup merge of #47233 - dotdash:cleanup_llvm, r=alexcrichton

Remove unused LLVM related code

Ticks a few more boxes on #46437

6 years agoRollup merge of #47210 - zackmdavis:the_3rd_of_2_hardest_problems_in_computer_science...
kennytm [Mon, 8 Jan 2018 17:58:45 +0000 (01:58 +0800)]
Rollup merge of #47210 - zackmdavis:the_3rd_of_2_hardest_problems_in_computer_science, r=QuietMisdreavus

fix the doc-comment-decoration-trimming edge-case rustdoc ICE

This `horizontal_trim` function strips the leading whitespace from
doc-comments that have a left-asterisk-margin:

```
  /**
   * You know what I mean—
   *
   * comments like this!
   */
```

The index of the column of asterisks is `i`, and if trimming is deemed
possible, we slice each line from `i+1` to the end of the line. But if, in
particular, `i` was 0 _and_ there was an empty line (as in the example
given in the reporting issue), we ended up panicking trying to slice an
empty string from 0+1 (== 1).

Let's tighten our check to say that we can't trim when `i` is even the same
as the length of the line, not just when it's greater. (Any such cases
would panic trying to slice `line` from `line.len()+1`.)

Resolves #47197.

6 years agoClean emitted diagnostics when `reset_err_count` is called.
Rafael Fernández López [Sat, 6 Jan 2018 12:33:20 +0000 (13:33 +0100)]
Clean emitted diagnostics when `reset_err_count` is called.

When external tools like `rustfmt` calls to `reset_err_count` for handler
reusing, it will set the error count on the handler to 0, but since
https://github.com/rust-lang/rust/pull/47146 the handler will contain
status that will prevent the error count to be bumped if this handler is
reused.

This caused `rustfmt` idempotency tests to fail:
https://github.com/rust-lang-nursery/rustfmt/issues/2338

Fixes: https://github.com/rust-lang-nursery/rustfmt/issues/2338
6 years agoUpdate to libc in Cargo.lock to 0.2.35 as well.
Ed Schouten [Mon, 8 Jan 2018 16:00:25 +0000 (17:00 +0100)]
Update to libc in Cargo.lock to 0.2.35 as well.

6 years agoUpgrade liblibc to latest upstream version.
Ed Schouten [Mon, 8 Jan 2018 15:59:15 +0000 (16:59 +0100)]
Upgrade liblibc to latest upstream version.

This version of liblibc is a prerequisite for getting libstd to build on
CloudABI.

6 years agoAuto merge of #47208 - Manishearth:double-ended-searcher, r=pnkfelix
bors [Mon, 8 Jan 2018 14:32:25 +0000 (14:32 +0000)]
Auto merge of #47208 - Manishearth:double-ended-searcher, r=pnkfelix

Make double ended searchers use dependent fingers

(fixes #47175)

r? @burntsushi @alexcrichton

needs uplift to beta

6 years agoAdd missing links
Guillaume Gomez [Mon, 8 Jan 2018 13:16:16 +0000 (14:16 +0100)]
Add missing links

6 years agoDon't look for niches inside generator types. Fixes #47253
John Kåre Alsaker [Mon, 8 Jan 2018 12:18:50 +0000 (13:18 +0100)]
Don't look for niches inside generator types. Fixes #47253

6 years agoShorten names of some compiler generated artifacts.
Michael Woerister [Mon, 8 Jan 2018 11:30:52 +0000 (12:30 +0100)]
Shorten names of some compiler generated artifacts.

6 years agoAuto merge of #47232 - keatinge:master, r=petrochenkov
bors [Mon, 8 Jan 2018 07:11:47 +0000 (07:11 +0000)]
Auto merge of #47232 - keatinge:master, r=petrochenkov

Add help message for incorrect pattern syntax

When I was getting started with rust I often made the mistake of using `||` instead of `|` to match multiple patterns and spent a long time staring at my code wondering what was wrong.

for example:

```
fn main() {
    let x = 1;

    match x {
        1 || 2 => println!("1 or 2"),
        _ => println!("Something else"),
    }
}

```

If you compile this with current rustc you will see

```
error: expected one of `...`, `..=`, `..`, `=>`, `if`, or `|`, found `||`
 --> test.rs:5:11
  |
5 |         1 || 2 => println!("1 or 2"),
  |          -^^ unexpected token
  |          |
  |          expected one of `...`, `..=`, `..`, `=>`, `if`, or `|` here

error: aborting due to previous error
```

With my proposed change it will show:
```
error: unexpected token `||` after pattern
 --> test.rs:5:11
  |
5 |         1 || 2 => println!("1 or 2"),
  |           ^^
  |
  = help: did you mean to use `|` to specify multiple patterns instead?

error: aborting due to previous error
```

6 years agoAccount for `pub` in `const` -> `static` suggestion
Esteban Küber [Mon, 8 Jan 2018 02:57:32 +0000 (18:57 -0800)]
Account for `pub` in `const` -> `static` suggestion

6 years agoAuto merge of #47200 - BurntPizza:query-snatp, r=nikomatsakis
bors [Mon, 8 Jan 2018 04:31:18 +0000 (04:31 +0000)]
Auto merge of #47200 - BurntPizza:query-snatp, r=nikomatsakis

Make normalize_and_test_predicates into a query

From #44891.

I'm not real solid on how `dep_graph` stuff works, but if a node is going to have a key (again, not sure how important that is), then the key needs to be `Copy`. So since `normalize_and_test_predicates` only had one out-of-module use, I changed that call site to use a new function, `substitute_normalize_and_test_predicates` which is the query and enables having the arguments be `Copy`. Hopefully this makes sense.

r? @nikomatsakis
and/or @michaelwoerister

6 years agorustdoc: Don't import macros from private imports
Oliver Middleton [Mon, 8 Jan 2018 03:39:25 +0000 (03:39 +0000)]
rustdoc: Don't import macros from private imports

6 years agorustc::ty: Rename `struct_variant` to `non_enum_variant`
Robin Kruppe [Sun, 7 Jan 2018 21:41:41 +0000 (22:41 +0100)]
rustc::ty: Rename `struct_variant` to `non_enum_variant`

It is also intended for use with unions.

6 years agoAuto merge of #47171 - estebank:numeric-literal-suggestion, r=nikomatsakis
bors [Sun, 7 Jan 2018 22:48:16 +0000 (22:48 +0000)]
Auto merge of #47171 - estebank:numeric-literal-suggestion, r=nikomatsakis

Provide suggestion when trying to use method on numeric literal

New output:

```
error[E0688]: can't call method `powi` on ambiguous numeric type `{float}`
  --> $DIR/method-on-ambiguous-numeric-type.rs:12:17
   |
12 |     let x = 2.0.powi(2);
   |                 ^^^^
help: you must specify a concrete type for this numeric value, like `f32`
   |
12 |     let x = 2.0_f32.powi(2);
   |             ^^^^^^^
```

Previous output:

```
error[E0599]: no method named `powi` found for type `{float}` in the current scope
  --> src/main.rs:12:17
   |
12 |     let x = 2.0.powi(2);
   |                 ^^^^
   |
   = help: items from traits can only be used if the trait is in scope
help: the following trait is implemented but not in scope, perhaps add a `use` for it:
   |
11 | use core::num::Float;
   |
```

Fix #40985.

6 years agoAdd HashMap::remove_entry
Steven Fackler [Sun, 7 Jan 2018 22:17:37 +0000 (14:17 -0800)]
Add HashMap::remove_entry

Implements #46344

6 years agoRename ReprExtern to ReprC, and similarily rename a few other fields and locals that...
Robin Kruppe [Sun, 7 Jan 2018 21:05:32 +0000 (22:05 +0100)]
Rename ReprExtern to ReprC, and similarily rename a few other fields and locals that mentioned "extern repr"

6 years agoReplace empty array hack with repr(align)
Robin Kruppe [Sun, 7 Jan 2018 19:19:51 +0000 (20:19 +0100)]
Replace empty array hack with repr(align)

As a side effect, this fixes the warning about repr(C, simd) that has been reported during x86_64 windows builds since #47111 (see also: #47103)

6 years agoAuto merge of #47161 - MaloJaffre:compiler-docs-regression, r=alexcrichton
bors [Sun, 7 Jan 2018 18:50:30 +0000 (18:50 +0000)]
Auto merge of #47161 - MaloJaffre:compiler-docs-regression, r=alexcrichton

Try to fix a perf regression by updating log

Upgrade `log` to `0.4` in multiple crates ~and `cargo`~.
Cc: #47154.
6 years agoTry to fix a perf regression by updating log
Malo Jaffré [Sun, 7 Jan 2018 15:54:05 +0000 (16:54 +0100)]
Try to fix a perf regression by updating log

Upgrade `log` to `0.4` in multiple crates.

6 years agoAuto merge of #47039 - ollie27:rustdoc_trait_impl_src, r=GuillaumeGomez
bors [Sun, 7 Jan 2018 13:12:15 +0000 (13:12 +0000)]
Auto merge of #47039 - ollie27:rustdoc_trait_impl_src, r=GuillaumeGomez

rustdoc: Add missing src links for generic impls on trait pages

`implementor2item` would return `None` for generic impls so instead this clones the entire `clean::Item` into the `implementors` map which simplifies some code.

6 years agoAuto merge of #47177 - michaelwoerister:erase-invalid-spans-during-metadata-encoding...
bors [Sun, 7 Jan 2018 09:23:33 +0000 (09:23 +0000)]
Auto merge of #47177 - michaelwoerister:erase-invalid-spans-during-metadata-encoding, r=alexcrichton

Map invalid Spans to DUMMY_SP during crate metadata encoding.

This mirrors what we do for stabilizing the incr. comp. cache and is necessary for reproducible builds. For the incr. comp. cache, we *have* to do this because the encoding there cannot represent broken Spans. Metadata encoding has to be in sync with that as not to get unexpected interactions when compiling incrementally.

This should help with fixing issue https://github.com/rust-lang/rust/issues/47066.

r? @alexcrichton

6 years agoAuto merge of #47157 - malbarbo:shared-build-musl, r=alexcrichton
bors [Sun, 7 Jan 2018 03:41:00 +0000 (03:41 +0000)]
Auto merge of #47157 - malbarbo:shared-build-musl, r=alexcrichton

ci: use a shared script to build musl

The dist-x86_64-musl, dist-various-1 and dist-i586-gnu-i686-musl builders had different scripts to build musl. This PR creates an unified script, which makes it easier to add new musl targets and update musl and libunwind (used in the musl targets).

The libunwind is update from 3.7 to 3.9 for dist-x86_64-musl and dist-i586-gnu-i686-musl (dist-various-1 already used 3.9 version).

6 years agoRemove unused LLVMRustJITMemoryManagerRef typedef
Björn Steinbrink [Sat, 6 Jan 2018 11:38:52 +0000 (12:38 +0100)]
Remove unused LLVMRustJITMemoryManagerRef typedef

6 years agoRemove dead function rustc_llvm::debug_loc_to_string()
Björn Steinbrink [Fri, 5 Jan 2018 14:22:35 +0000 (15:22 +0100)]
Remove dead function rustc_llvm::debug_loc_to_string()

Refs #46437 as it also removes LLVMRustWriteDebugLocToString()

6 years agoRemove dead function LLVMRustLinkInParsedExternalBitcode()
Björn Steinbrink [Fri, 5 Jan 2018 13:28:50 +0000 (14:28 +0100)]
Remove dead function LLVMRustLinkInParsedExternalBitcode()

Refs #46437

6 years agoRemove redundant -Zdebug-llvm option
Björn Steinbrink [Fri, 5 Jan 2018 13:27:20 +0000 (14:27 +0100)]
Remove redundant -Zdebug-llvm option

The same effect can be achieved using -Cllvm-args=-debug

Refs #46437 as it removes LLVMRustSetDebug()

6 years agoMake wasm obey backtrace feature, like other targets
Aidan Hobson Sayers [Sun, 7 Jan 2018 02:54:02 +0000 (02:54 +0000)]
Make wasm obey backtrace feature, like other targets

6 years agoCorrect reasoning behind writeback ref removal
Isaac van Bakel [Sat, 6 Jan 2018 19:04:09 +0000 (19:04 +0000)]
Correct reasoning behind writeback ref removal

The ref was actually always necessary.
This clarifies some incorrect thinking in the original code that might
have led to errors in the future to do with unsizing.

6 years agoRemoved trailing whitespace
Isaac van Bakel [Thu, 4 Jan 2018 00:30:28 +0000 (00:30 +0000)]
Removed trailing whitespace

6 years agoMade requested changes
Isaac van Bakel [Thu, 4 Jan 2018 00:12:29 +0000 (00:12 +0000)]
Made requested changes

6 years agoFixed unsize changing adjusted type
Isaac van Bakel [Wed, 3 Jan 2018 23:24:06 +0000 (23:24 +0000)]
Fixed unsize changing adjusted type

If the final type coming out of an Adjust is a ref, it is deconstructed.
Also made some formatting changes.

6 years agoMade eddyb's suggested change
Isaac van Bakel [Mon, 1 Jan 2018 23:36:49 +0000 (23:36 +0000)]
Made eddyb's suggested change

The adjusted type is now used instead in cases of autoderefs.

6 years agoAdded tests for non-obvious builtin indexing
Isaac van Bakel [Mon, 1 Jan 2018 22:49:01 +0000 (22:49 +0000)]
Added tests for non-obvious builtin indexing

Tests match issues opened on Github.
Tests would not previously compile and pass.

6 years agoMoved builtin indexing checks to writeback stage
Isaac van Bakel [Mon, 1 Jan 2018 22:47:50 +0000 (22:47 +0000)]
Moved builtin indexing checks to writeback stage

Use of builtin indexing is now only checked after types are fully
resolved.
Types are not correctly checked in case of autoderefs.

6 years agoAuto merge of #47156 - petrochenkov:extpath, r=nikomatsakis
bors [Sun, 7 Jan 2018 00:51:42 +0000 (00:51 +0000)]
Auto merge of #47156 - petrochenkov:extpath, r=nikomatsakis

Support `extern` in paths

Implement the primary alternative to https://github.com/rust-lang/rust/pull/46613 + https://github.com/rust-lang/rust/pull/45771, achieving the same effect without requiring changes to other imports.
Both need to be experimentally evaluated before making further progress.

The PR also adds docs for all these related features into the unstable book.

cc https://github.com/rust-lang/rust/issues/44660
r? @nikomatsakis

6 years agoUse `next` and `next_back`
varkor [Sat, 6 Jan 2018 22:14:02 +0000 (22:14 +0000)]
Use `next` and `next_back`

6 years agoAuto merge of #47235 - kennytm:rollup, r=kennytm
bors [Sat, 6 Jan 2018 20:41:33 +0000 (20:41 +0000)]
Auto merge of #47235 - kennytm:rollup, r=kennytm

Rollup of 7 pull requests

- Successful merges: #46947, #47170, #47190, #47205, #47217, #47220, #47230
- Failed merges: #47233

6 years agoFix tidy error
keatinge [Sat, 6 Jan 2018 20:29:08 +0000 (15:29 -0500)]
Fix tidy error

6 years agoUse span_suggestion instead of span_err_help
keatinge [Sat, 6 Jan 2018 20:22:29 +0000 (15:22 -0500)]
Use span_suggestion instead of span_err_help

6 years agoAdd raw bytes functions
Wesley Wiser [Wed, 20 Dec 2017 03:31:15 +0000 (22:31 -0500)]
Add raw bytes functions

Part of #45875

6 years agowherein careful doc-decoration arithmetic proves quite the ICE-breaker
Zack M. Davis [Fri, 5 Jan 2018 07:09:02 +0000 (23:09 -0800)]
wherein careful doc-decoration arithmetic proves quite the ICE-breaker

This `horizontal_trim` function strips the leading whitespace from
doc-comments that have a left-asterisk-margin:

  /**
   * You know what I mean—
   *
   * comments like this!
   */

The index of the column of asterisks is `i`, and if trimming is deemed
possible, we slice each line from `i+1` to the end of the line. But if, in
particular, `i` was 0 _and_ there was an empty line (as in the example
given in the reporting issue), we ended up panicking trying to slice an
empty string from 0+1 (== 1).

Let's tighten our check to say that we can't trim when `i` is even the same
as the length of the line, not just when it's greater. (Any such cases
would panic trying to slice `line` from `line.len()+1`.)

Resolves #47197.

6 years agoRollup merge of #47230 - nerd2:debuginfo_shadow, r=alexcrichton
kennytm [Sat, 6 Jan 2018 18:36:07 +0000 (02:36 +0800)]
Rollup merge of #47230 - nerd2:debuginfo_shadow, r=alexcrichton

Debuginfo Shadowed Variable test: fix check numbering

Appears to be a simple fix to restore this test. Ref issue #47163, CC @arielb1

6 years agoRollup merge of #47220 - nagisa:nonamellvm, r=rkruppe
kennytm [Sat, 6 Jan 2018 18:36:06 +0000 (02:36 +0800)]
Rollup merge of #47220 - nagisa:nonamellvm, r=rkruppe

Use name-discarding LLVM context

This is only applicable when neither of --emit=llvm-ir or --emit=llvm-bc are not
requested.

In case either of these outputs are wanted, but the benefits of such context are
desired as well, -Zfewer_names option provides the same functionality regardless
of the outputs requested.

Should be a viable fix for https://github.com/rust-lang/rust/issues/46449

6 years agoRollup merge of #47217 - stjepang:set-examples, r=frewsxcv
kennytm [Sat, 6 Jan 2018 18:36:05 +0000 (02:36 +0800)]
Rollup merge of #47217 - stjepang:set-examples, r=frewsxcv

Write examples for {BTree,Hash}Set::{get,replace,take}

6 years agoRollup merge of #47205 - eddyb:alloc-id, r=oli-obk
kennytm [Sat, 6 Jan 2018 18:36:04 +0000 (02:36 +0800)]
Rollup merge of #47205 - eddyb:alloc-id, r=oli-obk

miri: use AllocId instead of u64.

This makes @alexreg's miri allocation -> LLVM global translation more straight-forward.

r? @oli-obk

6 years agoRollup merge of #47190 - EdSchouten:cloudabi-libpanic, r=alexcrichton
kennytm [Sat, 6 Jan 2018 18:36:03 +0000 (02:36 +0800)]
Rollup merge of #47190 - EdSchouten:cloudabi-libpanic, r=alexcrichton

Port libpanic_abort and libpanic_unwind to CloudABI

This change ports both the libpanic* libraries to CloudABI.

The most interesting part of this pull request, however, is that it imports the CloudABI system call API into the Rust tree through a Git submodule. These will also be used by my port of libstd to CloudABI extensively, as that library obviously needs to invoke system calls to implement its primitives.

I have taken the same approach as libc: `src/libcloudabi` + `src/rustc/cloudabi_shim`. If some other naming scheme is preferred, feel free to let me know! As `libcloudabi` is pretty small, maybe it makes sense to copy, instead of using a submodule?

6 years agoRollup merge of #47170 - eddyb:us-vs-usize, r=nikomatsakis
kennytm [Sat, 6 Jan 2018 18:36:02 +0000 (02:36 +0800)]
Rollup merge of #47170 - eddyb:us-vs-usize, r=nikomatsakis

rustc: use {U,I}size instead of {U,I}s shorthands.

`Us`/`Is` come from a time when `us` and `is` were the literal suffixes that are now `usize` / `isize`.

r? @nikomatsakis

6 years agoRollup merge of #46947 - tspiteri:checked-div-rem-none, r=frewsxcv
kennytm [Sat, 6 Jan 2018 18:36:01 +0000 (02:36 +0800)]
Rollup merge of #46947 - tspiteri:checked-div-rem-none, r=frewsxcv

doc: improve None condition doc for `checked_div` and `checked_rem`

This commit improves the condition mentioned in the docs for which `checked_div` and `checked_rem` return `None`.

For signed division, the commit changes "the operation results in overflow" to "the division results in overflow", otherwise there is room for misinterpretation for `checked_rem`: Without considering overflow, `MIN % -1` would be simply zero, allowing the misinterpretation that "the operation" does not result in overflow in this case. This ambiguity is removed using "when the division results in overflow".

For unsigned division, the condition for `None` should be simply when `rhs == 0`, as no other overflow is possible.

6 years agoAdd tests for error message for pattern matching typo
keatinge [Sat, 6 Jan 2018 17:34:19 +0000 (12:34 -0500)]
Add tests for error message for pattern matching typo

6 years agofix style
keatinge [Sat, 6 Jan 2018 15:05:02 +0000 (10:05 -0500)]
fix style

6 years agoEmit non-fatal error instead
keatinge [Sat, 6 Jan 2018 15:01:54 +0000 (10:01 -0500)]
Emit non-fatal error instead

6 years agoAuto merge of #47141 - alexcrichton:bump-bootstrap, r=alexcrichton
bors [Sat, 6 Jan 2018 14:50:14 +0000 (14:50 +0000)]
Auto merge of #47141 - alexcrichton:bump-bootstrap, r=alexcrichton

Bump to 1.25.0

* Bump the release version to 1.25
* Bump the bootstrap compiler to the recent beta
* Allow using unstable rustdoc features on beta - this fix has been applied to
  the beta branch but needed to go to the master branch as well.