aboutsummaryrefslogtreecommitdiff
path: root/doc/manual/expressions
diff options
context:
space:
mode:
authorDomen Kožar <domen@dev.si>2019-09-30 14:03:16 +0200
committerGitHub <noreply@github.com>2019-09-30 14:03:16 +0200
commit043365c2fb3f30dd01db2e2b26ac2760a2e8d370 (patch)
tree6cdc4d3d425e9042b8980077c4fe66c1b17313eb /doc/manual/expressions
parenta3bb929798a99445004507acba843c9a29266f1f (diff)
parente4ea3e03066a760c8cd462108af99aebaaa44c1b (diff)
Merge pull request #3080 from Infinisil/tryEval-docs
docs: Note that tryEval doesn't do deep evaluation
Diffstat (limited to 'doc/manual/expressions')
-rw-r--r--doc/manual/expressions/builtins.xml10
1 files changed, 8 insertions, 2 deletions
diff --git a/doc/manual/expressions/builtins.xml b/doc/manual/expressions/builtins.xml
index 9bd86e120..e164d1441 100644
--- a/doc/manual/expressions/builtins.xml
+++ b/doc/manual/expressions/builtins.xml
@@ -1605,12 +1605,18 @@ stdenv.mkDerivation (rec {
<term><function>builtins.tryEval</function>
<replaceable>e</replaceable></term>
- <listitem><para>Try to evaluate <replaceable>e</replaceable>.
+ <listitem><para>Try to shallowly evaluate <replaceable>e</replaceable>.
Return a set containing the attributes <literal>success</literal>
(<literal>true</literal> if <replaceable>e</replaceable> evaluated
successfully, <literal>false</literal> if an error was thrown) and
<literal>value</literal>, equalling <replaceable>e</replaceable>
- if successful and <literal>false</literal> otherwise.
+ if successful and <literal>false</literal> otherwise. Note that this
+ doesn't evaluate <replaceable>e</replaceable> deeply, so
+ <literal>let e = { x = throw ""; }; in (builtins.tryEval e).success
+ </literal> will be <literal>true</literal>. Using <literal>builtins.deepSeq
+ </literal> one can get the expected result: <literal>let e = { x = throw "";
+ }; in (builtins.tryEval (builtins.deepSeq e e)).success</literal> will be
+ <literal>false</literal>.
</para></listitem>
</varlistentry>