/
marker.go
60 lines (52 loc) · 1.64 KB
/
marker.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
// Package check checks provided Go code and reports syntax errors
package check
import "go/scanner"
// MarkerSeverity is equivalent for MarkerSeverity type in monaco-editor
type MarkerSeverity = int
const (
// Hint is marker severity from monaco-editor
Hint = MarkerSeverity(1)
// Info is marker severity from monaco-editor
Info = MarkerSeverity(2)
// Warning is marker severity from monaco-editor
Warning = MarkerSeverity(3)
// Error is marker severity from monaco-editor
Error = MarkerSeverity(8)
)
// MarkerData is a structure defining a problem/warning/etc.
// Equivalent to IMarkerData in 'monaco-editor'
type MarkerData struct {
// Severity is marker severity
Severity MarkerSeverity `json:"severity"`
// StartLineNumber is start line number
StartLineNumber int `json:"startLineNumber"`
// StartColumn is start column
StartColumn int `json:"startColumn"`
// EndLineNumber is end line number
EndLineNumber int `json:"endLineNumber"`
// EndColumn is end column
EndColumn int `json:"endColumn"`
// Message is marker message
Message string `json:"message"`
}
func errorsListToMarkers(errList scanner.ErrorList) []MarkerData {
markers := make([]MarkerData, 0, len(errList))
for _, err := range errList {
markers = append(markers, MarkerData{
Severity: Error,
Message: err.Msg,
StartLineNumber: err.Pos.Line,
EndLineNumber: err.Pos.Line,
StartColumn: err.Pos.Column - 1,
EndColumn: err.Pos.Column,
})
}
return markers
}
// Result is result
type Result struct {
// HasErrors is error status
HasErrors bool `json:"hasErrors"`
// Markers is list of marker data
Markers []MarkerData `json:"markers"`
}