aboutsummaryrefslogtreecommitdiff
path: root/src/nix
diff options
context:
space:
mode:
authorSilvan Mosberger <contact@infinisil.com>2020-12-12 02:15:11 +0100
committerSilvan Mosberger <contact@infinisil.com>2020-12-12 03:31:50 +0100
commitbf9890396731a2bbe4f04a49684dee463d818906 (patch)
tree171d646c0540828a294346e887c214ba44b5472c /src/nix
parent22ead43a0b8f94f5a4fb64cff14bf6a2a35d671c (diff)
Add ValueType checking functions for types that have the same NormalType
Diffstat (limited to 'src/nix')
-rw-r--r--src/nix/flake.cc6
-rw-r--r--src/nix/main.cc2
-rw-r--r--src/nix/repl.cc8
3 files changed, 8 insertions, 8 deletions
diff --git a/src/nix/flake.cc b/src/nix/flake.cc
index 80b050091..e4da0348c 100644
--- a/src/nix/flake.cc
+++ b/src/nix/flake.cc
@@ -260,7 +260,7 @@ struct CmdFlakeCheck : FlakeCommand
auto checkOverlay = [&](const std::string & attrPath, Value & v, const Pos & pos) {
try {
state->forceValue(v, pos);
- if (v.type != tLambda || v.lambda.fun->matchAttrs || std::string(v.lambda.fun->arg) != "final")
+ if (!v.isLambda() || v.lambda.fun->matchAttrs || std::string(v.lambda.fun->arg) != "final")
throw Error("overlay does not take an argument named 'final'");
auto body = dynamic_cast<ExprLambda *>(v.lambda.fun->body);
if (!body || body->matchAttrs || std::string(body->arg) != "prev")
@@ -276,7 +276,7 @@ struct CmdFlakeCheck : FlakeCommand
auto checkModule = [&](const std::string & attrPath, Value & v, const Pos & pos) {
try {
state->forceValue(v, pos);
- if (v.type == tLambda) {
+ if (v.isLambda()) {
if (!v.lambda.fun->matchAttrs || !v.lambda.fun->formals->ellipsis)
throw Error("module must match an open attribute set ('{ config, ... }')");
} else if (v.normalType() == nAttrs) {
@@ -371,7 +371,7 @@ struct CmdFlakeCheck : FlakeCommand
auto checkBundler = [&](const std::string & attrPath, Value & v, const Pos & pos) {
try {
state->forceValue(v, pos);
- if (v.type != tLambda)
+ if (!v.isLambda())
throw Error("bundler must be a function");
if (!v.lambda.fun->formals ||
v.lambda.fun->formals->argNames.find(state->symbols.create("program")) == v.lambda.fun->formals->argNames.end() ||
diff --git a/src/nix/main.cc b/src/nix/main.cc
index 27b1d7257..e7a15dec9 100644
--- a/src/nix/main.cc
+++ b/src/nix/main.cc
@@ -272,7 +272,7 @@ void mainWrapped(int argc, char * * argv)
auto builtins = state.baseEnv.values[0]->attrs;
for (auto & builtin : *builtins) {
auto b = nlohmann::json::object();
- if (builtin.value->type != tPrimOp) continue;
+ if (!builtin.value->isPrimOp()) continue;
auto primOp = builtin.value->primOp;
if (!primOp->doc) continue;
b["arity"] = primOp->arity;
diff --git a/src/nix/repl.cc b/src/nix/repl.cc
index 56184efb9..047e2dc59 100644
--- a/src/nix/repl.cc
+++ b/src/nix/repl.cc
@@ -450,7 +450,7 @@ bool NixRepl::processLine(string line)
PathSet context;
auto filename = state->coerceToString(noPos, v, context);
pos.file = state->symbols.create(filename);
- } else if (v.type == tLambda) {
+ } else if (v.isLambda()) {
pos = v.lambda.fun->pos;
} else {
// assume it's a derivation
@@ -760,13 +760,13 @@ std::ostream & NixRepl::printValue(std::ostream & str, Value & v, unsigned int m
break;
case nFunction:
- if (v.type == tLambda) {
+ if (v.isLambda()) {
std::ostringstream s;
s << v.lambda.fun->pos;
str << ANSI_BLUE "«lambda @ " << filterANSIEscapes(s.str()) << "»" ANSI_NORMAL;
- } else if (v.type == tPrimOp) {
+ } else if (v.isPrimOp()) {
str << ANSI_MAGENTA "«primop»" ANSI_NORMAL;
- } else if (v.type == tPrimOpApp) {
+ } else if (v.isPrimOpApp()) {
str << ANSI_BLUE "«primop-app»" ANSI_NORMAL;
} else {
abort();