fix: return defaultVal when lhs is not attrset in selectWithDefault
This commit is contained in:
@@ -242,17 +242,20 @@ export const selectWithDefault = (
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
function selectWithDefault_impl(obj: NixValue, attrpath: NixValue[], default_val: NixValue): NixValue {
|
function selectWithDefault_impl(obj: NixValue, attrpath: NixValue[], defaultVal: NixValue): NixValue {
|
||||||
let attrs = forceAttrs(obj);
|
let attrs = force(obj);
|
||||||
|
if (!isAttrs(attrs)) {
|
||||||
|
return defaultVal;
|
||||||
|
}
|
||||||
|
|
||||||
for (const attr of attrpath.slice(0, -1)) {
|
for (const attr of attrpath.slice(0, -1)) {
|
||||||
const key = forceStringValue(attr);
|
const key = forceStringValue(attr);
|
||||||
if (!(key in attrs)) {
|
if (!(key in attrs)) {
|
||||||
return default_val;
|
return defaultVal;
|
||||||
}
|
}
|
||||||
const cur = force(attrs[key]);
|
const cur = force(attrs[key]);
|
||||||
if (!isAttrs(cur)) {
|
if (!isAttrs(cur)) {
|
||||||
return default_val;
|
return defaultVal;
|
||||||
}
|
}
|
||||||
attrs = cur;
|
attrs = cur;
|
||||||
}
|
}
|
||||||
@@ -261,7 +264,7 @@ function selectWithDefault_impl(obj: NixValue, attrpath: NixValue[], default_val
|
|||||||
if (last in attrs) {
|
if (last in attrs) {
|
||||||
return attrs[last];
|
return attrs[last];
|
||||||
}
|
}
|
||||||
return default_val;
|
return defaultVal;
|
||||||
}
|
}
|
||||||
|
|
||||||
export const hasAttr = (obj: NixValue, attrpath: NixValue[]): NixBool => {
|
export const hasAttr = (obj: NixValue, attrpath: NixValue[]): NixBool => {
|
||||||
|
|||||||
Reference in New Issue
Block a user