]> git.lizzy.rs Git - rust.git/log
rust.git
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 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 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

5 years agoresolve: Absolute paths may be undetermined on 2018 edition
Vadim Petrochenkov [Sat, 27 Oct 2018 13:46:48 +0000 (16:46 +0300)]
resolve: Absolute paths may be undetermined on 2018 edition

due to macro-expanded `extern crate` items adding names to extern prelude.

5 years agoresolve: Refactor away `legacy_macro_imports`/`LegacyMacroImports`
Vadim Petrochenkov [Thu, 25 Oct 2018 22:15:51 +0000 (01:15 +0300)]
resolve: Refactor away `legacy_macro_imports`/`LegacyMacroImports`

5 years agoresolve: Record full parent scope data for imports
Vadim Petrochenkov [Sun, 21 Oct 2018 22:28:59 +0000 (01:28 +0300)]
resolve: Record full parent scope data for imports

5 years agoMake a bunch of trivial methods of NonNull be `#[inline]`
Nick Fitzgerald [Sat, 27 Oct 2018 22:59:04 +0000 (00:59 +0200)]
Make a bunch of trivial methods of NonNull be `#[inline]`

5 years agoback out bogus `Ok`-wrapping suggestion on `?` arm type mismatch
Zack M. Davis [Sat, 27 Oct 2018 21:55:07 +0000 (14:55 -0700)]
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 (as repeatedly
reported in Issues #52537, #52598, #54578, #55336), and incorrect
suggestions carry more badness than marginal good suggestions do
goodness. Just get rid of it (unless and until someone figures out how
to do it correctly).

Resolves #52537, resolves #54578.

5 years agowherein the status of empty and reason-only lint attributes is clarified
Zack M. Davis [Tue, 16 Oct 2018 06:35:58 +0000 (23:35 -0700)]
wherein the status of empty and reason-only lint attributes is clarified

We avoid an ICE by checking for an empty meta-item list before we
index into the meta-items, and leave commentary about where we'd like
to issue unused-attributes lints in the future. Note that empty lint
attributes are already accepted by the stable compiler; generalizing
this to weird reason-only lint attributes seems like the
conservative/consilient generalization.

5 years agoin which lint reasons are restricted to come last in the attribute
Zack M. Davis [Fri, 12 Oct 2018 07:21:21 +0000 (00:21 -0700)]
in which lint reasons are restricted to come last in the attribute

Vadim Petrochenkov suggested this in review ("an error? just to be
conservative"), and it turns out to be convenient from the
implementer's perspective: in the initial proposed implementation (or
`HEAD~2`, as some might prefer to call it), we were doing an entire
whole iteration over the meta items just to find the reason (before
iterating over them to set the actual lint levels). This way, we can
just peek at the end rather than adding that extra loop (or
restructuring the existing code). The RFC doesn't seem to take a
position on this, and there's some precedent for restricting things to
be at the end of a sequence (we only allow `..` at the end of a struct
pattern, even if it would be possible to let it appear anywhere in the
sequence).

5 years agofeature-gate lint reasons
Zack M. Davis [Sun, 30 Sep 2018 01:00:50 +0000 (18:00 -0700)]
feature-gate lint reasons

We take stability seriously, so we shy away from making even seemingly
"trivial" features insta-stable.

5 years agoAuto merge of #54183 - qnighy:by-value-object-safety, r=oli-obk
bors [Sat, 27 Oct 2018 19:29:35 +0000 (19:29 +0000)]
Auto merge of #54183 - qnighy:by-value-object-safety, r=oli-obk

Implement by-value object safety

This PR implements **by-value object safety**, which is part of unsized rvalues #48055. That means, with `#![feature(unsized_locals)]`, you can call a method `fn foo(self, ...)` on trait objects. One aim of this is to enable `Box<FnOnce>`  in the near future.

The difficulty here is this: when constructing a vtable for a trait `Foo`, we can't just put the function `<T as Foo>::foo` into the table. If `T` is no larger than `usize`, `self` is usually passed directly. However, as the caller of the vtable doesn't know the concrete `Self` type, we want a variant of `<T as Foo>::foo` where `self` is always passed by reference.

Therefore, when the compiler encounters such a method to be generated as a vtable entry, it produces a newly introduced instance called `InstanceDef::VtableShim(def_id)` (that wraps the original instance). the shim just derefs the receiver and calls the original method. We give different symbol names for the shims by appending `::{{vtable-shim}}` to the symbol path (and also adding vtable-shimness as an ingredient to the symbol hash).

r? @eddyb

5 years agointroducing lint reason annotations (RFC 2383)
Zack M. Davis [Sun, 30 Sep 2018 00:25:26 +0000 (17:25 -0700)]
introducing lint reason annotations (RFC 2383)

This is just for the `reason =` name-value meta-item; the
`#[expect(lint)]` attribute also described in the RFC is a problem for
another day.

The place where we were directly calling `emit()` on a match block
(whose arms returned a mutable reference to a diagnostic-builder) was
admittedly cute, but no longer plausibly natural after adding the
if-let to the end of the `LintSource::Node` arm.

This regards #54503.

5 years agoAuto merge of #55385 - davidtwco:issue-55288, r=oli-obk
bors [Sat, 27 Oct 2018 16:50:41 +0000 (16:50 +0000)]
Auto merge of #55385 - davidtwco:issue-55288, r=oli-obk

NLL: cast causes failure to promote to static

Fixes #55288. See commit messages for more details.

r? @oli-obk
cc @nikomatsakis
cc @pnkfelix
cc @RalfJung

5 years agoFix sub-variant doc display
Guillaume Gomez [Thu, 18 Oct 2018 23:34:46 +0000 (01:34 +0200)]
Fix sub-variant doc display

5 years agoFix an ICE in the min_const_fn analysis
Oliver Scherer [Sat, 27 Oct 2018 11:34:35 +0000 (13:34 +0200)]
Fix an ICE in the min_const_fn analysis

5 years agoRefactor and add `PlaceContext::AscribeUserTy`.
David Wood [Fri, 26 Oct 2018 11:22:45 +0000 (13:22 +0200)]
Refactor and add `PlaceContext::AscribeUserTy`.

This commit refactors `PlaceContext` to split it into four different
smaller enums based on if the context represents a mutating use,
non-mutating use, maybe-mutating use or a non-use (this is based on the
recommendation from @oli-obk on Zulip[1]).

This commit then introduces a `PlaceContext::AscribeUserTy` variant.
`StatementKind::AscribeUserTy` is now correctly mapped to
`PlaceContext::AscribeUserTy` instead of `PlaceContext::Validate`.
`PlaceContext::AscribeUserTy` can also now be correctly categorized as a
non-use which fixes an issue with constant promotion in statics after a
cast introduces a `AscribeUserTy` statement.

[1]: https://rust-lang.zulipchat.com/#narrow/stream/122657-wg-nll/subject/.2355288.20cast.20fails.20to.20promote.20to.20'static/near/136536949

5 years agoTest for cast causing static promotion failure.
David Wood [Fri, 26 Oct 2018 11:21:29 +0000 (13:21 +0200)]
Test for cast causing static promotion failure.

This commit adds a test that ensures that a cast in a static doesn't
stop const promotion within the static.

5 years agoAdd helpful logging statements.
David Wood [Fri, 26 Oct 2018 10:11:19 +0000 (12:11 +0200)]
Add helpful logging statements.

This commit adds logging statements to `promote_consts` and
`qualify_consts` to make it easier to understand what it is doing.

5 years agoAuto merge of #55150 - pnkfelix:issues-47215-54797-fix-ice-from-moving-out-of-thread...
bors [Sat, 27 Oct 2018 09:56:37 +0000 (09:56 +0000)]
Auto merge of #55150 - pnkfelix:issues-47215-54797-fix-ice-from-moving-out-of-thread-local-under-ast-borrowck, r=nikomatsakis

Do not allow moving out of thread local under ast borrowck

AST borrowck failed to prevent moving out of a thread-local static.

This was broken. And it also (sometimes?) caused an ICE during drop elaboration.

Fix #47215
Fix #54797

5 years agoAdd more tests on unsized locals autoderef and borrowck.
Masaki Hara [Sat, 27 Oct 2018 08:17:24 +0000 (17:17 +0900)]
Add more tests on unsized locals autoderef and borrowck.