don't boost::to_few_args when an eval cached string type errors

Change-Id: Id3cb762622e156ceaf9d5bb95c2c704ffe474d0e
This commit is contained in:
Qyriad 2024-04-10 18:30:12 -06:00
parent 99845e0e01
commit 70af056de8

View file

@ -576,8 +576,9 @@ std::string AttrCursor::getString()
auto & v = forceValue();
if (v.type() != nString && v.type() != nPath)
root->state.error<TypeError>("'%s' is not a string but %s", getAttrPathStr()).debugThrow();
if (v.type() != nString && v.type() != nPath) {
root->state.error<TypeError>("'%s' is not a string but %s", getAttrPathStr(), v.type()).debugThrow();
}
return v.type() == nString ? v.string.s : v.path().to_string();
}
@ -622,11 +623,11 @@ string_t AttrCursor::getStringWithContext()
NixStringContext context;
copyContext(v, context);
return {v.string.s, std::move(context)};
}
else if (v.type() == nPath)
} else if (v.type() == nPath) {
return {v.path().to_string(), {}};
else
root->state.error<TypeError>("'%s' is not a string but %s", getAttrPathStr()).debugThrow();
} else {
root->state.error<TypeError>("'%s' is not a string but %s", getAttrPathStr(), v.type()).debugThrow();
}
}
bool AttrCursor::getBool()