mirror of
https://github.com/RustPython/Parser.git
synced 2025-07-09 22:25:23 +00:00
Disallow __debug__ as args, kwargs name.
This commit is contained in:
parent
8cb2cca9fb
commit
50b5388711
1 changed files with 17 additions and 19 deletions
|
@ -315,8 +315,13 @@ impl Compiler {
|
||||||
fn name(&mut self, name: &str) -> bytecode::NameIdx {
|
fn name(&mut self, name: &str) -> bytecode::NameIdx {
|
||||||
self._name_inner(name, |i| &mut i.name_cache)
|
self._name_inner(name, |i| &mut i.name_cache)
|
||||||
}
|
}
|
||||||
fn varname(&mut self, name: &str) -> bytecode::NameIdx {
|
fn varname(&mut self, name: &str) -> CompileResult<bytecode::NameIdx> {
|
||||||
self._name_inner(name, |i| &mut i.varname_cache)
|
if Compiler::is_forbidden_arg_name(name) {
|
||||||
|
return Err(self.error(CodegenErrorType::SyntaxError(format!(
|
||||||
|
"cannot assign to {name}",
|
||||||
|
))));
|
||||||
|
}
|
||||||
|
Ok(self._name_inner(name, |i| &mut i.varname_cache))
|
||||||
}
|
}
|
||||||
fn _name_inner(
|
fn _name_inner(
|
||||||
&mut self,
|
&mut self,
|
||||||
|
@ -942,24 +947,17 @@ impl Compiler {
|
||||||
.chain(&args.args)
|
.chain(&args.args)
|
||||||
.chain(&args.kwonlyargs);
|
.chain(&args.kwonlyargs);
|
||||||
for name in args_iter {
|
for name in args_iter {
|
||||||
if Compiler::is_forbidden_arg_name(&name.node.arg) {
|
self.varname(&name.node.arg)?;
|
||||||
return Err(self.error(CodegenErrorType::SyntaxError(format!(
|
|
||||||
"cannot assign to {}",
|
|
||||||
&name.node.arg
|
|
||||||
))));
|
|
||||||
}
|
|
||||||
self.varname(&name.node.arg);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
let mut compile_varargs = |va: Option<&ast::Arg>, flag| {
|
if let Some(name) = args.vararg.as_deref() {
|
||||||
if let Some(name) = va {
|
self.current_codeinfo().flags |= bytecode::CodeFlags::HAS_VARARGS;
|
||||||
self.current_codeinfo().flags |= flag;
|
self.varname(&name.node.arg)?;
|
||||||
self.varname(&name.node.arg);
|
}
|
||||||
|
if let Some(name) = args.kwarg.as_deref() {
|
||||||
|
self.current_codeinfo().flags |= bytecode::CodeFlags::HAS_VARKEYWORDS;
|
||||||
|
self.varname(&name.node.arg)?;
|
||||||
}
|
}
|
||||||
};
|
|
||||||
|
|
||||||
compile_varargs(args.vararg.as_deref(), bytecode::CodeFlags::HAS_VARARGS);
|
|
||||||
compile_varargs(args.kwarg.as_deref(), bytecode::CodeFlags::HAS_VARKEYWORDS);
|
|
||||||
|
|
||||||
Ok(funcflags)
|
Ok(funcflags)
|
||||||
}
|
}
|
||||||
|
@ -2565,7 +2563,7 @@ impl Compiler {
|
||||||
0,
|
0,
|
||||||
name.to_owned(),
|
name.to_owned(),
|
||||||
);
|
);
|
||||||
let arg0 = self.varname(".0");
|
let arg0 = self.varname(".0")?;
|
||||||
|
|
||||||
let return_none = init_collection.is_none();
|
let return_none = init_collection.is_none();
|
||||||
// Create empty object of proper type:
|
// Create empty object of proper type:
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue