mirror of
https://github.com/zebrajr/node.git
synced 2025-12-06 12:20:27 +01:00
* Remove needless RegExp flag In fixed case, `/g` flag is needless in the boolean context. * Remove needless RegExp capturing Use non-capturing grouping or remove capturing completely when: * capturing is useless per se, e.g. in test() check; * captured groups are not used afterward at all; * some of the later captured groups are not used afterward. * Use test, not match/exec in boolean context match() and exec() return a complicated object, unneeded in a boolean context. * Do not needlessly repeat RegExp creation This commit takes RegExp creation out of cycles and other repetitions. As long as the RegExp does not use /g flag and match indices, we are safe here. In tests, this fix hardly gives a significant performance gain, but it increases clarity and maintainability, reassuring some RegExps to be identical. RegExp in functions are not taken out of their functions: while these functions are called many times and their RegExps are recreated with each call, the performance gain in test cases does not seem to be worth decreasing function self-dependency. PR-URL: https://github.com/nodejs/node/pull/13770 Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
25 lines
547 B
JavaScript
25 lines
547 B
JavaScript
'use strict';
|
|
require('../common');
|
|
const assert = require('assert');
|
|
const url = require('url');
|
|
|
|
// https://github.com/joyent/node/issues/568
|
|
const errMessage = /^TypeError: Parameter "url" must be a string, not (?:undefined|boolean|number|object|function|symbol)$/;
|
|
[
|
|
undefined,
|
|
null,
|
|
true,
|
|
false,
|
|
0.0,
|
|
0,
|
|
[],
|
|
{},
|
|
() => {},
|
|
Symbol('foo')
|
|
].forEach((val) => {
|
|
assert.throws(() => { url.parse(val); }, errMessage);
|
|
});
|
|
|
|
assert.throws(() => { url.parse('http://%E0%A4%A@fail'); },
|
|
/^URIError: URI malformed$/);
|