Reduce nesting of match expression

This commit is contained in:
yt2b 2022-11-27 23:43:26 +09:00
parent 27dd95c8f9
commit eee3c03042

View file

@ -1178,38 +1178,33 @@ impl SymbolTableBuilder {
let symbol = if let Some(symbol) = table.symbols.get_mut(name.as_ref()) { let symbol = if let Some(symbol) = table.symbols.get_mut(name.as_ref()) {
// Role already set.. // Role already set..
match role { match role {
SymbolUsage::Global => { SymbolUsage::Global if !symbol.is_global() => {
if !symbol.is_global() { if symbol.is_parameter {
if symbol.is_parameter { return Err(SymbolTableError {
return Err(SymbolTableError { error: format!("name '{}' is parameter and global", name),
error: format!("name '{}' is parameter and global", name), location,
location, });
}); }
} if symbol.is_referenced {
if symbol.is_referenced { return Err(SymbolTableError {
return Err(SymbolTableError { error: format!("name '{}' is used prior to global declaration", name),
error: format!( location,
"name '{}' is used prior to global declaration", });
name }
), if symbol.is_annotated {
location, return Err(SymbolTableError {
}); error: format!("annotated name '{}' can't be global", name),
} location,
if symbol.is_annotated { });
return Err(SymbolTableError { }
error: format!("annotated name '{}' can't be global", name), if symbol.is_assigned {
location, return Err(SymbolTableError {
}); error: format!(
} "name '{}' is assigned to before global declaration",
if symbol.is_assigned { name
return Err(SymbolTableError { ),
error: format!( location,
"name '{}' is assigned to before global declaration", });
name
),
location,
});
}
} }
} }
SymbolUsage::Nonlocal => { SymbolUsage::Nonlocal => {