Skip to content

Commit

Permalink
chore: upgrade dlint and run prefer-primordials rule (denoland#11777)
Browse files Browse the repository at this point in the history
  • Loading branch information
magurotuna committed Aug 19, 2021
1 parent 4f322da commit 4ae57d1
Show file tree
Hide file tree
Showing 5 changed files with 57 additions and 15 deletions.
4 changes: 3 additions & 1 deletion .dlint.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
"include": [
"ban-untagged-todo"
],
"exclude": []
"exclude": [
"no-invalid-triple-slash-reference"
]
}
}
1 change: 1 addition & 0 deletions ext/websocket/02_websocketstream.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
PromisePrototypeCatch,
Uint8Array,
TypeError,
Error,
} = window.__bootstrap.primordials;

webidl.converters.WebSocketStreamOptions = webidl.createDictionaryConverter(
Expand Down
2 changes: 2 additions & 0 deletions runtime/js/99_main.js
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -228,6 +229,7 @@ delete Object.prototype.__proto__;
} else {
prepareStackTrace = core.createPrepareStackTrace();
}
// deno-lint-ignore prefer-primordials
Error.prepareStackTrace = prepareStackTrace;
}

Expand Down
2 changes: 1 addition & 1 deletion third_party
63 changes: 50 additions & 13 deletions tools/lint.js
Original file line number Diff line number Diff line change
Expand Up @@ -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],
Expand All @@ -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");

Expand Down Expand Up @@ -90,6 +125,7 @@ async function main() {

if (Deno.args.includes("--js")) {
await dlint();
await dlintPreferPrimordials();
didLint = true;
}

Expand All @@ -100,6 +136,7 @@ async function main() {

if (!didLint) {
await dlint();
await dlintPreferPrimordials();
await clippy();
}
}
Expand Down

0 comments on commit 4ae57d1

Please sign in to comment.