diff options
| author | John Kåre Alsaker <john.kare.alsaker@gmail.com> | 2017-08-25 20:10:23 +0200 |
|---|---|---|
| committer | John Kåre Alsaker <john.kare.alsaker@gmail.com> | 2017-08-25 20:10:23 +0200 |
| commit | 536613554fbfc16c0da85615aff6717229d9df6b (patch) | |
| tree | 41b775d717bd806f510e904f2bfcaf6384e8ffed | |
| parent | c71153113b965b6dfd265590a4d20a73d08ee4d7 (diff) | |
| download | rust-536613554fbfc16c0da85615aff6717229d9df6b.tar.gz rust-536613554fbfc16c0da85615aff6717229d9df6b.zip | |
Clean up YieldFinder
| -rw-r--r-- | src/librustc/middle/region.rs | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/src/librustc/middle/region.rs b/src/librustc/middle/region.rs index 6374eb3ff90..944d03737d3 100644 --- a/src/librustc/middle/region.rs +++ b/src/librustc/middle/region.rs @@ -1175,13 +1175,18 @@ struct YieldFinder<'a> { impl<'a> YieldFinder<'a> { fn lookup<F: FnOnce(&mut Self)>(&mut self, id: NodeId, f: F) { - if let Some(result) = self.cache.get(&id) { - self.result = *result; + // Don't traverse further if we found a yield expression + if self.result.is_some() { return; } - if self.result.is_some() { + + // See if there's an entry in the cache + if let Some(result) = self.cache.get(&id) { + self.result = *result; return; } + + // Otherwise calculate the result and insert it into the cache f(self); self.cache.insert(id, self.result); } |
