From 5135c696e7510097c396e8fe45ec35a7cf21ded2 Mon Sep 17 00:00:00 2001 From: Dong-hee Na Date: Mon, 12 Aug 2019 00:32:57 +0900 Subject: [PATCH] Fix scope_for_name to catch NameError properly --- src/compile.rs | 4 +++- src/symboltable.rs | 6 ++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/compile.rs b/src/compile.rs index a13d361..74deb2d 100644 --- a/src/compile.rs +++ b/src/compile.rs @@ -1877,7 +1877,9 @@ impl Compiler { fn lookup_name(&self, name: &str) -> &Symbol { // println!("Looking up {:?}", name); let scope = self.scope_stack.last().unwrap(); - scope.lookup(name).unwrap() + scope.lookup(name).expect( + "The symbol must be present in the symbol table, even when it is undefined in python.", + ) } // Low level helper functions: diff --git a/src/symboltable.rs b/src/symboltable.rs index c1db24b..6dc9c4c 100644 --- a/src/symboltable.rs +++ b/src/symboltable.rs @@ -244,13 +244,11 @@ impl SymbolTableBuilder { } => { self.scan_expressions(decorator_list)?; self.register_name(name, SymbolRole::Assigned)?; - - self.enter_function(args)?; - - self.scan_statements(body)?; if let Some(expression) = returns { self.scan_expression(expression)?; } + self.enter_function(args)?; + self.scan_statements(body)?; self.leave_scope(); } ClassDef {