588 Commits

Author SHA1 Message Date
Matthew Jasper
f72b8a44c5 Use span of the closure args in free region errors 2018-08-05 14:33:38 +01:00
bors
9f9ac89d11 Auto merge of #52959 - matthewjasper:closure-spans, r=pnkfelix
[NLL] Use smaller spans for errors involving closure captures

Closes #51170
Closes #46599

Error messages involving closures now point to the captured variable/closure args.

r? @pnkfelix
2018-08-05 09:17:24 +00:00
bors
b47c314c56 Auto merge of #52991 - nikomatsakis:nll-escaping-into-return, r=pnkfelix
avoid computing liveness for locals that escape into statics

Fixes #52713

I poked at this on the plane and I think it's working -- but I want to do a bit more investigation and double check. The idea is to identify those local variables where the entire value will "escape" into the return -- for them, we don't need to compute liveness, since we know that the outlives relations from the return type will force those regions to be equal to free regions. This should help with html5ever in particular.

- [x] test performance
- [x] verify correctness
- [x] add comments

r? @pnkfelix
cc @lqd
2018-08-05 07:06:11 +00:00
Niko Matsakis
2e2ea26a83 remove unused tcx argument 2018-08-05 07:42:18 +02:00
Niko Matsakis
5e2f337e6b more comments and justify correctness 2018-08-04 09:30:24 +02:00
Niko Matsakis
936fa6f67f generalize the Deref case and simplify the code 2018-08-04 09:26:30 +02:00
Niko Matsakis
e7d8d651d5 add a comment explaining the idea 2018-08-04 09:26:20 +02:00
Matthew Jasper
903851f785 Highlight closure spans for borrow and initialization errors 2018-08-03 23:00:27 +01:00
bors
7e031b0907 Auto merge of #52973 - davidtwco:issue-52663-lifetimes-not-included-in-span, r=pnkfelix
NLL mentions lifetimes that are not included in printed span(s).

Part of #52663.

r? @pnkfelix
2018-08-03 17:46:13 +00:00
Niko Matsakis
e79656c5b7 support X = &*Y reborrows 2018-08-03 08:15:55 +02:00
Niko Matsakis
341a07c4c3 compute union-find of locals flowing into the output of statics
Co-authored-by: lqd <remy.rakic+github@gmail.com>
Co-authored-by: nikomatsakis <niko@alum.mit.edu>
2018-08-02 22:02:59 +03:00
David Wood
2488cb6b10
Explicitly label any named lifetimes mentioned in error messages. 2018-08-02 12:00:15 +02:00
David Wood
1863cb7372
Errors are more specific in cases where borrows are used in future iterations of loops. 2018-08-01 17:42:15 +02:00
Niko Matsakis
b9652aee65 region_infer: rustfmt, pacifying the mercilous tidy 2018-07-31 02:31:41 +02:00
Niko Matsakis
68c2a39a72 free RegionBoundPairs earlier and avoid normalizing twice
Normalization results are memoized, so this may not be worth it, but it
seems easy enough to do.
2018-07-31 02:31:41 +02:00
Niko Matsakis
490928f709 remove region_bound_pairs from FRR as they are not needed later 2018-07-31 02:31:41 +02:00
Niko Matsakis
1e1f18ddba make a free fn for creating the URR 2018-07-31 02:31:41 +02:00
Niko Matsakis
d1e67fcacd remove universal-region-relation computation from universal_regions 2018-07-31 02:31:40 +02:00
Niko Matsakis
3bca170bc7 introduce, but do not use, free_region_relation computation
This duplicates, effectively, existing code in the universal regions
computation.
2018-07-31 02:26:06 +02:00
bors
e4378412ec Auto merge of #52830 - matthewjasper:bootstrap-prep, r=matthewjasper
[NLL] Fix some things for bootstrap

Some changes that are required when bootstrapping rustc with NLL enabled.

* Remove a bunch of unused `mut`s that aren't needed, but the existing lint doesn't catch.
* Rewrite a function call to satisfy NLL borrowck. Note that the borrow is two-phase, but gets activated immediately by an unsizing coercion.

cc #51823
2018-07-30 10:19:38 +00:00
bors
7bbcd005b3 Auto merge of #52805 - ljedrz:format_str_literal, r=petrochenkov
Don't format!() string literals

Prefer `to_string()` to `format!()` take 2, this time targetting string literals. In some cases (`&format!("...")` -> `"..."`) also removes allocations. Occurences of `format!("")` are changed to `String::new()`.
2018-07-30 06:29:39 +00:00
Matthew Jasper
503455bcc7 Remove unused muts 2018-07-29 18:04:09 +01:00
bors
75af9df71b Auto merge of #52620 - mikhail-m1:51351, r=nikomatsakis
fix simple case of issue #51351 and #52133

r? @nikomatsakis
2018-07-29 13:23:01 +00:00
Mikhail Modin
bb66d70b89 fix issues #51351 and #52133 2018-07-29 11:42:50 +01:00
ljedrz
421b2ba347 Don't format!() string literals 2018-07-28 17:58:52 +02:00
kennytm
59f8422a17
Rollup merge of #52781 - ljedrz:avoid_vec_arguments, r=nikomatsakis
Use a slice where a vector is not necessary
2018-07-28 16:25:07 +08:00
ljedrz
1cca420435 Use slices where a vector is not necessary 2018-07-27 16:50:28 +02:00
David Wood
2e4224a998
Region inference error messages no longer start with 'free region' 2018-07-27 13:14:56 +02:00
David Wood
f44807ae1e
Improved mechanism for naming regions in non-annotated types. 2018-07-27 13:00:56 +02:00
David Wood
b377e7bbfb
Change label from closure to function where appropriate. 2018-07-27 12:48:47 +02:00
David Wood
055aaaf765
Fixed missing whitespace on some elaborated types. 2018-07-27 12:05:05 +02:00
David Wood
d4be95f0ff
Improved fully elaborated type generation to replace '_#2r-style regions. 2018-07-27 11:18:11 +02:00
David Wood
53dda8e915
Added fully elaborated type label for inferred arguments. 2018-07-27 11:18:11 +02:00
David Wood
41ce2e9dd2
Simplified closure handling to need no new cosntraint categories. 2018-07-27 11:18:07 +02:00
Niko Matsakis
118cad13a5 ignore code example in comment 2018-07-25 23:57:59 +03:00
Niko Matsakis
3171cbe986 Nit: improve Binders comment in relate_tys 2018-07-25 16:38:50 +03:00
Niko Matsakis
d85a7da8fe Nit: fix Debug impl of PlaceholderIndex 2018-07-25 16:37:05 +03:00
Niko Matsakis
e43096ff05 [nit] remove outdated comment 2018-07-25 16:36:40 +03:00
Niko Matsakis
0d918a8575 improve heuristics for what makes an interesting constraint 2018-07-25 16:36:03 +03:00
Niko Matsakis
76991ea237 [WIP] debug logs in error-reporting 2018-07-25 16:19:16 +03:00
Niko Matsakis
fa69e2183a [3f0fb4f7] improve comment on to_location 2018-07-25 16:18:37 +03:00
Niko Matsakis
d9afd2bb38 introduce new subtyping 2018-07-25 06:38:22 +03:00
Niko Matsakis
b913df06f2 remove num_universal_regions etc from RegionValueElements 2018-07-25 06:38:22 +03:00
Niko Matsakis
2584216364 represent LivenessValues with a specialized type 2018-07-25 06:38:22 +03:00
Niko Matsakis
2fda456ddf extract region_value_str helper 2018-07-25 06:38:21 +03:00
Niko Matsakis
f277b394af generate extra liveness constraints before regioncx is created 2018-07-25 06:38:21 +03:00
Niko Matsakis
92786a48f8 consolidate and use find_sub_region_live_at for everything
remove the old blame system
2018-07-25 06:38:21 +03:00
Niko Matsakis
078220daa8 extract a best_blame_constraint helper 2018-07-25 06:38:21 +03:00
Niko Matsakis
9ba4d33e43 rewrite the "constraint graph search" to use a BFS instead of a DFS
This way we find the shortest path without having to sort etc
2018-07-25 06:38:21 +03:00
Niko Matsakis
4fce59f0fd remove unnecessary blame_span from report_region_errors 2018-07-25 06:38:20 +03:00