diff options
| author | Niko Matsakis <niko@alum.mit.edu> | 2016-04-20 19:51:56 -0400 |
|---|---|---|
| committer | Niko Matsakis <niko@alum.mit.edu> | 2016-05-31 19:41:25 -0400 |
| commit | 11984340bfe93be311eeea9881ae2d1fb8fb0ddb (patch) | |
| tree | 5c882ed87fb41ddb4735bb4eb2207e497fd5d8f6 /src/rustllvm/RustWrapper.cpp | |
| parent | aecce2ba6eba5fbadb2e5aaf9eb29a30acea086d (diff) | |
| download | rust-11984340bfe93be311eeea9881ae2d1fb8fb0ddb.tar.gz rust-11984340bfe93be311eeea9881ae2d1fb8fb0ddb.zip | |
make HR algorithms account for region subtyping
Currently, we consider region subtyping a failure if a skolemized lifetime is relatable to any other lifetime in any way at all. But a more precise formulation is to say that a skolemized lifetime: - must not have any *incoming* edges in the region graph - only has *outgoing* edges to nodes that are `'static` To enforce the latter requirement, we add edges from `'static -> 'x` for each lifetime '`x' reachable from a skolemized region. We now have to add a new `pop_skolemized` routine to do cleanup. Whereas before if there were *any* edges relating to a skolemized region, we would return `Err` and hence rollback the transaction, we now tolerate some edges and return `Ok`. Therefore, the `pop_skolemized` routine runs and cleans up those edges.
Diffstat (limited to 'src/rustllvm/RustWrapper.cpp')
0 files changed, 0 insertions, 0 deletions
