Virtual functions
This commit is contained in:
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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()
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user