Commit Graph

77764 Commits

Author SHA1 Message Date
Niko Matsakis
434d59a2c9 ignore the point where the outlives requirement was added 2018-05-09 23:21:24 -03:00
Niko Matsakis
964e0691be use chunks api for SparseBitMatrix and add a subset fn 2018-05-09 23:21:24 -03:00
Niko Matsakis
accfdcc905 rename add to add_element 2018-05-09 23:21:24 -03:00
Niko Matsakis
ed72950fde rework causal tracking to explore outlives relationships
Instead of tracking the "cause" of each bit that gets added, try to
recover that by walking outlives relationships. This is currently
imprecise, since it ignores the "point" where the outlives relationship
is incurred -- but that's ok, since we're about to stop considering that
overall in a later commit. This does seem to affect one error message
negatively, I didn't dig *too* hard to find out why.
2018-05-09 23:21:24 -03:00
Niko Matsakis
1fb17aba69 generalize blame_span 2018-05-09 23:21:24 -03:00
bors
e5f80f2a4f Auto merge of #49834 - Zoxc:sync-trait-cache, r=nikomatsakis
Make SelectionCache and EvaluationCache thread-safe

Split out from https://github.com/rust-lang/rust/pull/49558

r? @nikomatsakis
2018-05-09 19:17:35 +00:00
bors
472541731e Auto merge of #49711 - ibabushkin:auto_trait_refactor, r=nikomatsakis
Refactor auto trait handling in librustdoc to be accessible from librustc.

These commits transfer some of the functionality introduced in https://github.com/rust-lang/rust/pull/47833 to librustc with the intention of making the tools to work with auto traits accessible to third-party code, for example [rust-semverver](https://github.com/rust-lang-nursery/rust-semverver).

Some rough edges remain, and I'm certain some of the FIXMEs introduced will need some discussion, most notably the fairly ugly overall approach to pull out the core logic into librustc, which was previously fairly tightly coupled with various bits and bobs from librustdoc.

cc @Aaron1011
2018-05-09 16:56:30 +00:00
bors
ac287ed167 Auto merge of #50546 - kennytm:rollup, r=kennytm
Rollup of 11 pull requests

Successful merges:

 - #49988 (Mention Result<!, E> in never docs.)
 - #50148 (turn `ManuallyDrop::new` into a constant function)
 - #50456 (Update the Cargo submodule)
 - #50460 (Make `String::new()` const)
 - #50464 (Remove some transmutes)
 - #50505 (Added regression function match value test)
 - #50511 (Add some explanations for #[must_use])
 - #50525 (Optimize string handling in lit_token().)
 - #50527 (Cleanup a `use` in a raw_vec test)
 - #50539 (Add more logarithm constants)
 - #49523 (Update RELEASES.md for 1.26.0)

Failed merges:
2018-05-09 13:28:15 +00:00
kennytm
99cd9a9f40
Rollup merge of #49523 - Aaronepower:master, r=Mark-Simulacrum
Update RELEASES.md for 1.26.0

[Rendered](https://github.com/Aaronepower/rust/blob/master/RELEASES.md)
2018-05-09 20:29:49 +08:00
kennytm
553d25eb50
Rollup merge of #50527 - glandium:cleanup, r=sfackler
Cleanup a `use` in a raw_vec test

`allocator` is deprecated in favor of `alloc`, and `Alloc` is already imported
through `super::*`.
2018-05-09 20:29:47 +08:00
kennytm
4924fea202
Rollup merge of #50511 - Manishearth:must-use, r=QuietMisdreavus
Add some explanations for #[must_use]

`#[must_use]` can be given a string argument which is shown whilst warning for things.

We should add a string argument to most of the user-exposed ones.

I added these for everything but the operators, mostly because I'm not sure what to write there or if we need anything there.
2018-05-09 20:29:46 +08:00
kennytm
4c3ab33f3a
Rollup merge of #50505 - Aaronepower:add-test, r=oli-obk
Added regression function match value test

closes #44333
2018-05-09 20:29:45 +08:00
kennytm
e6e58a3a43
Rollup merge of #50464 - est31:master, r=rkruppe
Remove some transmutes
2018-05-09 20:29:44 +08:00
kennytm
1f4718a5c1
Rollup merge of #50460 - F001:const_string, r=kennytm
Make `String::new()` const

Following the steps of https://github.com/rust-lang/rust/pull/50233 , make `String::new()` a `const fn`.
2018-05-09 20:29:42 +08:00
Aaron Power
111786d30e
Update RELEASES.md 2018-05-09 11:06:20 +01:00
kennytm
dea03f1239
Rollup merge of #50148 - japaric:const-manuallydrop, r=oli-obk
turn `ManuallyDrop::new` into a constant function
2018-05-09 17:25:25 +08:00
kennytm
bb690c600c
Rollup merge of #49988 - clarcharr:never_docs, r=steveklabnik
Mention Result<!, E> in never docs.

Fixes #48096.
2018-05-09 17:25:04 +08:00
kennytm
8e7f6dbdd7
Rollup merge of #50539 - clarcharr:log_const, r=dtolnay
Add more logarithm constants

Right now, we have `ln(2)` and `ln(10)`, but only `log2(e)` and `log10(e)`. This also adds `log2(10)` and `log10(2)` for consistency.
2018-05-09 17:24:44 +08:00
kennytm
0fa08507ef
Rollup merge of #50525 - nnethercote:lit_token, r=michaelwoerister
Optimize string handling in lit_token().

In the common case, the string value in a string literal Token is the
same as the string value in a string literal LitKind. (The exception is
when escapes or \r are involved.) This patch takes advantage of that to
avoid calling str_lit() and re-interning the string in that case. This
speeds up incremental builds for a few of the rustc-benchmarks, the best
by 3%.

Benchmarks that got a speedup of 1% or more:
```
coercions
        avg: -1.1%      min: -3.5%      max: 0.4%
regex-check
        avg: -1.2%      min: -1.5%      max: -0.6%
futures-check
        avg: -0.9%      min: -1.4%      max: -0.3%
futures
        avg: -0.8%      min: -1.3%      max: -0.3%
futures-opt
        avg: -0.7%      min: -1.2%      max: -0.1%
regex
        avg: -0.5%      min: -1.2%      max: -0.1%
regex-opt
        avg: -0.5%      min: -1.1%      max: -0.1%
hyper-check
        avg: -0.7%      min: -1.0%      max: -0.3%
```
2018-05-09 17:23:31 +08:00
kennytm
e6a309e352
Rollup merge of #50456 - alexcrichton:update-cargo, r=alexcrichton
Update the Cargo submodule

Hopefully brining in a few fixes to Cargo regressions!
2018-05-09 17:20:55 +08:00
Nicholas Nethercote
65ea0ff29d Optimize string handling in lit_token().
In the common case, the string value in a string literal Token is the
same as the string value in a string literal LitKind. (The exception is
when escapes or \r are involved.) This patch takes advantage of that to
avoid calling str_lit() and re-interning the string in that case. This
speeds up incremental builds for a few of the rustc-benchmarks, the best
by 3%.
2018-05-09 09:17:03 +10:00
Clar Charr
23b6e465b9 Add more logarithm constants 2018-05-08 13:40:17 -04:00
bors
8ff4b42064 Auto merge of #50530 - oli-obk:miri, r=kennytm
Fix thinning pointers to extern types in miri

r? @kennytm as an alternative to disabling the miri build

fixes #50495
2018-05-08 17:20:01 +00:00
Alex Crichton
576aab9dfe Update the Cargo/stdsimd submodules
Hopefully brining in a few fixes to Cargo regressions as well as some new
stdsimd functions!
2018-05-08 08:20:47 -07:00
bors
c166b03868 Auto merge of #50497 - RalfJung:pinmut, r=withoutboats
Rename Pin to PinMut, and some more breaking changes

As discussed at [1] §3 and [2] and [3], a formal look at pinning requires considering a distinguished "shared pinned" mode/typestate.  Given that, it seems desirable to at least eventually actually expose that typestate as a reference type.  This renames Pin to PinMut, freeing the name Pin in case we want to use it for a shared pinned reference later on.

[1] https://www.ralfj.de/blog/2018/04/10/safe-intrusive-collections-with-pinning.html
[2] https://github.com/rust-lang/rfcs/pull/2349#issuecomment-379250361
[3] https://github.com/rust-lang/rust/issues/49150#issuecomment-380488275

Cc @withoutboats
2018-05-08 14:45:16 +00:00
bors
b183bd0ad4 Auto merge of #50490 - nrc:method-docs, r=eddyb
save-analysis: emit correct docs for methods

cc https://github.com/rust-lang-nursery/rls/issues/446

r? @eddyb
2018-05-08 12:25:01 +00:00
Oliver Schneider
5258871825
Fix thinning pointers to extern types in miri 2018-05-08 13:52:20 +02:00
bors
697a989ec0 Auto merge of #50503 - alexheretic:master, r=oli-obk
Update rls with compiling clippy

Updates rls to use a working clippy version. This pr can be closed if the latest clippy release is broken again.
2018-05-08 10:15:48 +00:00
Mike Hommey
663c0961b9 Cleanup a use in a raw_vec test
`allocator` is deprecated in favor of `alloc`, and `Alloc` is already imported
through `super::*`.
2018-05-08 17:07:24 +09:00
bors
295d98069f Auto merge of #50390 - hdhoang:46205_deny_by_default, r=nikomatsakis
lint: deny incoherent_fundamental_impls by default

Warn the ecosystem of the pending intent-to-disallow in #49799.

There are 4 ICEs on my machine, look unrelated (having happened before in https://github.com/rust-lang/rust/issues/49146#issuecomment-384473523)

```rust
thread 'main' panicked at 'assertion failed: position <= slice.len()', libserialize/leb128.rs:97:1
```

```
    [run-pass] run-pass/allocator/xcrate-use2.rs
    [run-pass] run-pass/issue-12133-3.rs
    [run-pass] run-pass/issue-32518.rs
    [run-pass] run-pass/trait-default-method-xc-2.rs
```

r? @nikomatsakis
2018-05-08 04:56:01 +00:00
bors
0da1a69003 Auto merge of #50260 - Manishearth:no-extern-crate, r=nikomatsakis
idiom lints for removing `extern crate`

Based off of https://github.com/rust-lang/rust/pull/49789

This contains two lints:

 - One that suggests replacing pub extern crates with pub use, and removing non-pub extern crates entirely
 - One that suggests rewriting `use modulename::...::cratename::foo` as `cratename::foo`

The latter is a bit tricky to emit suggestions for; for one this involves splicing spans (never a good idea), and it also won't be able to correctly
handle `use module::{cratename, foo}` and use-trees. I'm not sure how to proceed here. Currently it doesn't suggest anything at all.

Perhaps we can go the other way and suggest removal of all extern crates _except_ those used through modules (stash node ids somewhere) and suggest replacing those with `<visibility> use`?

r? @nikomatsakis

fixes https://github.com/rust-lang/rust/issues/48719
2018-05-08 01:37:52 +00:00
bors
715d6a98aa Auto merge of #50305 - GuillaumeGomez:fix-mod-stackoverflow, r=QuietMisdreavus
Prevent infinite recursion of modules

Fixes #50196.

r? @QuietMisdreavus
2018-05-07 23:18:12 +00:00
Manish Goregaokar
a72a0801bd Add explanation for #[must_use] on string replace methods 2018-05-07 10:26:29 -07:00
Manish Goregaokar
f8b774fbf1 Add explanation for #[must_use] on mutex guards 2018-05-07 10:26:28 -07:00
Manish Goregaokar
6e49c837f6 Add explanation for #[must_use] on Debug builders 2018-05-07 10:26:28 -07:00
Manish Goregaokar
1abed9cebf Add explanation for #[must_use] on Result 2018-05-07 10:26:28 -07:00
John Kåre Alsaker
f741ee104b Make SelectionCache and EvaluationCache thread-safe 2018-05-07 17:13:09 +02:00
Aaron Power
31a8ffec71 Added regression function match value test, closes #44333 2018-05-07 16:12:13 +01:00
Alex Butler
640e937ec3
Update clippy 0.0.197 2018-05-07 16:03:42 +01:00
bors
565235ee7e Auto merge of #50454 - Manishearth:edition-preview-fixes, r=alexcrichton
Various edition preview fixes

Implement a bunch of things discussed in the meeting.
2018-05-07 14:54:17 +00:00
Alex Butler
e4a0514bbe
Update rls 1263f1f
Fix rls-clippy feature compile
2018-05-07 15:25:37 +01:00
bors
62889702c9 Auto merge of #50487 - nikic:heap-manually-drop, r=Gankro
Use ManuallyDrop instead of Option in BinaryHeap Hole implementation

The Option is always Some until drop, where it becomes None. Make this more explicit and avoid unwraps by using ManuallyDrop.

This change should be performance-neutral as LLVM already optimizes the unwraps away in the inlined code. However I've seen this pattern copied from here to other crates where it is not optimized away, so I think it would be good to change it.
2018-05-07 12:30:55 +00:00
Ralf Jung
939c25a522 Unpin: Fix references to Pin type 2018-05-07 14:30:29 +02:00
Ralf Jung
8619e19dc4 Rename PinMut::borrow to PinMut::reborrow and make it a method 2018-05-07 13:56:24 +02:00
Ralf Jung
17206a7e64 PinMut::get_mut can also preserve the lifetime 2018-05-07 13:20:30 +02:00
Ralf Jung
84ce206db6 Change PinMut::map to be able to preserve the original reference's lifetime
Suggested by @dylanede at <https://github.com/rust-lang/rust/issues/49150#issuecomment-381071442>.
2018-05-07 12:51:59 +02:00
Ralf Jung
9f26376281 Rename Pin to PinMut
As discussed at [1] §3 and [2] and [3], a formal look at pinning requires considering a
distinguished "shared pinned" mode/typestate.  Given that, it seems desirable to
at least eventually actually expose that typestate as a reference type.  This
renames Pin to PinMut, freeing the name Pin in case we want to use it for a
shared pinned reference later on.

[1] https://www.ralfj.de/blog/2018/04/10/safe-intrusive-collections-with-pinning.html
[2] https://github.com/rust-lang/rfcs/pull/2349#issuecomment-379250361
[3] https://github.com/rust-lang/rust/issues/49150#issuecomment-380488275
2018-05-07 12:44:26 +02:00
Guillaume Gomez
3ba7c00f94 Prevent infinite recursion of modules 2018-05-07 12:44:03 +02:00
Aaron Power
85f3ecfa9b
Update RELEASES.md 2018-05-07 11:37:36 +01:00
Jorge Aparicio
b61a4c20c6 make the const constructor unstable 2018-05-07 12:11:22 +02:00