diff options
author | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2014-06-10T12·02+0200 |
---|---|---|
committer | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2014-06-10T12·02+0200 |
commit | ee7fe64c0ac00f2be11604a2a6509eb86dc19f0a (patch) | |
tree | 2e27bc6d75ca28f3a8f598373b6fa716314b8aae | |
parent | b1beed97a0670befbfd5e105a81132e87e58ac37 (diff) |
== operator: Ignore string context
There really is no case I can think of where taking the context into account is useful. Mostly it's just very inconvenient.
-rw-r--r-- | src/libexpr/eval.cc | 13 | ||||
-rw-r--r-- | src/libexpr/primops.cc | 2 | ||||
-rw-r--r-- | tests/lang/eval-okay-context.nix | 2 |
3 files changed, 4 insertions, 13 deletions
diff --git a/src/libexpr/eval.cc b/src/libexpr/eval.cc index 81ce7d9a3020..87b6bc991574 100644 --- a/src/libexpr/eval.cc +++ b/src/libexpr/eval.cc @@ -1355,17 +1355,8 @@ bool EvalState::eqValues(Value & v1, Value & v2) case tBool: return v1.boolean == v2.boolean; - case tString: { - /* Compare both the string and its context. */ - if (strcmp(v1.string.s, v2.string.s) != 0) return false; - const char * * p = v1.string.context, * * q = v2.string.context; - if (!p && !q) return true; - if (!p || !q) return false; - for ( ; *p && *q; ++p, ++q) - if (strcmp(*p, *q) != 0) return false; - if (*p || *q) return false; - return true; - } + case tString: + return strcmp(v1.string.s, v2.string.s) == 0; case tPath: return strcmp(v1.path, v2.path) == 0; diff --git a/src/libexpr/primops.cc b/src/libexpr/primops.cc index 993d290eb318..feb0227acb76 100644 --- a/src/libexpr/primops.cc +++ b/src/libexpr/primops.cc @@ -1297,7 +1297,7 @@ void EvalState::createBaseEnv() language feature gets added. It's not necessary to increase it when primops get added, because you can just use `builtins ? primOp' to check. */ - mkInt(v, 2); + mkInt(v, 3); addConstant("__langVersion", v); // Miscellaneous diff --git a/tests/lang/eval-okay-context.nix b/tests/lang/eval-okay-context.nix index b3f1748975f7..8cd8f2e131d8 100644 --- a/tests/lang/eval-okay-context.nix +++ b/tests/lang/eval-okay-context.nix @@ -1,6 +1,6 @@ let s = "foo ${builtins.substring 33 100 (baseNameOf ./eval-okay-context.nix)} bar"; in - if s == "foo eval-okay-context.nix bar" + if s != "foo eval-okay-context.nix bar" then abort "context not discarded" else builtins.unsafeDiscardStringContext s |