summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKenta Moriuchi <moriken@kimamass.com>2023-01-26 20:26:42 +0900
committerGitHub <noreply@github.com>2023-01-26 16:56:42 +0530
commit7b6339da6a22c361747d68945fe8aca3f78f013b (patch)
treea2472b6e036f1dd711fe9a8eb44e439c015f344e
parent87c2493855e73fb433b965040bb64cc51632c454 (diff)
fix(core): Add lint check for core (#17223)
The prefer-primordials lint was skipped for `core/*.js`.
-rw-r--r--core/00_primordials.js2
-rw-r--r--core/01_core.js31
-rw-r--r--core/02_error.js3
-rwxr-xr-xtools/lint.js3
4 files changed, 27 insertions, 12 deletions
diff --git a/core/00_primordials.js b/core/00_primordials.js
index dbbba78b7..6495a5268 100644
--- a/core/00_primordials.js
+++ b/core/00_primordials.js
@@ -29,6 +29,8 @@
// benchmark all changes made in performance-sensitive areas of the codebase.
// See: https://github.com/nodejs/node/pull/38248
+// deno-lint-ignore-file prefer-primordials
+
"use strict";
(() => {
diff --git a/core/01_core.js b/core/01_core.js
index 0b0804662..d3cd1d7be 100644
--- a/core/01_core.js
+++ b/core/01_core.js
@@ -9,22 +9,27 @@
SyntaxError,
TypeError,
URIError,
- Map,
Array,
+ ArrayFrom,
ArrayPrototypeFill,
+ ArrayPrototypeJoin,
ArrayPrototypePush,
ArrayPrototypeMap,
ErrorCaptureStackTrace,
+ Function,
Promise,
+ ObjectAssign,
ObjectFromEntries,
+ ObjectPrototypeHasOwnProperty,
+ Map,
MapPrototypeGet,
MapPrototypeHas,
MapPrototypeDelete,
MapPrototypeSet,
PromisePrototypeThen,
- PromisePrototypeFinally,
+ ReflectApply,
+ SafePromisePrototypeFinally,
StringPrototypeSlice,
- ObjectAssign,
SymbolFor,
setQueueMicrotask,
} = window.__bootstrap.primordials;
@@ -212,11 +217,17 @@
}
// { <name>: <argc>, ... }
- for (const ele of Object.entries(ops.asyncOpsInfo())) {
- if (!ele) continue;
- const [name, argc] = ele;
+ const info = ops.asyncOpsInfo();
+ for (const name in info) {
+ if (!ObjectPrototypeHasOwnProperty(info, name)) {
+ continue;
+ }
+ const argc = info[name];
const op = ops[name];
- const args = Array.from({ length: argc }, (_, i) => `arg${i}`).join(", ");
+ const args = ArrayPrototypeJoin(
+ ArrayFrom({ length: argc }, (_, i) => `arg${i}`),
+ ", ",
+ );
ops[name] = genAsyncOp(op, name, args);
}
}
@@ -225,7 +236,7 @@
if (opCallTracingEnabled) {
const stack = StringPrototypeSlice(new Error().stack, 6);
MapPrototypeSet(opCallTraces, promiseId, { opName, stack });
- return PromisePrototypeFinally(
+ return SafePromisePrototypeFinally(
p,
() => MapPrototypeDelete(opCallTraces, promiseId),
);
@@ -235,7 +246,7 @@
}
function opAsync(opName, ...args) {
- return ops[opName](...args);
+ return ReflectApply(ops[opName], ops, args);
}
function refOp(promiseId) {
@@ -257,7 +268,7 @@
}
function metrics() {
- const [aggregate, perOps] = ops.op_metrics();
+ const { 0: aggregate, 1: perOps } = ops.op_metrics();
aggregate.ops = ObjectFromEntries(ArrayPrototypeMap(
ops.op_op_names(),
(opName, opId) => [opName, perOps[opId]],
diff --git a/core/02_error.js b/core/02_error.js
index 2798b1aa7..b29dc9b4e 100644
--- a/core/02_error.js
+++ b/core/02_error.js
@@ -130,7 +130,8 @@
__callSiteEvals: { __proto__: null, value: [], configurable: true },
});
const formattedCallSites = [];
- for (const cse of callSiteEvals) {
+ for (let i = 0; i < callSiteEvals.length; ++i) {
+ const cse = callSiteEvals[i];
ArrayPrototypePush(error.__callSiteEvals, cse);
ArrayPrototypePush(formattedCallSites, formatCallSiteEval(cse));
}
diff --git a/tools/lint.js b/tools/lint.js
index caa761896..97c2447df 100755
--- a/tools/lint.js
+++ b/tools/lint.js
@@ -89,7 +89,8 @@ async function dlintPreferPrimordials() {
const sourceFiles = await getSources(ROOT_PATH, [
"runtime/**/*.js",
"ext/**/*.js",
- "core/**/*.js",
+ "core/*.js",
+ ":!:core/*_test.js",
":!:core/examples/**",
]);