Skip to content

Commit 39ccbfa

Browse files
author
梶塚太智
committed
Implement error processing of command instance
1 parent 3c949ef commit 39ccbfa

File tree

1 file changed

+17
-4
lines changed

1 file changed

+17
-4
lines changed

src/main.rs

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1013,15 +1013,28 @@ impl Executor {
10131013
let mut methods = self.pop_stack().get_list();
10141014
let mut class = self.pop_stack().get_list();
10151015
let mut object: HashMap<String, Type> = HashMap::new();
1016-
let name = class[0].get_string();
1016+
1017+
let name = if !class.is_empty() {
1018+
class[0].get_string()
1019+
} else {
1020+
self.log_print("Error! the type name is not found.".to_string());
1021+
self.stack.push(Type::Error("instance-name".to_string()));
1022+
return;
1023+
};
10171024

10181025
for (name, element) in &mut class.to_owned()[1..class.len()].iter().zip(data) {
10191026
object.insert(name.to_owned().get_string(), element);
10201027
}
10211028

10221029
for item in &mut methods {
10231030
let item = item.get_list();
1024-
object.insert(item[0].clone().get_string(), item[1].clone());
1031+
if item.len() >= 2 {
1032+
object.insert(item[0].clone().get_string(), item[1].clone());
1033+
} else {
1034+
self.log_print("Error! the default data structure is wrong.".to_string());
1035+
self.stack.push(Type::Error("instance-default".to_string()));
1036+
return;
1037+
}
10251038
}
10261039

10271040
self.stack.push(Type::Object(name, object))
@@ -1072,8 +1085,8 @@ impl Executor {
10721085
.entry(property)
10731086
.and_modify(|value| *value = data.clone())
10741087
.or_insert(data.clone());
1075-
1076-
self.stack.push(Type::Object(name, value))
1088+
1089+
self.stack.push(Type::Object(name, value))
10771090
}
10781091
_ => self.stack.push(Type::Error("not-object".to_string())),
10791092
}

0 commit comments

Comments
 (0)