nonlocal generate syntax error

If the scope depth is less than 2,
a syntax error occurs in nonlocal.

Fixes #1360
This commit is contained in:
HyeockJinKim 2019-09-12 01:01:04 +09:00
parent 5919a1e1ba
commit c852c5d272

View file

@ -211,7 +211,8 @@ impl<'a> SymbolTableAnalyzer<'a> {
// symbol.table.borrow().parent.clone();
if let Some((symbols, _)) = parent_symbol_table {
if !symbols.contains_key(&symbol.name) {
let scope_depth = self.tables.len();
if !symbols.contains_key(&symbol.name) || scope_depth < 2 {
return Err(SymbolTableError {
error: format!("no binding for nonlocal '{}' found", symbol.name),
location: Default::default(),