diff options
author | Shea Levy <shea@shealevy.com> | 2013-09-13 16:55:33 -0400 |
---|---|---|
committer | Shea Levy <shea@shealevy.com> | 2013-12-31 17:45:47 +0000 |
commit | 136f2f7046dfed18fde0b5f9933ddfafc1518ef5 (patch) | |
tree | 203804716694587a810096af3d75ea3a41c9bbe1 /tests | |
parent | 5ba5993470a6ad532fc8e842084a574a88876b0a (diff) | |
download | guix-136f2f7046dfed18fde0b5f9933ddfafc1518ef5.tar.gz |
Add the ExprBuiltin Expr type to the AST
Certain desugaring schemes may require the parser to use some builtin function to do some of the work (e.g. currently `throw` is used to lazily cause an error if a `<>`-style path is not in the search path) Unfortunately, these names are not reserved keywords, so an expression that uses such a syntactic sugar will not see the expected behavior (see tests/lang/eval-okay-redefine-builtin.nix for an example). This adds the ExprBuiltin AST type, which when evaluated uses the value from the rootmost variable scope (which of course is initialized internally and can't shadow any of the builtins). Signed-off-by: Shea Levy <shea@shealevy.com>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/lang/eval-okay-redefine-builtin.exp | 1 | ||||
-rw-r--r-- | tests/lang/eval-okay-redefine-builtin.nix | 3 |
2 files changed, 4 insertions, 0 deletions
diff --git a/tests/lang/eval-okay-redefine-builtin.exp b/tests/lang/eval-okay-redefine-builtin.exp new file mode 100644 index 0000000000..c508d5366f --- /dev/null +++ b/tests/lang/eval-okay-redefine-builtin.exp @@ -0,0 +1 @@ +false diff --git a/tests/lang/eval-okay-redefine-builtin.nix b/tests/lang/eval-okay-redefine-builtin.nix new file mode 100644 index 0000000000..df9fc3f37d --- /dev/null +++ b/tests/lang/eval-okay-redefine-builtin.nix @@ -0,0 +1,3 @@ +let + throw = abort "Error!"; +in (builtins.tryEval <foobaz>).success |