v8/test/mjsunit/json-errors.js
Issack John 718f743750 JSON.parse errors made user-friendly
Part of the improve error messages initiative.

Based on a resource of JSON.parse() errors found at
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/JSON_bad_parse

Previously JSON.parse(NaN) would output:
SyntaxError: Unexpected token N in JSON at position 0
Now the output is:
SyntaxError: "NaN" is not valid JSON

Previously JSON.parse("{a:1}") would output:
SyntaxError: Unexpected token a in JSON at position 1
Now the output is:
SyntaxError: Expected property name or '}' in JSON at position 1

Bug: v8:6551
Change-Id: Ic9fad1fdbd295e1302805b81e6603fc526121960
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3513684
Reviewed-by: Toon Verwaest <verwaest@chromium.org>
Commit-Queue: Issack John <issackjohn@microsoft.com>
Cr-Commit-Position: refs/heads/main@{#80567}
2022-05-16 17:02:37 +00:00

31 lines
851 B
JavaScript

// Copyright 2017 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
function TryParse(s, message) {
try {
JSON.parse(s);
assertUnreachable();
} catch(e) {
assertEquals(message, e.message);
}
}
var s = `{"a\\\\b `;
TryParse(s, "Unterminated string in JSON at position 7");
var s = `{"a\\\\\u03A9 `;
TryParse(s, "Unterminated string in JSON at position 7");
var s = `{"ab `;
TryParse(s, "Unterminated string in JSON at position 5");
var s = `{"a\u03A9 `;
TryParse(s, "Unterminated string in JSON at position 5");
var s = `{"a\nb":"b"}`;
TryParse(s, "Unexpected token '\n', \"{\"a\nb\":\"b\"}\" is not valid JSON");
var s = `{"a\nb":"b\u03A9"}`;
TryParse(s, "Unexpected token '\n', \"{\"a\nb\":\"b\u03A9\"}\" is not valid JSON");