Niko Matsakis
bf02c57b16
simplify UniversalRegions::to_region_vid
to just consult the map
...
This doesn't actually fix the bug, but seems better.
2018-01-11 06:05:05 -05:00
Niko Matsakis
6b39781df6
connect NLL machinery to the NiceRegionError
code
2017-12-20 14:38:12 -05:00
Niko Matsakis
93afb1affc
connect NLL type checker to the impl trait code
...
We now add the suitable `impl Trait` constraints.
2017-12-20 14:04:52 -05:00
Niko Matsakis
a66c6512aa
pass UniversalRegions
to MIR type-checker instead of fields
...
No functional change.
2017-12-20 14:04:52 -05:00
Niko Matsakis
fe89f4ba86
get the DefiningTy
from the body_owner_kind
not type
...
The type isn't a good idea because we want to treat constants
uniformly, regardless of what type of value they produce.
2017-12-20 14:04:51 -05:00
Niko Matsakis
1816ede386
be specific about what kind of normalization we mean
2017-12-19 04:28:45 -05:00
Niko Matsakis
3d826e5681
remove dead is_foo_free_region
helpers
...
Only `is_local_free_region` is used.
2017-12-19 04:26:56 -05:00
Niko Matsakis
e9824c50ed
impose inputs/ouputs on MIR after the fact
...
The input/output types found in `UniversalRegions` are not normalized.
The old code used to assign them directly into the MIR, which would
lead to errors when there was a projection in a argument or return
type. This also led to some special cases in the `renumber` code.
We now renumber uniformly but then pass the input/output types into
the MIR type-checker, which equates them with the types found in MIR.
This allows us to normalize at the same time.
2017-12-15 10:27:53 -05:00
Niko Matsakis
3fcb13ae45
handle projections with regions
2017-12-15 10:27:52 -05:00
Niko Matsakis
85e1d4749e
propagate type tests from closure to closure creators
...
Currently, we only propagate type tests that exclude all regions from
the type.
2017-12-15 10:27:51 -05:00
Niko Matsakis
c7cfa2367b
thread through an implicit region body of the fn body
2017-12-15 10:27:50 -05:00
Niko Matsakis
abd6d0d76e
comments for defining_ty
and compute_indices
...
Plus an extra assertion.
2017-12-13 12:20:28 -05:00
Niko Matsakis
7f20b9142d
fix universal regions to handle constant expressions like [T; 22]
2017-12-13 06:03:25 -05:00
Niko Matsakis
1db58d7fa5
rename Binder::new_not_binding
to Binder::dummy
...
per pnkfelix's suggestion
2017-12-07 05:28:04 -05:00
Niko Matsakis
d5ef3e262f
replace InferCtxt::fn_sig
with closure_sig
2017-12-07 05:28:01 -05:00
Niko Matsakis
ab1c1bc6bc
mir-borrowck returns closure requirements, mir-typeck enforces
2017-12-07 05:28:00 -05:00
Niko Matsakis
243bf3f718
rename "free region" to "universally quantified region"
...
This has been bugging me. All the regions appear free in the source;
the real difference is that some of them are universally quantified
(those in the function signature) and some are existentially
quantified (those for which we are inferring values).
2017-12-04 09:14:38 -05:00