Skip to content
← Back

src/semantic/scope/scope.ghul

1
namespace Semantic is
2
use IO.Std
3
4
use System.Text.StringBuilder
5
6
use IoC
7
use Logging
8
use Source
9
10
use Types.Type
11
use Symbols.Symbol
12
13
trait Scope is
14
name: string
15
qualified_name: string
16
17
symbols: Collections.Iterable[Symbols.Symbol]
18
19
type: Type?
20
21
unspecialized_symbol: Symbols.Symbol?
22
23
// Where this scope stands in for another symbol's scope - an impl
24
// or partial block, which declares members into a target type but
25
// resolves names at its own write site - the symbol scope it
26
// stands in for; self otherwise. Consumers that interpret a scope
27
// as a symbol (instance context, declaration context, the symbol
28
// associated with a definition node) must look through this.
29
underlying_scope: Scope => self
30
31
is_trait: bool => false
32
is_classy: bool => false
33
is_closure: bool => false
34
is_union: bool => false
35
is_variant: bool => false
36
is_closed_root: bool => false
37
is_unit_variant: bool => false
38
is_capture_context: bool => false
39
is_instance_context: bool => false
40
is_namespace: bool => false
41
42
qualify(name: string) -> string
43
find_direct(name: string) -> Symbols.Symbol?
44
find_member(name: string) -> Symbols.Symbol?
45
find_enclosing(name: string) -> Symbols.Symbol?
46
47
find_direct_matches(prefix: string, matches: Collections.MutableMap[string,Symbols.Symbol])
48
find_member_matches(prefix: string, matches: Collections.MutableMap[string,Symbols.Symbol])
49
find_enclosing_matches(prefix: string, matches: Collections.MutableMap[string,Symbols.Symbol])
50
51
si
52
53
trait DeclarationContext is
54
declare_class(location: LOCATION, span: LOCATION, name: string, arguments: Collections.List[string], enclosing: Scope, symbol_definition_listener: SymbolDefinitionListener?) -> Symbol
55
declare_trait(location: LOCATION, span: LOCATION, name: string, arguments: Collections.List[string], enclosing: Scope, symbol_definition_listener: SymbolDefinitionListener?) -> Symbol
56
declare_struct(location: LOCATION, span: LOCATION, name: string, arguments: Collections.List[string], enclosing: Scope, symbol_definition_listener: SymbolDefinitionListener?) -> Symbol
57
declare_union(location: LOCATION, span: LOCATION, name: string, arguments: Collections.List[string], enclosing: Scope, symbol_definition_listener: SymbolDefinitionListener?) -> Symbol
58
declare_variant(location: LOCATION, span: LOCATION, name: string, enclosing: Scope, symbol_definition_listener: SymbolDefinitionListener?) -> Symbol
59
declare_type(location: LOCATION, name: string, index: int, symbol_definition_listener: SymbolDefinitionListener?) -> Symbol
60
declare_enum(location: LOCATION, span: LOCATION, name: string, enclosing: Scope, symbol_definition_listener: SymbolDefinitionListener?) -> Symbol
61
declare_enum_member(location: LOCATION, name: string, value: string?, symbol_definition_listener: SymbolDefinitionListener?)
62
declare_closure(location: LOCATION, name: string, owner: Scope, enclosing: Scope, is_recursive: bool, symbol_definition_listener: SymbolDefinitionListener?) -> Symbol
63
declare_async_closure(location: LOCATION, name: string, owner: Scope, enclosing: Scope, is_recursive: bool, symbol_definition_listener: SymbolDefinitionListener?) -> Symbol
64
declare_innate(location: LOCATION, name: string, innate_name: string, enclosing: Scope, symbol_definition_listener: SymbolDefinitionListener?) -> Symbol
65
66
declare_function(location: LOCATION, span: LOCATION, name: string, is_static: bool, is_private: bool, has_body: bool, is_property_accessor: bool, enclosing: Scope, symbol_definition_listener: SymbolDefinitionListener?) -> Symbol
67
declare_generator_function(location: LOCATION, span: LOCATION, name: string, is_static: bool, is_private: bool, has_body: bool, enclosing: Scope, symbol_definition_listener: SymbolDefinitionListener?) -> Symbol
68
declare_async_function(location: LOCATION, span: LOCATION, name: string, is_static: bool, is_private: bool, has_body: bool, enclosing: Scope, symbol_definition_listener: SymbolDefinitionListener?) -> Symbol
69
declare_variable(location: LOCATION, name: string, is_static: bool, symbol_definition_listener: SymbolDefinitionListener?) -> Symbol
70
declare_property(location: LOCATION, span: LOCATION, name: string, is_static: bool, is_private: bool, is_assignable: bool, symbol_definition_listener: SymbolDefinitionListener?) -> Symbol
71
declare_label(location: LOCATION, name: string, symbol_definition_listener: SymbolDefinitionListener?)
72
si
73
74
trait NamespaceContext is
75
declare_namespace(location: LOCATION, name: string, `namespace: Symbols.NAMESPACE, symbol_definition_listener: SymbolDefinitionListener?)
76
si
77
78
trait ClosureContext is
79
add_closure(closure: Symbols.Closure)
80
81
get_closures() -> Collections.Iterable[Symbols.Closure]
82
si
83
84
si