feat(3p/nix): remove External values feature

External values are only useful when using the plugin framework, which we are not interested in carrying forward.

Reverts commit 320659b0cd

Change-Id: Ib4929c349bbb33f16224fc674e94c7b7d5953c6a
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1505
Tested-by: BuildkiteCI
Reviewed-by: glittershark <grfn@gws.fyi>
Reviewed-by: tazjin <mail@tazj.in>
This commit is contained in:
Kane York 2020-07-31 15:27:39 -07:00 committed by kanepyork
parent 770034042a
commit 64f6bb6951
5 changed files with 10 additions and 113 deletions

View file

@ -119,14 +119,12 @@ static void printValue(std::ostream& str, std::set<const Value*>& active,
case tPrimOpApp:
str << "<PRIMOP-APP>";
break;
case tExternal:
str << *v.external;
break;
case tFloat:
str << v.fpoint;
break;
default:
throw Error("invalid value");
throw Error(
absl::StrCat("invalid value of type ", static_cast<int>(v.type)));
}
active.erase(&v);
@ -176,11 +174,16 @@ std::string showType(const Value& v) {
case tPrimOpApp:
return fmt("the partially applied built-in function '%s'",
std::string(getPrimOp(v)->primOp->name));
case tExternal:
return v.external->showType();
case _reserved1:
LOG(FATAL) << "attempted to show the type string of the deprecated "
"tExternal value";
break;
case tFloat:
return "a float";
}
LOG(FATAL)
<< "attempted to determine the type string of an unknown type number ("
<< static_cast<int>(v.type) << ")";
abort();
}
@ -1524,10 +1527,6 @@ std::string EvalState::coerceToString(const Pos& pos, Value& v,
copyToStore);
}
if (v.type == tExternal) {
return v.external->coerceToString(pos, context, coerceMore, copyToStore);
}
if (coerceMore) {
/* Note that `false' is represented as an empty string for
shell scripting convenience, just like `null'. */
@ -1691,9 +1690,6 @@ bool EvalState::eqValues(Value& v1, Value& v2) {
case tPrimOpApp:
return false;
case tExternal:
return *v1.external == *v2.external;
case tFloat:
return v1.fpoint == v2.fpoint;
@ -1894,14 +1890,6 @@ size_t valueSize(Value& v) {
sz += doValue(*v.primOpApp.left);
sz += doValue(*v.primOpApp.right);
break;
case tExternal:
if (seen.find(v.external) != seen.end()) {
break;
}
seen.insert(v.external);
// note: this is a plugin call
sz += v.external->valueSize(seen);
break;
default:;
}
@ -1934,21 +1922,6 @@ size_t valueSize(Value& v) {
return doValue(v);
}
std::string ExternalValueBase::coerceToString(const Pos& pos, PathSet& context,
bool copyMore,
bool copyToStore) const {
throw TypeError(format("cannot coerce %1% to a string, at %2%") % showType() %
pos);
}
bool ExternalValueBase::operator==(const ExternalValueBase& b) const {
return false;
}
std::ostream& operator<<(std::ostream& str, const ExternalValueBase& v) {
return v.print(str);
}
EvalSettings evalSettings;
static GlobalConfig::Register r1(&evalSettings);