Skip to content

Commit 332f371

Browse files
committed
Resolve parent classes in symbols.rs
1 parent a07c1c4 commit 332f371

1 file changed

Lines changed: 14 additions & 1 deletion

File tree

src/symbols.rs

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -365,7 +365,20 @@ impl StmtBox
365365

366366
// Class declaration
367367
Stmt::ClassDecl { class_id } => {
368-
let class = prog.classes.get(class_id).unwrap();
368+
let class = prog.classes.get_mut(class_id).unwrap();
369+
370+
// If this class has a parent, try to resolve its class id
371+
if let Some(class_name) = &class.parent_name {
372+
if let Some(Decl::Class { id, .. }) = env.lookup(class_name) {
373+
class.parent_id = id;
374+
} else {
375+
return ParseError::with_pos(
376+
&format!("could not resolve parent class name `{}`", class_name),
377+
&self.pos
378+
);
379+
}
380+
}
381+
369382
let method_ids: Vec<FunId> = class.methods.values().copied().collect();
370383

371384
for fun_id in method_ids {

0 commit comments

Comments
 (0)