]> git.lizzy.rs Git - rust.git/log
rust.git
5 years agoRollup merge of #55469 - pnkfelix:issue-54477-regression-tests, r=nikomatsakis
Pietro Albini [Thu, 1 Nov 2018 10:55:20 +0000 (11:55 +0100)]
Rollup merge of #55469 - pnkfelix:issue-54477-regression-tests, r=nikomatsakis

Regression tests for issue #54477.

At some point someone may want to revisit PR #53564

it would be really good to have regression tests for #54477 before that happens. :)

5 years agoRollup merge of #55280 - vlad20012:add-libproc_macro-to-src-disrt, r=Mark-Simulacrum
Pietro Albini [Thu, 1 Nov 2018 10:55:19 +0000 (11:55 +0100)]
Rollup merge of #55280 - vlad20012:add-libproc_macro-to-src-disrt, r=Mark-Simulacrum

Add libproc_macro to rust-src distribution

Fixes #55279

5 years agoAuto merge of #55548 - alexcrichton:bump, r=Mark-Simulacrum
bors [Thu, 1 Nov 2018 06:26:28 +0000 (06:26 +0000)]
Auto merge of #55548 - alexcrichton:bump, r=Mark-Simulacrum

Bump nightly to 1.32.0

* Also update the bootstrap compiler
* Update cargo to 1.32.0
* Clean out stage0 annotations

5 years agoAuto merge of #55521 - nrc:rls-fix, r=petrochenkov
bors [Thu, 1 Nov 2018 02:41:00 +0000 (02:41 +0000)]
Auto merge of #55521 - nrc:rls-fix, r=petrochenkov

save-analysis: bug fix and optimisation.

The first commit fixes a bug in name resolution and save-analysis (introduced in #54145) and removes an unused parameter. This fixes the RLS tests, which are currently blocking distribution of the RLS. The second commit removes macro uses from save-analysis data, since these are never used, they just take up space.

r? @petrochenkov

5 years agoBump nightly to 1.32.0
Alex Crichton [Wed, 31 Oct 2018 18:53:17 +0000 (11:53 -0700)]
Bump nightly to 1.32.0

* Also update the bootstrap compiler
* Update cargo to 1.32.0
* Clean out stage0 annotations

5 years agoAuto merge of #54806 - parched:park, r=RalfJung
bors [Wed, 31 Oct 2018 13:52:00 +0000 (13:52 +0000)]
Auto merge of #54806 - parched:park, r=RalfJung

thread::unpark: Avoid notifying with mutex locked.

This means when the other thread wakes it can continue right away
instead of having to wait for the mutex.

Also add some comments explaining why the mutex needs to be locked in
the first place.

This is a follow up to https://github.com/rust-lang/rust/pull/54174
I did some tests with relacy [here](https://gist.github.com/parched/b7fb88c97755a81e5cb9f9048a15f7fb) (This PR is InnerV2). If anyone can think of some other test case worth adding let me know.

r? @RalfJung

5 years agoAuto merge of #55304 - alexcrichton:update-credentials, r=kennytm
bors [Wed, 31 Oct 2018 06:42:24 +0000 (06:42 +0000)]
Auto merge of #55304 - alexcrichton:update-credentials, r=kennytm

ci: Move global credentials to web configuration

This commit moves a number of our encrypted credentials stored in
configuration files in this repository to env vars on the web UI. This
will hopefully make it easier to rotate credentials in the future as
well as quickly change them if the need arises. (quicker than landing a
PR that is).

This also updates the travis deployment process to always use the `aws`
command line tool which we're already installing on Linux and should
enable us to avoid all `dpl` gem issues as well as have greater control
over what's going where.

5 years agosave analysis: don't dump macro refs
Nick Cameron [Tue, 30 Oct 2018 22:56:11 +0000 (11:56 +1300)]
save analysis: don't dump macro refs

5 years agoAuto merge of #54004 - tromey:enum-debuginfo, r=tromey
bors [Tue, 30 Oct 2018 23:36:10 +0000 (23:36 +0000)]
Auto merge of #54004 - tromey:enum-debuginfo, r=tromey

Fix DWARF generation for enums

The DWARF generated for Rust enums was always somewhat unusual.
Rather than using DWARF constructs directly, it would emit magic field
names like "RUST$ENCODED$ENUM$0$Name" and "RUST$ENUM$DISR".  Since
PR #45225, though, even this has not worked -- the ad hoc scheme was
not updated to handle the wider variety of niche-filling layout
optimizations now available.

This patch changes the generated DWARF to use the standard tags meant
for this purpose; namely, DW_TAG_variant and DW_TAG_variant_part.

The patch to implement this went in to LLVM 7.  In order to work with
older versions of LLVM, and because LLVM doesn't do anything here for
PDB, the existing code is kept as a fallback mode.

Support for this DWARF is in the Rust lldb and in gdb 8.2.

Closes #32920
Closes #32924
Closes #52762
Closes #53153

5 years agothread::unpark: Avoid notifying with mutex locked.
James Duley [Fri, 21 Sep 2018 14:13:39 +0000 (14:13 +0000)]
thread::unpark: Avoid notifying with mutex locked.

This means when the other thread wakes it can continue right away
instead of having to wait for the mutex.

Also add some comments explaining why the mutex needs to be locked in
the first place.

5 years agosave-analysis: make sure we save the def for the last segment of a path
Nick Cameron [Tue, 30 Oct 2018 22:05:58 +0000 (11:05 +1300)]
save-analysis: make sure we save the def for the last segment of a path

5 years agoAuto merge of #55303 - alexcrichton:update-libm, r=kennytm
bors [Tue, 30 Oct 2018 20:43:36 +0000 (20:43 +0000)]
Auto merge of #55303 - alexcrichton:update-libm, r=kennytm

Update compiler-builtins submodule

This commit updates our `compiler-builtins` submodule which brings in at
least a few improvements for intrinsics on wasm32

5 years agoUpdate lldb
Tom Tromey [Tue, 2 Oct 2018 16:13:30 +0000 (10:13 -0600)]
Update lldb

Update src/tools/lldb to pick up a needed bug fix in the
DW_TAG_variant_part handling.

5 years agoAdd legacy debuginfo tests
Tom Tromey [Thu, 27 Sep 2018 16:17:00 +0000 (10:17 -0600)]
Add legacy debuginfo tests

The enum debuginfo patch includes a legacy mode that is used when
building against LLVM 5 and LLVM 6.  The main enum debuginfo tests
have been updated to rely on the new approach and a new-enough gdb.
This patch makes a copy of these tests so that the fallback mode will
continue to be tested.

Note that nil-enum.rs is not copied; it seemed not to provide enough
value to bother.

A new header directive is added, "ignore-llvm-version".  I will send a
patch to update the rustc documentation once this lands.

5 years agoUpdate enum debuginfo tests
Tom Tromey [Wed, 26 Sep 2018 18:58:10 +0000 (12:58 -0600)]
Update enum debuginfo tests

Bug #52452 notes some debuginfo test regressions when moving to gdb
8.1.  This series will also cause versions of gdb before 8.2 to fail
when a recent LLVM is used -- DW_TAG_variant_part support was not
added until 8.2.

This patch updates one of the builders to a later version of Ubuntu,
which comes with gdb 8.2.  It updates the relevant tests to require
both a new-enough LLVM and a new-enough gdb; the subsequent patch
arranges to continue testing the fallback mode.

The "gdbg" results are removed from these tests because the tests now
require a rust-enabled gdb.

If you read closely, you'll see that some of the lldb results in this
patch still look a bit strange.  This will be addressed in a
subsequent patch; I believe the fix is to disable the Python
pretty-printers when lldb is rust-enabled.

5 years agoAvoid possible integer overflow in niche value computation
Tom Tromey [Thu, 13 Sep 2018 12:51:17 +0000 (06:51 -0600)]
Avoid possible integer overflow in niche value computation

@eddyb pointed out in review that the niche value computation had a
possible integer overflow problem, fixed here as he suggested.

5 years agoAdd more enum debug info tests
Tom Tromey [Fri, 7 Sep 2018 16:08:59 +0000 (10:08 -0600)]
Add more enum debug info tests

Rename the previous enum debug info test, and add more tests to cover
c-like enums and tagged (ordinary) enums.

5 years agoTighten enum-debug test
Tom Tromey [Fri, 7 Sep 2018 15:42:02 +0000 (09:42 -0600)]
Tighten enum-debug test

Update the new enum-debug to ensure that field "D" does not have a
discrimnant.

5 years agoAddress review comments
Tom Tromey [Fri, 7 Sep 2018 15:29:40 +0000 (09:29 -0600)]
Address review comments

This fixes the issues pointed out in review.

5 years agoFix DWARF generation for enums
Tom Tromey [Wed, 29 Nov 2017 21:42:25 +0000 (14:42 -0700)]
Fix DWARF generation for enums

The DWARF generated for Rust enums was always somewhat unusual.
Rather than using DWARF constructs directly, it would emit magic field
names like "RUST$ENCODED$ENUM$0$Name" and "RUST$ENUM$DISR".  Since
PR #45225, though, even this has not worked -- the ad hoc scheme was
not updated to handle the wider variety of niche-filling layout
optimizations now available.

This patch changes the generated DWARF to use the standard tags meant
for this purpose; namely, DW_TAG_variant and DW_TAG_variant_part.

The patch to implement this went in to LLVM 7.  In order to work with
older versions of LLVM, and because LLVM doesn't do anything here for
PDB, the existing code is kept as a fallback mode.

Support for this DWARF is in the Rust lldb and in gdb 8.2.

Closes #32920
Closes #32924
Closes #52762
Closes #53153

5 years agoUpdate compiler-builtins submodule
Alex Crichton [Wed, 24 Oct 2018 08:09:49 +0000 (01:09 -0700)]
Update compiler-builtins submodule

This commit updates our `compiler-builtins` submodule which brings in at
least a few improvements for intrinsics on wasm32

5 years agoAuto merge of #55502 - kennytm:rollup, r=kennytm
bors [Tue, 30 Oct 2018 11:38:31 +0000 (11:38 +0000)]
Auto merge of #55502 - kennytm:rollup, r=kennytm

Rollup of 12 pull requests

Successful merges:

 - #54885 (Don't lint 'unused_parens` on `if (break _) { .. }`)
 - #55205 (Improve a few cases of collecting to an FxHash(Map/Set))
 - #55450 (msp430: remove the whole Atomic* API)
 - #55459 (Add UI test for #49296)
 - #55472 (Use opt.take() instead of mem::replace(opt, None))
 - #55473 (Take advantage of impl Iterator in (transitive/elaborate)_bounds)
 - #55474 (Fix validation false positive)
 - #55476 (Change a flat_map with 0/1-element vecs to a filter_map)
 - #55487 (Adjust Ids of path segments in visibility modifiers)
 - #55493 (Doc fixes)
 - #55494 (borrowck=migrate must look at parents of closures)
 - #55496 (Update clippy)

Failed merges:

r? @ghost

5 years agoRollup merge of #55496 - Manishearth:clippyup, r=oli-obk
kennytm [Tue, 30 Oct 2018 10:55:38 +0000 (18:55 +0800)]
Rollup merge of #55496 - Manishearth:clippyup, r=oli-obk

Update clippy

Pulls in https://github.com/rust-lang-nursery/rust-clippy/pull/3382, should unbreak clippy

r? @oli-obk @phansch

5 years agoRollup merge of #55494 - pnkfelix:issue-55492-borrowck-migrate-must-look-at-parents...
kennytm [Tue, 30 Oct 2018 10:55:37 +0000 (18:55 +0800)]
Rollup merge of #55494 - pnkfelix:issue-55492-borrowck-migrate-must-look-at-parents-of-closures, r=davidtwco

borrowck=migrate must look at parents of closures

This fixes the NLL migration mode (which is the default with edition=2018) to inspect all parents of a closure in addition to the closure itself when looking to see if AST-borrowck issues an error for the given code.

This should be a candidate for beta backport.

Fix #55492

5 years agoRollup merge of #55493 - GuillaumeGomez:doc-fixes, r=@QuietMisdreavus
kennytm [Tue, 30 Oct 2018 10:55:35 +0000 (18:55 +0800)]
Rollup merge of #55493 - GuillaumeGomez:doc-fixes, r=@QuietMisdreavus

Doc fixes

Fixes the bug in source code page where code was below line numbers and fixed this bug too ("Expand description" is shown whereas it shouldn't):

<img width="1440" alt="screenshot 2018-10-29 at 23 11 29" src="https://user-images.githubusercontent.com/3050060/47684136-1105ad80-dbd2-11e8-9e9f-fb7f26b0f5bd.png">

r? @QuietMisdreavus

5 years agoRollup merge of #55487 - nrc:path-fix, r=petrochenkov
kennytm [Tue, 30 Oct 2018 10:55:34 +0000 (18:55 +0800)]
Rollup merge of #55487 - nrc:path-fix, r=petrochenkov

Adjust Ids of path segments in visibility modifiers

Fixes #55376 (nightly regression)

r? @petrochenkov

5 years agoRollup merge of #55476 - ljedrz:flat_map_to_filter_map, r=cramertj
kennytm [Tue, 30 Oct 2018 10:55:33 +0000 (18:55 +0800)]
Rollup merge of #55476 - ljedrz:flat_map_to_filter_map, r=cramertj

Change a flat_map with 0/1-element vecs to a filter_map

No need to use vectors in this case - `Option`s are quite sufficient.

5 years agoRollup merge of #55474 - oli-obk:const_eval_promoted, r=RalfJung
kennytm [Tue, 30 Oct 2018 10:55:32 +0000 (18:55 +0800)]
Rollup merge of #55474 - oli-obk:const_eval_promoted, r=RalfJung

Fix validation false positive

Fixes #55454

r? @RalfJung

5 years agoRollup merge of #55473 - ljedrz:transitive/elaborate_bounds_impl_iterator, r=estebank
kennytm [Tue, 30 Oct 2018 10:55:30 +0000 (18:55 +0800)]
Rollup merge of #55473 - ljedrz:transitive/elaborate_bounds_impl_iterator, r=estebank

Take advantage of impl Iterator in (transitive/elaborate)_bounds

Other than for `debug!`ging purposes, `bounds` are only iterated over, so they don't need to be collected into vectors.

5 years agoRollup merge of #55472 - ljedrz:use_option_take, r=cramertj
kennytm [Tue, 30 Oct 2018 10:55:29 +0000 (18:55 +0800)]
Rollup merge of #55472 - ljedrz:use_option_take, r=cramertj

Use opt.take() instead of mem::replace(opt, None)

It's easier to read.

5 years agoRollup merge of #55459 - memoryruins:issue-49296, r=oli-obk
kennytm [Tue, 30 Oct 2018 10:55:28 +0000 (18:55 +0800)]
Rollup merge of #55459 - memoryruins:issue-49296, r=oli-obk

Add UI test for #49296

Closes #49296

r? @oli-obk

5 years agoRollup merge of #55450 - japaric:msp430, r=alexcrichton
kennytm [Tue, 30 Oct 2018 10:55:27 +0000 (18:55 +0800)]
Rollup merge of #55450 - japaric:msp430, r=alexcrichton

msp430: remove the whole Atomic* API

PR #51953 enabled the Atomic*.{load,store} API on MSP430. Unfortunately,
the LLVM backend doesn't currently support those atomic operations, so this
commit removes the API and leaves instructions on how and when to enable it
in the future.

the second fixes compiling liballoc for msp430

closes #54511
r? @alexcrichton
cc @chernomor @awygle @cr1901 @pftbest

5 years agoRollup merge of #55205 - ljedrz:faster_fxhashmap/set_population, r=estebank
kennytm [Tue, 30 Oct 2018 10:55:26 +0000 (18:55 +0800)]
Rollup merge of #55205 - ljedrz:faster_fxhashmap/set_population, r=estebank

Improve a few cases of collecting to an FxHash(Map/Set)

Either use `collect` or procure specified capacity when possible.

5 years agoRollup merge of #54885 - llogiq:fix-54704, r=nikomatsakis
kennytm [Tue, 30 Oct 2018 10:55:25 +0000 (18:55 +0800)]
Rollup merge of #54885 - llogiq:fix-54704, r=nikomatsakis

Don't lint 'unused_parens` on `if (break _) { .. }`

This fixes #54704

5 years agoFix invalid "expand description" display
Guillaume Gomez [Mon, 29 Oct 2018 22:25:35 +0000 (23:25 +0100)]
Fix invalid "expand description" display

5 years agoUpdate clippy
Manish Goregaokar [Tue, 30 Oct 2018 04:10:25 +0000 (04:10 +0000)]
Update clippy

5 years agoAuto merge of #55221 - matthewjasper:fewer-duplicate-migrate-messages, r=pnkfelix
bors [Tue, 30 Oct 2018 03:57:53 +0000 (03:57 +0000)]
Auto merge of #55221 - matthewjasper:fewer-duplicate-migrate-messages, r=pnkfelix

Don't emit cannot move errors twice in migrate mode

Closes #55154
cc #53004

r? @pnkfelix

5 years agoAuto merge of #55190 - dlavati:51574_rename_codemap_filemap, r=petrochenkov
bors [Tue, 30 Oct 2018 01:02:40 +0000 (01:02 +0000)]
Auto merge of #55190 - dlavati:51574_rename_codemap_filemap, r=petrochenkov

Rename other occs of (Code/File)Map to Source(Map/File) #51574

Additional renamings for #51574.

5 years agoRegression test for issue #54477.
Felix S. Klock II [Mon, 29 Oct 2018 10:45:00 +0000 (11:45 +0100)]
Regression test for issue #54477.

I removed the original file that more completely captured the original
crate's tests, as its source crate
(https://crates.io/crates/collection) is licensed under GPL3, and I
suspect that license is not loose enough for me to put into our repo
under our MIT/Apache licensing.

(Would it be an option to attach the GPL3 licesne to just the one
test? Probably. But do I want to bother with it that that point?
Nope!)

5 years agoUpdate compare-mode=nll stderr files to reflect the fix to #55492.
Felix S. Klock II [Mon, 29 Oct 2018 23:37:38 +0000 (00:37 +0100)]
Update compare-mode=nll stderr files to reflect the fix to #55492.

5 years agoRegression test for issue 55492.
Felix S. Klock II [Mon, 29 Oct 2018 23:25:09 +0000 (00:25 +0100)]
Regression test for issue 55492.

5 years agoborrowck=migrate mode needs to check parent(s) when its given a closure.
Felix S. Klock II [Mon, 29 Oct 2018 23:16:28 +0000 (00:16 +0100)]
borrowck=migrate mode needs to check parent(s) when its given a closure.

5 years agoFix source code pages in rustdoc
Guillaume Gomez [Mon, 29 Oct 2018 21:38:26 +0000 (22:38 +0100)]
Fix source code pages in rustdoc

5 years agoAdd a comment explaining the two checks
Oliver S̶c̶h̶n̶e̶i̶d̶e̶r Scherer [Mon, 29 Oct 2018 20:31:22 +0000 (21:31 +0100)]
Add a comment explaining the two checks

5 years agoRename other occs of (Code/File)Map to Source(Map/File) #51574
David Lavati [Mon, 29 Oct 2018 20:26:13 +0000 (21:26 +0100)]
Rename other occs of (Code/File)Map to Source(Map/File) #51574

5 years agoDon't emit cannot move errors twice in migrate mode
Matthew Jasper [Sat, 20 Oct 2018 09:08:36 +0000 (10:08 +0100)]
Don't emit cannot move errors twice in migrate mode

5 years agoAdjust Ids of path segments in visibility modifiers
Nick Cameron [Mon, 29 Oct 2018 08:06:27 +0000 (21:06 +1300)]
Adjust Ids of path segments in visibility modifiers

Fixes #55376

5 years agoChange a flat_map with 0/1-element vecs to a filter_map
ljedrz [Mon, 29 Oct 2018 15:28:33 +0000 (16:28 +0100)]
Change a flat_map with 0/1-element vecs to a filter_map

5 years agoFix wrong validation clasisfication of `Option<&T>::Some` values
Oliver Scherer [Mon, 29 Oct 2018 14:22:47 +0000 (15:22 +0100)]
Fix wrong validation clasisfication of `Option<&T>::Some` values

5 years agoTake advantage of impl Iterator in (transitive/elaborate)_bounds
ljedrz [Mon, 29 Oct 2018 13:56:24 +0000 (14:56 +0100)]
Take advantage of impl Iterator in (transitive/elaborate)_bounds

5 years agoAssert that promoteds don't fail to be evaluated for being too generic
Oliver Scherer [Mon, 29 Oct 2018 13:50:30 +0000 (14:50 +0100)]
Assert that promoteds don't fail to be evaluated for being too generic

5 years agoUse opt.take() instead of mem::replace(opt, None)
ljedrz [Mon, 29 Oct 2018 12:48:26 +0000 (13:48 +0100)]
Use opt.take() instead of mem::replace(opt, None)

5 years agodon't lint `unused_parens` on `if (break _)`
Andre Bogus [Mon, 29 Oct 2018 11:41:50 +0000 (12:41 +0100)]
don't lint `unused_parens` on `if (break _)`

5 years agoAuto merge of #55462 - pietroalbini:rollup, r=pietroalbini
bors [Mon, 29 Oct 2018 10:19:17 +0000 (10:19 +0000)]
Auto merge of #55462 - pietroalbini:rollup, r=pietroalbini

Rollup of 9 pull requests

Successful merges:

 - #54965 (update tcp stream documentation)
 - #55269 (fix typos in various places)
 - #55384 (Avoid unnecessary allocations in `float_lit` and `integer_lit`.)
 - #55423 (back out bogus `Ok`-wrapping suggestion on `?` arm type mismatch)
 - #55426 (Make a bunch of trivial methods of NonNull be `#[inline]`)
 - #55438 (Avoid directly catching BaseException in bootstrap configure script)
 - #55439 (Remove unused sys import from generate-deriving-span-tests)
 - #55440 (Remove unreachable code in hasClass function in Rustdoc)
 - #55447 (Fix invalid path in generate-deriving-span-tests.py.)

Failed merges:

r? @ghost

5 years agoRollup merge of #55447 - frewsxcv:frewsxcv-rename, r=Mark-Simulacrum
Pietro Albini [Mon, 29 Oct 2018 08:47:52 +0000 (09:47 +0100)]
Rollup merge of #55447 - frewsxcv:frewsxcv-rename, r=Mark-Simulacrum

Fix invalid path in generate-deriving-span-tests.py.

This script broke after #53196 – the tests were moved.

5 years agoRollup merge of #55440 - xfix:patch-11, r=GuillaumeGomez
Pietro Albini [Mon, 29 Oct 2018 08:47:51 +0000 (09:47 +0100)]
Rollup merge of #55440 - xfix:patch-11, r=GuillaumeGomez

Remove unreachable code in hasClass function in Rustdoc

5 years agoRollup merge of #55439 - xfix:patch-10, r=frewsxcv
Pietro Albini [Mon, 29 Oct 2018 08:47:50 +0000 (09:47 +0100)]
Rollup merge of #55439 - xfix:patch-10, r=frewsxcv

Remove unused sys import from generate-deriving-span-tests

5 years agoRollup merge of #55438 - xfix:patch-9, r=frewsxcv
Pietro Albini [Mon, 29 Oct 2018 08:47:49 +0000 (09:47 +0100)]
Rollup merge of #55438 - xfix:patch-9, r=frewsxcv

Avoid directly catching BaseException in bootstrap configure script

It includes stuff like pressing CTRL+C, which likely isn't intended.

5 years agoRollup merge of #55426 - fitzgen:nonnull-inline, r=SimonSapin
Pietro Albini [Mon, 29 Oct 2018 08:47:48 +0000 (09:47 +0100)]
Rollup merge of #55426 - fitzgen:nonnull-inline, r=SimonSapin

Make a bunch of trivial methods of NonNull be `#[inline]`

I was seeing super trivial methods not getting inlined in some of my builds, so I went ahead and just marked all the methods inline where it seemed appropriate.

r? @SimonSapin

5 years agoRollup merge of #55423 - zackmdavis:back_out_bogus_ok_wrapping_suggestion, r=estebank
Pietro Albini [Mon, 29 Oct 2018 08:47:46 +0000 (09:47 +0100)]
Rollup merge of #55423 - zackmdavis:back_out_bogus_ok_wrapping_suggestion, r=estebank

back out bogus `Ok`-wrapping suggestion on `?` arm type mismatch

This suggestion was introduced in #51938 / 6cc78bf8d7 (while introducing different language for type errors coming from `?` rather than a `match`), but it has a lot of false-positives, and incorrect suggestions carry more badness than marginal good suggestions do goodness. I regret not doing this earlier. :disappointed:

Resolves #52537, resolves #54578.

r? @estebank

5 years agoRollup merge of #55384 - nnethercote:better-integer_lit-float_lit, r=michaelwoerister
Pietro Albini [Mon, 29 Oct 2018 08:47:45 +0000 (09:47 +0100)]
Rollup merge of #55384 - nnethercote:better-integer_lit-float_lit, r=michaelwoerister

Avoid unnecessary allocations in `float_lit` and `integer_lit`.

This commit avoids an allocation when parsing any float and integer
literals that don't involved underscores.

This reduces the number of allocations done for the `tuple-stress`
benchmark by 10%, reducing its instruction count by just under 1%.

5 years agoImprove a few cases of collecting to an FxHash(Map/Set)
ljedrz [Fri, 19 Oct 2018 15:18:03 +0000 (17:18 +0200)]
Improve a few cases of collecting to an FxHash(Map/Set)

5 years agoAdd UI test for #49296
memoryruins [Mon, 29 Oct 2018 04:09:32 +0000 (00:09 -0400)]
Add UI test for #49296

5 years agoAuto merge of #55270 - RalfJung:stacked-borrows-ng, r=oli-obk
bors [Mon, 29 Oct 2018 03:28:31 +0000 (03:28 +0000)]
Auto merge of #55270 - RalfJung:stacked-borrows-ng, r=oli-obk

miri engine: Stacked Borrows NG

For more refined tracking in miri, we do return untagged pointers from the memory abstraction after allocations and let the caller decide how to tag these.

Also refactor the `tag_(de)reference` hooks so they can be more easily called in the ref-to-place and place-to-ref methods, and reorder things in validation: validation calls ref-to-place which (when running in miri) triggers some checks, so we want to run it rather late and catch other problems first. We also do not need to redundantly check the ref to be allocated any more, the checks miri does anyway imply thath.

r? @oli-obk

5 years agoAuto merge of #55043 - oliver-giersch:unchecked_thread_spawning, r=alexcrichton
bors [Sun, 28 Oct 2018 21:34:12 +0000 (21:34 +0000)]
Auto merge of #55043 - oliver-giersch:unchecked_thread_spawning, r=alexcrichton

Unchecked thread spawning

# Summary

Add an unsafe interface for spawning lifetime-unrestricted threads for
library authors to build less-contrived, less-hacky safe abstractions
on.

# Motivation

So a few years back scoped threads were entirely removed from the Rust
stdlib, the reason being that it was possible to leak the scoped thread's
join guards without resorting to unsafe code, which meant the concept
was not completely safe, either.
Only a maximally-restrictive safe API for thread spawning was kept in the
stdlib, that requires `'static` lifetime bounds on both the thread closure
and its return type.
A number of 3rd party libraries sprung up to offer their implementations
for safe scoped threads implementations.
These work by essentially hiding the join guards from the user, thus
forcing them to join at the end of an (internal) function scope.

However, since these libraries have to use the maximally restrictive
thread spawning API, they have to resort to some very contrived manipulations
and subversions of Rust's type system to basically achieve what this commit does
with some minimal restructuring of the current code and exposing a new unsafe
function signature for spawning threads without lifetime restrictions.
Obviously this is unsafe, but its main use would be to allow library authors
to write safe abstractions with and around it.
To further illustrate my point, here's a quick summary of the hoops that,
for instance `crossbeam`, has to jump through to spawn a lifetime unrestricted
thread, all of which would not be necessary if an unsafe API existed as part
of the stdlib:

1. Allocate an `Arc<Option<T>>` on the heap where the result with type
`T: 'a` will go (in practice requires `Mutex` or `UnsafeCell` as well).

2. Wrap the desired thread closure with lifetime bound `'a` into another
closure (also `..: 'a`) that returns `()`, executes the inner closure and
writes its result into the pre-allocated `Option<T>`.

3. Box the wrapping closure, cast it to a trait object (`FnBox`) and
(unsafely) transmute its lifetime bound from `'a` to `'static`.

So while this new `spawn_unchecked` function is certainly not very relevant
for general use, since scoped threads are so common I think it makes sense
to expose an interface for libraries implementing these to build on.
The changes implemented are also very minimal: The current `spawn` function
(which internally contains unsafe code) is moved into an unsafe `spawn_unchecked`
function, which the safe function then wraps around.

# Issues

- ~~so far, no documentation for the new function (yet)~~
- the name of the function might be controversial, as `*_unchecked` more commonly
indicates that some sort of runtime check is omitted (`unrestricted` may be
more fitting)
- if accepted, it might make sense to add a freestanding `thread::spawn_unchecked`
function similar to the current `thread::spawn` for convenience.

5 years agoAuto merge of #54487 - RalfJung:ctfe-backtrace, r=oli-obk
bors [Sun, 28 Oct 2018 18:49:46 +0000 (18:49 +0000)]
Auto merge of #54487 - RalfJung:ctfe-backtrace, r=oli-obk

Delayed CTFE backtraces

This renames the env var that controls CTFE backtraces from `MIRI_BACKTRACE` to `RUST_CTFE_BACKTRACE` so that we can use `MIRI_BACKTRACE` in the miri tool to only show backtraces of the main miri execution.

It also makes `RUST_CTFE_BACKTRACE` only show backtraces that actually get rendered as errors, instead of showing them eagerly when the `Err` happens. The current behavior is near useless in miri because it shows about one gazillion backtraces for errors that we later catch and do not care about. However, @oli-obk likes the current behavior for rustc CTFE work so it is still available via `RUST_CTFE_BACKTRACE=immediate`.

NOTE: This is based on top of https://github.com/rust-lang/rust/pull/53821. Only [the last three commits](https://github.com/oli-obk/rust/compare/sanity_query...RalfJung:ctfe-backtrace) are new.

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

5 years agomsp430: fix compilation of liballoc
Jorge Aparicio [Sun, 28 Oct 2018 18:08:13 +0000 (19:08 +0100)]
msp430: fix compilation of liballoc

5 years agomsp430: remove the whole Atomic* API
Jorge Aparicio [Sun, 28 Oct 2018 18:03:45 +0000 (19:03 +0100)]
msp430: remove the whole Atomic* API

PR #51953 enabled the Atomic*.{load,store} API on MSP430. Unfortunately, the
LLVM backend doesn't currently support those atomic operations, so this commit
removes the API and leaves instructions on how and when to enable it in the
future.

5 years agoFix invalid path in generate-deriving-span-tests.py.
Corey Farwell [Sun, 28 Oct 2018 16:12:00 +0000 (12:12 -0400)]
Fix invalid path in generate-deriving-span-tests.py.

This script broke after #53196 after the tests were moved.

5 years agoAuto merge of #55433 - kennytm:rollup, r=kennytm
bors [Sun, 28 Oct 2018 16:00:00 +0000 (16:00 +0000)]
Auto merge of #55433 - kennytm:rollup, r=kennytm

Rollup of 11 pull requests

Successful merges:

 - #55148 (Implement FromStr for PathBuf)
 - #55185 (path suggestions in Rust 2018 should point out the change in semantics)
 - #55191 (Fix sub-variant doc display)
 - #55199 (Impl items have generics)
 - #55244 (Don't rerun MIR passes when inlining)
 - #55252 (Add MaybeUninit::new)
 - #55257 (Allow extern statics with an extern type)
 - #55389 (Remove unnecessary mut in iterator.find_map documentation example, R…)
 - #55406 (Update string.rs)
 - #55412 (Fix an ICE in the min_const_fn analysis)
 - #55421 (Add ManuallyDrop::take)

5 years agoRollup merge of #55199 - oli-obk:instance_printing, r=davidtwco
kennytm [Sun, 28 Oct 2018 13:38:53 +0000 (21:38 +0800)]
Rollup merge of #55199 - oli-obk:instance_printing, r=davidtwco

Impl items have generics

5 years agoRollup merge of #55257 - mjbshaw:static, r=oli-obk
kennytm [Sun, 28 Oct 2018 13:38:12 +0000 (21:38 +0800)]
Rollup merge of #55257 - mjbshaw:static, r=oli-obk

Allow extern statics with an extern type

Fixes #55239

5 years agoRollup merge of #55185 - davidtwco:issue-55130, r=nikomatsakis
kennytm [Sun, 28 Oct 2018 13:37:26 +0000 (21:37 +0800)]
Rollup merge of #55185 - davidtwco:issue-55130, r=nikomatsakis

path suggestions in Rust 2018 should point out the change in semantics

Fixes #55130.

This commit extends existing path suggestions to link to documentation
on the changed semantics of `use` in Rust 2018.

5 years agoRollup merge of #55421 - CAD97:patch-1, r=kennytm
kennytm [Sun, 28 Oct 2018 13:32:03 +0000 (21:32 +0800)]
Rollup merge of #55421 - CAD97:patch-1, r=kennytm

Add ManuallyDrop::take

Tracking issue: #55422

Proposed in this form in https://internals.rust-lang.org/t/mini-rfc-manuallydrop-take/8679,
see that thread for some history.

A small convenience wrapper for `ManuallyDrop` that makes a pattern (taking ownership of the contained data in drop) more obvious.

5 years agoRollup merge of #55412 - oli-obk:min_const_fn_ice, r=estebank
kennytm [Sun, 28 Oct 2018 08:38:54 +0000 (16:38 +0800)]
Rollup merge of #55412 - oli-obk:min_const_fn_ice, r=estebank

Fix an ICE in the min_const_fn analysis

fixes https://github.com/rust-lang/rust/issues/55395

cc @Centril

5 years agoRollup merge of #55406 - rick68:patch-16, r=varkor
kennytm [Sun, 28 Oct 2018 08:38:53 +0000 (16:38 +0800)]
Rollup merge of #55406 - rick68:patch-16, r=varkor

Update string.rs

remove unused variable i in example String::with_capacity()

5 years agoRollup merge of #55389 - meven:master, r=shepmaster
kennytm [Sun, 28 Oct 2018 08:38:52 +0000 (16:38 +0800)]
Rollup merge of #55389 - meven:master, r=shepmaster

Remove unnecessary mut in iterator.find_map documentation example, R…

Relates to #49098

Removes a mut that could induce newcomers to put a mut in their code that the compiler would comply about.

https://github.com/rust-lang/rust/pull/49098/files#r227422388

5 years agoAuto merge of #55192 - cramertj:nested-mod, r=petrochenkov
bors [Sun, 28 Oct 2018 13:13:55 +0000 (13:13 +0000)]
Auto merge of #55192 - cramertj:nested-mod, r=petrochenkov

Fix ordering of nested modules in non-mod.rs mods

Flatten relative offset into directory path before adding inline
(mod x { ... }) module names to the current directory path.

Fix #55094

5 years agoRemove unreachable code in hasClass function in Rustdoc
Konrad Borowski [Sun, 28 Oct 2018 11:12:29 +0000 (12:12 +0100)]
Remove unreachable code in hasClass function in Rustdoc

5 years agoRemove unused sys import from generate-deriving-span-tests
Konrad Borowski [Sun, 28 Oct 2018 11:06:28 +0000 (12:06 +0100)]
Remove unused sys import from generate-deriving-span-tests

5 years agoAvoid directly catching BaseException in bootstrap configure script
Konrad Borowski [Sun, 28 Oct 2018 11:03:29 +0000 (12:03 +0100)]
Avoid directly catching BaseException in bootstrap configure script

It includes stuff like pressing CTRL+C, which likely isn't intended.

5 years agodon't be too perf-greedy
Ralf Jung [Mon, 22 Oct 2018 17:17:37 +0000 (19:17 +0200)]
don't be too perf-greedy

5 years agodon't tag new memory inside memory.rs; add machine hook to tag new memory
Ralf Jung [Mon, 22 Oct 2018 15:15:42 +0000 (17:15 +0200)]
don't tag new memory inside memory.rs; add machine hook to tag new memory

5 years agoalways print backtrace when CTFE_BACKTRACE is set
Ralf Jung [Tue, 9 Oct 2018 20:02:15 +0000 (22:02 +0200)]
always print backtrace when CTFE_BACKTRACE is set

No point in making the user also enable RUST_LOG

5 years agoremove some unused CTFE error variants
Ralf Jung [Thu, 20 Sep 2018 06:26:02 +0000 (08:26 +0200)]
remove some unused CTFE error variants

5 years agorename env var to control ctfe backtraces, and make it usually show the backtrace...
Ralf Jung [Tue, 18 Sep 2018 09:01:13 +0000 (11:01 +0200)]
rename env var to control ctfe backtraces, and make it usually show the backtrace delayed

The env var is now RUST_CTFE_BACKTRACE.  Similar to RUST_BACKTRACE, it usually
only prints a backtrace when the error actually surfaces, not when it happens.
This makes a difference when we catch errors.

As per @oli-obk's request, one can set RUST_CTFE_BACKTRACE=immediate to get the
backtrace shown immediately.

5 years agomake memory private; that's what we have `memory_mut` for
Ralf Jung [Fri, 19 Oct 2018 17:39:52 +0000 (19:39 +0200)]
make memory private; that's what we have `memory_mut` for

5 years agovalidity in non-const mode relies on ref_to_mplace checking bounds; (de)reference...
Ralf Jung [Fri, 19 Oct 2018 15:11:23 +0000 (17:11 +0200)]
validity in non-const mode relies on ref_to_mplace checking bounds; (de)reference hooks work on places

5 years agomake (de)reference hooks more consistent
Ralf Jung [Thu, 18 Oct 2018 16:01:42 +0000 (18:01 +0200)]
make (de)reference hooks more consistent

5 years agoRollup merge of #55252 - SimonSapin:maybeuninit-new, r=bluss
kennytm [Sun, 28 Oct 2018 08:38:48 +0000 (16:38 +0800)]
Rollup merge of #55252 - SimonSapin:maybeuninit-new, r=bluss

Add MaybeUninit::new

Sometimes it *is* initialized!

5 years agoRollup merge of #55244 - wesleywiser:issue-50411, r=nikomatsakis
kennytm [Sun, 28 Oct 2018 08:38:47 +0000 (16:38 +0800)]
Rollup merge of #55244 - wesleywiser:issue-50411, r=nikomatsakis

Don't rerun MIR passes when inlining

Fixes #50411

r? @nikomatsakis

I updated your commit message with additional details. Let me know if any of that is incorrect. I also added the appropriate `compile-flags` directive to the test.

Thanks for you help on this!

cc @RalfJung related to your PR #55086

5 years agoRollup merge of #55191 - GuillaumeGomez:fix-sub-variant, r=QuietMisdreavus
kennytm [Sun, 28 Oct 2018 08:38:46 +0000 (16:38 +0800)]
Rollup merge of #55191 - GuillaumeGomez:fix-sub-variant, r=QuietMisdreavus

Fix sub-variant doc display

Fixes #54758.

<img width="1440" alt="screen shot 2018-10-19 at 01 34 11" src="https://user-images.githubusercontent.com/3050060/47189939-43481d00-d33f-11e8-868f-cf479fc79e62.png">

r? @QuietMisdreavus

5 years agoRollup merge of #55148 - SimonSapin:path-fromstr, r=oli-obk
kennytm [Sun, 28 Oct 2018 08:38:45 +0000 (16:38 +0800)]
Rollup merge of #55148 - SimonSapin:path-fromstr, r=oli-obk

Implement FromStr for PathBuf

Initially landed in https://github.com/rust-lang/rust/pull/48292 and reverted in https://github.com/rust-lang/rust/pull/50401. This time, use `std::string::ParseError` as suggested in https://github.com/rust-lang/rust/issues/44431#issuecomment-428112632

5 years agoAdd ManuallyDrop::take
Christopher Durham [Sat, 27 Oct 2018 19:05:13 +0000 (15:05 -0400)]
Add ManuallyDrop::take

https://internals.rust-lang.org/t/mini-rfc-manuallydrop-take/8679

5 years agoAdd note linking to Rust 2018 path semantics docs.
David Wood [Thu, 18 Oct 2018 17:09:49 +0000 (19:09 +0200)]
Add note linking to Rust 2018 path semantics docs.

This commit extends existing path suggestions to link to documentation
on the changed semantics of `use` in Rust 2018.

5 years agoAuto merge of #55297 - petrochenkov:uni, r=Mark-Simulacrum
bors [Sun, 28 Oct 2018 03:07:37 +0000 (03:07 +0000)]
Auto merge of #55297 - petrochenkov:uni, r=Mark-Simulacrum

Partial implementation of uniform paths 2.0 to land before beta

Reimplementation of uniform paths using in-scope resolution rather than canaries is a minor breaking change due to stricter future-proofing, so it needs to be landed before beta or backported later.

I hope to implement at least something until beta so we have less to backport.
r? @Mark-Simulacrum

5 years agoAuto merge of #54683 - zackmdavis:critique_of_pure_lints, r=petrochenkov
bors [Sun, 28 Oct 2018 00:28:03 +0000 (00:28 +0000)]
Auto merge of #54683 - zackmdavis:critique_of_pure_lints, r=petrochenkov

lint reasons (RFC 2883, part 1)

This implements the `reason =` functionality described in [the RFC](https://github.com/rust-lang/rfcs/blob/master/text/2383-lint-reasons.md) under a `lint_reasons` feature gate.

![lint_reasons_pt_1](https://user-images.githubusercontent.com/1076988/46252097-eed51000-c418-11e8-8212-939d3f02f95d.png)

5 years agoresolve: Desugar empty import groups into synthetic dummy imports
Vadim Petrochenkov [Sat, 27 Oct 2018 20:38:09 +0000 (23:38 +0300)]
resolve: Desugar empty import groups into synthetic dummy imports

so that they are correctly resolved on 2018 edition

5 years agoresolve: Make sure macros and imports are resolved in full parent scope
Vadim Petrochenkov [Sat, 27 Oct 2018 17:23:54 +0000 (20:23 +0300)]
resolve: Make sure macros and imports are resolved in full parent scope

Slightly simplify `fn build_reduced_graph_for_use_tree`

5 years agoresolve: More precise spans for privacy errors
Vadim Petrochenkov [Sat, 27 Oct 2018 17:21:34 +0000 (20:21 +0300)]
resolve: More precise spans for privacy errors