mirror of
https://github.com/RustPython/Parser.git
synced 2025-09-02 08:38:30 +00:00
parent
a251109090
commit
de7396347f
1 changed files with 28 additions and 5 deletions
|
@ -954,10 +954,10 @@ impl SymbolTableBuilder {
|
||||||
// Some checks:
|
// Some checks:
|
||||||
let containing = table.symbols.contains_key(name);
|
let containing = table.symbols.contains_key(name);
|
||||||
if containing {
|
if containing {
|
||||||
|
let symbol = table.symbols.get(name).unwrap();
|
||||||
// Role already set..
|
// Role already set..
|
||||||
match role {
|
match role {
|
||||||
SymbolUsage::Global => {
|
SymbolUsage::Global => {
|
||||||
let symbol = table.symbols.get(name).unwrap();
|
|
||||||
if let SymbolScope::Global = symbol.scope {
|
if let SymbolScope::Global = symbol.scope {
|
||||||
// Ok
|
// Ok
|
||||||
} else {
|
} else {
|
||||||
|
@ -968,10 +968,33 @@ impl SymbolTableBuilder {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
SymbolUsage::Nonlocal => {
|
SymbolUsage::Nonlocal => {
|
||||||
return Err(SymbolTableError {
|
if symbol.is_parameter {
|
||||||
error: format!("name '{}' is used prior to nonlocal declaration", name),
|
return Err(SymbolTableError {
|
||||||
location,
|
error: format!("name '{}' is parameter and nonlocal", name),
|
||||||
})
|
location,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
if symbol.is_referenced {
|
||||||
|
return Err(SymbolTableError {
|
||||||
|
error: format!("name '{}' is used prior to nonlocal declaration", name),
|
||||||
|
location,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
if symbol.is_annotated {
|
||||||
|
return Err(SymbolTableError {
|
||||||
|
error: format!("annotated name '{}' can't be nonlocal", name),
|
||||||
|
location,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
if symbol.is_assigned {
|
||||||
|
return Err(SymbolTableError {
|
||||||
|
error: format!(
|
||||||
|
"name '{}' is assigned to before nonlocal declaration",
|
||||||
|
name
|
||||||
|
),
|
||||||
|
location,
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
_ => {
|
_ => {
|
||||||
// Ok?
|
// Ok?
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue