Virtual functions
This commit is contained in:
@@ -51,7 +51,7 @@ impl ClassProcessedData {
|
||||
if matches!(method.item.visibility, Visibility::Public) {
|
||||
match &method.item.is_override {
|
||||
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());
|
||||
}
|
||||
}
|
||||
@@ -397,7 +397,7 @@ impl ClassProcessedData {
|
||||
for method in &self.methods {
|
||||
match method.item.visibility {
|
||||
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() {
|
||||
gen_method_point(&method.item, ctx, cg);
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@ pub class Animal
|
||||
self.name = "Rex".to_string();
|
||||
}
|
||||
|
||||
pub String speak(&self)
|
||||
pub virtual String speak(&self)
|
||||
{
|
||||
"Unknown".to_string()
|
||||
}
|
||||
@@ -45,7 +45,7 @@ pub class Dog : Mammal
|
||||
super = Super::new();
|
||||
}
|
||||
|
||||
pub String speak(&self) override(Animal)
|
||||
pub virtual String speak(&self) override(Animal)
|
||||
{
|
||||
"Woof!".to_string()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user