]> git.lizzy.rs Git - rust.git/log
rust.git
6 years agoRollup merge of #47978 - eddyb:iu, r=kennytm
kennytm [Sun, 4 Feb 2018 15:29:01 +0000 (23:29 +0800)]
Rollup merge of #47978 - eddyb:iu, r=kennytm

ui tests: diff from old (expected) to new (actual) instead of backwards.

Previously `actual` was "old" and `expected` was "new" which resulted in `+` before `-`.
AFAIK all diff tools put `-` before `+`, which made the previous behavior *very confusing*.

r? @nikomatsakis

6 years agoRollup merge of #47958 - frewsxcv:frewsxcv-try-clone, r=aidanhs
kennytm [Sun, 4 Feb 2018 15:28:59 +0000 (23:28 +0800)]
Rollup merge of #47958 - frewsxcv:frewsxcv-try-clone, r=aidanhs

Clarify shared file handler behavior of File::try_clone.

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

6 years agoRollup merge of #47947 - goodmanjonathan:stabilize_match_beginning_vert, r=petrochenkov
kennytm [Sun, 4 Feb 2018 15:28:58 +0000 (23:28 +0800)]
Rollup merge of #47947 - goodmanjonathan:stabilize_match_beginning_vert, r=petrochenkov

Stabilize feature(match_beginning_vert)

With this feature stabilized, match expressions can optionally have a `|` at the beginning of each arm.

Reference PR: rust-lang-nursery/reference#231

Closes #44101

6 years agoRollup merge of #47912 - cuviper:glibc-stack-guard, r=alexcrichton
kennytm [Sun, 4 Feb 2018 15:28:57 +0000 (23:28 +0800)]
Rollup merge of #47912 - cuviper:glibc-stack-guard, r=alexcrichton

Use a range to identify SIGSEGV in stack guards

Previously, the `guard::init()` and `guard::current()` functions were
returning a `usize` address representing the top of the stack guard,
respectively for the main thread and for spawned threads.  The `SIGSEGV`
handler on `unix` targets checked if a fault was within one page below that
address, if so reporting it as a stack overflow.

Now `unix` targets report a `Range<usize>` representing the guard memory,
so it can cover arbitrary guard sizes.  Non-`unix` targets which always
return `None` for guards now do so with `Option<!>`, so they don't pay any
overhead.

For `linux-gnu` in particular, the previous guard upper-bound was
`stackaddr + guardsize`, as the protected memory was *inside* the stack.
This was a glibc bug, and starting from 2.27 they are moving the guard
*past* the end of the stack.  However, there's no simple way for us to know
where the guard page actually lies, so now we declare it as the whole range
of `stackaddr ± guardsize`, and any fault therein will be called a stack
overflow.  This fixes #47863.

6 years agoRollup merge of #47896 - zackmdavis:and_the_case_of_the_necessary_unnecessary_parens...
kennytm [Sun, 4 Feb 2018 15:28:56 +0000 (23:28 +0800)]
Rollup merge of #47896 - zackmdavis:and_the_case_of_the_necessary_unnecessary_parens, r=nikomatsakis

decline to lint technically-unnecessary parens in function or method arguments inside of nested macros

In #46980 ("in which the unused-parens lint..." (14982db2d6)), the
unused-parens lint was made to check function and method arguments,
which it previously did not (seemingly due to oversight rather than
willful design). However, in #47775 and discussion thereon,
user–developers of Geal/nom and graphql-rust/juniper reported that the
lint was seemingly erroneously triggering on certain complex macros in
those projects. While this doesn't seem like a bug in the lint in the
particular strict sense that the expanded code would, in fact, contain
unncecessary parentheses, it also doesn't seem like the sort of thing
macro authors should have to think about: the spirit of the
unused-parens lint is to prevent needless clutter in code, not to give
macro authors extra heartache in the handling of token trees.

We propose the expediency of declining to lint unused parentheses in
function or method args inside of nested expansions: we believe that
this should eliminate the petty, troublesome lint warnings reported
in the issue, without forgoing the benefits of the lint in simpler
macros.

It seemed like too much duplicated code for the `Call` and `MethodCall`
match arms to duplicate the nested-macro check in addition to each
having their own `for` loop, so this occasioned a slight refactor so
that the function and method cases could share code—hopefully the
overall intent is at least no less clear to the gentle reader.

This is concerning #47775.

6 years agoRollup merge of #47877 - spastorino:lifetime-bounds-in-copy, r=nikomatsakis
kennytm [Sun, 4 Feb 2018 15:28:54 +0000 (23:28 +0800)]
Rollup merge of #47877 - spastorino:lifetime-bounds-in-copy, r=nikomatsakis

Do not ignore lifetime bounds in Copy impls

cc #29149

r? @nikomatsakis

6 years agoRollup merge of #47862 - GuillaumeGomez:const-evaluation-ice, r=eddyb
kennytm [Sun, 4 Feb 2018 15:28:53 +0000 (23:28 +0800)]
Rollup merge of #47862 - GuillaumeGomez:const-evaluation-ice, r=eddyb

Fix const evaluation ICE in rustdoc

Fixes #47860.

r? @eddyb

6 years agoAuto merge of #47991 - nrc:update, r=alexcrichton
bors [Sun, 4 Feb 2018 12:26:09 +0000 (12:26 +0000)]
Auto merge of #47991 - nrc:update, r=alexcrichton

Update RLS and Rustfmt

r? @alexcrichton

6 years agoAuto merge of #47915 - eddyb:layout-of, r=nikomatsakis
bors [Sun, 4 Feb 2018 03:33:44 +0000 (03:33 +0000)]
Auto merge of #47915 - eddyb:layout-of, r=nikomatsakis

rustc: prefer ParamEnvAnd and LayoutCx over tuples for LayoutOf.

This PR provides `tcx.layout_of(param_env.and(ty))` as the idiomatic replacement for the existing `(tcx, param_env).layout_of(ty)` and removes fragile (coherence-wise) layout-related tuple impls.

r? @nikomatsakis

6 years agoUpdate RLS and Rustfmt
Nick Cameron [Thu, 1 Feb 2018 05:56:48 +0000 (18:56 +1300)]
Update RLS and Rustfmt

6 years agoAuto merge of #47845 - Zoxc:gen-fixes, r=nikomatsakis
bors [Sat, 3 Feb 2018 17:28:08 +0000 (17:28 +0000)]
Auto merge of #47845 - Zoxc:gen-fixes, r=nikomatsakis

Generator bugfixes

r? @nikomatsakis

6 years agoClarify shared file handler behavior of File::try_clone.
Corey Farwell [Fri, 2 Feb 2018 04:36:33 +0000 (23:36 -0500)]
Clarify shared file handler behavior of File::try_clone.

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

6 years agoAuto merge of #46254 - Dylan-DPC:ellided-lifetime, r=nikomatsakis
bors [Sat, 3 Feb 2018 14:38:52 +0000 (14:38 +0000)]
Auto merge of #46254 - Dylan-DPC:ellided-lifetime, r=nikomatsakis

elided lifetime

Closes #45992

Hey
Having a problem with my config so decided to make a WIP PR nevertheless. Will add some more tests.

6 years agoAuto merge of #47962 - kennytm:rollup, r=kennytm
bors [Sat, 3 Feb 2018 12:02:33 +0000 (12:02 +0000)]
Auto merge of #47962 - kennytm:rollup, r=kennytm

Rollup of 10 pull requests

- Successful merges: #46156, #47829, #47842, #47898, #47914, #47916, #47919, #47942, #47951, #47973
- Failed merges: #47753

6 years agoFix const evaluation ICE in rustdoc
Guillaume Gomez [Mon, 29 Jan 2018 22:04:43 +0000 (23:04 +0100)]
Fix const evaluation ICE in rustdoc

6 years agoRollup merge of #47973 - perlun:patch-1, r=dtolnay
kennytm [Sat, 3 Feb 2018 08:08:27 +0000 (16:08 +0800)]
Rollup merge of #47973 - perlun:patch-1, r=dtolnay

copy_nonoverlapping example: Fixed typo

The comment referred to a variable using an incorrect name. (it has probably been renamed since the comment was written, or the comment was copied elsewhere - I noted the example in libcore has the `tmp` name for the temporary variable.)

6 years agoAuto merge of #47791 - estebank:mismatched-trait-impl, r=nikomatsakis
bors [Sat, 3 Feb 2018 01:26:56 +0000 (01:26 +0000)]
Auto merge of #47791 - estebank:mismatched-trait-impl, r=nikomatsakis

Tweak presentation on lifetime trait mismatch

 - On trait/impl method discrepancy, add label pointing at trait signature.
 - Point only at method definition when referring to named lifetimes on lifetime mismatch.
 - When the sub and sup expectations are the same, tweak the output to avoid repeated spans.

Fix #30790, CC #18759.

6 years agoui tests: diff from old (expected) to new (actual) instead of backwards.
Eduard-Mihai Burtescu [Sat, 3 Feb 2018 00:51:16 +0000 (02:51 +0200)]
ui tests: diff from old (expected) to new (actual) instead of backwards.

6 years agocopy_nonoverlapping example: Fixed typo
Per Lundberg [Fri, 2 Feb 2018 20:44:14 +0000 (22:44 +0200)]
copy_nonoverlapping example: Fixed typo

The comment referred to a variable using an incorrect name. (it has probably been renamed since the comment was written, or the comment was copied elsewhere - I noted the example in libcore has the `tmp` name for the temporary variable.)

6 years agoRollup merge of #47951 - GuillaumeGomez:sidebar-hover, r=QuietMisdreavus Fix ugly...
kennytm [Fri, 2 Feb 2018 08:29:26 +0000 (16:29 +0800)]
Rollup merge of #47951 - GuillaumeGomez:sidebar-hover, r=QuietMisdreavus Fix ugly hover in sidebar In the sidebar, the elements under `Structs`, `Enums`... have an ugly hover if they're not selected. This fixes it. r? @QuietMisdreavus

6 years agoRollup merge of #47942 - estebank:macro-spans, r=nikomatsakis Minimize weird spans...
kennytm [Fri, 2 Feb 2018 08:29:24 +0000 (16:29 +0800)]
Rollup merge of #47942 - estebank:macro-spans, r=nikomatsakis Minimize weird spans involving macro context Sometimes the parser attempts to synthesize spans from within a macro context with the span for the captured argument, leading to non-sensical spans with very bad output. Given that an incorrect span is worse than a partially incomplete span, when detecting this situation return only one of the spans without merging them. Fix #32072, #47778. CC #23480.

6 years agoRollup merge of #47919 - varkor:to_degrees-precision, r=rkruppe Use constant for...
kennytm [Fri, 2 Feb 2018 08:29:23 +0000 (16:29 +0800)]
Rollup merge of #47919 - varkor:to_degrees-precision, r=rkruppe Use constant for 180/π in to_degrees The current `f32|f64.to_degrees` implementation uses a division to calculate `180/π`, which causes a loss of precision. Using a constant is still not perfect (implementing a maximally-precise algorithm would come with a high performance cost), but improves precision with a minimal change. As per the discussion in #29944, this fixes #29944 (the costs of improving the precision further would not outweigh the gains).

6 years agoRollup merge of #47916 - vmx:patch-2, r=kennytm Fix lang items box example code The...
kennytm [Fri, 2 Feb 2018 08:29:21 +0000 (16:29 +0800)]
Rollup merge of #47916 - vmx:patch-2, r=kennytm Fix lang items box example code The `exchange_free` lang item is gone in favour of `box_free` [1]. Some warnings are also fixed by this commit. [1]: https://github.com/rust-lang/rust/commit/ca115dd083a1fe1d2b4892c5e50e49eb83ff1f3

6 years agoRollup merge of #47914 - etaoins:improve-char-escape-in-lexer-msg, r=petrochenkov...
kennytm [Fri, 2 Feb 2018 08:29:20 +0000 (16:29 +0800)]
Rollup merge of #47914 - etaoins:improve-char-escape-in-lexer-msg, r=petrochenkov Improve char escaping in lexer messages Currently ', " and \ are escaped as \', \" and \\ respectively. This leads to confusing messages such as `error: unknown start of token: \\` when encountering a single backslash. Fix by emitting printable ASCII characters directly. This will still escape \r, \n, \t and Unicode characters. Fixes #47902

6 years agoRollup merge of #47898 - Aaron1011:static-ref-nll, r=nikomatsakis Fix ICE when assign...
kennytm [Fri, 2 Feb 2018 08:29:19 +0000 (16:29 +0800)]
Rollup merge of #47898 - Aaron1011:static-ref-nll, r=nikomatsakis Fix ICE when assigning references to a static mut with NLL is_unsafe_place only filters out statics in the rhs, not the lhs. Since it's possible to reach that 'Place::Static', we handle statics the same way as we do locals. Fixes #47789

6 years agoRollup merge of #47842 - Manishearth:dead-code, r=nagisa Remove dead code The Clone...
kennytm [Fri, 2 Feb 2018 08:29:17 +0000 (16:29 +0800)]
Rollup merge of #47842 - Manishearth:dead-code, r=nagisa Remove dead code The Clone impl makes the lint ignore the type.

6 years agoRollup merge of #47829 - estebank:break-in-for, r=cramertj Suggest removing value...
kennytm [Fri, 2 Feb 2018 08:29:16 +0000 (16:29 +0800)]
Rollup merge of #47829 - estebank:break-in-for, r=cramertj Suggest removing value from `break` when invalid When attempting to use `break` with a value in a type of loop where it'd be invalid (any non-`loop`), suggest using `break` on its own. Close #34359.

6 years agoRollup merge of #46156 - SimonSapin:patch-14, r=withoutboats
kennytm [Fri, 2 Feb 2018 08:29:11 +0000 (16:29 +0800)]
Rollup merge of #46156 - SimonSapin:patch-14, r=withoutboats

Document the size of bool

6 years agoAuto merge of #47465 - estebank:include-space-after-mut, r=nikomatsakis
bors [Fri, 2 Feb 2018 04:19:12 +0000 (04:19 +0000)]
Auto merge of #47465 - estebank:include-space-after-mut, r=nikomatsakis

Include space in suggestion `mut` in bindings

Fix #46614.

6 years agoRemove dead code
Manish Goregaokar [Mon, 29 Jan 2018 05:44:55 +0000 (11:14 +0530)]
Remove dead code

6 years agoAuto merge of #47102 - Diggsey:wasm-syscall, r=alexcrichton
bors [Fri, 2 Feb 2018 01:27:14 +0000 (01:27 +0000)]
Auto merge of #47102 - Diggsey:wasm-syscall, r=alexcrichton

Implement extensible syscall interface for wasm

Currently it's possible to run tests with the native wasm target, but it's not possible to tell whether they pass or to capture the output, because libstd throws away stdout, stderr and the exit code. While advanced libstd features should probably require more specific targets (eg. wasm-unknown-web) I think even the unknown target should at least support basic I/O.

Any solution is constrained by these factors:
- It must not be javascript specific
- There must not be too strong coupling between libstd and the host environment (because it's an "unknown" target)
- WebAssembly does not allow "optional" imports - all imports *must* be resolved.
- WebAssembly does not support calling the host environment through any channel *other* than imports.

The best solution I could find to these constraints was to give libstd a single required import, and implement a syscall-style interface through that import. Each syscall is designed such that a no-op implementation gives the most reasonable fallback behaviour. This means that the following import table would be perfectly valid:
```javascript
imports.env = { rust_wasm_syscall: function(index, data) {} }
```

Currently I have implemented these system calls:
- Read from stdin
- Write to stdout/stderr
- Set the exit code
- Get command line arguments
- Get environment variable
- Set environment variable
- Get time

It need not be extended beyond this set if being able to run tests for this target is the only goal.

edit:
As part of this PR I had to make a further change. Previously, the rust entry point would be automatically called when the webassembly module was instantiated. This was problematic because from the javascript side it was impossible to call exported functions, access program memory or get a reference to the instance.

To solve this, ~I changed the default behaviour to not automatically call the entry point, and added a crate-level attribute to regain the old behaviour. (`#![wasm_auto_run]`)~ I disabled this behaviour when building tests.

6 years agoFix ugly hover in sidebar
Guillaume Gomez [Thu, 1 Feb 2018 22:40:23 +0000 (23:40 +0100)]
Fix ugly hover in sidebar

6 years agoadd ellided lifetime
dpc [Thu, 1 Feb 2018 20:40:10 +0000 (02:10 +0530)]
add ellided lifetime

6 years agoChange offset to `0`
Esteban Küber [Thu, 1 Feb 2018 20:02:22 +0000 (12:02 -0800)]
Change offset to `0`

6 years agoMinimize weird spans involving macro context
Esteban Küber [Thu, 1 Feb 2018 19:51:49 +0000 (11:51 -0800)]
Minimize weird spans involving macro context

Sometimes the parser attempts to synthesize spans from within a macro
context with the span for the captured argument, leading to non-sensical
spans with very bad output. Given that an incorrect span is worse than
a partially incomplete span, when detecting this situation return only
one of the spans without mergin them.

6 years agoUse constant for 180/π in to_degrees
varkor [Thu, 1 Feb 2018 18:35:51 +0000 (18:35 +0000)]
Use constant for 180/π in to_degrees

The current `f32|f64.to_degrees` implementation uses a division to calculate 180/π, which causes a loss of precision. Using a constant is still not perfect (implementing a maximally-precise algorithm would come with a high performance cost), but improves precision with a minimal change.

6 years agoAuto merge of #47738 - nikomatsakis:issue-47139-master, r=arielb1
bors [Thu, 1 Feb 2018 07:33:35 +0000 (07:33 +0000)]
Auto merge of #47738 - nikomatsakis:issue-47139-master, r=arielb1

remove intercrate ambiguity hints

The scheme was causing overflows during coherence checking (e.g. #47139). This is sort of a temporary fix; the proper fix I think involves reworking trait selection in deeper ways.

cc @sgrif -- this *should* fix diesel

cc @qnighy -- I'd like to discuss you with alternative techniques for achieving the same end. =) Actually, it might be good to put some energy into refactoring traits first.

r? @eddyb

6 years agoAuto merge of #47540 - Manishearth:suggestion, r=nrc
bors [Thu, 1 Feb 2018 04:47:46 +0000 (04:47 +0000)]
Auto merge of #47540 - Manishearth:suggestion, r=nrc

Add approximate suggestions for rustfix

This adds `span_approximate_suggestion()` that lets you emit a
suggestion marked as "non-machine applicable" in the JSON output. UI
users see no difference. This is for when rustc and clippy wish to
 emit suggestions which will make sense to the reader (e.g. they may
have placeholders like `<type>`) but are not source-applicable, so that
rustfix/etc can ignore these.

fixes #39254

6 years agoFix lang items box example code
Volker Mische [Wed, 31 Jan 2018 23:21:43 +0000 (00:21 +0100)]
Fix lang items box example code

The `exchange_free` lang item is gone in favour of `box_free` [1].

Some warnings are also fixed by this commit.

[1]: https://github.com/rust-lang/rust/commit/ca115dd083a1fe1d2b4892c5e50e49eb83ff1f3

6 years agorustc: prefer ParamEnvAnd and LayoutCx over tuples for LayoutOf.
Eduard-Mihai Burtescu [Wed, 31 Jan 2018 22:00:38 +0000 (00:00 +0200)]
rustc: prefer ParamEnvAnd and LayoutCx over tuples for LayoutOf.

6 years agoImprove char escaping in lexer messages
Ryan Cumming [Wed, 31 Jan 2018 21:15:38 +0000 (08:15 +1100)]
Improve char escaping in lexer messages

Currently ', " and \ are escaped as \', \" and \\ respectively. This
leads to confusing messages such as `error: unknown start of token: \\`
when encountering a single backslash.

Fix by emitting printable ASCII characters directly. This will still
escape \r, \n, \t and Unicode characters.

Fixes #47902

6 years agoAuto merge of #47900 - kennytm:rollup, r=kennytm
bors [Wed, 31 Jan 2018 20:51:02 +0000 (20:51 +0000)]
Auto merge of #47900 - kennytm:rollup, r=kennytm

Rollup of 16 pull requests

- Successful merges: #47838, #47840, #47844, #47874, #47875, #47876, #47884, #47886, #47889, #47890, #47891, #47795, #47677, #47893, #47895, #47552
- Failed merges:

6 years agoUse a range to identify SIGSEGV in stack guards
Josh Stone [Wed, 31 Jan 2018 19:41:29 +0000 (11:41 -0800)]
Use a range to identify SIGSEGV in stack guards

Previously, the `guard::init()` and `guard::current()` functions were
returning a `usize` address representing the top of the stack guard,
respectively for the main thread and for spawned threads.  The `SIGSEGV`
handler on `unix` targets checked if a fault was within one page below
that address, if so reporting it as a stack overflow.

Now `unix` targets report a `Range<usize>` representing the guard
memory, so it can cover arbitrary guard sizes.  Non-`unix` targets which
always return `None` for guards now do so with `Option<!>`, so they
don't pay any overhead.

For `linux-gnu` in particular, the previous guard upper-bound was
`stackaddr + guardsize`, as the protected memory was *inside* the stack.
This was a glibc bug, and starting from 2.27 they are moving the guard
*past* the end of the stack.  However, there's no simple way for us to
know where the guard page actually lies, so now we declare it as the
whole range of `stackaddr ± guardsize`, and any fault therein will be
called a stack overflow.  This fixes #47863.

6 years agoEnable stack-probe tests with system LLVM >= 5.0
Josh Stone [Wed, 31 Jan 2018 00:47:30 +0000 (16:47 -0800)]
Enable stack-probe tests with system LLVM >= 5.0

6 years agoRollup merge of #47552 - oberien:stepby-nth, r=dtolnay
kennytm [Wed, 31 Jan 2018 18:34:15 +0000 (02:34 +0800)]
Rollup merge of #47552 - oberien:stepby-nth, r=dtolnay

Specialize StepBy::nth

This allows optimizations of implementations of the inner iterator's `.nth` method.

6 years agoRollup merge of #47895 - varkor:non-utf-stdin, r=estebank
kennytm [Wed, 31 Jan 2018 18:32:10 +0000 (02:32 +0800)]
Rollup merge of #47895 - varkor:non-utf-stdin, r=estebank

Fix ICE when reading non-UTF-8 input from stdin

Fixes #22387.

6 years agoRollup merge of #47893 - alexcrichton:move-codegen-backends, r=alexcrichton
kennytm [Wed, 31 Jan 2018 18:29:38 +0000 (02:29 +0800)]
Rollup merge of #47893 - alexcrichton:move-codegen-backends, r=alexcrichton

rustc: Move location of `codegen-backends` dir

Right now this directory is located under:

```
$sysroot/lib/rustlib/$target/lib/codegen-backends
```

but after seeing what we do in a few other places it seems that a more
appropriate location would be:

```
$sysroot/lib/rustlib/$target/codegen-backends
```

so this commit moves it!

6 years agoRollup merge of #47677 - etaoins:avoid-underflow-in-rennder-source-line, r=estebank
kennytm [Wed, 31 Jan 2018 18:26:48 +0000 (02:26 +0800)]
Rollup merge of #47677 - etaoins:avoid-underflow-in-rennder-source-line, r=estebank

Avoid underflow in render_source_line

While testing rust-lang/rust#47655 I was able to make the compiler panic when it's compiled with debug assertions:

```shell
> rustc /dev/null --crate-type proc-macro

error: internal compiler error: unexpected panic

note: the compiler unexpectedly panicked. this is a bug.

note: we would appreciate a bug report: https://github.com/rust-lang/rust/blob/master/CONTRIBUTING.md#bug-reports

note: rustc 1.25.0-dev running on x86_64-apple-darwin

note: run with `RUST_BACKTRACE=1` for a backtrace

thread 'rustc' panicked at 'attempt to subtract with overflow', librustc_errors/emitter.rs:287:49
```

Without debug assertions the following warning is emitted:

```shell
> rustc /dev/null --crate-type proc-macro

warning: unused variable: `registrar`
 --> /dev/null:0:1
  |
  |
  = note: #[warn(unused_variables)] on by default
  = note: to avoid this warning, consider using `_registrar` instead
```

The panic is due to the unused variable warning being spanned to `/dev/null:0:1`. When `render_source_line` subtracts 1 from the line number to look up the source line it panics due to underflow. Without debug assertions this would wrap and cause us to return a blank string instead.

Fix by explicitly testing for 0 and exiting early. I'm unsure how to automatically test this now that rust-lang/rust#46655 has been approved.

6 years agorustc: Move location of `codegen-backends` dir
Alex Crichton [Tue, 30 Jan 2018 23:40:44 +0000 (15:40 -0800)]
rustc: Move location of `codegen-backends` dir

Right now this directory is located under:

  $sysroot/lib/rustlib/$target/lib/codegen-backends

but after seeing what we do in a few other places it seems that a more
appropriate location would be:

  $sysroot/lib/rustlib/$target/codegen-backends

so this commit moves it!

6 years agoRollup merge of #47795 - avborhanian:master, r=rkruppe
kennytm [Wed, 31 Jan 2018 14:11:12 +0000 (22:11 +0800)]
Rollup merge of #47795 - avborhanian:master, r=rkruppe

Adding ICH to the glossary.

Fixes #47782.

6 years agoUse file containing non-UTF-8 character instead of echo -e
varkor [Wed, 31 Jan 2018 11:56:15 +0000 (11:56 +0000)]
Use file containing non-UTF-8 character instead of echo -e

6 years agoAdd echo escape flag
varkor [Wed, 31 Jan 2018 10:23:15 +0000 (10:23 +0000)]
Add echo escape flag

6 years agoRollup merge of #47891 - eddyb:issue-47638, r=nikomatsakis
kennytm [Wed, 31 Jan 2018 08:36:18 +0000 (16:36 +0800)]
Rollup merge of #47891 - eddyb:issue-47638, r=nikomatsakis

rustc_trans: keep LLVM types for trait objects anonymous.

Fixes #47638 by reverting the addition of readable LLVM trait object type names.
r? @nikomatsakis

6 years agoRollup merge of #47890 - pftbest:no_trap, r=alexcrichton
kennytm [Wed, 31 Jan 2018 08:36:17 +0000 (16:36 +0800)]
Rollup merge of #47890 - pftbest:no_trap, r=alexcrichton

[MSP430] Don't enable trap_unreachable option by default on msp.

Since MSP430 doesn't meaningfully support faulting on illegal
instructions, LLVM generates a call to abort() function instead
of a trap instruction. Such calls are 4 bytes long, and that is
too much overhead for such small target.

r? @alexcrichton

6 years agoRollup merge of #47889 - alexcrichton:wasm-hidden-by-default, r=cramertj
kennytm [Wed, 31 Jan 2018 08:36:15 +0000 (16:36 +0800)]
Rollup merge of #47889 - alexcrichton:wasm-hidden-by-default, r=cramertj

rustc: Add an option to default hidden visibility

This commit adds a new option to target specifictions to specify that symbols
should be "hidden" visibility by default in LLVM. While there are no existing
targets that take advantage of this the `wasm32-unknown-unknown` target will
soon start to use this visibility. The LLD linker currently interprets `hidden`
as "don't export this from the wasm module" which is what we want for 90% of our
functions. While the LLD linker does have a "export this symbol" argument which
is what we use for other linkers, it was also somewhat easier to do this change
instead which'll involve less arguments flying around. Additionally there's no
need for non-`hidden` visibility for most of our symbols!

This change should not immediately impact the wasm targets as-is, but rather
this is laying the foundations for soon integrating LLD as a linker for wasm
code.

6 years agoRollup merge of #47886 - alexcrichton:llvm-7-start, r=eddyb
kennytm [Wed, 31 Jan 2018 08:36:14 +0000 (16:36 +0800)]
Rollup merge of #47886 - alexcrichton:llvm-7-start, r=eddyb

rustc: Add some defines for LLVM 7 compat

I was testing out the tip support to see what's going on with wasm, and this was
I believe the only issue encountered with LLVM 7 support so far.

6 years agoRollup merge of #47884 - cuviper:run-pass-sse2, r=alexcrichton
kennytm [Wed, 31 Jan 2018 08:36:13 +0000 (16:36 +0800)]
Rollup merge of #47884 - cuviper:run-pass-sse2, r=alexcrichton

Ignore run-pass/sse2 when using system LLVM

This is a test of `target_feature`, which needs a rust-specific patch to
LLVM to add `MCSubtargetInfo::getFeatureTable()`.

6 years agoRollup merge of #47876 - GuillaumeGomez:associated-const-error, r=nikomatsakis
kennytm [Wed, 31 Jan 2018 08:36:11 +0000 (16:36 +0800)]
Rollup merge of #47876 - GuillaumeGomez:associated-const-error, r=nikomatsakis

Update associated constants error message

Fixes #47570.

6 years agoRollup merge of #47875 - jcowgill:mips-clobber-at, r=rkruppe
kennytm [Wed, 31 Jan 2018 08:36:10 +0000 (16:36 +0800)]
Rollup merge of #47875 - jcowgill:mips-clobber-at, r=rkruppe

rustc_trans: clobber $1 (aka $at) on mips

This copies what clang does. There is a long explanation as to why this is needed in the clang source (tools/clang/lib/Basic/Targets/Mips.h).

6 years agoRollup merge of #47874 - jcowgill:mips-from_raw_os_error, r=dtolnay
kennytm [Wed, 31 Jan 2018 08:36:09 +0000 (16:36 +0800)]
Rollup merge of #47874 - jcowgill:mips-from_raw_os_error, r=dtolnay

std: use more portable error number in from_raw_os_error docs

On MIPS, error number 98 is not `EADDRINUSE` (it is `EPROTOTYPE`). To fix the resulting test failure this causes, use a more portable error number in the example documentation. `EINVAL` shold be more reliable because it was defined in the original Unix as 22 so hopefully most derivatives have defined it the same way.

6 years agoRollup merge of #47844 - CAD97:patch-1, r=estebank
kennytm [Wed, 31 Jan 2018 08:36:08 +0000 (16:36 +0800)]
Rollup merge of #47844 - CAD97:patch-1, r=estebank

Fix regression: account for trait methods in arg count mismatch error

Fixed #47706 (https://github.com/rust-lang/rust/issues/47706#issuecomment-361161495)

Original PR #47747 missed methods on trait definitions.

This edit was done in GitHub. I think I got the signature of the variant right, going by the ICE debug output and the other cases above.

6 years agoRollup merge of #47840 - penpalperson:master, r=bluss
kennytm [Wed, 31 Jan 2018 08:36:06 +0000 (16:36 +0800)]
Rollup merge of #47840 - penpalperson:master, r=bluss

Marked Debug implementations for primitive types as #[inline]

Change for issue #47792.

6 years agoRollup merge of #47838 - euclio:snakecase-suggestion, r=petrochenkov
kennytm [Wed, 31 Jan 2018 08:36:05 +0000 (16:36 +0800)]
Rollup merge of #47838 - euclio:snakecase-suggestion, r=petrochenkov

use correct casing for rename suggestions

If the original name is uppercase, use camel case. Otherwise, use snake
case.

6 years agoAuto merge of #45752 - estebank:highlight-primary, r=nikomatsakis
bors [Wed, 31 Jan 2018 07:53:57 +0000 (07:53 +0000)]
Auto merge of #45752 - estebank:highlight-primary, r=nikomatsakis

Highlight code on diagnostics when underlined

Highlight the label's span with the respective color:

<img width="692" alt="" src="https://user-images.githubusercontent.com/1606434/32411026-a1842482-c18d-11e7-9933-6510eefbad19.png">

Fix #42112.

6 years agoAuto merge of #46666 - clarcharr:duration_core, r=alexcrichton
bors [Wed, 31 Jan 2018 04:16:12 +0000 (04:16 +0000)]
Auto merge of #46666 - clarcharr:duration_core, r=alexcrichton

Move Duration to libcore

Fixes #46520; should be merged after #46508.

6 years agoFix ICE when assigning references to a static mut with NLL
Aaron Hill [Wed, 31 Jan 2018 02:44:35 +0000 (21:44 -0500)]
Fix ICE when assigning references to a static mut with NLL

is_unsafe_place only filters out statics in the rhs, not the lhs. Since
it's possible to reach that 'Place::Static', we handle statics the same
way as we do locals.

Fixes #47789

6 years agowherein the parens lint keeps its own counsel re args in nested macros
Zack M. Davis [Wed, 31 Jan 2018 01:13:05 +0000 (17:13 -0800)]
wherein the parens lint keeps its own counsel re args in nested macros

In #46980 ("in which the unused-parens lint..." (14982db2d6)), the
unused-parens lint was made to check function and method arguments,
which it previously did not (seemingly due to oversight rather than
willful design). However, in #47775 and discussion thereon,
user–developers of Geal/nom and graphql-rust/juniper reported that the
lint was seemingly erroneously triggering on certain complex macros in
those projects. While this doesn't seem like a bug in the lint in the
particular strict sense that the expanded code would, in fact, contain
unncecessary parentheses, it also doesn't seem like the sort of thing
macro authors should have to think about: the spirit of the
unused-parens lint is to prevent needless clutter in code, not to give
macro authors extra heartache in the handling of token trees.

We propose the expediency of declining to lint unused parentheses in
function or method args inside of nested expansions: we believe that
this should eliminate the petty, troublesome lint warnings reported
in the issue, without forgoing the benefits of the lint in simpler
macros.

It seemed like too much duplicated code for the `Call` and `MethodCall`
match arms to duplicate the nested-macro check in addition to each
having their own `for` loop, so this occasioned a slight refactor so
that the function and method cases could share code—hopefully the
overall intent is at least no less clear to the gentle reader.

This is concerning #47775.

6 years agoFix ICE when reading non-UTF-8 input from stdin
varkor [Wed, 31 Jan 2018 00:59:20 +0000 (00:59 +0000)]
Fix ICE when reading non-UTF-8 input from stdin

Fixes #22387.

6 years agoAdd wasm_syscall feature to build system
Diggory Blake [Thu, 11 Jan 2018 17:51:49 +0000 (17:51 +0000)]
Add wasm_syscall feature to build system

6 years agoImplement extensible syscall interface for wasm
Diggory Blake [Sun, 31 Dec 2017 16:40:34 +0000 (16:40 +0000)]
Implement extensible syscall interface for wasm

6 years agorustc_trans: keep LLVM types for trait objects anonymous.
Eduard-Mihai Burtescu [Tue, 30 Jan 2018 22:23:25 +0000 (00:23 +0200)]
rustc_trans: keep LLVM types for trait objects anonymous.

6 years agostabilize match_beginning_vert
Jonathan Goodman [Tue, 30 Jan 2018 20:56:02 +0000 (14:56 -0600)]
stabilize match_beginning_vert

6 years ago[MSP430] Don't enable trap_unreachable option by default on msp.
Vadzim Dambrouski [Tue, 30 Jan 2018 21:57:30 +0000 (00:57 +0300)]
[MSP430] Don't enable trap_unreachable option by default on msp.

Since MSP430 doesn't meaningfully support faulting on illegal
instructions, LLVM generates a call to abort() function instead
of a trap instruction. Such calls are 4 bytes long, and that is
too much overhead for such small target.

6 years agorustc: Add an option to default hidden visibility
Alex Crichton [Tue, 30 Jan 2018 19:54:07 +0000 (11:54 -0800)]
rustc: Add an option to default hidden visibility

This commit adds a new option to target specifictions to specify that symbols
should be "hidden" visibility by default in LLVM. While there are no existing
targets that take advantage of this the `wasm32-unknown-unknown` target will
soon start to use this visibility. The LLD linker currently interprets `hidden`
as "don't export this from the wasm module" which is what we want for 90% of our
functions. While the LLD linker does have a "export this symbol" argument which
is what we use for other linkers, it was also somewhat easier to do this change
instead which'll involve less arguments flying around. Additionally there's no
need for non-`hidden` visibility for most of our symbols!

This change should not immediately impact the wasm targets as-is, but rather
this is laying the foundations for soon integrating LLD as a linker for wasm
code.

6 years agorustc: Add some defines for LLVM 7 compat
Alex Crichton [Tue, 30 Jan 2018 19:53:18 +0000 (11:53 -0800)]
rustc: Add some defines for LLVM 7 compat

I was testing out the tip support to see what's going on with wasm, and this was
I believe the only issue encountered with LLVM 7 support so far.

6 years agotrack intercrate ambiguity only when there is a coherence error
Niko Matsakis [Fri, 26 Jan 2018 22:21:43 +0000 (17:21 -0500)]
track intercrate ambiguity only when there is a coherence error

6 years agochange `overlapping_impls` to take a tcx and create the infcx
Niko Matsakis [Mon, 29 Jan 2018 22:40:13 +0000 (17:40 -0500)]
change `overlapping_impls` to take a tcx and create the infcx

6 years agomake `overlapping_impls` call closures instead of returning
Niko Matsakis [Mon, 29 Jan 2018 23:20:24 +0000 (18:20 -0500)]
make `overlapping_impls` call closures instead of returning

6 years agoIgnore run-pass/sse2 when using system LLVM
Josh Stone [Tue, 30 Jan 2018 18:18:54 +0000 (10:18 -0800)]
Ignore run-pass/sse2 when using system LLVM

This is a test of `target_feature`, which needs a rust-specific patch to
LLVM to add `MCSubtargetInfo::getFeatureTable()`.

6 years agoUpdate associated constants error message
Guillaume Gomez [Tue, 30 Jan 2018 13:20:20 +0000 (14:20 +0100)]
Update associated constants error message

6 years agoDo not ignore lifetime bounds in Copy impls
Santiago Pastorino [Tue, 30 Jan 2018 14:20:57 +0000 (11:20 -0300)]
Do not ignore lifetime bounds in Copy impls

Closes #29149

6 years agoChanged back inline markings.
penpalperson [Tue, 30 Jan 2018 12:31:38 +0000 (05:31 -0700)]
Changed back inline markings.

6 years agorustc_trans: clobber $1 (aka $at) on mips
James Cowgill [Wed, 24 Jan 2018 11:50:10 +0000 (11:50 +0000)]
rustc_trans: clobber $1 (aka $at) on mips

This copies what clang does. There is a long explanation as to why this
is needed in the clang source (tools/clang/lib/Basic/Targets/Mips.h).

6 years agostd: use more portable error number in from_raw_os_error docs
James Cowgill [Tue, 23 Jan 2018 14:47:30 +0000 (14:47 +0000)]
std: use more portable error number in from_raw_os_error docs

On MIPS, error number 98 is not EADDRINUSE (it is EPROTOTYPE). To fix the
resulting test failure this causes, use a more portable error number in
the example documentation. EINVAL shold be more reliable because it was
defined in the original Unix as 22 so hopefully most derivatives have
defined it the same way.

6 years agoThe `static` keyword can now begin expressions
John Kåre Alsaker [Mon, 29 Jan 2018 09:53:20 +0000 (10:53 +0100)]
The `static` keyword can now begin expressions

6 years agoForce locals to be live after they are borrowed for immovable generators. Fixes ...
John Kåre Alsaker [Mon, 29 Jan 2018 07:48:56 +0000 (08:48 +0100)]
Force locals to be live after they are borrowed for immovable generators. Fixes #47736

6 years agoAuto merge of #47870 - kennytm:rollup, r=kennytm
bors [Tue, 30 Jan 2018 11:10:06 +0000 (11:10 +0000)]
Auto merge of #47870 - kennytm:rollup, r=kennytm

Rollup of 12 pull requests

- Successful merges: #47515, #47603, #47718, #47732, #47760, #47780, #47822, #47826, #47836, #47839, #47853, #47855
- Failed merges:

6 years agoAllow access of the state field before the generator transform. Fixes #47482, #46476
John Kåre Alsaker [Mon, 29 Jan 2018 07:29:58 +0000 (08:29 +0100)]
Allow access of the state field before the generator transform. Fixes #47482, #46476

6 years agoRollup merge of #47855 - ollie27:rustdoc_hoedown_link_title, r=QuietMisdreavus
kennytm [Tue, 30 Jan 2018 09:11:00 +0000 (17:11 +0800)]
Rollup merge of #47855 - ollie27:rustdoc_hoedown_link_title, r=QuietMisdreavus

rustdoc: Fix link title rendering with hoedown

The link title needs to be HTML escaped.

It was broken by #47046.

r? @QuietMisdreavus

6 years agoRollup merge of #47853 - rust-lang:increase-nested-groups-test-coverage, r=nikomatsakis
kennytm [Tue, 30 Jan 2018 09:10:59 +0000 (17:10 +0800)]
Rollup merge of #47853 - rust-lang:increase-nested-groups-test-coverage, r=nikomatsakis

Increase test coverage of use_nested_groups

r? @nikomatsakis

6 years agoRollup merge of #47839 - frewsxcv:frewsxcv-map-index, r=QuietMisdreavus
kennytm [Tue, 30 Jan 2018 09:10:58 +0000 (17:10 +0800)]
Rollup merge of #47839 - frewsxcv:frewsxcv-map-index, r=QuietMisdreavus

Document that `Index` ops can panic on `HashMap` & `BTreeMap`.

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

6 years agoRollup merge of #47836 - Mark-Simulacrum:stage-flags, r=alexcrichton
kennytm [Tue, 30 Jan 2018 09:10:57 +0000 (17:10 +0800)]
Rollup merge of #47836 - Mark-Simulacrum:stage-flags, r=alexcrichton

Add per-stage RUSTFLAGS: RUSTFLAGS_STAGE_{0,1,2} and RUSTFLAGS_STAGE_NOT_0

Fixes #47658.

r? @alexcrichton

6 years agoRollup merge of #47826 - gnzlbg:patch-2, r=alexcrichton
kennytm [Tue, 30 Jan 2018 09:10:56 +0000 (17:10 +0800)]
Rollup merge of #47826 - gnzlbg:patch-2, r=alexcrichton

Whitelist v7 feature for ARM and AARCH64.

Needed for `v7` features in `coresimd`.

See https://github.com/rust-lang-nursery/stdsimd/blob/b2f7be24d5043a88427f9a5258ca9a51ede6d029/coresimd/src/arm/v7.rs#L40 which used to work but doesn't anymore.

r? alexcrichton

6 years agoRollup merge of #47822 - gnzlbg:patch-1, r=alexcrichton
kennytm [Tue, 30 Jan 2018 09:10:55 +0000 (17:10 +0800)]
Rollup merge of #47822 - gnzlbg:patch-1, r=alexcrichton

Whitelist aes x86 feature flag

Required to fix https://github.com/rust-lang-nursery/stdsimd/issues/295 in stdsimd.

Closes #44544 .

r? @alexcrichton

6 years agoRollup merge of #47780 - varkor:cross-file-errors-line-col, r=estebank
kennytm [Tue, 30 Jan 2018 09:10:54 +0000 (17:10 +0800)]
Rollup merge of #47780 - varkor:cross-file-errors-line-col, r=estebank

Add line numbers and columns to error messages spanning multiple files

If an error message is emitted that spans several files, only the
primary file currently has line and column data attached. This is
useful information, even in files other than the one in which the error
occurs. We can often work out which line and column the error
corresponds to in other files — in this case it is helpful to add them
(in the case of ambiguity, the first relevant line/column is picked,
which is still helpful than none).

6 years agoRollup merge of #47760 - little-dude:master, r=alexcrichton
kennytm [Tue, 30 Jan 2018 09:10:53 +0000 (17:10 +0800)]
Rollup merge of #47760 - little-dude:master, r=alexcrichton

implement Send for process::Command on unix

closes https://github.com/rust-lang/rust/issues/47751

6 years agoRollup merge of #47732 - mark-i-m:markim_comments_0001, r=jseyfried
kennytm [Tue, 30 Jan 2018 09:10:52 +0000 (17:10 +0800)]
Rollup merge of #47732 - mark-i-m:markim_comments_0001, r=jseyfried

Run rustfmt and add doc comments to libsyntax/ext/tt/macro_parser.rs

Similar to #47603

cc @theotherphil since you reviewed my other PR :smile:

And because they are already assigned on #47603:

r? @arielb1

6 years agoRollup merge of #47718 - malbarbo:env-home-dir, r=nikomatsakis
kennytm [Tue, 30 Jan 2018 09:10:51 +0000 (17:10 +0800)]
Rollup merge of #47718 - malbarbo:env-home-dir, r=nikomatsakis

Make run-pass/env-home-dir.rs test more robust

Remove the assumption that home_dir always returns Some.

This allows the test to be executed with [cross](https://github.com/japaric/cross).

6 years agoRollup merge of #47603 - mark-i-m:markim_comments_0000, r=jseyfried
kennytm [Tue, 30 Jan 2018 09:10:49 +0000 (17:10 +0800)]
Rollup merge of #47603 - mark-i-m:markim_comments_0000, r=jseyfried

Run rustfmt and add doc comments to libsyntax/ext/tt/quoted.rs

I was already going to try to understand this code to try to implement rust-lang/rfcs#2298. I figured I would put that knowledge into comments and share... This PR contains _no changes_ to the code itself -- just formatting and comments.

I'm not sure what the best way to do this is. I plan to make more such PR for other files, but I figured it would have fewer conflicts if I do it file by file...

6 years agoRollup merge of #47515 - jimmantooth:patch-1, r=QuietMisdreavus
kennytm [Tue, 30 Jan 2018 09:10:48 +0000 (17:10 +0800)]
Rollup merge of #47515 - jimmantooth:patch-1, r=QuietMisdreavus

Punctuation and clarity fixes.