module main

pub const void_type = &Symbol{
	name: 'void'
	file_path: ''
	file_version: 0
	is_top_level: true
}

@[heap]
pub struct Symbol {
pub mut:
	name                    string
	parent                  &Symbol = void_type // parent is for typedefs, aliases
	return_type             &Symbol = void_type // return_type is for functions and variables
	is_top_level            bool      @[required]
	generic_placeholder_len int
	sumtype_children_len    int
	interface_children_len  int
	children                []&Symbol // methods, sum types, map types, options, struct fields, etc.
	file_path               string    @[required] // required in order to register the symbol at its appropriate directory.
	file_version            int       @[required] // file version when the symbol was registered
}

fn main() {
	println(void_type)
}
