Skip to content
← Back

src/semantic/types/action.ghul

1
namespace Semantic.Types is
2
use Source.LOCATION
3
4
use Ghul.Pipes
5
6
class ACTION: GENERIC is
7
is_action: bool => true
8
is_function: bool => true
9
10
short_description: string => FUNCTION.with_optionality(self, get_short_description(self))
11
12
get_short_description(action: GENERIC) -> string static is
13
let result = System.Text.StringBuilder()
14
15
let args = action.arguments
16
17
if args.count == 1 then
18
result
19
.append(FUNCTION.lone_parameter_description(args[0]))
20
.append(" -> void")
21
else
22
result.append('(')
23
24
(0..args.count) |> map(i => args[i]) |> append_to(result)
25
26
result.append(") -> void")
27
fi
28
29
return result.to_string()
30
si
31
32
init(
33
location: LOCATION,
34
symbol: Symbols.Classy,
35
arguments: Collections.List[Type]
36
) is
37
super.init(location, symbol, arguments)
38
si
39
40
get_argument_type_variance(index: int) -> TypeVariance => TypeVariance.CONTRAVARIANT
41
42
create(
43
location: LOCATION,
44
symbol: Symbols.Classy,
45
arguments: Collections.List[Type]
46
) -> GENERIC =>
47
ACTION(location, symbol, arguments)
48
49
to_string() -> string => FUNCTION.with_optionality(self, get_short_description(self))
50
si
51
si