From 3bada1d41eed3bd8c72d6811147cd100fcb585ca Mon Sep 17 00:00:00 2001 From: Griffin Smith Date: Thu, 27 Aug 2020 11:28:43 -0400 Subject: refactor(tvix): Clean up MixEvalArgs internals Previously, MixEvalArgs (a generic data type used to handle --arg, --argstr, and -I arguments to `nix-build`, `nix eval`, etc.) was storing the difference between --arg and --argstr by prepending a single character (either 'E' or 'S') to the value of the arg. This is messy and un-type-safe, so this commit refactors that to use a proper enum and a std::pair, which allows us to add a switch and get totality checking. yay, types! Change-Id: I883f8db3136d05dda190fac0a1b494386c2ff87b Reviewed-on: https://cl.tvl.fyi/c/depot/+/1862 Tested-by: BuildkiteCI Reviewed-by: tazjin --- third_party/nix/src/libexpr/common-eval-args.hh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'third_party/nix/src/libexpr/common-eval-args.hh') diff --git a/third_party/nix/src/libexpr/common-eval-args.hh b/third_party/nix/src/libexpr/common-eval-args.hh index 9b0a77c6f7..5e0e8af79c 100644 --- a/third_party/nix/src/libexpr/common-eval-args.hh +++ b/third_party/nix/src/libexpr/common-eval-args.hh @@ -8,6 +8,8 @@ class Store; class EvalState; class Bindings; +enum ArgType { kArgTypeString, kArgTypeExpr }; + struct MixEvalArgs : virtual Args { MixEvalArgs(); @@ -16,7 +18,7 @@ struct MixEvalArgs : virtual Args { Strings searchPath; private: - std::map autoArgs; + std::map> auto_args_; }; Path lookupFileArg(EvalState& state, std::string s); -- cgit 1.4.1