|
|
@@ -412,16 +412,24 @@ export namespace Config {
|
|
|
const errors: JsoncParseError[] = []
|
|
|
const data = parseJsonc(text, errors, { allowTrailingComma: true })
|
|
|
if (errors.length) {
|
|
|
+ const lines = text.split("\n")
|
|
|
+ const errorDetails = errors
|
|
|
+ .map((e) => {
|
|
|
+ const beforeOffset = text.substring(0, e.offset).split("\n")
|
|
|
+ const line = beforeOffset.length
|
|
|
+ const column = beforeOffset[beforeOffset.length - 1].length + 1
|
|
|
+ const problemLine = lines[line - 1]
|
|
|
+
|
|
|
+ const error = `${printParseErrorCode(e.error)} at line ${line}, column ${column}`
|
|
|
+ if (!problemLine) return error
|
|
|
+
|
|
|
+ return `${error}\n Line ${line}: ${problemLine}\n${"".padStart(column + 9)}^`
|
|
|
+ })
|
|
|
+ .join("\n")
|
|
|
+
|
|
|
throw new JsonError({
|
|
|
path: configPath,
|
|
|
- message: errors
|
|
|
- .map((e) => {
|
|
|
- const lines = text.substring(0, e.offset).split("\n")
|
|
|
- const line = lines.length
|
|
|
- const column = lines[lines.length - 1].length + 1
|
|
|
- return `${printParseErrorCode(e.error)} at line ${line}, column ${column}`
|
|
|
- })
|
|
|
- .join("; "),
|
|
|
+ message: `\n--- JSONC Input ---\n${text}\n--- Errors ---\n${errorDetails}\n--- End ---`,
|
|
|
})
|
|
|
}
|
|
|
|