Skip to content

Commit 62757df

Browse files
committed
fix: Improve error handling in YAML parser linter
1 parent d9ad3a2 commit 62757df

File tree

1 file changed

+35
-25
lines changed

1 file changed

+35
-25
lines changed

src/Common/CodeEditor/Extensions/yamlParseLinter.ts

Lines changed: 35 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -8,34 +8,44 @@ export const yamlParseLinter =
88
const diagnostics: Diagnostic[] = []
99
const text = view.state.doc.toString()
1010

11-
// Parse YAML
12-
const documents = YAML.parseAllDocuments(text)
11+
try {
12+
// Parse YAML
13+
const documents = YAML.parseAllDocuments(text)
1314

14-
// Handle YAML parse errors
15-
documents.forEach(({ errors }) => {
16-
errors.forEach((err) => {
17-
if (err instanceof YAMLParseError) {
18-
const { linePos = [], message } = err
19-
const { from } = view.state.doc.line(linePos[0]?.line || 0)
15+
// Handle YAML parse errors
16+
documents.forEach(({ errors }) => {
17+
errors.forEach((err) => {
18+
if (err instanceof YAMLParseError) {
19+
const { linePos = [], message } = err
20+
const { from } = view.state.doc.line(linePos[0]?.line || 0)
2021

21-
diagnostics.push({
22-
from,
23-
to: from + (linePos[0]?.col || 0),
24-
message: message.replace(/\n+/g, '\n'),
25-
severity: 'error',
26-
source: err.name,
27-
})
28-
} else {
29-
diagnostics.push({
30-
from: 0,
31-
to: text.length,
32-
message: err instanceof Error ? err.message : 'Unknown error',
33-
severity: 'error',
34-
source: err.name,
35-
})
36-
}
22+
diagnostics.push({
23+
from,
24+
to: Math.min(from + (linePos[0]?.col || 0), text.length),
25+
message: message.replace(/\n+/g, '\n'),
26+
severity: 'error',
27+
source: err.name,
28+
})
29+
} else {
30+
diagnostics.push({
31+
from: 0,
32+
to: text.length,
33+
message: err instanceof Error ? err.message : 'Unknown error',
34+
severity: 'error',
35+
source: err.name,
36+
})
37+
}
38+
})
3739
})
38-
})
40+
} catch (err) {
41+
diagnostics.push({
42+
from: 0,
43+
to: text.length,
44+
message: err instanceof Error ? err.message : 'Yaml lint failed',
45+
severity: 'error',
46+
source: err.name,
47+
})
48+
}
3949

4050
return diagnostics
4151
}

0 commit comments

Comments
 (0)