-
Notifications
You must be signed in to change notification settings - Fork 2.9k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
refactor: ban
std.debug.assert
(#10168)
* Ban `std.debug.assert` * Create .clangd * Update lint.yml * Update linter.ts * update * lint * Update linter.ts * Update linter.ts * update * Update linter.ts * update * Update linter.ts * more * Update install.zig * words * Remove UB
- Loading branch information
1 parent
0f10d4f
commit 688844b
Showing
149 changed files
with
1,314 additions
and
1,105 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
Index: | ||
Background: Skip # Disable slow background indexing of these files. | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,86 @@ | ||
name: lint | ||
|
||
permissions: | ||
contents: read | ||
|
||
on: | ||
workflow_dispatch: | ||
pull_request: | ||
push: | ||
branches: | ||
- main | ||
- jarred/assert | ||
paths: | ||
- ".github/workflows/lint.yml" | ||
- "src/**/*.zig" | ||
- "src/*.zig" | ||
|
||
jobs: | ||
format: | ||
name: lint | ||
runs-on: ${{ vars.RUNNER_LINUX_X64 || 'ubuntu-latest' }} | ||
if: github.repository_owner == 'oven-sh' | ||
permissions: write-all | ||
outputs: | ||
text_output: ${{ steps.lint.outputs.text_output }} | ||
json_output: ${{ steps.lint.outputs.json_output }} | ||
count: ${{ steps.lint.outputs.count }} | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
- name: Setup Bun | ||
uses: ./.github/actions/setup-bun | ||
with: | ||
bun-version: "1.1.3" | ||
- name: Install Dependencies | ||
run: | | ||
bun --cwd=./packages/bun-internal-test install | ||
- name: Lint | ||
id: lint | ||
run: | | ||
bun ./packages/bun-internal-test/src/linter.ts || true | ||
- uses: sarisia/actions-status-discord@v1 | ||
if: always() && steps.lint.outputs.text_output != '' && github.event_name == 'pull_request' | ||
with: | ||
title: "" | ||
webhook: ${{ secrets.DISCORD_WEBHOOK }} | ||
status: "failure" | ||
noprefix: true | ||
nocontext: true | ||
description: | | ||
Pull Request | ||
### ❌ [${{github.event.pull_request.title}}](https://github.com/oven-sh/bun/pull/${{github.event.number}}) | ||
@${{ github.actor }}, there are ${{ steps.lint.outputs.count }} lint errors on ${{ github.ref_name }} | ||
${{ steps.lint.outputs.text_output }} | ||
**[View linter output](https://github.com/oven-sh/bun/actions/runs/${{github.run_id}})** | ||
- name: Comment on PR | ||
if: steps.lint.outputs.text_output != '' && github.event_name == 'pull_request' | ||
uses: thollander/actions-comment-pull-request@v2 | ||
with: | ||
comment_tag: lint-failures | ||
message: | | ||
❌ @${{ github.actor }} ${{ steps.lint.outputs.count }} lint errors | ||
${{ steps.lint.outputs.text_output }} | ||
**[View linter output](https://github.com/oven-sh/bun/actions/runs/${{github.run_id}})** | ||
<sup>[#${{github.sha}}](https://github.com/oven-sh/bun/commits/${{github.sha}})</sup> | ||
- name: Uncomment on PR | ||
if: steps.lint.outputs.text_output == '' && github.event_name == 'pull_request' | ||
uses: thollander/actions-comment-pull-request@v2 | ||
with: | ||
comment_tag: lint-failures | ||
mode: upsert | ||
create_if_not_exists: false | ||
message: | | ||
✅ lint failures have been resolved. Thank you. | ||
<sup>[#${{github.sha}}](https://github.com/oven-sh/bun/commits/${{github.sha}})</sup> | ||
- id: fail | ||
name: Fail the build | ||
if: steps.lint.outputs.text_output != '' | ||
run: exit 1 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
{ | ||
"std.debug.assert": "Use bun.assert instead" | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,68 @@ | ||
import { $ } from "bun"; | ||
import BANNED from "./banned.json"; | ||
import * as action from "@actions/core"; | ||
|
||
const IGNORED_FOLDERS = [ | ||
// list of folders to ignore | ||
"windows-shim", | ||
]; | ||
|
||
const ci = !!process.env["GITHUB_ACTIONS"]; | ||
process.chdir(require("path").join(import.meta.dir, "../../../")); | ||
let bad = []; | ||
let report = ""; | ||
const write = (text: string) => { | ||
process.stdout.write(text); | ||
report += text; | ||
}; | ||
for (const [banned, suggestion] of Object.entries(BANNED)) { | ||
// Run git grep to find occurrences of std.debug.assert in .zig files | ||
let stdout = await $`git grep -n "${banned}" "src/**/**.zig"`.text(); | ||
|
||
stdout = stdout.trim(); | ||
if (stdout.length === 0) continue; | ||
|
||
let lines = stdout.split("\n"); | ||
// Parse each line to extract filename and line number | ||
const matches = lines | ||
.filter(line => !IGNORED_FOLDERS.some(folder => line.includes(folder))) | ||
.map(line => { | ||
const [path, lineNumber, ...text] = line.split(":"); | ||
return { path, lineNumber, banned, suggestion, text: text.join(":") }; | ||
}); | ||
// Check if we got any output | ||
// Split the output into lines | ||
if (matches.length === 0) continue; | ||
|
||
write(`Banned **'${banned}'** found in the following locations:` + "\n"); | ||
matches.forEach(match => { | ||
write(`${match.path}:${match.lineNumber}: ${match.text.trim()}` + "\n"); | ||
}); | ||
bad = bad.concat(matches); | ||
} | ||
|
||
if (report.length === 0) { | ||
process.exit(0); | ||
} | ||
|
||
function link({ path, lineNumber, suggestion, banned }) { | ||
action.error(`Lint failure: ${banned} is banned, ${suggestion}`, { | ||
file: path, | ||
startLine: Number(lineNumber), | ||
endLine: Number(lineNumber), | ||
}); | ||
return `[\`${path}:${lineNumber}\`](https://github.com/oven-sh/bun/blob/${process.env.GITHUB_SHA}/${path}#L${lineNumber})`; | ||
} | ||
|
||
if (ci) { | ||
if (report.length > 0) { | ||
action.setFailed(`${bad.length} lint failures`); | ||
} | ||
action.setOutput("count", bad.length); | ||
action.setOutput("text_output", bad.map(m => `- ${link(m)}: ${m.banned} is banned, ${m.suggestion}`).join("\n")); | ||
action.setOutput("json_output", JSON.stringify(bad)); | ||
action.summary.addRaw(report); | ||
await action.summary.write(); | ||
} | ||
|
||
process.exit(1); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.