update function analyze_single_class_methods_fields in file nac3core/src/toplevel/composer.rs to throw error "class <class-name> constructor __init__ (at <location>) must not be decorated with rpc" when the constructor __init__ is decorated with decorator rpc
This commit is contained in:
parent
ebd25af38b
commit
df9df84879
|
@ -1067,12 +1067,27 @@ impl TopLevelComposer {
|
|||
let mut defined_fields: HashSet<_> = HashSet::new();
|
||||
for b in class_body_ast {
|
||||
match &b.node {
|
||||
ast::StmtKind::FunctionDef { args, returns, name, .. } => {
|
||||
ast::StmtKind::FunctionDef { args, returns, name, decorator_list, .. } => {
|
||||
let (method_dummy_ty, method_id) =
|
||||
Self::get_class_method_def_info(class_methods_def, *name)?;
|
||||
|
||||
let mut method_var_map: HashMap<u32, Type> = HashMap::new();
|
||||
|
||||
// This part check if __init__ method decorate with inappropriate decorator (rpc)
|
||||
if name == &"__init__".into() {
|
||||
if let Some(_) = decorator_list
|
||||
.iter()
|
||||
.find(|ast::Located { node, .. }| match node {
|
||||
&ast::ExprKind::Name { id, .. } => id == "rpc".into(),
|
||||
_ => false
|
||||
}) {
|
||||
return Err(format!(
|
||||
"class {} constructor {} (at {}) must not be decorated with rpc",
|
||||
_class_name, name, b.location
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
let arg_types: Vec<FuncArg> = {
|
||||
// check method parameters cannot have same name
|
||||
let mut defined_parameter_name: HashSet<_> = HashSet::new();
|
||||
|
|
Loading…
Reference in New Issue