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

@ -25,7 +25,7 @@ typedef enum {
tBlackhole,
tPrimOp,
tPrimOpApp,
tExternal,
_reserved1, // formerly tExternal
tFloat
} ValueType;
@ -36,60 +36,10 @@ struct ExprLambda;
struct PrimOp;
struct PrimOp;
class Symbol;
struct Pos;
class EvalState;
class XMLWriter;
class JSONPlaceholder;
typedef int64_t NixInt;
typedef double NixFloat;
/* External values must descend from ExternalValueBase, so that
* type-agnostic nix functions (e.g. showType) can be implemented
*/
class ExternalValueBase {
friend std::ostream& operator<<(std::ostream& str,
const ExternalValueBase& v);
protected:
/* Print out the value */
virtual std::ostream& print(std::ostream& str) const = 0;
public:
/* Return a simple string describing the type */
virtual std::string showType() const = 0;
/* Return a string to be used in builtins.typeOf */
virtual std::string typeOf() const = 0;
/* How much space does this value take up */
virtual size_t valueSize(std::set<const void*>& seen) const = 0;
/* Coerce the value to a string. Defaults to uncoercable, i.e. throws an
* error
*/
virtual std::string coerceToString(const Pos& pos, PathSet& context,
bool copyMore, bool copyToStore) const;
/* Compare to another value of the same type. Defaults to uncomparable,
* i.e. always false.
*/
virtual bool operator==(const ExternalValueBase& b) const;
/* Print the value as JSON. Defaults to unconvertable, i.e. throws an error */
virtual void printValueAsJSON(EvalState& state, bool strict,
JSONPlaceholder& out, PathSet& context) const;
/* Print the value as XML. Defaults to unevaluated */
virtual void printValueAsXML(EvalState& state, bool strict, bool location,
XMLWriter& doc, PathSet& context,
PathSet& drvsSeen) const;
virtual ~ExternalValueBase(){};
};
std::ostream& operator<<(std::ostream& str, const ExternalValueBase& v);
// Forward declaration of Value is required because the following
// types are mutually recursive.
//
@ -155,7 +105,6 @@ struct Value : public gc {
NixLambda lambda;
PrimOp* primOp;
NixPrimOpApp primOpApp;
ExternalValueBase* external;
NixFloat fpoint;
};