v2.types #
fn init_universe #
fn init_universe() &Scope
fn new_module #
fn new_module(name string, path string) &Module
fn new_scope #
fn new_scope(parent &Scope) &Scope
fn Checker.new #
fn Checker.new(prefs &pref.Preferences, file_set &token.FileSet, env &Environment) &Checker
fn Environment.new #
fn Environment.new() &Environment
fn (Checker) get_module_scope #
fn (mut c Checker) get_module_scope(module_name string, parent &Scope) &Scope
fn (Checker) check_files #
fn (mut c Checker) check_files(files []ast.File)
fn (Checker) check_file #
fn (mut c Checker) check_file(file ast.File)
type Object #
type Object = Const | Fn | Global | Module | SmartCastSelector | Type
fn (Object) typ #
fn (obj &Object) typ() Type
type Type #
type Type = Alias
| Array
| ArrayFixed
| Channel
| Char
| Enum
| FnType
| ISize
| Interface
| Map
| NamedType
| Nil
| None
| OptionType
| Pointer
| Primitive
| ResultType
| Rune
| String
| Struct
| SumType
| Thread
| Tuple
| USize
| Void
Todo: fix nested sum type in tinyv (like TS)
struct Module #
struct Module {
name string
path string
imports []Module
scope &Scope = new_scope(unsafe { nil })
}
struct Scope #
struct Scope {
parent &Scope = unsafe { nil }
mut:
objects map[string]Object
// TODO: try implement using original concept
field_smartcasts map[string]Type
// smartcasts map[string]Type
// TODO: it may be more efficient looking up local vars using an ID
// even if we had to store them in two different places. investigate.
// variables []Object
start int
end int
}
fn (Scope) lookup_field_smartcast #
fn (mut s Scope) lookup_field_smartcast(name string) ?Type
Todo: try implement the alternate method I was experimenting with (SmartCastSelector)i'm not sure if it is actually possible though. need to explore it.
fn (Scope) lookup #
fn (mut s Scope) lookup(name string) ?Object
fn (Scope) lookup_parent #
fn (mut s Scope) lookup_parent(name string, pos token.Pos) ?Object
fn (Scope) lookup_parent_with_scope #
fn (mut s Scope) lookup_parent_with_scope(name string, pos token.Pos) ?(&Scope, Object)
fn (Scope) insert #
fn (mut s Scope) insert(name string, obj Object)
fn (Scope) print #
fn (s &Scope) print(recurse_parents bool)