Commit Graph

53549 Commits

Author SHA1 Message Date
Steve Klabnik
4b8e7cb504 Rollup merge of #33539 - nikomatsakis:static-error, r=pnkfelix
fix DFS for region error reporting

This was causing terrible error reports, because the algorithm was incorrectly identifying the constraints.

r? @eddyb
2016-05-11 09:27:44 -04:00
Steve Klabnik
130e76b46a Rollup merge of #33528 - cramertj:E0061typeo, r=jseyfried
E0061 typo fix

Fixed silly typo.
2016-05-11 09:27:44 -04:00
Steve Klabnik
8c6796f0a7 Rollup merge of #33524 - briangreenery:briangreenery-fast-and-loose, r=steveklabnik
doc: Fix tiny typo in vec-alloc.md

Change `fast an loose` to `fast and loose`.
2016-05-11 09:27:44 -04:00
Steve Klabnik
30df9d0201 Rollup merge of #33522 - mbrubeck:inline-rawvec-cap, r=nagisa
Inline RawVec::cap

This was showing up in a Servo profile.
2016-05-11 09:27:43 -04:00
Steve Klabnik
4fe787134a Rollup merge of #33386 - cramertj:E0504, r=steveklabnik
Add detailed error explanation for E0504

Part of #32777
2016-05-11 09:27:43 -04:00
Steve Klabnik
3b75f4b56e Rollup merge of #33345 - birkenfeld:issue-31754, r=pnkfelix
middle: reset loop labels while visiting closure

This should fix #31754 and follow-up #25343.  Before the latter, the closure was visited twice in the context of the enclosing fn, which made even a single closure with a loop label emit a warning.

With this change, the closure is still visited within the context of the main fn (which is intended, since it is not a separate item) but resets the found loop labels while being visited.

Fixes: #31754

Note: I amended the test file from #25343, but I don't know if the original or amended test are effective, since as far as I could see, compiletest's run-pass tests do not check for zero warnings emitted?

/cc @Manishearth
2016-05-11 09:27:43 -04:00
Steve Klabnik
82c4f5915b Rollup merge of #33260 - mrmiywj:help-on-pattern-guard, r=guillaumegomez
add help on pattern guard
2016-05-11 09:27:42 -04:00
Steve Klabnik
c5e0099a20 Rollup merge of #33129 - GuillaumeGomez:fmt_doc, r=steveklabnik
Doc improvement on std::fmt module

Part of #29355.

r? @steveklabnik
2016-05-11 09:27:42 -04:00
Guillaume Gomez
e6c0ff65ed Create Weight enum
Add more comments for the global understanding
2016-05-11 13:24:24 +02:00
ggomez
61e6169ffe Improve weight algorithm and tests 2016-05-11 13:24:22 +02:00
Guillaume Gomez
b8fad79a07 Improve error message for Index trait on slices 2016-05-11 13:22:01 +02:00
ggomez
e9797d4be5 Extend rustc_on_unimplemented flag: if a message is available at an impl, this message will be displayed instead 2016-05-11 13:18:57 +02:00
bors
c049541741 Auto merge of #33239 - eddyb:mir-temp-drops, r=arielb1
mir: drop temps outside-in by scheduling the drops inside-out.

It was backwards all along, but only noticeable with multiple drops in one rvalue scope. Fixes #32433.
2016-05-11 03:15:05 -07:00
Eduard Burtescu
e940de64ca mir: drop temps outside-in by scheduling the drops inside-out. 2016-05-11 10:46:36 +03:00
Ms2ger
c0e321abcb Make LocalCrateReader private to creader. 2016-05-11 09:32:05 +02:00
Ms2ger
5511e6568f Hand ownership of the Definitions to map_crate. 2016-05-11 09:32:05 +02:00
Sean Gillespie
94a055263e Add regression test for ICE in constant blocks 2016-05-10 23:48:12 -07:00
Alex Crichton
8d65591cf2 rustbuild: Tighten dependencies of build scripts
Ensure that `rerun-if-changed` is printed for all build scripts to ensure that
they've all got the right list of dependencies.
2016-05-10 23:41:19 -07:00
bors
c7ab8840c8 Auto merge of #33425 - eddyb:rift, r=nikomatsakis
Split the type context into a global and a local (inference-only) one.

After this change, each `InferCtxt` creates its own local type interner for types with inference by-products.
Most of the code which handles both a global and a local interner uses `'gcx` and `'tcx` for them.
A reference to the type context in that situation (e.g. `infcx.tcx`) is `TyCtxt<'a, 'gcx, 'tcx>`.
The global type context which used to be `&'a TyCtxt<'tcx>` is now `TyCtxt<'a, 'tcx, 'tcx>`.

In order to minimize the number of extra lifetime parameters, many functions became methods.
Where possible (some inherent impls), lifetime parameters were added on the impl, not each method.

As inference by-products no longer escape their inference contexts, memory usage is lower.
Example of `-Z time-passes` excerpt for `librustc`, stage1 (~100MB gains):
Before "rustc: Split local type contexts interners from the global one.":
```
time: 0.395; rss: 335MB item-types checking
time: 15.392; rss: 472MB        item-bodies checking
time: 0.000; rss: 472MB drop-impl checking
time: 1.140; rss: 478MB const checking
time: 0.139; rss: 478MB privacy checking
time: 0.024; rss: 478MB stability index
time: 0.072; rss: 478MB intrinsic checking
time: 0.038; rss: 478MB effect checking
time: 0.255; rss: 478MB match checking
time: 0.128; rss: 484MB liveness checking
time: 1.372; rss: 484MB rvalue checking
time: 1.404; rss: 597MB MIR dump
time: 0.809; rss: 599MB MIR passes
```
After:
```
time: 0.467; rss: 337MB item-types checking
time: 17.443; rss: 395MB        item-bodies checking
time: 0.000; rss: 395MB drop-impl checking
time: 1.423; rss: 401MB const checking
time: 0.141; rss: 401MB privacy checking
time: 0.024; rss: 401MB stability index
time: 0.116; rss: 401MB intrinsic checking
time: 0.038; rss: 401MB effect checking
time: 0.382; rss: 401MB match checking
time: 0.132; rss: 407MB liveness checking
time: 1.678; rss: 407MB rvalue checking
time: 1.614; rss: 503MB MIR dump
time: 0.957; rss: 512MB MIR passes
```

**NOTE**: Functions changed to methods weren't re-indented to keep this PR easier to review.
Once approved, the changes will be mechanically performed.
However, indentation changes of function arguments are there - and I believe there's a way to hide whitespace-only changes in diffs on GitHub.
2016-05-10 23:40:09 -07:00
ggomez
7a9f4c22ff Add E0500 error explanation 2016-05-11 08:03:34 +02:00
Eduard Burtescu
42eb7032fa Fixup indentation after methodification. 2016-05-11 08:48:12 +03:00
bors
80ec1b9f10 Auto merge of #33512 - birkenfeld:issue-25944, r=sanxiyn
rustdoc: remove artificial indentation of doctest code

The indentation makes the examples look nicer when printed (when is this done?), but breaks tests using multi-line string literals.

Fixes: #25944
2016-05-10 20:14:46 -07:00
Pavel Sountsov
ba04a52b96 Also rename the print_from_ast. 2016-05-10 19:21:44 -07:00
Eduard Burtescu
a1c170fc35 rustc: Split local type contexts interners from the global one. 2016-05-11 04:14:58 +03:00
Eduard Burtescu
31a07b0ce6 rustc_typeck: Generalize over 'tcx != 'gcx. 2016-05-11 04:14:58 +03:00
Eduard Burtescu
3a3013613a rustc: Remove the unnecessary ast_ty_to_ty_cache. 2016-05-11 04:14:58 +03:00
Eduard Burtescu
20652162ca rustc: More interning for data used in Ty<'tcx>. 2016-05-11 04:14:58 +03:00
Eduard Burtescu
8f72d8127f rustc: Generalize a minimum set of functions over 'tcx != 'gcx. 2016-05-11 04:14:58 +03:00
Eduard Burtescu
f0b2b3c441 rustc: Remove a redundant lifetime parameter from ExprUseVisitor. 2016-05-11 04:14:58 +03:00
Eduard Burtescu
12e56ea56b rustc: Wrap users of InferCtxt in an anonymous scope. 2016-05-11 04:14:58 +03:00
Eduard Burtescu
8a704f6dc7 rustc: Remove the TyCtxt field from ParameterEnvironment. 2016-05-11 04:14:58 +03:00
Eduard Burtescu
0053b442f8 rustc_typeck: Use Deref for FnCtxt, Inherited and InferCtxt fields and methods. 2016-05-11 04:14:58 +03:00
Eduard Burtescu
76affa5d6f rustc: Split 'tcx into 'gcx and 'tcx for InferCtxt and its users. 2016-05-11 04:14:58 +03:00
Eduard Burtescu
166dbc3273 rustc: Keep a reference to the interners in TyCtxt. 2016-05-11 04:14:58 +03:00
Eduard Burtescu
2fbbaf2f17 rustc: Use set recovery APIs in the TyCtxt interners. 2016-05-11 04:14:58 +03:00
Eduard Burtescu
513d392f7e rustc: Replace &'a TyCtxt<'tcx> with a TyCtxt<'a, 'tcx> wrapper. 2016-05-11 04:14:58 +03:00
Eduard Burtescu
8fc2c4652c regionck: Use methods on RegionCtxt instead of free functions. 2016-05-11 04:14:58 +03:00
Eduard Burtescu
f8ea24edc8 rustc: Avoid free functions taking &TyCtxt and &InferCtxt. 2016-05-11 04:14:58 +03:00
Eduard Burtescu
d7ee56e862 typeck: Turn everything operating on FnCtxt into a method. 2016-05-11 04:14:58 +03:00
Eduard Burtescu
ef2f5f6d8e typeck: Avoid passing &TyCtxt around where possible. 2016-05-11 04:14:58 +03:00
Eduard Burtescu
e387e6c7c8 typeck: merge CollectCtxt and collect::CollectCtxt. 2016-05-11 04:14:58 +03:00
Eduard Burtescu
8600a67782 mem_categorization: freely_aliasable doesn't need to take TyCtxt. 2016-05-11 04:14:58 +03:00
Eduard Burtescu
6e290998c3 infer: Turn normalize_associated_type into a method on TyCtxt. 2016-05-11 04:14:58 +03:00
Eduard Burtescu
0907c198c4 infer: Use methods for creating an InferCtxt. 2016-05-11 04:14:58 +03:00
Eduard Burtescu
b5122d5c4c rustc: Always refer to TyCtxt as tcx. 2016-05-11 04:14:58 +03:00
Cristian Oliveira
85e02429b2 Add error description for E0455
- Adding name attribute to the sample code - Fix description sentences
2016-05-10 20:16:29 -03:00
Guillaume Gomez
0619eeb739 Add default rule for Makefile and make it displays some help.
Add examples for "make help" command
2016-05-11 00:05:19 +02:00
Guillaume Gomez
0908d66882 Doc improvement on std::fmt module 2016-05-10 23:56:57 +02:00
bors
6dbb0e86ae Auto merge of #33319 - birkenfeld:issue31424, r=jseyfried
borrowck: do not suggest to change "&mut self" to "&mut mut self"

Matching the snippet string might not be the cleanest, but matching
the AST node instead seems to end in a lot of nested `if let`s, so I
don't know what's better.

Of course it's entirely possible that there is another API altogether
that I just don't know of?

Fixes #31424.
2016-05-10 14:36:46 -07:00
Guillaume Gomez
a5a2f2b951 Improve "since" tag placement 2016-05-10 21:01:10 +02:00