-
Notifications
You must be signed in to change notification settings - Fork 5.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
chore: upgrade dlint and run prefer-primordials
#11777
Changes from all commits
01d06e3
5aa302b
46fe094
32a6396
0cf3bfb
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -4,6 +4,8 @@ | |
"include": [ | ||
"ban-untagged-todo" | ||
], | ||
"exclude": [] | ||
"exclude": [ | ||
"no-invalid-triple-slash-reference" | ||
] | ||
} | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -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; | ||
Comment on lines
+232
to
233
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. In Node.js, |
||
} | ||
|
||
|
+ − | prebuilt/linux64/dlint | |
+ − | prebuilt/mac/dlint | |
+ − | prebuilt/win/dlint.exe |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -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], | ||
}); | ||
bartlomieju marked this conversation as resolved.
Show resolved
Hide resolved
|
||
const { success } = await p.status(); | ||
if (!success) { | ||
throw new Error("prefer-primordials failed"); | ||
} | ||
p.close(); | ||
} | ||
} | ||
Comment on lines
+57
to
+83
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I think There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Makes sense, please add a comment explaining that There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Done 👍 0cf3bfb |
||
|
||
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(); | ||
} | ||
} | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If I understand correctly,
no-invalid-triple-slash-reference
rule is for Deno users, not for the internal code of Deno, so I added it here. Please correct me if I'm wrong.https://lint.deno.land/#no-invalid-triple-slash-reference
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That's correct