]> git.lizzy.rs Git - rust.git/log
rust.git
5 years agoUpdate new ui tests
varkor [Sun, 19 Aug 2018 23:08:01 +0000 (00:08 +0100)]
Update new ui tests

5 years agoTaking a peek
varkor [Sun, 19 Aug 2018 19:33:38 +0000 (20:33 +0100)]
Taking a peek

5 years agoFix some remaining tests
varkor [Wed, 8 Aug 2018 00:46:00 +0000 (01:46 +0100)]
Fix some remaining tests

5 years agoAvoid clone and update documentation
varkor [Wed, 8 Aug 2018 00:18:03 +0000 (01:18 +0100)]
Avoid clone and update documentation

5 years agoRefactor generic argument count check in check/mod.rs
varkor [Tue, 7 Aug 2018 23:38:31 +0000 (00:38 +0100)]
Refactor generic argument count check in check/mod.rs

5 years agoRefactor generic argument count check in method/confirm.rs
varkor [Tue, 7 Aug 2018 23:01:47 +0000 (00:01 +0100)]
Refactor generic argument count check in method/confirm.rs

5 years agoRefactor generic argument count check in astconv
varkor [Tue, 7 Aug 2018 17:53:43 +0000 (18:53 +0100)]
Refactor generic argument count check in astconv

5 years agoAdd Default for GenericParamCount
varkor [Tue, 7 Aug 2018 16:44:30 +0000 (17:44 +0100)]
Add Default for GenericParamCount

5 years agoArgs first, then params
varkor [Tue, 7 Aug 2018 16:01:12 +0000 (17:01 +0100)]
Args first, then params

5 years agoRefactor lock-step
varkor [Tue, 7 Aug 2018 11:28:08 +0000 (12:28 +0100)]
Refactor lock-step

5 years agoClean match statement
varkor [Thu, 2 Aug 2018 17:09:14 +0000 (18:09 +0100)]
Clean match statement

5 years agoConsolidate into create_substs_for_generic_args
varkor [Tue, 24 Jul 2018 16:47:31 +0000 (17:47 +0100)]
Consolidate into create_substs_for_generic_args

5 years agoRevert broken test
varkor [Tue, 24 Jul 2018 12:23:45 +0000 (13:23 +0100)]
Revert broken test

5 years agoRefactor astconv.rs (part ii)
varkor [Tue, 24 Jul 2018 01:59:22 +0000 (02:59 +0100)]
Refactor astconv.rs (part ii)

5 years agoRefactor confirm.rs (part ii)
varkor [Tue, 24 Jul 2018 01:27:18 +0000 (02:27 +0100)]
Refactor confirm.rs (part ii)

5 years agoRefactor mod/check (part viii)
varkor [Tue, 24 Jul 2018 00:43:30 +0000 (01:43 +0100)]
Refactor mod/check (part viii)

5 years agoFix behaviour in error condition
varkor [Mon, 23 Jul 2018 22:55:24 +0000 (23:55 +0100)]
Fix behaviour in error condition

5 years agoRefactor mod/check (part vii)
varkor [Mon, 23 Jul 2018 17:29:16 +0000 (18:29 +0100)]
Refactor mod/check (part vii)

5 years agoMake prohibit_generics take IntoIterators
varkor [Mon, 23 Jul 2018 13:48:37 +0000 (14:48 +0100)]
Make prohibit_generics take IntoIterators

5 years ago"Fix" annoying test
varkor [Tue, 3 Jul 2018 21:24:13 +0000 (22:24 +0100)]
"Fix" annoying test

5 years agoFix confirm.rs
varkor [Tue, 3 Jul 2018 18:55:28 +0000 (19:55 +0100)]
Fix confirm.rs

5 years agoRefactor astconv.rs
varkor [Tue, 3 Jul 2018 18:38:04 +0000 (19:38 +0100)]
Refactor astconv.rs

5 years agoRefactor confirm.rs
varkor [Tue, 3 Jul 2018 16:20:20 +0000 (17:20 +0100)]
Refactor confirm.rs

5 years agoMove lifetime calculation outside loop
varkor [Tue, 3 Jul 2018 15:14:43 +0000 (16:14 +0100)]
Move lifetime calculation outside loop

5 years agoSupress consecutive errors
varkor [Tue, 3 Jul 2018 08:53:46 +0000 (09:53 +0100)]
Supress consecutive errors

5 years agoFix param_idx calculation
varkor [Tue, 3 Jul 2018 07:10:45 +0000 (08:10 +0100)]
Fix param_idx calculation

5 years agoFix integer overflow
varkor [Mon, 2 Jul 2018 17:09:15 +0000 (18:09 +0100)]
Fix integer overflow

5 years agoFix tidy check
varkor [Thu, 28 Jun 2018 21:29:53 +0000 (22:29 +0100)]
Fix tidy check

5 years agoReplace generics_require_inlining with generics.requires_monomorphization
varkor [Thu, 28 Jun 2018 21:13:34 +0000 (22:13 +0100)]
Replace generics_require_inlining with generics.requires_monomorphization

5 years agoRefactor mod/check (part vi)
varkor [Thu, 28 Jun 2018 21:04:51 +0000 (22:04 +0100)]
Refactor mod/check (part vi)

5 years agoRefactor mod/check (part v)
varkor [Tue, 26 Jun 2018 22:34:33 +0000 (23:34 +0100)]
Refactor mod/check (part v)

5 years agoRefactor mod/check (part iv)
varkor [Tue, 26 Jun 2018 22:08:02 +0000 (23:08 +0100)]
Refactor mod/check (part iv)

5 years agoRefactor mod/check (part iii)
varkor [Tue, 26 Jun 2018 19:24:13 +0000 (20:24 +0100)]
Refactor mod/check (part iii)

5 years agoRefactor mod/check (part ii)
varkor [Tue, 26 Jun 2018 18:48:50 +0000 (19:48 +0100)]
Refactor mod/check (part ii)

5 years agoRefactor mod/check (part i)
varkor [Mon, 25 Jun 2018 18:52:50 +0000 (19:52 +0100)]
Refactor mod/check (part i)

5 years agoFix quadratic loop in confirm.rs
varkor [Fri, 22 Jun 2018 23:44:17 +0000 (00:44 +0100)]
Fix quadratic loop in confirm.rs

5 years agoReplace for_each with for
varkor [Fri, 22 Jun 2018 23:33:03 +0000 (00:33 +0100)]
Replace for_each with for

5 years agoAddress minor comments
varkor [Fri, 22 Jun 2018 23:21:35 +0000 (00:21 +0100)]
Address minor comments

5 years agoAuto merge of #53248 - nikomatsakis:nll-trivial-sized-predicate, r=eddyb
bors [Sun, 19 Aug 2018 15:22:18 +0000 (15:22 +0000)]
Auto merge of #53248 - nikomatsakis:nll-trivial-sized-predicate, r=eddyb

skip trivial `Sized` predicates

This came to about a 2% win for me in cargo. Small, but hey.

r? @eddyb

5 years agoAuto merge of #51131 - qnighy:unsized-locals, r=eddyb
bors [Sun, 19 Aug 2018 12:21:56 +0000 (12:21 +0000)]
Auto merge of #51131 - qnighy:unsized-locals, r=eddyb

Implement Unsized Rvalues

This PR is the first step to implement RFC1909: unsized rvalues (#48055).

## Implemented

- `Sized` is removed for arguments and local bindings. (under `#![feature(unsized_locals)]`)
- Unsized locations are allowed in MIR
- Unsized places and operands are correctly translated at codegen

## Not implemented in this PR

- Additional `Sized` checks:
  - tuple struct constructor (accidentally compiles now)
  - closure arguments at closure generation (accidentally compiles now)
  - upvars (ICEs now)
- Generating vtable for `fn method(self)` (ICEs now)
- VLAs: `[e; n]` where `n` isn't const
- Reduce unnecessary allocations

## Current status

- [x] Fix `__rust_probestack` (rust-lang-nursery/compiler-builtins#244)
  - [x] Get the fix merged
- [x] `#![feature(unsized_locals)]`
  - [x] Give it a tracking issue number
- [x] Lift sized checks in typeck and MIR-borrowck
  - [ ] <del>Forbid `A(unsized-expr)`</del> will be another PR
- [x] Minimum working codegen
- [x] Add more examples and fill in unimplemented codegen paths
- [ ] <del>Loosen object-safety rules (will be another PR)</del>
- [ ] <del>Implement `Box<FnOnce>` (will be another PR)</del>
- [ ] <del>Reduce temporaries (will be another PR)</del>

5 years agoAuto merge of #52972 - RalfJung:from_raw_parts_align, r=alexcrichton
bors [Sun, 19 Aug 2018 09:40:36 +0000 (09:40 +0000)]
Auto merge of #52972 - RalfJung:from_raw_parts_align, r=alexcrichton

debug_assert to ensure that from_raw_parts is only used properly aligned

This does not help nearly as much as I would hope because everybody uses the distributed libstd which is compiled without debug assertions. For this reason, I am not sure if this is even worth it. OTOH, this would have caught the misalignment fixed by https://github.com/rust-lang/rust/issues/42789 *if* there had been any tests actually using ZSTs with alignment >1 (we have a CI runner which has debug assertions in libstd enabled), and it seems to currently [fail in the rg testsuite](https://ci.appveyor.com/project/rust-lang/rust/build/1.0.8403/job/v7dfdcgn8ay5j6sb). So maybe it is worth it, after all.

I have seen the attribute `#[rustc_inherit_overflow_checks]` in some places, does that make it so that the *caller's* debug status is relevant? Is there a similar attribute for `debug_assert!`? That could even subsume `rustc_inherit_overflow_checks`: Something like `rustc_inherit_debug_flag` could affect *all* places that change the generated code depending on whether we are in debug or release mode. In fact, given that we have to keep around the MIR for generic functions anyway, is there ever a reason *not* to handle the debug flag that way? I guess currently we apply debug flags like `cfg` so this is dropped early during the MIR pipeline?

EDIT: I learned from @eddyb that because of how `debug_assert!` works, this is not realistic. Well, we could still have it for the rustc CI runs and then maybe, eventually, when libstd gets compiled client-side and there is both a debug and a release build... then this will also benefit users.^^

5 years agoIntegrate OperandValue::UnsizedRef into OperandValue::Ref.
Masaki Hara [Fri, 3 Aug 2018 14:50:13 +0000 (23:50 +0900)]
Integrate OperandValue::UnsizedRef into OperandValue::Ref.

5 years agoIntegrate PassMode::UnsizedIndirect into PassMode::Indirect.
Masaki Hara [Fri, 3 Aug 2018 14:32:21 +0000 (23:32 +0900)]
Integrate PassMode::UnsizedIndirect into PassMode::Indirect.

5 years agoRemove a now-unnecessary paragraph.
Masaki Hara [Thu, 12 Jul 2018 11:27:10 +0000 (20:27 +0900)]
Remove a now-unnecessary paragraph.

The paragraph described a case where we can't optimize away repetitive
dynamic stack allocation. However, as arielb1 pointed out, it can
actually optimizable by dynamically delaying the stack unwinding.

5 years agoUpdate the unstable book regarding [e; dyn n].
Masaki Hara [Thu, 12 Jul 2018 11:26:13 +0000 (20:26 +0900)]
Update the unstable book regarding [e; dyn n].

5 years agoAdd an unstable-book article about unsized_locals.
Masaki Hara [Tue, 29 May 2018 15:33:01 +0000 (00:33 +0900)]
Add an unstable-book article about unsized_locals.

5 years agoImplement simple codegen for unsized rvalues.
Masaki Hara [Mon, 28 May 2018 15:12:55 +0000 (00:12 +0900)]
Implement simple codegen for unsized rvalues.

5 years agoLift some Sized checks.
Masaki Hara [Mon, 28 May 2018 15:11:34 +0000 (00:11 +0900)]
Lift some Sized checks.

5 years agoAdd #![feature(unsized_locals)].
Masaki Hara [Mon, 28 May 2018 15:10:09 +0000 (00:10 +0900)]
Add #![feature(unsized_locals)].

5 years agoAdd Builder::array_alloca.
Masaki Hara [Mon, 28 May 2018 15:07:23 +0000 (00:07 +0900)]
Add Builder::array_alloca.

5 years agoAdd notes on unsized argument errors.
Masaki Hara [Tue, 29 May 2018 15:25:56 +0000 (00:25 +0900)]
Add notes on unsized argument errors.

5 years agoAuto merge of #52592 - eddyb:or-default, r=Mark-Simulacrum
bors [Sat, 18 Aug 2018 21:58:37 +0000 (21:58 +0000)]
Auto merge of #52592 - eddyb:or-default, r=Mark-Simulacrum

Use the new Entry::or_default method where possible.

5 years agoAuto merge of #53324 - alexreg:self_in_typedefs, r=eddyb
bors [Sat, 18 Aug 2018 19:34:24 +0000 (19:34 +0000)]
Auto merge of #53324 - alexreg:self_in_typedefs, r=eddyb

`Self` in type definitions (self_in_typedefs)

This implements the [`self_in_typedefs` feature](https://github.com/rust-lang/rfcs/blob/master/text/2300-self-in-typedefs.md) ([tracking issue 49303](https://github.com/rust-lang/rust/issues/49303)).

r? @eddyb

CC @Centril

5 years agoAdded page for feature to unstable book.
Alexander Regueiro [Tue, 14 Aug 2018 20:26:33 +0000 (21:26 +0100)]
Added page for feature to unstable book.

5 years agoAdded tests.
Alexander Regueiro [Wed, 15 Aug 2018 01:24:05 +0000 (02:24 +0100)]
Added tests.

5 years agoAdded feature gate.
Alexander Regueiro [Tue, 14 Aug 2018 17:45:44 +0000 (18:45 +0100)]
Added feature gate.

5 years agoUpdated diagnostics.
Alexander Regueiro [Tue, 14 Aug 2018 17:29:53 +0000 (18:29 +0100)]
Updated diagnostics.

5 years agoResolve `Self` within type definitions.
Alexander Regueiro [Tue, 14 Aug 2018 01:49:06 +0000 (02:49 +0100)]
Resolve `Self` within type definitions.

Currently type definitions include `struct`, `enum`, `union`, `existential type`.

5 years agoUse the new Entry::or_default method where possible.
Eduard-Mihai Burtescu [Sat, 21 Jul 2018 19:43:31 +0000 (22:43 +0300)]
Use the new Entry::or_default method where possible.

5 years agoAuto merge of #53436 - cuviper:trace_fn-stop, r=alexcrichton
bors [Sat, 18 Aug 2018 17:15:31 +0000 (17:15 +0000)]
Auto merge of #53436 - cuviper:trace_fn-stop, r=alexcrichton

std: stop backtracing when the frames are full

This is a defensive measure to mitigate the infinite unwind loop seen in #53372.  That case will still repeatedly unwind `__rust_try`, but now it will at least stop when `cx.frames` is full.

r? @alexcrichton

5 years agoAuto merge of #53286 - nagisa:cast-assumes, r=eddyb
bors [Sat, 18 Aug 2018 14:35:42 +0000 (14:35 +0000)]
Auto merge of #53286 - nagisa:cast-assumes, r=eddyb

Do not generate assumes for plain integer casts

I gave up on making anything more elegant for now.

r? @eddyb

5 years agoAuto merge of #53175 - matthewjasper:more-return-stuff, r=nikomatsakis
bors [Sat, 18 Aug 2018 11:57:46 +0000 (11:57 +0000)]
Auto merge of #53175 - matthewjasper:more-return-stuff, r=nikomatsakis

[NLL] Returns are interesting for free regions

Based on #53088 - creating now to get feedback.

Closes #51175

* Make assigning to the return type interesting.
* Use "returning this value" instead of "return" in error messages.
* Prefer one of the explanations that we have a name for to a generic interesting cause in some cases.
* Treat causes that involve the destination of a call like assignments.

5 years agoAuto merge of #52553 - Pazzaz:vecdeque-append, r=SimonSapin
bors [Sat, 18 Aug 2018 08:56:12 +0000 (08:56 +0000)]
Auto merge of #52553 - Pazzaz:vecdeque-append, r=SimonSapin

Non-naive implementation of `VecDeque.append`

Replaces the old, simple implementation with a more manual (and **unsafe** ðŸ˜±) one. I've added 1 more test and verified that it covers all 6 code paths in the function.

This new implementation was about 60% faster than the old naive one when I tried benchmarking it.

5 years agoAuto merge of #53437 - alexcrichton:fix-target-features, r=michaelwoerister
bors [Sat, 18 Aug 2018 02:50:39 +0000 (02:50 +0000)]
Auto merge of #53437 - alexcrichton:fix-target-features, r=michaelwoerister

Set more llvm function attributes for __rust_try

This shim is generated elsewhere in the compiler so this commit adds support to
ensure it goes through similar paths as the rest of the compiler to set llvm
function attributes like target features.

cc #53372

5 years agoAuto merge of #53369 - pnkfelix:partial-53351-make-some-ported-compile-fail-tests...
bors [Fri, 17 Aug 2018 23:33:31 +0000 (23:33 +0000)]
Auto merge of #53369 - pnkfelix:partial-53351-make-some-ported-compile-fail-tests-more-robust-wrt-nll, r=davidtwco

Make some ported cfail tests robust w.r.t. NLL

Updated the most glaring instances of weak tests w.r.t. NLL that came from #53196.

See also the bulletpoint list on #53351.

5 years agoAuto merge of #53356 - michaelwoerister:itlto, r=alexcrichton
bors [Fri, 17 Aug 2018 21:24:22 +0000 (21:24 +0000)]
Auto merge of #53356 - michaelwoerister:itlto, r=alexcrichton

Preliminary work for incremental ThinLTO (CGU name edition)

Bring back the first half of #52266 but hopefully without the performance regression.

5 years agoAuto merge of #50911 - petrochenkov:macuse, r=alexcrichton
bors [Fri, 17 Aug 2018 19:10:34 +0000 (19:10 +0000)]
Auto merge of #50911 - petrochenkov:macuse, r=alexcrichton

Stabilize `use_extern_macros`

Closes https://github.com/rust-lang/rust/issues/35896

5 years agoAuto merge of #53449 - frewsxcv:rollup, r=frewsxcv
bors [Fri, 17 Aug 2018 17:00:10 +0000 (17:00 +0000)]
Auto merge of #53449 - frewsxcv:rollup, r=frewsxcv

Rollup of 11 pull requests

Successful merges:

 - #52858 (Implement Iterator::size_hint for Elaborator.)
 - #53321 (Fix usage of `wasm_target_feature`)
 - #53326 ([nll] add regression test for issue #27868)
 - #53347 (rustc_resolve: don't allow paths starting with `::crate`.)
 - #53349 ([nll] add tests for #48697 and #30104)
 - #53357 (Pretty print btreemap for GDB)
 - #53358 (`{to,from}_{ne,le,be}_bytes` for unsigned integer types)
 - #53406 (Do not suggest conversion method that is already there)
 - #53407 (make more ported compile fail tests more robust w.r.t. NLL)
 - #53413 (Warn that `#![feature(rust_2018_preview)]` is implied when the edition is set to Rust 2018.)
 - #53434 (wasm: Remove --strip-debug argument to LLD)

Failed merges:

r? @ghost

5 years agoRollup merge of #53434 - alexcrichton:remove-strip-debug, r=yurydelendik
Corey Farwell [Fri, 17 Aug 2018 15:23:45 +0000 (08:23 -0700)]
Rollup merge of #53434 - alexcrichton:remove-strip-debug, r=yurydelendik

wasm: Remove --strip-debug argument to LLD

Originally added in #52887 this commit disables passing `--strip-debug` to LLD
when optimized. This bring back the original bug of emitting broken debuginfo
but currently it *also* strips the `name` section which makes it very difficult
to inspect the final binary. A real fix is happening at
https://reviews.llvm.org/D50729 and we can reevaluate once we've updated LLD to
have that commit.

5 years agoRollup merge of #53413 - eddyb:featured-in-the-latest-edition, r=varkor
Corey Farwell [Fri, 17 Aug 2018 15:23:44 +0000 (08:23 -0700)]
Rollup merge of #53413 - eddyb:featured-in-the-latest-edition, r=varkor

Warn that `#![feature(rust_2018_preview)]` is implied when the edition is set to Rust 2018.

cc @varkor @petrochenkov @joshtriplett

5 years agoRollup merge of #53407 - pnkfelix:partial-53351-make-more-ported-compile-fail-tests...
Corey Farwell [Fri, 17 Aug 2018 15:23:43 +0000 (08:23 -0700)]
Rollup merge of #53407 - pnkfelix:partial-53351-make-more-ported-compile-fail-tests-more-robust-wrt-nll, r=nikomatsakis

make more ported compile fail tests more robust w.r.t. NLL

This is similar to PR #53369, except it covers a disjoint (and much smaller) set of tests that I needed to look at more carefully before being 100% certain they were the same kind of issue.

5 years agoRollup merge of #53406 - estebank:to_string-to_string, r=michaelwoerister
Corey Farwell [Fri, 17 Aug 2018 15:23:42 +0000 (08:23 -0700)]
Rollup merge of #53406 - estebank:to_string-to_string, r=michaelwoerister

Do not suggest conversion method that is already there

Fix #53348.

5 years agoRollup merge of #53358 - SimonSapin:int-bytes, r=shepmaster
Corey Farwell [Fri, 17 Aug 2018 15:23:40 +0000 (08:23 -0700)]
Rollup merge of #53358 - SimonSapin:int-bytes, r=shepmaster

`{to,from}_{ne,le,be}_bytes` for unsigned integer types

Same as https://github.com/rust-lang/rust/pull/51919 did for signed integers.

Tracking issue: https://github.com/rust-lang/rust/issues/52963

5 years agoRollup merge of #53357 - fukatani:pretty-print-btreemap, r=michaelwoerister
Corey Farwell [Fri, 17 Aug 2018 15:23:39 +0000 (08:23 -0700)]
Rollup merge of #53357 - fukatani:pretty-print-btreemap, r=michaelwoerister

Pretty print btreemap for GDB

Merge #53112 first, please.

5 years agoRollup merge of #53349 - memoryruins:nll-tests, r=nikomatsakis
Corey Farwell [Fri, 17 Aug 2018 15:23:38 +0000 (08:23 -0700)]
Rollup merge of #53349 - memoryruins:nll-tests, r=nikomatsakis

[nll] add tests for #48697 and #30104

Adds tests for the following issues:
- #48697 ``[NLL] ICE: unexpected region for local data with reference to closure``
- #30104 ``Destructuring boxes into multiple mutable references seems broken``

r? @nikomatsakis

5 years agoRollup merge of #53347 - eddyb:no-crate-in-root, r=petrochenkov
Corey Farwell [Fri, 17 Aug 2018 15:23:36 +0000 (08:23 -0700)]
Rollup merge of #53347 - eddyb:no-crate-in-root, r=petrochenkov

rustc_resolve: don't allow paths starting with `::crate`.

cc @aturon @joshtriplett
r? @petrochenkov

5 years agoRollup merge of #53326 - memoryruins:issue-27868-test, r=nikomatsakis
Corey Farwell [Fri, 17 Aug 2018 15:23:35 +0000 (08:23 -0700)]
Rollup merge of #53326 - memoryruins:issue-27868-test, r=nikomatsakis

[nll] add regression test for issue #27868

Adds a test for #27868 ``Inconsistent evaluation order for assignment operations``

apart of #47366 ``tracking issue for bugs fixed by the MIR borrow checker or NLL``

r? @nikomatsakis

5 years agoRollup merge of #53321 - alexcrichton:wasm-target-feature, r=nikomatsakis
Corey Farwell [Fri, 17 Aug 2018 15:23:34 +0000 (08:23 -0700)]
Rollup merge of #53321 - alexcrichton:wasm-target-feature, r=nikomatsakis

Fix usage of `wasm_target_feature`

Currently usage results in:

```
error: internal compiler error: librustc_typeck/collect.rs:1928: unknown target feature gate wasm_target_feature

thread 'main' panicked at 'Box<Any>', librustc_errors/lib.rs:579:9
note: Run with `RUST_BACKTRACE=1` for a backtrace.
error: aborting due to previous error

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.30.0-nightly (d5a448b3f 2018-08-13) running on x86_64-unknown-linux-gnu

note: compiler flags: -C debuginfo=2 -C linker=/tmp/lld-shim -C incremental --crate-type lib

note: some of the compiler flags provided by cargo are hidden

error: Could not compile `coresimd`.

To learn more, run the command again with --verbose.
```

and hopefully this should fix the ICE!

5 years agoRollup merge of #52858 - frewsxcv:frewsxcv-elaborator, r=SimonSapin
Corey Farwell [Fri, 17 Aug 2018 15:23:33 +0000 (08:23 -0700)]
Rollup merge of #52858 - frewsxcv:frewsxcv-elaborator, r=SimonSapin

Implement Iterator::size_hint for Elaborator.

None

5 years agoAuto merge of #53288 - RalfJung:dropck, r=nikomatsakis
bors [Fri, 17 Aug 2018 14:16:54 +0000 (14:16 +0000)]
Auto merge of #53288 - RalfJung:dropck, r=nikomatsakis

unions are not always trivially dropable

Fixes #52786

r? @nikomatsakis

5 years agoGratuitous at byte boundaries in hex i32 literals in some doc-tests
Simon Sapin [Fri, 17 Aug 2018 12:01:57 +0000 (14:01 +0200)]
Gratuitous at byte boundaries in hex i32 literals in some doc-tests

5 years agoAuto merge of #53190 - sekineh:thumb-cortex-m, r=jamesmunns
bors [Fri, 17 Aug 2018 10:40:25 +0000 (10:40 +0000)]
Auto merge of #53190 - sekineh:thumb-cortex-m, r=jamesmunns

Add crate build test for `thumb*` targets. [IRR-2018-embedded]

## Summary

This PR adds `run-make` test that compiles `cortex-m` crate for all supported `thumb*-none-*` targets using `cargo` and stage2 `rustc`.

- Supported `thumb*-none-*` targets:
  - thumbv6m-none-eabi (Bare Cortex-M0, M0+, M1)
  - thumbv7em-none-eabi (Bare Cortex-M4, M7)
  - thumbv7em-none-eabihf (Bare Cortex-M4F, M7F, FPU, hardfloat)
  - thumbv7m-none-eabi (Bare Cortex-M3)

## How to run & Example output
I tested locally and all targets succeeded like below:
```
./x.py clean
./x.py test --target thumbv6m-none-eabi,thumbv7em-none-eabi,thumbv7em-none-eabihf,thumbv7m-none-eabi src/test/run-make
```
```
Check compiletest suite=run-make mode=run-make (x86_64-unknown-linux-gnu -> thumbv6m-none-eabi)

running 5 tests
.....
test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out
```

## How to re-run

Remove `stamp` file for the test run.
```
rm build/x86_64-unknown-linux-gnu/test/run-make/thumb-none-cortex-m/stamp
```
Then run `test`
```
./x.py test --target thumbv6m-none-eabi,thumbv7em-none-eabi,thumbv7em-none-eabihf,thumbv7m-none-eabi src/test/run-make
(snip)
running 5 tests
iiii.
test result: ok. 1 passed; 0 failed; 4 ignored; 0 measured; 0 filtered out
```

## Artifacts

You can examine the artifacts under the directory below:
```
sekineh@sekineh-VirtualBox:~/rustme10$ ls -l build/x86_64-unknown-linux-gnu/test/run-make/thumb-none-cortex-m/thumb-none-cortex-m/
total 4
drwxrwxr-x 7 sekineh sekineh 4096  8月 14 22:40 cortex-m
```
where `build/x86_64-unknown-linux-gnu/test/run-make/thumb-none-cortex-m/thumb-none-cortex-m/` is came from TMPDIR variable.

## Other notes

For `test.rs` modification, I used the same logic as:
- https://github.com/rust-lang/rust/blame/d8b3c830fbcdd14d085209a8dcc3399151f3286a/src/bootstrap/dist.rs#L652-L657
```
            if builder.no_std(target) == Some(true) {
                // the `test` doesn't compile for no-std targets
                builder.ensure(compile::Std { compiler, target });
            } else {
                builder.ensure(compile::Test { compiler, target });
            }
```
It is a useful snippet when adding `no_std` support to `src/bootstrap` code.

CC @kennytm @jamesmunns @nerdyvaishali

5 years agoFix undesirable fallout
Vadim Petrochenkov [Fri, 17 Aug 2018 10:17:39 +0000 (13:17 +0300)]
Fix undesirable fallout

compile-fail-fulldeps/proc-macro/proc-macro-attributes.rs - resolution change for derive helper attributes with the same name as derive itself
run-pass/macro-comma-support.rs - indeterminate resolutions for macros in expression positions
ui/issues/issue-49074.rs - diagnostics regression, not enough recovery to report the second error
ui/object-lifetime/object-lifetime-default.stderr - unstable diagnostics?

5 years agoStabilize `use_extern_macros`
Vadim Petrochenkov [Mon, 14 May 2018 00:22:52 +0000 (03:22 +0300)]
Stabilize `use_extern_macros`

5 years agorustc_resolve: don't allow paths starting with `::crate`.
Eduard-Mihai Burtescu [Tue, 14 Aug 2018 09:54:43 +0000 (12:54 +0300)]
rustc_resolve: don't allow paths starting with `::crate`.

5 years agoAuto merge of #53383 - nnethercote:HybridIdxSetBuf, r=nikomatsakis
bors [Fri, 17 Aug 2018 07:20:23 +0000 (07:20 +0000)]
Auto merge of #53383 - nnethercote:HybridIdxSetBuf, r=nikomatsakis

Speed up NLL with HybridIdxSetBuf.

It's a sparse-when-small but dense-when-large index set that is very
efficient for sets that (a) have few elements, (b) have large
universe_size values, and (c) are cleared frequently. Which makes it
perfect for the `gen_set` and `kill_set` sets used by the new borrow
checker.

This patch reduces `tuple-stress`'s NLL-check time by 40%, and up to 12%
for several other benchmarks. And it halves the max-rss for `keccak`,
and has smaller wins for `inflate` and `clap-rs`.

5 years agofix license
Ralf Jung [Thu, 16 Aug 2018 18:36:34 +0000 (20:36 +0200)]
fix license

5 years agoImplement Iterator::size_hint for Elaborator.
Corey Farwell [Mon, 30 Jul 2018 13:07:51 +0000 (09:07 -0400)]
Implement Iterator::size_hint for Elaborator.

5 years agoAuto merge of #53427 - eddyb:uniform-paths-diagnostics, r=varkor
bors [Fri, 17 Aug 2018 00:28:16 +0000 (00:28 +0000)]
Auto merge of #53427 - eddyb:uniform-paths-diagnostics, r=varkor

rustc_resolve: overhaul `#![feature(uniform_paths)]` error reporting.

Fixes #53408 by only considering external crates to conflict within their (type/module) namespace, *not* with the value or macro namespaces, and also by adding a special-cased error for redundant `use crate_name;` imports (without actually allowing them).
Also, all canaries for a given import are grouped into one diagnostic per namespace, in order to make block-scoped ambiguities clearer.
See changed/added tests for more details.

r? @petrochenkov cc @aturon @joshtriplett

5 years agorustc_resolve: overhaul `#![feature(uniform_paths)]` error reporting.
Eduard-Mihai Burtescu [Thu, 16 Aug 2018 12:59:33 +0000 (15:59 +0300)]
rustc_resolve: overhaul `#![feature(uniform_paths)]` error reporting.

5 years agoAuto merge of #53397 - varkor:feature-collector-expand-visitor, r=nikomatsakis
bors [Thu, 16 Aug 2018 22:11:58 +0000 (22:11 +0000)]
Auto merge of #53397 - varkor:feature-collector-expand-visitor, r=nikomatsakis

Visit all attributes for feature collection

Previously feature attributes were just collected on item-like "things" as well as exported macros and crate attributes. This ignored some places feature attributes could be specified, such as on enum variants.

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

5 years agoSet more llvm function attributes for __rust_try
Alex Crichton [Thu, 16 Aug 2018 20:19:04 +0000 (13:19 -0700)]
Set more llvm function attributes for __rust_try

This shim is generated elsewhere in the compiler so this commit adds support to
ensure it goes through similar paths as the rest of the compiler to set llvm
function attributes like target features.

cc #53372

5 years agostd: stop backtracing when the frames are full
Josh Stone [Thu, 16 Aug 2018 18:26:27 +0000 (11:26 -0700)]
std: stop backtracing when the frames are full

5 years agoAuto merge of #53433 - kennytm:rollup, r=kennytm
bors [Thu, 16 Aug 2018 17:53:29 +0000 (17:53 +0000)]
Auto merge of #53433 - kennytm:rollup, r=kennytm

Rollup of 10 pull requests

Successful merges:

 - #52946 (Documented impl From on line 367 of libserialize/json.rs)
 - #53234 (Remove Travis shutdown debug scripts, and remove CI-specific DNS settings)
 - #53313 (Two small improvements)
 - #53360 (Addressed #51602)
 - #53364 (Warn if the user tries to use GATs)
 - #53373 (Tweak unclosed delimiter parser error)
 - #53377 (std: Use target_pointer_width for BACKTRACE_ELF_SIZE)
 - #53395 (Use #[non_exhaustive] on internal enums)
 - #53399 (Tidy: ignore non-Markdown files when linting for the Unstable Book)
 - #53412 (syntax_ext: remove leftover span_err_if_not_stage0 macro.)

5 years agowasm: Remove --strip-debug argument to LLD
Alex Crichton [Thu, 16 Aug 2018 17:17:06 +0000 (10:17 -0700)]
wasm: Remove --strip-debug argument to LLD

Originally added in #52887 this commit disables passing `--strip-debug` to LLD
when optimized. This bring back the original bug of emitting broken debuginfo
but currently it *also* strips the `name` section which makes it very difficult
to inspect the final binary. A real fix is happening at
https://reviews.llvm.org/D50729 and we can reevaluate once we've updated LLD to
have that commit.

5 years agoRollup merge of #53234 - kennytm:debug-9696, r=alexcrichton
kennytm [Thu, 16 Aug 2018 16:54:45 +0000 (00:54 +0800)]
Rollup merge of #53234 - kennytm:debug-9696, r=alexcrichton

Remove Travis shutdown debug scripts, and remove CI-specific DNS settings

Since the cause of the host shutdown (travis-ci/travis-ci#4924) is found, we could revert the shutdown debug attempts to shorten the logs.

Additionally, we're pretty sure a custom DNS (added in  will not help travis-ci/travis-ci#9696, so reverting that part of #51420 to reduce CI-specific settings.

5 years agoRollup merge of #53412 - eddyb:stage-who, r=alexcrichton
kennytm [Thu, 16 Aug 2018 16:13:29 +0000 (00:13 +0800)]
Rollup merge of #53412 - eddyb:stage-who, r=alexcrichton

 syntax_ext: remove leftover span_err_if_not_stage0 macro.

I believe this is the right fix for #53380, although I'm not sure what happened.
My guess is this copy of the macro was accidentally missed when others were removed?

cc @matthewjasper @varkor (please do not put this in a rollup, in case it fails)

5 years agoRollup merge of #53399 - varkor:ignore-non-md-unstable_book, r=nikomatsakis
kennytm [Thu, 16 Aug 2018 16:13:27 +0000 (00:13 +0800)]
Rollup merge of #53399 - varkor:ignore-non-md-unstable_book, r=nikomatsakis

Tidy: ignore non-Markdown files when linting for the Unstable Book

Previously, any file would be assumed a `.md`, which is annoying when files like `.DS_STORE` slip in and then cause tidy errors.

5 years agoRollup merge of #53395 - varkor:__Nonexhaustive-to-non_exhaustive, r=shepmaster
kennytm [Thu, 16 Aug 2018 16:13:26 +0000 (00:13 +0800)]
Rollup merge of #53395 - varkor:__Nonexhaustive-to-non_exhaustive, r=shepmaster

Use #[non_exhaustive] on internal enums

This replaces `__Nonexhaustive` variants (and variants thereof)  with `#[non_exhaustive]`. These were mostly unstable previously, with the exception of the `cloudabi` enums and `Level` in proc_macro: these were `#[doc(hidden)]`, so clearly intended not to be used directly. It should be safe to replace all of these.

5 years agoRollup merge of #53377 - cuviper:pointer-elf_size, r=alexcrichton
kennytm [Thu, 16 Aug 2018 16:13:25 +0000 (00:13 +0800)]
Rollup merge of #53377 - cuviper:pointer-elf_size, r=alexcrichton

std: Use target_pointer_width for BACKTRACE_ELF_SIZE

The former code used `target.contains("64")` to detect Elf64 targets,
but this is inaccurate in a few cases:

- `s390x-unknown-linux-gnu` is 64-bit
- `sparcv9-sun-solaris` is 64-bit
- `x86_64-unknown-linux-gnux32` is 32-bit

Instead the `std` build script can use `CARGO_CFG_TARGET_POINTER_WIDTH`
to reliably detect 64-bit targets for libbacktrace.

Also update to backtrace-sys 0.1.24 for alexcrichton/backtrace-rs#122.