Virtual functions

This commit is contained in:
2026-07-09 06:30:11 +02:00
parent 0d2199ee3a
commit 08771fe5be
2 changed files with 4 additions and 4 deletions
+2 -2
View File
@@ -51,7 +51,7 @@ impl ClassProcessedData {
if matches!(method.item.visibility, Visibility::Public) { if matches!(method.item.visibility, Visibility::Public) {
match &method.item.is_override { match &method.item.is_override {
None => { None => {
if method.item.self_param.is_some() { if method.item.is_virtual && method.item.self_param.is_some() {
v_table.push(method.item.name.clone()); v_table.push(method.item.name.clone());
} }
} }
@@ -397,7 +397,7 @@ impl ClassProcessedData {
for method in &self.methods { for method in &self.methods {
match method.item.visibility { match method.item.visibility {
Visibility::Public => { Visibility::Public => {
if method.item.self_param.is_some() { if method.item.is_virtual && method.item.self_param.is_some() {
if method.item.is_override.is_none() { if method.item.is_override.is_none() {
gen_method_point(&method.item, ctx, cg); gen_method_point(&method.item, ctx, cg);
} }
+2 -2
View File
@@ -9,7 +9,7 @@ pub class Animal
self.name = "Rex".to_string(); self.name = "Rex".to_string();
} }
pub String speak(&self) pub virtual String speak(&self)
{ {
"Unknown".to_string() "Unknown".to_string()
} }
@@ -45,7 +45,7 @@ pub class Dog : Mammal
super = Super::new(); super = Super::new();
} }
pub String speak(&self) override(Animal) pub virtual String speak(&self) override(Animal)
{ {
"Woof!".to_string() "Woof!".to_string()
} }