optimize: builtins.intersectAttrs

This commit is contained in:
2026-02-16 22:31:31 +08:00
parent 16a8480d29
commit 37e395c0e3

View File

@@ -72,11 +72,23 @@ export const intersectAttrs =
const f1 = forceAttrs(e1); const f1 = forceAttrs(e1);
const f2 = forceAttrs(e2); const f2 = forceAttrs(e2);
const attrs: NixAttrs = {}; const attrs: NixAttrs = {};
for (const key of Object.keys(f2)) { const k1 = Object.keys(f1);
if (Object.hasOwn(f1, key)) { const k2 = Object.keys(f2);
if (k1.length < k2.length) {
for (let i = 0; i < k1.length; i++) {
const key = k1[i];
if (key in f2) {
attrs[key] = f2[key]; attrs[key] = f2[key];
} }
} }
} else {
for (let i = 0; i < k2.length; i++) {
const key = k2[i];
if (key in f1) {
attrs[key] = f2[key];
}
}
}
return attrs; return attrs;
}; };