]> git.lizzy.rs Git - rust.git/log
rust.git
5 years agoAuto merge of #55014 - ljedrz:lazyboye_unwraps, r=matthewjasper
bors [Sat, 20 Oct 2018 11:22:48 +0000 (11:22 +0000)]
Auto merge of #55014 - ljedrz:lazyboye_unwraps, r=matthewjasper

Prefer unwrap_or_else to unwrap_or in case of function calls/allocations

The contents of `unwrap_or` are evaluated eagerly, so it's not a good pick in case of function calls and allocations. This PR also changes a few `unwrap_or`s with `unwrap_or_default`.

An added bonus is that in some cases this change also reveals if the object it's called on is an `Option` or a `Result` (based on whether the closure takes an argument).

5 years agoAuto merge of #55114 - oli-obk:fx#map, r=nikomatsakis
bors [Sat, 20 Oct 2018 08:45:55 +0000 (08:45 +0000)]
Auto merge of #55114 - oli-obk:fx#map, r=nikomatsakis

Deprecate the `FxHashMap()` and `FxHashSet()` constructor function hack

5 years agoAuto merge of #55007 - davidtwco:issue-39175, r=petrochenkov
bors [Sat, 20 Oct 2018 01:31:10 +0000 (01:31 +0000)]
Auto merge of #55007 - davidtwco:issue-39175, r=petrochenkov

Help suggests non-existent package std::os::ext::process::CommandExt

Fixes #39175.

5 years agoAuto merge of #55162 - nikomatsakis:issue-54902-underscore-bound, r=tmandry
bors [Fri, 19 Oct 2018 22:54:14 +0000 (22:54 +0000)]
Auto merge of #55162 - nikomatsakis:issue-54902-underscore-bound, r=tmandry

handle underscore bounds in unexpected places

Per the discussion on #54902, I made it a hard error to use lifetime bounds in various places where they used to be permitted:

- `where Foo: Bar<'_>` for example

I also moved error reporting to HIR lowering and added `Error` variants to let us suppress downstream errors that result.

I (imo) improved the error message wording to be clearer, as well.

In the process, I fixed the ICE in #52098.

Fixes #54902
Fixes #52098

5 years agoadd more to the ERROR messages
Niko Matsakis [Fri, 19 Oct 2018 20:43:46 +0000 (16:43 -0400)]
add more to the ERROR messages

5 years agofix error messages
Niko Matsakis [Fri, 19 Oct 2018 20:39:41 +0000 (16:39 -0400)]
fix error messages

5 years agoAuto merge of #55152 - nikomatsakis:nll-issue-54571-type-annot-in-constants, r=pnkfelix
bors [Fri, 19 Oct 2018 20:20:12 +0000 (20:20 +0000)]
Auto merge of #55152 - nikomatsakis:nll-issue-54571-type-annot-in-constants, r=pnkfelix

support type annot in constants, casts

Fixes #54571
Fixes #54332
Fixes #55183

r? @pnkfelix

5 years agoOnly suggest paths that exist.
David Wood [Fri, 12 Oct 2018 11:47:37 +0000 (13:47 +0200)]
Only suggest paths that exist.

In order to output a path that could actually be imported (valid and
visible), we need to handle re-exports correctly.

For example, take `std::os::unix::process::CommandExt`, this trait is
actually defined at `std::sys::unix::ext::process::CommandExt` (at time
of writing).

`std::os::unix` rexports the contents of `std::sys::unix::ext`.
`std::sys` is private so the "true" path to `CommandExt` isn't accessible.

In this case, the visible parent map will look something like this:

(child) -> (parent)
`std::sys::unix::ext::process::CommandExt` -> `std::sys::unix::ext::process`
`std::sys::unix::ext::process` -> `std::sys::unix::ext`
`std::sys::unix::ext` -> `std::os`

This is correct, as the visible parent of `std::sys::unix::ext` is in fact
`std::os`.

When printing the path to `CommandExt` and looking at the current
segment that corresponds to `std::sys::unix::ext`, we would normally
print `ext` and then go to the parent - resulting in a mangled path like
`std::os::ext::process::CommandExt`.

Instead, we must detect that there was a re-export and instead print `unix`
(which is the name `std::sys::unix::ext` was re-exported as in `std::os`).

5 years agonormalize the self-type that we extract from impl
Niko Matsakis [Thu, 18 Oct 2018 19:48:48 +0000 (15:48 -0400)]
normalize the self-type that we extract from impl

5 years agoeven though we don't need it yet, fix the "fast path" code
Niko Matsakis [Thu, 18 Oct 2018 18:26:45 +0000 (14:26 -0400)]
even though we don't need it yet, fix the "fast path" code

5 years agoadd a test that we enforce '`static` errors post normalization
Niko Matsakis [Thu, 18 Oct 2018 18:26:33 +0000 (14:26 -0400)]
add a test that we enforce '`static` errors post normalization

5 years agoadd useful debug log
Niko Matsakis [Thu, 18 Oct 2018 18:16:13 +0000 (14:16 -0400)]
add useful debug log

5 years agoregion_infer/mod.rs: rustfmt
Niko Matsakis [Thu, 18 Oct 2018 14:44:33 +0000 (10:44 -0400)]
region_infer/mod.rs: rustfmt

5 years agopacify the mercilous tidy
Niko Matsakis [Thu, 18 Oct 2018 00:09:52 +0000 (20:09 -0400)]
pacify the mercilous tidy

5 years agoskip user-type annotations if they don't have regions
Niko Matsakis [Wed, 17 Oct 2018 22:23:43 +0000 (18:23 -0400)]
skip user-type annotations if they don't have regions

5 years agolowering casts in constants now creates multiple uses
Niko Matsakis [Thu, 18 Oct 2018 09:58:20 +0000 (05:58 -0400)]
lowering casts in constants now creates multiple uses

This can trigger more errors than before. Not sure what is the best
fix here.

5 years agopacify the mercilous tidy
Niko Matsakis [Wed, 17 Oct 2018 20:40:43 +0000 (16:40 -0400)]
pacify the mercilous tidy

5 years agosave the user-provided type immediately upon return from astconv
Niko Matsakis [Wed, 17 Oct 2018 20:20:54 +0000 (16:20 -0400)]
save the user-provided type immediately upon return from astconv

5 years agocreate type ascription for any cast
Niko Matsakis [Wed, 17 Oct 2018 20:18:24 +0000 (16:18 -0400)]
create type ascription for any cast

Also, avoid shadowing of the `ty` variable by giving the `cast_ty` and
`var_ty` variables different names.  We want to get the user-provided
type from `cast_ty.hir_id`.

5 years agoWrap cast expressions inside of ValueTypeAscription
Keith Yeung [Tue, 2 Oct 2018 16:31:46 +0000 (09:31 -0700)]
Wrap cast expressions inside of ValueTypeAscription

5 years agosuppress duplicate -- or near duplicate -- type test errors
Niko Matsakis [Thu, 18 Oct 2018 13:00:11 +0000 (09:00 -0400)]
suppress duplicate -- or near duplicate -- type test errors

5 years agonormalize and prove predicates
Niko Matsakis [Wed, 17 Oct 2018 15:10:08 +0000 (11:10 -0400)]
normalize and prove predicates

Also include a test that was not working previously.

5 years agonormalize after substitution
Niko Matsakis [Wed, 17 Oct 2018 16:31:44 +0000 (12:31 -0400)]
normalize after substitution

5 years agopull `relate_type_and_user_type` code into `type_check` module
Niko Matsakis [Wed, 17 Oct 2018 18:55:42 +0000 (14:55 -0400)]
pull `relate_type_and_user_type` code into `type_check` module

It's really layered atop the core "relate-types" code

5 years agoUpdate unit tests
Oliver Scherer [Wed, 17 Oct 2018 11:51:47 +0000 (13:51 +0200)]
Update unit tests

5 years agoUpdate TypedArena tests
Oliver Scherer [Wed, 17 Oct 2018 07:11:55 +0000 (09:11 +0200)]
Update TypedArena tests

5 years agoUpdate more internals tests to `default`
Oliver Scherer [Tue, 16 Oct 2018 20:06:19 +0000 (22:06 +0200)]
Update more internals tests to `default`

5 years agoFree some memory instead of just dropping elements
Oliver Scherer [Tue, 16 Oct 2018 17:59:44 +0000 (19:59 +0200)]
Free some memory instead of just dropping elements

5 years agoUpdate a compiler-test to the `Default` changes
Oliver Scherer [Tue, 16 Oct 2018 17:51:12 +0000 (19:51 +0200)]
Update a compiler-test to the `Default` changes

5 years agoRemove unused box
Oliver Scherer [Tue, 16 Oct 2018 15:21:55 +0000 (17:21 +0200)]
Remove unused box

5 years agoDerives often have very strict bounds
Oliver Scherer [Tue, 16 Oct 2018 15:19:25 +0000 (17:19 +0200)]
Derives often have very strict bounds

5 years agoPrefer `Default::default` over `FxHash*::default` in struct constructors
Oliver Scherer [Tue, 16 Oct 2018 14:57:53 +0000 (16:57 +0200)]
Prefer `Default::default` over `FxHash*::default` in struct constructors

5 years agoDeprecate the `FxHashMap()` and `FxHashSet()` constructor function hack
Oliver Scherer [Tue, 16 Oct 2018 08:44:26 +0000 (10:44 +0200)]
Deprecate the `FxHashMap()` and `FxHashSet()` constructor function hack

5 years agotype_check/mod.rs: rustfmt
Niko Matsakis [Wed, 17 Oct 2018 16:15:56 +0000 (12:15 -0400)]
type_check/mod.rs: rustfmt

5 years agoreplace `UserTypeAnnotation::AdtDef` with `TypeOf`
Niko Matsakis [Wed, 17 Oct 2018 15:48:41 +0000 (11:48 -0400)]
replace `UserTypeAnnotation::AdtDef` with `TypeOf`

5 years agopropagate user-type annotation for constants in expressions
Niko Matsakis [Wed, 17 Oct 2018 14:14:29 +0000 (10:14 -0400)]
propagate user-type annotation for constants in expressions

5 years agoconvert `FnDef` to `TypeOf`, which is more general
Niko Matsakis [Wed, 17 Oct 2018 13:58:52 +0000 (09:58 -0400)]
convert `FnDef` to `TypeOf`, which is more general

5 years agoremove outdated assertion
Niko Matsakis [Wed, 17 Oct 2018 16:32:00 +0000 (12:32 -0400)]
remove outdated assertion

This dates from the days before we instantiated user types with
inference variables.

5 years agoAuto merge of #55194 - kennytm:rollup, r=kennytm
bors [Fri, 19 Oct 2018 09:29:48 +0000 (09:29 +0000)]
Auto merge of #55194 - kennytm:rollup, r=kennytm

Rollup of 7 pull requests

Successful merges:

 - #54300 (Updated RELEASES.md for 1.30.0)
 - #55013 ([NLL] Propagate bounds from generators)
 - #55071 (Fix ICE and report a human readable error)
 - #55144 (Cleanup resolve)
 - #55166 (Don't warn about parentheses on `match (return)`)
 - #55169 (Add a `copysign` function to f32 and f64)
 - #55178 (Stabilize slice::chunks_exact(), chunks_exact_mut(), rchunks(), rchunks_mut(), rchunks_exact(), rchunks_exact_mut())

5 years agoRollup merge of #55013 - matthewjasper:propagate-generator-bounds, r=nikomatsakis
kennytm [Fri, 19 Oct 2018 08:48:36 +0000 (16:48 +0800)]
Rollup merge of #55013 - matthewjasper:propagate-generator-bounds, r=nikomatsakis

[NLL] Propagate bounds from generators

This used to only be done for closures.

5 years agoRollup merge of #55178 - sdroege:stabilize-chunks-exact, r=alexcrichton
kennytm [Fri, 19 Oct 2018 03:03:35 +0000 (11:03 +0800)]
Rollup merge of #55178 - sdroege:stabilize-chunks-exact, r=alexcrichton

Stabilize slice::chunks_exact(), chunks_exact_mut(), rchunks(), rchunks_mut(), rchunks_exact(), rchunks_exact_mut()

Fixes #47115, #55177

5 years agoRollup merge of #55169 - raphlinus:copysign, r=joshtriplett
kennytm [Fri, 19 Oct 2018 03:03:34 +0000 (11:03 +0800)]
Rollup merge of #55169 - raphlinus:copysign, r=joshtriplett

Add a `copysign` function to f32 and f64

This patch adds a `copysign` function to the float primitive types. It is an exceptionally useful function for writing efficient numeric code, as it often avoids branches, is auto-vectorizable, and there are efficient intrinsics for most platforms.

I think this might work as-is, as the relevant `copysign` intrinsic is already used internally for the implementation of `signum`. It's possible that an implementation might be needed in japaric/libm for portability across all platforms, in which case I'll do that also.

Part of the work towards #55107

5 years agoRollup merge of #55166 - varkor:ret-parens, r=davidtwco
kennytm [Fri, 19 Oct 2018 03:03:33 +0000 (11:03 +0800)]
Rollup merge of #55166 - varkor:ret-parens, r=davidtwco

Don't warn about parentheses on `match (return)`

Fixes #55164.

5 years agoRollup merge of #55144 - ljedrz:cleanup_resolve, r=petrochenkov
kennytm [Fri, 19 Oct 2018 03:03:32 +0000 (11:03 +0800)]
Rollup merge of #55144 - ljedrz:cleanup_resolve, r=petrochenkov

Cleanup resolve

- improve/remove allocations
- `truncate` instead of `pop`ping in a loop
- improve common patterns

5 years agoRollup merge of #55071 - oli-obk:const_cast_🍨, r=RalfJung
kennytm [Fri, 19 Oct 2018 03:03:30 +0000 (11:03 +0800)]
Rollup merge of #55071 - oli-obk:const_cast_🍨, r=RalfJung

Fix ICE and report a human readable error

fixes #55063

r? @RalfJung

5 years agoPrefer unwrap_or_else to unwrap_or in case of function calls/allocations
ljedrz [Fri, 12 Oct 2018 14:16:00 +0000 (16:16 +0200)]
Prefer unwrap_or_else to unwrap_or in case of function calls/allocations

5 years agoAuto merge of #55040 - scalexm:param-env, r=nikomatsakis
bors [Fri, 19 Oct 2018 06:38:10 +0000 (06:38 +0000)]
Auto merge of #55040 - scalexm:param-env, r=nikomatsakis

Replace `ParamEnv` with a new type in chalk context.

I left a few FIXMEs.

r? @nikomatsakis

5 years agoRollup merge of #54300 - Aaronepower:master, r=Aaronepower
kennytm [Fri, 19 Oct 2018 03:03:25 +0000 (11:03 +0800)]
Rollup merge of #54300 - Aaronepower:master, r=Aaronepower

Updated RELEASES.md for 1.30.0

[Rendered](https://github.com/Aaronepower/rust/blob/master/RELEASES.md)

r? @Mark-Simulacrum

cc @rust-lang/release

5 years agoAuto merge of #55004 - oli-obk:sized_static, r=cramertj
bors [Fri, 19 Oct 2018 00:22:25 +0000 (00:22 +0000)]
Auto merge of #55004 - oli-obk:sized_static, r=cramertj

Check the type of statics and constants for `Sized`ness

fixes #54410

5 years agoPropagate bounds from generators
Matthew Jasper [Fri, 12 Oct 2018 14:16:29 +0000 (15:16 +0100)]
Propagate bounds from generators

5 years agoAuto merge of #54979 - estebank:path-unsized, r=nikomatsakis
bors [Thu, 18 Oct 2018 21:42:21 +0000 (21:42 +0000)]
Auto merge of #54979 - estebank:path-unsized, r=nikomatsakis

Custom E0277 diagnostic for `Path`

r? @nikomatsakis we have a way to target `Path` exclusively, we need to identify the correct text to show to consider #23286 fixed.

5 years agoAuto merge of #54976 - davidtwco:issue-52663-special-case-closures, r=nikomatsakis
bors [Thu, 18 Oct 2018 18:14:52 +0000 (18:14 +0000)]
Auto merge of #54976 - davidtwco:issue-52663-special-case-closures, r=nikomatsakis

NLL lacks various special case handling of closures

Part of #52663.

Firstly, this PR extends existing handling of closures to also support generators.

Second, this PR adds the note found in the AST when a closure is invoked twice and captures a variable by-value:

```text
note: closure cannot be invoked more than once because it moves the variable `dict` out of its environment
  --> $DIR/issue-42065.rs:16:29
   |
LL |         for (key, value) in dict {
   |                             ^^^^
```

r? @nikomatsakis
cc @pnkfelix

5 years agoImprove check to consider how value is used.
David Wood [Tue, 16 Oct 2018 17:37:01 +0000 (19:37 +0200)]
Improve check to consider how value is used.

5 years agoAdd by-value captured variable note on second use.
David Wood [Wed, 10 Oct 2018 23:19:55 +0000 (01:19 +0200)]
Add by-value captured variable note on second use.

This commit adds a note that was present in the AST borrow checker when
closures are invoked more than once and have captured variables
by-value.

5 years agoStabilize slice::rchunks(), rchunks_mut(), rchunks_exact(), rchunk_exact_mut()
Sebastian Dröge [Thu, 18 Oct 2018 15:48:02 +0000 (18:48 +0300)]
Stabilize slice::rchunks(), rchunks_mut(), rchunks_exact(), rchunk_exact_mut()

Fixes #55177

5 years agoStabilize slice::chunks_exact() and slice::chunks_exact_mut()
Sebastian Dröge [Thu, 18 Oct 2018 07:22:34 +0000 (10:22 +0300)]
Stabilize slice::chunks_exact() and slice::chunks_exact_mut()

Fixes #47115

5 years agoExtend closure special-casing for generators.
David Wood [Wed, 10 Oct 2018 19:56:17 +0000 (21:56 +0200)]
Extend closure special-casing for generators.

This commit extends existing special-casing of closures to highlight the
use of variables within generators that are causing the generator to
borrow them.

5 years agoAdd must_use on copysign
Raph Levien [Thu, 18 Oct 2018 15:35:09 +0000 (08:35 -0700)]
Add must_use on copysign

Added a #[must_use] annotation on copysign, per review feedback.

5 years agoAuto merge of #54580 - sdroege:rchunks, r=SimonSapin
bors [Thu, 18 Oct 2018 12:47:31 +0000 (12:47 +0000)]
Auto merge of #54580 - sdroege:rchunks, r=SimonSapin

Add slice::rchunks(), rchunks_mut(), rchunks_exact() and rchunks_exact_mut()

These work exactly like the normal chunks iterators but start creating
chunks from the end of the slice.

----

The new iterators were motivated by a [comment](https://github.com/rust-lang/rust/issues/47115#issuecomment-424141121) by @DutchGhost.

~~~This currently includes the commits from https://github.com/rust-lang/rust/pull/54537 to not have to rename things twice or have merge conflicts. I'll force-push a new version of the branch ones those are in master.~~~

Also the stabilization tracking issue is just some number right now. I'll create the corresponding issue once this is reviewed and otherwise mergeable.

cc @DutchGhost

5 years agoUpdated RELEASES.md for 1.30.0
Aaron Power [Mon, 17 Sep 2018 16:44:04 +0000 (17:44 +0100)]
Updated RELEASES.md for 1.30.0

5 years agoAuto merge of #54349 - GuillaumeGomez:no-example-lint, r=QuietMisdreavus
bors [Thu, 18 Oct 2018 09:53:29 +0000 (09:53 +0000)]
Auto merge of #54349 - GuillaumeGomez:no-example-lint, r=QuietMisdreavus

[rustdoc] Add lint for doc without codeblocks

Fixes #53805.

r? @QuietMisdreavus

5 years agoresolve_lifetime.rs: rustfmt
Niko Matsakis [Thu, 18 Oct 2018 09:39:53 +0000 (05:39 -0400)]
resolve_lifetime.rs: rustfmt

5 years agoMake warnings into errors
varkor [Thu, 18 Oct 2018 09:35:01 +0000 (10:35 +0100)]
Make warnings into errors

5 years agoAdd slice::rchunks(), rchunks_mut(), rchunks_exact() and rchunks_exact_mut()
Sebastian Dröge [Tue, 25 Sep 2018 22:35:54 +0000 (01:35 +0300)]
Add slice::rchunks(), rchunks_mut(), rchunks_exact() and rchunks_exact_mut()

These work exactly like the normal chunks iterators but start creating
chunks from the end of the slice.

See #55177 for the tracking issue

5 years agoAuto merge of #55171 - kennytm:rollup, r=kennytm
bors [Thu, 18 Oct 2018 07:02:11 +0000 (07:02 +0000)]
Auto merge of #55171 - kennytm:rollup, r=kennytm

Rollup of 18 pull requests

Successful merges:

 - #54646 (improve documentation on std::thread::sleep)
 - #54933 (Cleanup the rest of codegen_llvm)
 - #54964 (Run both lldb and gdb tests)
 - #55016 (Deduplicate some code and compile-time values around vtables)
 - #55031 (Improve verify_llvm_ir config option)
 - #55050 (doc std::fmt: the Python inspiration is already mentioned in precedin…)
 - #55077 (rustdoc: Use dyn keyword when rendering dynamic traits)
 - #55080 (Detect if access to localStorage is forbidden by the user's browser)
 - #55090 (regression test for move out of borrow via pattern)
 - #55102 (resolve: Do not skip extern prelude during speculative resolution)
 - #55104 (Add test for #34229)
 - #55111 ([Rustc Book] Explain --cfg's arguments)
 - #55122 (Cleanup mir/borrowck)
 - #55127 (Remove HybridBitSet::dummy)
 - #55128 (Fix LLVMRustInlineAsmVerify return type mismatch)
 - #55142 (miri: layout should not affect CTFE checks (outside of validation))
 - #55151 (Cleanup nll)
 - #55161 ([librustdoc] Disable spellcheck for search field)

5 years agoRollup merge of #55111 - Havvy:rustc-book-cfg-examples, r=GuillaumeGomez
kennytm [Thu, 18 Oct 2018 04:56:07 +0000 (12:56 +0800)]
Rollup merge of #55111 - Havvy:rustc-book-cfg-examples, r=GuillaumeGomez

[Rustc Book] Explain --cfg's arguments

I removed this from the reference since it's rustc specific, and noticed it wasn't well documented on the page that should document it well. It does seem to go against the grain of one line per command line flag though.

5 years agoRollup merge of #55161 - akxcv:rustdoc/disable-spellcheck, r=QuietMisdreavus,Guillaum...
kennytm [Thu, 18 Oct 2018 02:47:38 +0000 (10:47 +0800)]
Rollup merge of #55161 - akxcv:rustdoc/disable-spellcheck, r=QuietMisdreavus,GuillaumeGomez

[librustdoc] Disable spellcheck for search field

This disables spellchecking for the search field in the rustdoc web interface.

As someone who uses Safari to browse through Rust docs, spellchecking gets really annoying.

5 years agoRollup merge of #55151 - ljedrz:cleanup_nll, r=estebank
kennytm [Thu, 18 Oct 2018 02:47:37 +0000 (10:47 +0800)]
Rollup merge of #55151 - ljedrz:cleanup_nll, r=estebank

Cleanup nll

- improve allocations
- improve `format!` calls
- improve common patterns

5 years agoRollup merge of #55142 - RalfJung:miri-uninhabited-enum, r=oli-obk
kennytm [Thu, 18 Oct 2018 02:47:36 +0000 (10:47 +0800)]
Rollup merge of #55142 - RalfJung:miri-uninhabited-enum, r=oli-obk

miri: layout should not affect CTFE checks (outside of validation)

Either the enum has no valid discriminant, then the code later will catch that; or it does, then we shouldn't error out so early (absent enforcing validity).

Interestingly, the miri test suite still passes; my guess is we don't even get here for uninhabited types?

r? @oli-obk

5 years agoRollup merge of #55128 - varkor:LLVMRustInlineAsmVerify-return-bool, r=rkruppe
kennytm [Thu, 18 Oct 2018 02:47:34 +0000 (10:47 +0800)]
Rollup merge of #55128 - varkor:LLVMRustInlineAsmVerify-return-bool, r=rkruppe

Fix LLVMRustInlineAsmVerify return type mismatch

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

r? @rkruppe
cc @levex

5 years agoRollup merge of #55127 - ljedrz:simplify_hybridbitset, r=matthewjasper
kennytm [Thu, 18 Oct 2018 02:47:33 +0000 (10:47 +0800)]
Rollup merge of #55127 - ljedrz:simplify_hybridbitset, r=matthewjasper

Remove HybridBitSet::dummy

This simplifies some of the `HybridBitSet` code.

cc @nnethercote

5 years agoRollup merge of #55122 - ljedrz:cleanup_mir_borrowck, r=Mark-Simulacrum
kennytm [Thu, 18 Oct 2018 02:47:32 +0000 (10:47 +0800)]
Rollup merge of #55122 - ljedrz:cleanup_mir_borrowck, r=Mark-Simulacrum

Cleanup mir/borrowck

- remove a redundant `.clone()`
- a few string tweaks
- deduplicate assignments and `return`s
- simplify common patterns
- remove redundant `return`s

5 years agoRollup merge of #55104 - estebank:addtest, r=alexcrichton
kennytm [Thu, 18 Oct 2018 02:47:29 +0000 (10:47 +0800)]
Rollup merge of #55104 - estebank:addtest, r=alexcrichton

Add test for #34229

Fix #34229.

5 years agoRollup merge of #55102 - petrochenkov:trextra, r=nikomatsakis
kennytm [Thu, 18 Oct 2018 02:47:28 +0000 (10:47 +0800)]
Rollup merge of #55102 - petrochenkov:trextra, r=nikomatsakis

resolve: Do not skip extern prelude during speculative resolution

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

5 years agoRollup merge of #55090 - pnkfelix:issue-54597-regression-test, r=estebank
kennytm [Thu, 18 Oct 2018 02:47:27 +0000 (10:47 +0800)]
Rollup merge of #55090 - pnkfelix:issue-54597-regression-test, r=estebank

regression test for move out of borrow via pattern

regression test for issue #54597.

(We may have other tests that cover this, but I couldn't immediately find them associated with the PR that originally fixed the ICE here.)

5 years agoRollup merge of #55080 - thanatos:fix-localstorage-crash, r=GuillaumeGomez
kennytm [Thu, 18 Oct 2018 02:47:26 +0000 (10:47 +0800)]
Rollup merge of #55080 - thanatos:fix-localstorage-crash, r=GuillaumeGomez

Detect if access to localStorage is forbidden by the user's browser

If the user's cookie/persistent storage setting forbid access to `localStorage`, catch the exception and abort the access.

Currently, attempting to use the expand/contract links at the top of the page for structs/consts/etc. fails due to an unhandled error while accessing `localStorage`, if such access is forbidden, as the exception from the failed access propagates all the way out, interrupting the expand/contract. Instead, I would like to degrade gracefully; the access won't happen (the collapse/expand state won't get persisted) but the actual expanding/contracting of the item will go on to succeed.

Fixes #55079

5 years agoRollup merge of #55077 - ollie27:rustdoc_dyn_trait, r=QuietMisdreavus
kennytm [Thu, 18 Oct 2018 02:47:24 +0000 (10:47 +0800)]
Rollup merge of #55077 - ollie27:rustdoc_dyn_trait, r=QuietMisdreavus

rustdoc: Use dyn keyword when rendering dynamic traits

The dyn keyword has been stable for a while now so rustdoc should start using it.

r? @QuietMisdreavus

5 years agoRollup merge of #55050 - tshepang:repetition, r=steveklabnik
kennytm [Thu, 18 Oct 2018 02:47:23 +0000 (10:47 +0800)]
Rollup merge of #55050 - tshepang:repetition, r=steveklabnik

doc std::fmt: the Python inspiration is already mentioned in precedin…

…g paragraph

5 years agoRollup merge of #55031 - nikic:verify_llvm_ir, r=Mark-Simulacrum
kennytm [Thu, 18 Oct 2018 02:47:22 +0000 (10:47 +0800)]
Rollup merge of #55031 - nikic:verify_llvm_ir, r=Mark-Simulacrum

Improve verify_llvm_ir config option

LLVM IR verification has been disabled by default in #51230. However, the implementation doesn't quite match what was discussed in the discussion. This patch implements two changes:

* Make `verify_llvm_ir` influence the behavior of the compiled rustc binary, rather than just the rustc build system. That is, if `verify_llvm_ir=true`, even manual invocations of the built rustc will verify LLVM IR.
* Enable verification of LLVM IR in CI, for non-deploy and deploy-alt builds. This is similar to how LLVM assertions are handled.

5 years agoRollup merge of #55016 - oli-obk:vtables💥_vtables_everywhere, r=RalfJung
kennytm [Thu, 18 Oct 2018 02:47:21 +0000 (10:47 +0800)]
Rollup merge of #55016 - oli-obk:vtables💥_vtables_everywhere, r=RalfJung

Deduplicate some code and compile-time values around vtables

r? @RalfJung

5 years agoRollup merge of #54964 - tromey:run-both-gdb-and-lldb-tests, r=nikomatsakis
kennytm [Thu, 18 Oct 2018 02:47:20 +0000 (10:47 +0800)]
Rollup merge of #54964 - tromey:run-both-gdb-and-lldb-tests, r=nikomatsakis

Run both lldb and gdb tests

Currently lldb tests are run only on macOS, and gdb tests are only run
elsewhere.  This patch changes this to run tests depending on what is
available.

One test is changed, as it was previously marked as failing on macOS,
whereas really it is a generic failure with lldb.

Closes #54721

5 years agoRollup merge of #54933 - ljedrz:cleanup_codegen_llvm/misc, r=varkor
kennytm [Thu, 18 Oct 2018 02:47:18 +0000 (10:47 +0800)]
Rollup merge of #54933 - ljedrz:cleanup_codegen_llvm/misc, r=varkor

Cleanup the rest of codegen_llvm

- improve common patterns
- convert string literals with `to_owned`
- remove explicit `return`s
- whitespace & formatting improvements

5 years agoRollup merge of #54646 - vn971:fix_std_thread_sleep, r=frewsxcv
kennytm [Thu, 18 Oct 2018 02:47:17 +0000 (10:47 +0800)]
Rollup merge of #54646 - vn971:fix_std_thread_sleep, r=frewsxcv

improve documentation on std::thread::sleep

5 years agoFix inconsistent documentation
Raph Levien [Thu, 18 Oct 2018 04:09:55 +0000 (21:09 -0700)]
Fix inconsistent documentation

I improved the f32 version and made a copy-paste error for f64.

5 years agoAdd a `copysign` function to f32 and f64
Raph Levien [Thu, 18 Oct 2018 01:15:00 +0000 (18:15 -0700)]
Add a `copysign` function to f32 and f64

This patch adds a `copysign` function to the float primitive types.
It is an exceptionally useful function for writing efficient numeric
code, as it often avoids branches, is auto-vectorizable, and there
are efficient intrinsics for most platforms.

I think this might work as-is, as the relevant `copysign` intrinsic
is already used internally for the implementation of `signum`. It's
possible that an implementation might be needed in japaric/libm for
portability across all platforms, in which case I'll do that also.

Part of the work towards #55107

5 years agoAuto merge of #55134 - davidtwco:issue-55118, r=pnkfelix
bors [Wed, 17 Oct 2018 23:16:10 +0000 (23:16 +0000)]
Auto merge of #55134 - davidtwco:issue-55118, r=pnkfelix

NLL: change compare-mode=nll to use borrowck=migrate

Fixes #55118.

This PR is split into two parts:

The first commit is a minor change that fixes a flaw in the existing `borrowck=migrate` implementation whereby a lint that was promoted to an error in the AST borrow checker would result in the same lint from the NLL borrow checker being downgraded to a warning in migrate mode. This PR fixes this by ensuring lints are exempt from buffering in the NLL borrow checker.

The second commit updates `compiletest` to make the NLL compare mode use `-Z borrowck=migrate` rather than `-Z borrowck=mir`. The third commit shows all the test output changes that result from this.

r? @pnkfelix

5 years agoDon't warn about parentheses on `match (return)`
varkor [Wed, 17 Oct 2018 22:51:01 +0000 (23:51 +0100)]
Don't warn about parentheses on `match (return)`

5 years agomove E0637 to lowering and improve output, add more tests
Niko Matsakis [Thu, 11 Oct 2018 19:51:44 +0000 (15:51 -0400)]
move E0637 to lowering and improve output, add more tests

5 years ago[librustdoc] Disable spellcheck for search field
Alexander Komarov [Wed, 17 Oct 2018 20:58:21 +0000 (23:58 +0300)]
[librustdoc] Disable spellcheck for search field

5 years agonll: improve common patterns
ljedrz [Wed, 17 Oct 2018 14:58:12 +0000 (16:58 +0200)]
nll: improve common patterns

5 years agonll: improve format operations
ljedrz [Wed, 17 Oct 2018 14:54:17 +0000 (16:54 +0200)]
nll: improve format operations

5 years agonll: improve allocations
ljedrz [Wed, 17 Oct 2018 14:52:35 +0000 (16:52 +0200)]
nll: improve allocations

5 years agoresolve: improve/remove allocations
ljedrz [Wed, 17 Oct 2018 09:36:19 +0000 (11:36 +0200)]
resolve: improve/remove allocations

5 years agoresolve: improve common patterns
ljedrz [Wed, 17 Oct 2018 09:13:44 +0000 (11:13 +0200)]
resolve: improve common patterns

5 years agomir/borrowck: remove a redundant clone
ljedrz [Tue, 16 Oct 2018 13:33:03 +0000 (15:33 +0200)]
mir/borrowck: remove a redundant clone

5 years agomir/borrowck: remove redundant returns
ljedrz [Tue, 16 Oct 2018 13:25:18 +0000 (15:25 +0200)]
mir/borrowck: remove redundant returns

5 years agomir/borrowck: deduplicate assignments and returns
ljedrz [Tue, 16 Oct 2018 13:13:11 +0000 (15:13 +0200)]
mir/borrowck: deduplicate assignments and returns

5 years agomir/borrowck: a few string tweaks
ljedrz [Tue, 16 Oct 2018 13:10:59 +0000 (15:10 +0200)]
mir/borrowck: a few string tweaks

5 years agomir/borrowck: simplify common patterns
ljedrz [Tue, 16 Oct 2018 13:06:59 +0000 (15:06 +0200)]
mir/borrowck: simplify common patterns

5 years agoRe-use memory in `program_clauses_for_env`
scalexm [Sat, 13 Oct 2018 15:10:56 +0000 (17:10 +0200)]
Re-use memory in `program_clauses_for_env`