ast: cleanup table.v (#12561)
parent
70ff00efbb
commit
43a1d2cfea
|
@ -92,12 +92,11 @@ pub:
|
||||||
pos token.Position
|
pos token.Position
|
||||||
return_type_pos token.Position
|
return_type_pos token.Position
|
||||||
pub mut:
|
pub mut:
|
||||||
return_type Type
|
return_type Type
|
||||||
name string
|
name string
|
||||||
params []Param
|
params []Param
|
||||||
source_fn voidptr // set in the checker, while processing fn declarations
|
source_fn voidptr // set in the checker, while processing fn declarations
|
||||||
usages int
|
usages int
|
||||||
//
|
|
||||||
generic_names []string
|
generic_names []string
|
||||||
attrs []Attr // all fn attributes
|
attrs []Attr // all fn attributes
|
||||||
is_conditional bool // true for `[if abc]fn(){}`
|
is_conditional bool // true for `[if abc]fn(){}`
|
||||||
|
@ -168,16 +167,6 @@ fn (p []Param) equals(o []Param) bool {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
pub struct Var {
|
|
||||||
pub:
|
|
||||||
name string
|
|
||||||
is_mut bool
|
|
||||||
mut:
|
|
||||||
typ Type
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
pub fn new_table() &Table {
|
pub fn new_table() &Table {
|
||||||
mut t := &Table{
|
mut t := &Table{
|
||||||
type_symbols: []TypeSymbol{cap: 64000}
|
type_symbols: []TypeSymbol{cap: 64000}
|
||||||
|
@ -301,7 +290,6 @@ pub fn (t &Table) known_fn(name string) bool {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn (mut t Table) register_fn(new_fn Fn) {
|
pub fn (mut t Table) register_fn(new_fn Fn) {
|
||||||
// println('reg fn $new_fn.name nr_args=$new_fn.args.len')
|
|
||||||
t.fns[new_fn.name] = new_fn
|
t.fns[new_fn.name] = new_fn
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -312,7 +300,6 @@ pub fn (mut t Table) register_interface(idecl InterfaceDecl) {
|
||||||
pub fn (mut t TypeSymbol) register_method(new_fn Fn) int {
|
pub fn (mut t TypeSymbol) register_method(new_fn Fn) int {
|
||||||
// returns a method index, stored in the ast.FnDecl
|
// returns a method index, stored in the ast.FnDecl
|
||||||
// for faster lookup in the checker's fn_decl method
|
// for faster lookup in the checker's fn_decl method
|
||||||
// println('reg me $new_fn.name nr_args=$new_fn.args.len')
|
|
||||||
t.methods << new_fn
|
t.methods << new_fn
|
||||||
return t.methods.len - 1
|
return t.methods.len - 1
|
||||||
}
|
}
|
||||||
|
@ -344,16 +331,12 @@ pub fn (t &Table) register_aggregate_method(mut sym TypeSymbol, name string) ?Fn
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn (t &Table) type_has_method(s &TypeSymbol, name string) bool {
|
pub fn (t &Table) type_has_method(s &TypeSymbol, name string) bool {
|
||||||
// println('type_has_method($s.name, $name) types.len=$t.types.len s.parent_idx=$s.parent_idx')
|
t.type_find_method(s, name) or { return false }
|
||||||
if _ := t.type_find_method(s, name) {
|
return true
|
||||||
return true
|
|
||||||
}
|
|
||||||
return false
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// type_find_method searches from current type up through each parent looking for method
|
// type_find_method searches from current type up through each parent looking for method
|
||||||
pub fn (t &Table) type_find_method(s &TypeSymbol, name string) ?Fn {
|
pub fn (t &Table) type_find_method(s &TypeSymbol, name string) ?Fn {
|
||||||
// println('type_find_method($s.name, $name) types.len=$t.types.len s.parent_idx=$s.parent_idx')
|
|
||||||
mut ts := unsafe { s }
|
mut ts := unsafe { s }
|
||||||
for {
|
for {
|
||||||
if method := ts.find_method(name) {
|
if method := ts.find_method(name) {
|
||||||
|
@ -454,11 +437,8 @@ fn (t &Table) register_aggregate_field(mut sym TypeSymbol, name string) ?StructF
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn (t &Table) struct_has_field(struct_ &TypeSymbol, name string) bool {
|
pub fn (t &Table) struct_has_field(struct_ &TypeSymbol, name string) bool {
|
||||||
// println('struct_has_field($s.name, $name) types.len=$t.types.len s.parent_idx=$s.parent_idx')
|
t.find_field(struct_, name) or { return false }
|
||||||
if _ := t.find_field(struct_, name) {
|
return true
|
||||||
return true
|
|
||||||
}
|
|
||||||
return false
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// struct_fields returns all fields including fields from embeds
|
// struct_fields returns all fields including fields from embeds
|
||||||
|
@ -477,7 +457,6 @@ pub fn (t &Table) struct_fields(sym &TypeSymbol) []StructField {
|
||||||
|
|
||||||
// search from current type up through each parent looking for field
|
// search from current type up through each parent looking for field
|
||||||
pub fn (t &Table) find_field(s &TypeSymbol, name string) ?StructField {
|
pub fn (t &Table) find_field(s &TypeSymbol, name string) ?StructField {
|
||||||
// println('find_field($s.name, $name) types.len=$t.types.len s.parent_idx=$s.parent_idx')
|
|
||||||
mut ts := unsafe { s }
|
mut ts := unsafe { s }
|
||||||
for {
|
for {
|
||||||
match mut ts.info {
|
match mut ts.info {
|
||||||
|
@ -707,7 +686,6 @@ fn (mut t Table) check_for_already_registered_symbol(typ TypeSymbol, existing_id
|
||||||
match ex_type.kind {
|
match ex_type.kind {
|
||||||
.placeholder {
|
.placeholder {
|
||||||
// override placeholder
|
// override placeholder
|
||||||
// println('overriding type placeholder `$typ.name`')
|
|
||||||
t.type_symbols[existing_idx] = TypeSymbol{
|
t.type_symbols[existing_idx] = TypeSymbol{
|
||||||
...typ
|
...typ
|
||||||
methods: ex_type.methods
|
methods: ex_type.methods
|
||||||
|
@ -914,7 +892,6 @@ pub fn (t &Table) map_cname(key_type Type, value_type Type) string {
|
||||||
value_type_sym := t.get_type_symbol(value_type)
|
value_type_sym := t.get_type_symbol(value_type)
|
||||||
suffix := if value_type.is_ptr() { '_ptr' } else { '' }
|
suffix := if value_type.is_ptr() { '_ptr' } else { '' }
|
||||||
return 'Map_${key_type_sym.cname}_$value_type_sym.cname' + suffix
|
return 'Map_${key_type_sym.cname}_$value_type_sym.cname' + suffix
|
||||||
// return 'map_${value_type_sym.name}' + suffix
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn (mut t Table) find_or_register_chan(elem_type Type, is_mut bool) int {
|
pub fn (mut t Table) find_or_register_chan(elem_type Type, is_mut bool) int {
|
||||||
|
@ -1099,7 +1076,6 @@ pub fn (mut t Table) add_placeholder_type(name string, language Language) int {
|
||||||
language: language
|
language: language
|
||||||
mod: modname
|
mod: modname
|
||||||
}
|
}
|
||||||
// println('added placeholder: $name - $ph_type.idx')
|
|
||||||
return t.register_type_symbol(ph_type)
|
return t.register_type_symbol(ph_type)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue