mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
find_field: use optional
This commit is contained in:
@ -400,36 +400,43 @@ fn (table mut Table) add_field(type_name, field_name, field_type string, is_mut
|
||||
}
|
||||
|
||||
fn (t &Type) has_field(name string) bool {
|
||||
field := t.find_field(name)
|
||||
return (field.name != '')
|
||||
_ := t.find_field(name) or { return false }
|
||||
return true
|
||||
}
|
||||
|
||||
fn (t &Type) has_enum_val(name string) bool {
|
||||
return name in t.enum_vals
|
||||
}
|
||||
|
||||
fn (t &Type) find_field(name string) Var {
|
||||
fn (t &Type) find_field(name string) ?Var {
|
||||
for field in t.fields {
|
||||
if field.name == name {
|
||||
return field
|
||||
}
|
||||
}
|
||||
//println('ret Var{}')
|
||||
return Var{}
|
||||
return none
|
||||
}
|
||||
|
||||
fn (table &Table) type_has_field(typ &Type, name string) bool {
|
||||
field := table.find_field(typ, name)
|
||||
return (field.name != '')
|
||||
_ := table.find_field(typ, name) or { return false }
|
||||
return true
|
||||
}
|
||||
|
||||
fn (table &Table) find_field(typ &Type, name string) Var {
|
||||
field := typ.find_field(name)
|
||||
if field.name.len == 0 && typ.parent.len > 0 {
|
||||
parent := table.find_type(typ.parent)
|
||||
return parent.find_field(name)
|
||||
fn (table &Table) find_field(typ &Type, name string) ?Var {
|
||||
for field in typ.fields {
|
||||
if field.name == name {
|
||||
return field
|
||||
}
|
||||
}
|
||||
return field
|
||||
if typ.parent != '' {
|
||||
parent := table.find_type(typ.parent)
|
||||
for field in parent.fields {
|
||||
if field.name == name {
|
||||
return field
|
||||
}
|
||||
}
|
||||
}
|
||||
return none
|
||||
}
|
||||
|
||||
fn (table mut Table) add_method(type_name string, f Fn) {
|
||||
|
Reference in New Issue
Block a user