fn exit_scope(&mut self) -> Option<Scope> {
        if self.scopes.len() == 1 {
            return None;
        }
        if let Some(mut scope) = self.scopes.pop() {
            for local in scope.locals.items() {
                let name = self.symbol_table.name(&local);
                if self.unresolved_hoists.contains_key(&name) {
                    scope.locals.remove(&local);
                }
            }
            dbg!(&scope);
            dbg!(&self.unresolved_hoists);
            Some(scope)
        } else {
            unreachable!("no scopes left on stack?");
            None
        }
    }
Exits the current scope, returning it.
If there are no enclosing scopes, returns `None`.
passerine/src/compiler/hoist.rs