about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJohn Kåre Alsaker <john.kare.alsaker@gmail.com>2017-08-25 20:10:23 +0200
committerJohn Kåre Alsaker <john.kare.alsaker@gmail.com>2017-08-25 20:10:23 +0200
commit536613554fbfc16c0da85615aff6717229d9df6b (patch)
tree41b775d717bd806f510e904f2bfcaf6384e8ffed
parentc71153113b965b6dfd265590a4d20a73d08ee4d7 (diff)
downloadrust-536613554fbfc16c0da85615aff6717229d9df6b.tar.gz
rust-536613554fbfc16c0da85615aff6717229d9df6b.zip
Clean up YieldFinder
-rw-r--r--src/librustc/middle/region.rs11
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);
     }