if (calltype == NJS_FS_CALLBACK) {
callback = njs_arg(args, nargs, njs_min(nargs - 1, 3));
if (!njs_value_is_function(callback)) {
- njs_vm_error(vm, "\"callback\" must be a function");
+ njs_vm_type_error(vm, "\"callback\" must be a function");
return NJS_ERROR;
}
md = F_OK;
} else {
- njs_vm_error(vm, "\"mode\" must be a number");
+ njs_vm_type_error(vm, "\"mode\" must be a number");
return NJS_ERROR;
}
if (njs_slow_path(calltype == NJS_FS_CALLBACK)) {
callback = njs_arg(args, nargs, njs_min(nargs - 1, 3));
if (!njs_value_is_function(callback)) {
- njs_vm_error(vm, "\"callback\" must be a function");
+ njs_vm_type_error(vm, "\"callback\" must be a function");
return NJS_ERROR;
}
} else if (!njs_value_is_undefined(options)) {
if (!njs_value_is_object(options)) {
- njs_vm_error(vm, "Unknown options type"
- "(a number or object required)");
+ njs_vm_type_error(vm, "Unknown options type"
+ "(a number or object required)");
return NJS_ERROR;
}
}
if (njs_slow_path(offset < 0 || (size_t) offset > data.length)) {
- njs_vm_error(vm, "offset is out of range (must be <= %z)", data.length);
+ njs_vm_range_error(vm, "offset is out of range (must be <= %z)",
+ data.length);
return NJS_ERROR;
}
}
if (njs_slow_path(length < 0 || (size_t) length > data.length)) {
- njs_vm_error(vm, "length is out of range (must be <= %z)",
- data.length);
+ njs_vm_range_error(vm, "length is out of range (must be <= %z)",
+ data.length);
return NJS_ERROR;
}
if (calltype == NJS_FS_CALLBACK) {
callback = njs_arg(args, nargs, njs_min(nargs - 1, 3));
if (!njs_value_is_function(callback)) {
- njs_vm_error(vm, "\"callback\" must be a function");
+ njs_vm_type_error(vm, "\"callback\" must be a function");
return NJS_ERROR;
}
} else if (!njs_value_is_undefined(options)) {
if (!njs_value_is_object(options)) {
- njs_vm_error(vm, "Unknown options type "
- "(a string or object required)");
+ njs_vm_type_error(vm, "Unknown options type "
+ "(a string or object required)");
return NJS_ERROR;
}
if (njs_slow_path(calltype == NJS_FS_CALLBACK)) {
callback = njs_arg(args, nargs, njs_min(nargs - 1, 3));
if (!njs_value_is_function(callback)) {
- njs_vm_error(vm, "\"callback\" must be a function");
+ njs_vm_type_error(vm, "\"callback\" must be a function");
return NJS_ERROR;
}
if (options == callback) {
} else if (!njs_value_is_undefined(options)) {
if (!njs_value_is_object(options)) {
- njs_vm_error(vm, "Unknown options type "
- "(a string or object required)");
+ njs_vm_type_error(vm, "Unknown options type "
+ "(a string or object required)");
return NJS_ERROR;
}
if (calltype == NJS_FS_CALLBACK) {
callback = njs_arg(args, nargs, njs_min(nargs - 1, 3));
if (!njs_value_is_function(callback)) {
- njs_vm_error(vm, "\"callback\" must be a function");
+ njs_vm_type_error(vm, "\"callback\" must be a function");
return NJS_ERROR;
}
} else if (!njs_value_is_undefined(options)) {
if (!njs_value_is_object(options)) {
- njs_vm_error(vm, "Unknown options type "
- "(a string or object required)");
+ njs_vm_type_error(vm, "Unknown options type "
+ "(a string or object required)");
return NJS_ERROR;
}
if (calltype == NJS_FS_CALLBACK) {
callback = njs_arg(args, nargs, 3);
if (!njs_value_is_function(callback)) {
- njs_vm_error(vm, "\"callback\" must be a function");
+ njs_vm_type_error(vm, "\"callback\" must be a function");
return NJS_ERROR;
}
}
if (njs_slow_path(calltype == NJS_FS_CALLBACK)) {
callback = njs_arg(args, nargs, njs_min(nargs - 1, 3));
if (!njs_value_is_function(callback)) {
- njs_vm_error(vm, "\"callback\" must be a function");
+ njs_vm_type_error(vm, "\"callback\" must be a function");
return NJS_ERROR;
}
if (options == callback) {
if (njs_slow_path(!njs_value_is_undefined(options))) {
if (!njs_value_is_object(options)) {
- njs_vm_error(vm, "Unknown options type "
- "(an object required)");
+ njs_vm_type_error(vm, "Unknown options type "
+ "(an object required)");
return NJS_ERROR;
}
if (njs_slow_path(calltype == NJS_FS_CALLBACK)) {
callback = njs_arg(args, nargs, njs_min(nargs - 1, 3));
if (!njs_value_is_function(callback)) {
- njs_vm_error(vm, "\"callback\" must be a function");
+ njs_vm_type_error(vm, "\"callback\" must be a function");
return NJS_ERROR;
}
if (!njs_value_is_undefined(options)) {
if (!njs_value_is_object(options)) {
- njs_vm_error(vm, "Unknown options type "
- "(an object required)");
+ njs_vm_type_error(vm, "Unknown options type "
+ "(an object required)");
return NJS_ERROR;
}
value = njs_vm_object_prop(vm, options, &string_bigint, &result);
if (value != NULL && njs_value_bool(value)) {
- njs_vm_error(vm, "\"bigint\" is not supported");
+ njs_vm_type_error(vm, "\"bigint\" is not supported");
return NJS_ERROR;
}
if (calltype == NJS_FS_CALLBACK) {
callback = njs_arg(args, nargs, njs_min(nargs - 1, 4));
if (!njs_value_is_function(callback)) {
- njs_vm_error(vm, "\"callback\" must be a function");
+ njs_vm_type_error(vm, "\"callback\" must be a function");
return NJS_ERROR;
}
if (njs_slow_path(!njs_value_is_undefined(type)
&& !njs_value_is_string(type)))
{
- njs_vm_error(vm, "\"type\" must be a string");
+ njs_vm_type_error(vm, "\"type\" must be a string");
return NJS_ERROR;
}
if (calltype == NJS_FS_CALLBACK) {
callback = njs_arg(args, nargs, 2);
if (!njs_value_is_function(callback)) {
- njs_vm_error(vm, "\"callback\" must be a function");
+ njs_vm_type_error(vm, "\"callback\" must be a function");
return NJS_ERROR;
}
}
}
if (njs_slow_path(offset < 0 || (size_t) offset > data.length)) {
- njs_vm_error(vm, "offset is out of range (must be <= %z)",
- data.length);
+ njs_vm_range_error(vm, "offset is out of range (must be <= %z)",
+ data.length);
return NJS_ERROR;
}
}
if (njs_slow_path(length < 0 || (size_t) length > data.length)) {
- njs_vm_error(vm, "length is out of range (must be <= %z)",
- data.length);
+ njs_vm_range_error(vm, "length is out of range (must be <= %z)",
+ data.length);
return NJS_ERROR;
}
if (calltype == NJS_FS_CALLBACK) {
callback = njs_arg(args, nargs, njs_min(nargs - 1, 4));
if (!njs_value_is_function(callback)) {
- njs_vm_error(vm, "\"callback\" must be a function");
+ njs_vm_type_error(vm, "\"callback\" must be a function");
return NJS_ERROR;
}
} else if (!njs_value_is_undefined(options)) {
if (!njs_value_is_object(options)) {
- njs_vm_error(vm, "Unknown options type "
- "(a string or object required)");
+ njs_vm_type_error(vm, "Unknown options type "
+ "(a string or object required)");
return NJS_ERROR;
}
}
if (njs_slow_path((p - path) > NJS_MAX_PATH)) {
- njs_vm_error(vm, "too large path");
+ njs_vm_internal_error(vm, "too large path");
return NJS_ERROR;
}
}
} else {
- njs_vm_error(vm, "\"%s\" must be a string or Buffer", prop_name);
+ njs_vm_type_error(vm, "\"%s\" must be a string or Buffer", prop_name);
return NULL;
}
if (njs_slow_path(str.length > NJS_MAX_PATH - 1)) {
- njs_vm_error(vm, "\"%s\" is too long >= %d", prop_name, NJS_MAX_PATH);
+ njs_vm_internal_error(vm, "\"%s\" is too long >= %d", prop_name,
+ NJS_MAX_PATH);
return NULL;
}
if (njs_slow_path(memchr(str.start, '\0', str.length) != 0)) {
- njs_vm_error(vm, "\"%s\" must be a Buffer without null bytes",
- prop_name);
+ njs_vm_type_error(vm, "\"%s\" must be a Buffer without null bytes",
+ prop_name);
return NULL;
}
}
}
- njs_vm_error(vm, "Unknown file open flags: \"%V\"", &flags);
+ njs_vm_type_error(vm, "Unknown file open flags: \"%V\"", &flags);
return -1;
}
return NJS_OK;
default:
- njs_vm_error(vm, "invalid calltype");
+ njs_vm_internal_error(vm, "invalid calltype");
return NJS_ERROR;
}
njs_uint_t nargs, njs_index_t unused, njs_value_t *retval)
{
if (njs_slow_path(!njs_vm_constructor(vm))) {
- njs_vm_error(vm, "the Dirent constructor must be called with new");
+ njs_vm_type_error(vm, "the Dirent constructor must be called with new");
return NJS_ERROR;
}
if (njs_slow_path(njs_value_is_number(type)
&& (njs_value_number(type) == NJS_DT_INVALID)))
{
- njs_vm_error(vm, "dentry type is not supported on this platform");
+ njs_vm_internal_error(vm, "dentry type is not supported on this "
+ "platform");
return NJS_ERROR;
}
fh = njs_vm_external(vm, njs_fs_filehandle_proto_id, njs_argument(args, 0));
if (njs_slow_path(fh == NULL)) {
- njs_vm_error(vm, "\"this\" is not a filehandle object");
+ njs_vm_type_error(vm, "\"this\" is not a filehandle object");
return NJS_ERROR;
}
fh = njs_vm_external(vm, njs_fs_filehandle_proto_id, njs_argument(args, 0));
if (njs_slow_path(fh == NULL)) {
- njs_vm_error(vm, "\"this\" is not a filehandle object");
+ njs_vm_type_error(vm, "\"this\" is not a filehandle object");
return NJS_ERROR;
}
{ njs_str("var fs = require('fs');"
"fs.readFile()"),
- njs_str("Error: \"path\" must be a string or Buffer") },
+ njs_str("TypeError: \"path\" must be a string or Buffer") },
{ njs_str("var fs = require('fs');"
"var path = Buffer.from('/broken'); path[3] = 0;"
"fs.readFile(path)"),
- njs_str("Error: \"path\" must be a Buffer without null bytes") },
+ njs_str("TypeError: \"path\" must be a Buffer without null bytes") },
{ njs_str("var fs = require('fs');"
"fs.readFile('/njs_unknown_path')"),
- njs_str("Error: \"callback\" must be a function") },
+ njs_str("TypeError: \"callback\" must be a function") },
{ njs_str("var fs = require('fs');"
"fs.readFile('/njs_unknown_path', 'utf8')"),
- njs_str("Error: \"callback\" must be a function") },
+ njs_str("TypeError: \"callback\" must be a function") },
{ njs_str("var fs = require('fs');"
"fs.readFile('/njs_unknown_path', {flag:'xx'})"),
- njs_str("Error: \"callback\" must be a function") },
+ njs_str("TypeError: \"callback\" must be a function") },
{ njs_str("var fs = require('fs');"
"fs.readFile('/njs_unknown_path', {flag:'xx'}, 1)"),
- njs_str("Error: \"callback\" must be a function") },
+ njs_str("TypeError: \"callback\" must be a function") },
{ njs_str("var fs = require('fs');"
"fs.readFile('/njs_unknown_path', {flag:'xx'}, function () {})"),
- njs_str("Error: Unknown file open flags: \"xx\"") },
+ njs_str("TypeError: Unknown file open flags: \"xx\"") },
{ njs_str("var fs = require('fs');"
"fs.readFile('/njs_unknown_path', {encoding:'ascii'}, function () {})"),
{ njs_str("var fs = require('fs');"
"fs.readFileSync()"),
- njs_str("Error: \"path\" must be a string or Buffer") },
+ njs_str("TypeError: \"path\" must be a string or Buffer") },
{ njs_str("var fs = require('fs');"
"fs.readFileSync({})"),
- njs_str("Error: \"path\" must be a string or Buffer") },
+ njs_str("TypeError: \"path\" must be a string or Buffer") },
{ njs_str("var fs = require('fs');"
"fs.readFileSync('/njs_unknown_path', {flag:'xx'})"),
- njs_str("Error: Unknown file open flags: \"xx\"") },
+ njs_str("TypeError: Unknown file open flags: \"xx\"") },
{ njs_str("var fs = require('fs');"
"fs.readFileSync(Buffer.from('/njs_unknown_path'), {encoding:'ascii'})"),
{ njs_str("var fs = require('fs');"
"fs.readFileSync('/njs_unknown_path', true)"),
- njs_str("Error: Unknown options type (a string or object required)") },
+ njs_str("TypeError: Unknown options type (a string or object required)") },
/* require('fs').writeFile() */
{ njs_str("var fs = require('fs');"
"fs.writeFile()"),
- njs_str("Error: \"path\" must be a string or Buffer") },
+ njs_str("TypeError: \"path\" must be a string or Buffer") },
{ njs_str("var fs = require('fs');"
"fs.writeFile({}, '', function () {})"),
- njs_str("Error: \"path\" must be a string or Buffer") },
+ njs_str("TypeError: \"path\" must be a string or Buffer") },
{ njs_str("var fs = require('fs');"
"fs.writeFile('/njs_unknown_path')"),
- njs_str("Error: \"callback\" must be a function") },
+ njs_str("TypeError: \"callback\" must be a function") },
{ njs_str("var fs = require('fs');"
"fs.writeFile('/njs_unknown_path', '')"),
- njs_str("Error: \"callback\" must be a function") },
+ njs_str("TypeError: \"callback\" must be a function") },
{ njs_str("var fs = require('fs');"
"fs.writeFile('/njs_unknown_path', '', undefined)"),
- njs_str("Error: \"callback\" must be a function") },
+ njs_str("TypeError: \"callback\" must be a function") },
{ njs_str("var fs = require('fs');"
"fs.writeFile('/njs_unknown_path', '', 'utf8')"),
- njs_str("Error: \"callback\" must be a function") },
+ njs_str("TypeError: \"callback\" must be a function") },
{ njs_str("var fs = require('fs');"
"fs.writeFile('/njs_unknown_path', '', {flag:'xx'}, function () {})"),
- njs_str("Error: Unknown file open flags: \"xx\"") },
+ njs_str("TypeError: Unknown file open flags: \"xx\"") },
{ njs_str("var fs = require('fs');"
"fs.writeFile('/njs_unknown_path', '', {encoding:'ascii'}, function () {})"),
{ njs_str("var fs = require('fs');"
"fs.writeFile('/njs_unknown_path', '', true, function () {})"),
- njs_str("Error: Unknown options type (a string or object required)") },
+ njs_str("TypeError: Unknown options type (a string or object required)") },
/* require('fs').writeFileSync() */
{ njs_str("var fs = require('fs');"
"fs.writeFileSync()"),
- njs_str("Error: \"path\" must be a string or Buffer") },
+ njs_str("TypeError: \"path\" must be a string or Buffer") },
{ njs_str("var fs = require('fs');"
"fs.writeFileSync({}, '')"),
- njs_str("Error: \"path\" must be a string or Buffer") },
+ njs_str("TypeError: \"path\" must be a string or Buffer") },
{ njs_str("var fs = require('fs');"
"fs.writeFileSync('/njs_unknown_path', '', {flag:'xx'})"),
- njs_str("Error: Unknown file open flags: \"xx\"") },
+ njs_str("TypeError: Unknown file open flags: \"xx\"") },
{ njs_str("var fs = require('fs');"
"fs.writeFileSync('/njs_unknown_path', '', {encoding:'ascii'})"),
{ njs_str("var fs = require('fs');"
"fs.writeFileSync('/njs_unknown_path', '', true)"),
- njs_str("Error: Unknown options type (a string or object required)") },
+ njs_str("TypeError: Unknown options type (a string or object required)") },
/* require('fs').renameSync() */
{ njs_str("var fs = require('fs');"
"fs.renameSync()"),
- njs_str("Error: \"oldPath\" must be a string or Buffer") },
+ njs_str("TypeError: \"oldPath\" must be a string or Buffer") },
{ njs_str("var fs = require('fs');"
"fs.renameSync('/njs_unknown_path')"),
- njs_str("Error: \"newPath\" must be a string or Buffer") },
+ njs_str("TypeError: \"newPath\" must be a string or Buffer") },
{ njs_str("var fs = require('fs');"
"[undefined, null, false, NaN, Symbol(), {}, Object('/njs_unknown_path')]"
{ njs_str("var fs = require('fs');"
"fs.access()"),
- njs_str("Error: \"path\" must be a string or Buffer") },
+ njs_str("TypeError: \"path\" must be a string or Buffer") },
{ njs_str("var fs = require('fs');"
"fs.access('/njs_unknown_path')"),
- njs_str("Error: \"callback\" must be a function") },
+ njs_str("TypeError: \"callback\" must be a function") },
{ njs_str("var fs = require('fs');"
"fs.access('/njs_unknown_path', fs.constants.F_OK)"),
- njs_str("Error: \"callback\" must be a function") },
+ njs_str("TypeError: \"callback\" must be a function") },
{ njs_str("var fs = require('fs');"
"fs.access('/njs_unknown_path', 'fail', function () {})"),
- njs_str("Error: \"mode\" must be a number") },
+ njs_str("TypeError: \"mode\" must be a number") },
/* require('fs').accessSync() */
{ njs_str("var fs = require('fs');"
"fs.accessSync()"),
- njs_str("Error: \"path\" must be a string or Buffer") },
+ njs_str("TypeError: \"path\" must be a string or Buffer") },
{ njs_str("var fs = require('fs');"
"fs.accessSync('/njs_unknown_path', 'fail')"),
- njs_str("Error: \"mode\" must be a number") },
+ njs_str("TypeError: \"mode\" must be a number") },
{ njs_str("var "
"fs = require('fs'),"
{ njs_str("var fs = require('fs');"
"fs.Dirent('file', 123)"),
- njs_str("Error: the Dirent constructor must be called with new") },
+ njs_str("TypeError: the Dirent constructor must be called with new") },
{ njs_str("var fs = require('fs');"
"var e = new fs.Dirent('file', 123); [e.name, e.type]"),
njs_str("37") },
{ njs_str("var fs = require('fs'); fs.readFileSync()"),
- njs_str("Error: \"path\" must be a string or Buffer\n"
+ njs_str("TypeError: \"path\" must be a string or Buffer\n"
" at fs.readFileSync (native)\n"
" at main (:1)\n") },
{ njs_str("import fs from 'fs'; fs.readFileSync()"),
- njs_str("Error: \"path\" must be a string or Buffer\n"
+ njs_str("TypeError: \"path\" must be a string or Buffer\n"
" at fs.readFileSync (native)\n"
" at main (:1)\n") },
content: "ABC",
read: [ [0, 5], ],
check: (err, params) => {
- if (err.message.indexOf('is out of range') == -1) {
+ if (!(err instanceof RangeError)) {
throw Error(`${err.message} unexpected exception`);
}
content: "ABC",
read: [ [2, 3], ],
check: (err, params) => {
- if (err.message.indexOf('is out of range') == -1) {
+ if (!(err instanceof RangeError)) {
throw Error(`${err.message} unexpected exception`);
}
args: ["@", 'w'],
write: [ [Buffer.from("__ABC__"), 8] ],
check: (err, params) => {
- if (err.message.indexOf('is out of range') == -1) {
+ if (!(err instanceof RangeError)) {
throw Error(`${err.message} unexpected exception`);
}
args: ["@", 'w'],
write: [ [Buffer.from("__ABC__"), 7, 1] ],
check: (err, params) => {
- if (err.message.indexOf('is out of range') == -1) {
+ if (!(err instanceof RangeError)) {
throw Error(`${err.message} unexpected exception`);
}
return false;
}
} catch (e) {
- if (e.message == 'dentry type is not supported on this platform') {
+ if (e instanceof InternalError) {
return true;
}