Skip to content
← Back

src/logging/diagnostics.ghul

1
namespace Logging is
2
use System.Text.Json
3
4
use Source.LOCATION
5
6
class POSITION is
7
line: uint public
8
character: uint public
9
10
init(line: uint, character: uint) is
11
self.line = line
12
self.character = character
13
si
14
si
15
16
class RANGE is
17
start: POSITION public
18
end: POSITION public
19
20
init(start: POSITION, end: POSITION) is
21
self.start = start
22
self.end = end
23
si
24
25
init(location: LOCATION) is
26
start = POSITION(cast uint(location.start_line), cast uint(location.start_column))
27
end = POSITION(cast uint(location.end_line), cast uint(location.end_column))
28
si
29
si
30
31
enum DiagnosticSeverity is
32
FATAL, // 0
33
ERROR, // 1
34
WARN, // 2
35
INFO, // 3
36
HINT, // 4
37
38
// FIXME: ideally this would be -1 but negative enum initializers are broken
39
EXCEPTION // 5
40
si
41
42
class DIAGNOSTIC_DTO is
43
range: RANGE
44
severity: DiagnosticSeverity
45
message: string
46
47
init(
48
range: RANGE,
49
severity: DiagnosticSeverity,
50
message: string
51
) is
52
self.range = range
53
self.severity = severity
54
self.message = message
55
si
56
57
init(
58
location: LOCATION,
59
severity: DiagnosticSeverity,
60
message: string
61
) is
62
self.range = RANGE(location)
63
self.severity = severity
64
self.message = message
65
si
66
si
67
68
class DIAGNOSTIC is
69
location: LOCATION
70
severity: DiagnosticSeverity
71
message: string
72
si
73
si