Commit Graph

64877 Commits

Author SHA1 Message Date
Guillaume Gomez
a5dc963974 Add E0617 2017-06-13 23:10:43 +02:00
bors
03abb1bd70 Auto merge of #42627 - michaelwoerister:no-ident-in-def-path, r=eddyb
incr.comp.: Don't use Ident in DefPath because that's unstable across compilation sessions

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

cc @jseyfried @nikomatsakis

r? @eddyb
2017-06-13 13:59:38 +00:00
Michael Woerister
d714b9790b incr.comp.: Don't use Ident in DefPath because that's unstable across compilation sessions. 2017-06-13 13:47:13 +02:00
bors
9b5b514c8d Auto merge of #42576 - nikomatsakis:incr-comp-less-tasks, r=michaelwoerister
prune some tasks and depnode variants

Pick some low-hanging fruit towards the goal of removing the older tasks.

r? @michaelwoerister
2017-06-13 11:24:24 +00:00
bors
9adf969cd8 Auto merge of #42608 - ollie27:rustdoc_variant_reexport, r=QuietMisdreavus
rustdoc: Fix missing enum variant reexports

Fixes #35488
2017-06-13 08:54:23 +00:00
bors
e7fffa2211 Auto merge of #42471 - nrc:save-sig-2, r=eddyb
save-analysis: signatures for everything!
2017-06-13 06:20:12 +00:00
Nick Cameron
ffd83fdf7d Update RLS again 2017-06-13 15:15:35 +12:00
bors
add847a82d Auto merge of #42566 - arthurprs:update-jemalloc, r=alexcrichton
Revert "Update jemalloc to 4.5.0"

This reverts commit 65d0be3b7b due to bug https://github.com/jemalloc/jemalloc/issues/895.

CC @alexcrichton
2017-06-13 02:30:12 +00:00
Oliver Middleton
68ccba81ae rustdoc: Fix missing enum variant reexports 2017-06-12 22:42:20 +01:00
Niko Matsakis
36973f743f consider closures/ty-fn-defs when making trait selection keys
Fixes #42602.
2017-06-12 17:23:21 -04:00
Niko Matsakis
f61bee340c kill dep-graph-unrelated test
Doesnt' seem to add much value, and since we don't track
`TransCrateItem` anymore, it's not clear what to translate it to.
2017-06-12 16:01:31 -04:00
Niko Matsakis
03ff38e018 kill various DepNode variants 2017-06-12 16:01:31 -04:00
Niko Matsakis
3f99118871 kill various tasks we no longer need and remove outdated README text
In the case of `TransCrateItem`, I had to tweak the tests a bit, but
it's a concept that doesn't work well under new system.
2017-06-12 16:00:31 -04:00
bors
cfb5debbcb Auto merge of #42605 - frewsxcv:rollup, r=frewsxcv
Rollup of 4 pull requests

- Successful merges: #42579, #42586, #42592, #42594
- Failed merges:
2017-06-12 16:40:04 +00:00
Corey Farwell
3023cc49c8 Rollup merge of #42594 - ollie27:rustdoc_assoc_type_links, r=steveklabnik
rustdoc: Link directly to associated types

Rather than just linking to the trait.

Also simplifies the logic used to decide whether to render the full
QPath.
2017-06-12 12:39:49 -04:00
Corey Farwell
87426195ec Rollup merge of #42592 - ollie27:rustdoc_empty_modules, r=steveklabnik
rustdoc: Stop stripping empty modules

There is no good reason to strip empty modules with no documentation and
doing so causes subtle problems.

Fixes #42590
2017-06-12 12:39:48 -04:00
Corey Farwell
b646ca9267 Rollup merge of #42586 - ideasman42:patch-1, r=steveklabnik
Docstring: add missing term 'disjoint' from matches, rmatches

This follows `match_indices`
2017-06-12 12:39:47 -04:00
Corey Farwell
3a550a4893 Rollup merge of #42579 - maccoda:maccoda/env_docs, r=steveklabnik
env docs completion.

Should be closing #29351 with the alignment of the iterators to the template.
2017-06-12 12:39:46 -04:00
bors
5aa34038ff Auto merge of #42570 - birkenfeld:patch-3, r=frewsxcv
Add dedicated docstrings to Sum/Product impl of Result

(and fix a minor grammar typo below)
2017-06-12 13:59:39 +00:00
bors
3f8b93693d Auto merge of #42537 - michaelwoerister:tcx-for-dep-node, r=nikomatsakis
incr.comp.: Make DepNode `Copy` and valid across compilation sessions

This PR moves `DepNode` to a representation that does not need retracing and thus simplifies comparing dep-graphs from different compilation sessions. The code also gets a lot simpler in many places, since we don't need the generic parameter on `DepNode` anymore.  See https://github.com/rust-lang/rust/issues/42294 for details.

~~NOTE: Only the last commit of this is new, the rest is already reviewed in https://github.com/rust-lang/rust/pull/42504.~~

This PR is almost done but there are some things I still want to do:
- [x] Add some module-level documentation to `dep_node.rs`, explaining especially what the `define_dep_nodes!()` macro is about.
- [x] Do another pass over the dep-graph loading logic. I suspect that we can get rid of building the `edges` map and also use arrays instead of hash maps in some places.

cc @rust-lang/compiler
r? @nikomatsakis
2017-06-12 11:39:35 +00:00
Georg Brandl
2366c464a7 Add dedicated docstrings to Sum/Product impl of Result
(and fix a minor grammar typo below)
2017-06-12 10:50:28 +02:00
bors
0a5218b506 Auto merge of #42572 - ollie27:rustdoc_create_dir_all, r=GuillaumeGomez
rustdoc: Use `create_dir_all` to create output directory

Currently rustdoc will fail if passed `-o foo/doc` if the `foo`
directory doesn't exist.

Also remove unneeded `mkdir` as `create_dir_all` can now handle
concurrent invocations since #39799.
2017-06-12 08:49:51 +00:00
Michael Woerister
fdff2d3588 Add some documentation to the dep_node module. 2017-06-12 10:25:42 +02:00
bors
54eeef14a3 Auto merge of #42419 - ucarion:ucarion-explain-rc-arc-abbrev, r=frewsxcv
Explicate what "Rc" and "Arc" stand for.

A person on the weekly "Easy Questions" Reddit thread [was mystified by what `Arc`/`Rc` means](https://www.reddit.com/r/rust/comments/6dyud9/hey_rustaceans_got_an_easy_question_ask_here/did87ds/). Though this is explained in various places, it's not mentioned in the documentation directly.

This PR adds an explanation of the `Rc`/`Arc` acronyms to their respective documentations. There are two things I'm not sure of:

* Does "Rc" mean "Reference Count**er**" or "Reference Count**ed**"? ~~I went with the former.~~ *Edit:* I've changed this to use the latter alternative.
* Should this information be spelled out elsewhere, such as in the docs for the `rc` module?
2017-06-12 04:08:14 +00:00
Nick Cameron
34bd80a782 Fix rebasing error 2017-06-12 14:29:59 +12:00
Nick Cameron
d438b8180c Fix a bug where Json API save-analysis was not labelled as such 2017-06-12 14:14:23 +12:00
Nick Cameron
cb7fcdd520 Impl and trait item sigs 2017-06-12 14:14:23 +12:00
Nick Cameron
5ebb0e2498 Implement a bunch more signature functions 2017-06-12 14:14:23 +12:00
Nick Cameron
35abf139a2 Small refactoring + docs 2017-06-12 14:14:23 +12:00
Nick Cameron
a2a999f035 Use the new signature stuff
And fix a couple of bugs
2017-06-12 14:14:23 +12:00
Nick Cameron
0058fdd110 Update rls-data 2017-06-12 14:14:23 +12:00
Nick Cameron
600237fa19 Add a sig module to save-analysis
Generates signatures for use in Rustdoc and similar tools.
2017-06-12 14:14:23 +12:00
bors
29ef41215c Auto merge of #42585 - GuillaumeGomez:E0609, r=Susurrus
Add E0609

Part of #42229.

cc @Susurrus
2017-06-11 23:51:04 +00:00
Guillaume Gomez
2f37894740 Add E0610 2017-06-12 01:47:01 +02:00
bors
e2eaef8497 Auto merge of #42155 - seanmonstar:unimplemented, r=sfackler
core: allow messages in unimplemented!() macro

This makes `unimplemented!()` match `unreachable!()`, allowing a message and possible formatting to be provided to better explain what and/or why something is not implemented.

I've used this myself in hyper for a while, include the type and method name, to better help while prototyping new modules, like `unimplemented!("Conn::poll_complete")`, or `unimplemented!("Conn::poll; state={:?}", state)`.
2017-06-11 18:56:27 +00:00
Guillaume Gomez
f4dd365bbb Add E0609 2017-06-11 19:48:53 +02:00
Oliver Middleton
7298dabdb3 rustdoc: Stop stripping empty modules
There is no good reason to strip empty modules with no documentation and
doing so causes subtle problems.
2017-06-11 18:26:01 +01:00
Oliver Middleton
429dc51bfe rustdoc: Link directly to associated types
Rather than just linking to the trait.

Also simplifies the logic used to decide whether to render the full
QPath.
2017-06-11 18:20:48 +01:00
bors
27650ee8ab Auto merge of #40454 - djzin:fast-swap, r=sfackler
speed up mem::swap

I would have thought that the mem::swap code didn't need an intermediate variable precisely because the pointers are guaranteed never to alias. And.. it doesn't! It seems that llvm will also auto-vectorize this case for large structs, but alas it doesn't seem to have all the aliasing info it needs and so will add redundant checks (and even not bother with autovectorizing for small types). Looks like a lot of performance could still be gained here, so this might be a good test case for future optimizer improvements.

Here are the current benchmarks for the simd version of mem::swap; the timings are in cycles (code below) measured with 10 iterations. The timings for sizes > 32 which are not a multiple of 8 tend to be ever so slightly faster in the old code, but not always. For large struct sizes (> 1024) the new code shows a marked improvement.

\* = latest commit
† = subtracted from other measurements

| arr_length	| noop<sup>†</sup>	| rust_stdlib	| simd_u64x4\*	| simd_u64x8
|------------------|------------|-------------------|-------------------|-------------------
8|80|90|90|90
16|72|177|177|177
24|32|76|76|76
32|68|188|112|188
40|32|80|60|80
48|32|84|56|84
56|32|108|72|108
64|32|108|72|76
72|80|350|220|230
80|80|350|220|230
88|80|420|270|270
96|80|420|270|270
104|80|500|320|320
112|80|490|320|320
120|72|528|342|342
128|48|360|234|234
136|72|987|387|387
144|80|1070|420|420
152|64|856|376|376
160|68|804|400|400
168|80|1060|520|520
176|80|1070|520|520
184|32|464|228|228
192|32|504|228|228
200|32|440|248|248
208|72|987|573|573
216|80|1464|220|220
224|48|852|450|450
232|72|1182|666|666
240|32|428|288|288
248|32|428|308|308
256|80|860|770|770
264|80|1130|820|820
272|80|1340|820|820
280|80|1220|870|870
288|72|1227|804|804
296|72|1356|849|849
2017-06-11 16:40:52 +00:00
bors
07a2dd41c5 Auto merge of #42569 - birkenfeld:patch-2, r=frewsxcv
Simplify FromIterator example of Result

The previous version may be clearer for newcomers, but this is how you'd write it idiomaticly.
2017-06-11 14:29:56 +00:00
bors
4bf5c99afc Auto merge of #42580 - tommyip:import-error, r=petrochenkov
Only emit one error for `use foo::self;`

Currently `use foo::self;` would emit both E0429 and E0432. This commit silence the latter one (assuming `foo` is a valid module).

Fixes #42559
2017-06-10 21:35:31 +00:00
Campbell Barton
11ee1b0b2e Add missing term 'disjoint' from matches, rmatches
This follows `match_indices`
2017-06-11 06:17:12 +10:00
bors
b7613f8281 Auto merge of #42563 - eddyb:infer, r=nikomatsakis
Disentangle InferCtxt, MemCategorizationContext and ExprUseVisitor.

At some point in the past, `InferCtxt` started being used to replace an old "`Typer`" abstraction, which provided access to `TypeckTables` and had optionally type inference to account for.
That didn't play so nicely with the `'gcx`/`'tcx` split and I had to introduce `borrowck_fake_infer_ctxt`.
The situation wasn't great but it wasn't too painful inside `rustc` itself.

Recently I've found that method being used in clippy, which does need EUV (before we make it plausible to run lints on HAIR or MIR), and set out to separate inference from tables, for the sake of lint authors.
Also fixes #42435 to make it trivial to compute type layout or use EUV from lints.

The remaining uses of `TypeckTables` in `InferCtxt` are for closure kinds and signatures, used in trait selection and projection normalization. The solution there is likely to add them as bounds to `ParamEnv`.

r? @nikomatsakis
cc @mcarton @llogiq @Manishearth
2017-06-10 19:21:24 +00:00
Eduard-Mihai Burtescu
fc5c31c48c rustc: make the comon case of tcx.infer_ctxt(()) nicer. 2017-06-10 15:29:53 +03:00
Eduard-Mihai Burtescu
63481a57dc rustc: make InferCtxt optional in MemCategorizationContext. 2017-06-10 15:29:18 +03:00
Tommy Ip
b89db83e6c Only emit one error for use foo::self;
Currently `use foo::self;` would emit both E0429 and E0432. This
commit silence the latter one (assuming `foo` is a valid module).

Fixes #42559
2017-06-10 13:03:11 +01:00
Eduard-Mihai Burtescu
1f874ded52 rustc: do not depend on infcx.tables in MemCategorizationContext. 2017-06-10 14:34:45 +03:00
bors
995f741a0e Auto merge of #42556 - scottmcm:ctz-nz, r=BurntSushi
Get LLVM to stop generating dead assembly in next_power_of_two

It turns out that LLVM can turn `@llvm.ctlz.i64(_, true)` into `@llvm.ctlz.i64(_, false)` ([`ctlz`](http://llvm.org/docs/LangRef.html#llvm-ctlz-intrinsic)) where valuable, but never does the opposite.  That leads to some silly assembly getting generated in certain cases.

A contrived-but-clear example https://is.gd/VAIKuC:
```rust
fn foo(x:u64) -> u32 {
    if x == 0 { return !0; }
    x.leading_zeros()
}
```
Generates
```asm
	testq	%rdi, %rdi
	je	.LBB0_1
	je	.LBB0_3    ; <-- wha?
	bsrq	%rdi, %rax
	xorq	$63, %rax
	retq
.LBB0_1:
	movl	$-1, %eax
	retq
.LBB0_3:
	movl	$64, %eax  ; <-- dead
	retq
```

I noticed this in `next_power_of_two`, which without this PR generates the following:
```asm
	cmpq	$2, %rcx
	jae	.LBB1_2
	movl	$1, %eax
	retq
.LBB1_2:
	decq	%rcx
	je	.LBB1_3
	bsrq	%rcx, %rcx
	xorq	$63, %rcx
	jmp	.LBB1_5
.LBB1_3:
	movl	$64, %ecx  ; <-- dead
.LBB1_5:
	movq	$-1, %rax
	shrq	%cl, %rax
	incq	%rax
	retq
```

And with this PR becomes
```asm
	cmpq	$2, %rcx
	jae	.LBB0_2
	movl	$1, %eax
	retq
.LBB0_2:
	decq	%rcx
	bsrq	%rcx, %rcx
	xorl	$63, %ecx
	movq	$-1, %rax
	shrq	%cl, %rax
	incq	%rax
	retq
```
2017-06-10 09:11:36 +00:00
bors
e1480499b4 Auto merge of #42533 - Mark-Simulacrum:macro-parse-speed-small, r=jseyfried
Speed up expansion

This reduces duplication, thereby increasing expansion speed. Based on tests with rust-uinput, this produces a 29x performance win (440 seconds to 15 seconds). I want to land this first, since it's a minimal patch, but with more changes to the macro parsing I can get down to 12 seconds locally.

There is one FIXME added to the code that I'll keep for now since changing it will spread outward and increase the patch size, I think.

Fixes #37074.

r? @jseyfried
cc @oberien
2017-06-10 06:50:12 +00:00
Dylan Maccora
f52ac18840 env docs completion. 2017-06-10 16:19:28 +10:00