chore(ci): route heap dump dialogs through the platform wrapper; clippy 1.99 and Windows test fixes (#2711)

Heap dump open/save use the platform dialog wrapper (GTK fallback on Linux). ide-heap allows clippy 1.99's large_enum_variant on the hot bit table. dialog.test compares paths with forward slashes on Windows.
This commit is contained in:
arookieofc
2026-11-11 19:30:15 +08:00
committed by GitHub
parent 02ee2880fe
commit 91023de207
3 changed files with 7 additions and 5 deletions
+3
View File
@@ -19,6 +19,9 @@ const CHUNK_SLOT_BITS: u32 = 17;
const WORD_BITS: u64 = 64;
const WORDS_PER_CHUNK: usize = (1 << CHUNK_SLOT_BITS) / WORD_BITS as usize;
// The bit table is matched in hot paths; boxing the big variant would only add
// an indirection to save stack space `IdMap` never holds by value in bulk.
#[allow(clippy::large_enum_variant)]
enum Repr {
Bits {
/// Chunk number of the first table entry.
+3 -4
View File
@@ -3,6 +3,7 @@ import { ProgressBar } from "@/ui";
import { setContext } from "@/platform/context";
import { tx, useTx } from "@/platform/i18n";
import { call, commands, IpcError } from "@/platform/ipc";
import { open as openDialog, save as saveDialog } from "@/platform/dialog";
import { ipcPath } from "@/platform/paths";
import { basename } from "@/platform/project";
import { isRemoteWindow, useRemote } from "@/platform/remote";
@@ -43,8 +44,7 @@ export async function openHeapDump(): Promise<void> {
}
// One file at a time; the running open keeps its progress notification.
if (useHeap.getState().opening) return;
const { open } = await import("@tauri-apps/plugin-dialog");
const picked = await open({ multiple: false, directory: false, filters: FILTERS() });
const picked = await openDialog({ multiple: false, directory: false, filters: FILTERS() });
if (typeof picked !== "string" || useHeap.getState().opening) return;
const path = ipcPath(picked);
const name = basename(path);
@@ -85,8 +85,7 @@ export async function openHeapDump(): Promise<void> {
export async function saveHeapDump(id: number): Promise<void> {
const entry = useHeap.getState().snapshots[id];
if (!entry || entry.info.origin.kind !== "captured" || isRemoteWindow()) return;
const { save } = await import("@tauri-apps/plugin-dialog");
const picked = await save({
const picked = await saveDialog({
defaultPath: `${entry.info.label.replace(/[/\\:*?"<>|]/g, "-")}.hprof`,
filters: FILTERS(),
});
+1 -1
View File
@@ -9,7 +9,7 @@ it("opens every file picker through the platform wrapper", () => {
(file) =>
/\.[jt]sx?$/.test(file) &&
!/\.test\.[jt]sx?$/.test(file) &&
file !== "platform/dialog.ts" &&
file.replace(/\\/g, "/") !== "platform/dialog.ts" &&
readFileSync(resolve(src, file), "utf8").includes("@tauri-apps/plugin-" + "dialog"),
);
expect(offenders).toEqual([]);