Appearance
| 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 |