1
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2024-11-21 15:04:11 -05:00

chore: upgrade dlint and run prefer-primordials rule (#11777)

This commit is contained in:
Yusuke Tanaka 2021-08-20 08:14:20 +09:00 committed by GitHub
parent 4f322da07c
commit 4ae57d185e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 57 additions and 15 deletions

View file

@ -4,6 +4,8 @@
"include": [
"ban-untagged-todo"
],
"exclude": []
"exclude": [
"no-invalid-triple-slash-reference"
]
}
}

View file

@ -22,6 +22,7 @@
PromisePrototypeCatch,
Uint8Array,
TypeError,
Error,
} = window.__bootstrap.primordials;
webidl.converters.WebSocketStreamOptions = webidl.createDictionaryConverter(

View file

@ -22,6 +22,7 @@ delete Object.prototype.__proto__;
SymbolFor,
SymbolIterator,
PromisePrototypeThen,
TypeError,
} = window.__bootstrap.primordials;
const util = window.__bootstrap.util;
const eventTarget = window.__bootstrap.eventTarget;
@ -228,6 +229,7 @@ delete Object.prototype.__proto__;
} else {
prepareStackTrace = core.createPrepareStackTrace();
}
// deno-lint-ignore prefer-primordials
Error.prepareStackTrace = prepareStackTrace;
}

@ -1 +1 @@
Subproject commit 6c449eaecb0783b06003b5eecd2893bd2617d66e
Subproject commit 084660078bfd4b16993e5ef6ea7d099ad6d0cf55

View file

@ -38,19 +38,7 @@ async function dlint() {
return;
}
const MAX_COMMAND_LEN = 30000;
const preCommand = [execPath, "run"];
const chunks = [[]];
let cmdLen = preCommand.join(" ").length;
for (const f of sourceFiles) {
if (cmdLen + f.length > MAX_COMMAND_LEN) {
chunks.push([f]);
cmdLen = preCommand.join(" ").length;
} else {
chunks[chunks.length - 1].push(f);
cmdLen = preCommand.join(" ").length;
}
}
const chunks = splitToChunks(sourceFiles, `${execPath} run`.length);
for (const chunk of chunks) {
const p = Deno.run({
cmd: [execPath, "run", "--config=" + configFile, ...chunk],
@ -63,6 +51,53 @@ async function dlint() {
}
}
// `prefer-primordials` has to apply only to files related to bootstrapping,
// which is different from other lint rules. This is why this dedicated function
// is needed.
async function dlintPreferPrimordials() {
const execPath = getPrebuiltToolPath("dlint");
console.log("prefer-primordials");
const sourceFiles = await getSources(ROOT_PATH, [
"runtime/**/*.js",
"ext/**/*.js",
"core/**/*.js",
":!:core/examples/**",
]);
if (!sourceFiles.length) {
return;
}
const chunks = splitToChunks(sourceFiles, `${execPath} run`.length);
for (const chunk of chunks) {
const p = Deno.run({
cmd: [execPath, "run", "--rule", "prefer-primordials", ...chunk],
});
const { success } = await p.status();
if (!success) {
throw new Error("prefer-primordials failed");
}
p.close();
}
}
function splitToChunks(paths, initCmdLen) {
let cmdLen = initCmdLen;
const MAX_COMMAND_LEN = 30000;
const chunks = [[]];
for (const p of paths) {
if (cmdLen + p.length > MAX_COMMAND_LEN) {
chunks.push([p]);
cmdLen = initCmdLen;
} else {
chunks[chunks.length - 1].push(p);
cmdLen += p.length;
}
}
return chunks;
}
async function clippy() {
console.log("clippy");
@ -90,6 +125,7 @@ async function main() {
if (Deno.args.includes("--js")) {
await dlint();
await dlintPreferPrimordials();
didLint = true;
}
@ -100,6 +136,7 @@ async function main() {
if (!didLint) {
await dlint();
await dlintPreferPrimordials();
await clippy();
}
}