aboutsummaryrefslogtreecommitdiff
path: root/tests/lang
diff options
context:
space:
mode:
authorEelco Dolstra <e.dolstra@tudelft.nl>2008-08-14 12:53:29 +0000
committerEelco Dolstra <e.dolstra@tudelft.nl>2008-08-14 12:53:29 +0000
commit1b962fc7206bf3134b2a2097d3db0ee6d2863c47 (patch)
tree9e259b7df5f0fa3ca748fa9b9035f2dd35b1a44d /tests/lang
parente8188384129bda7c8cdd5e17023ab05047551e6e (diff)
* @-patterns as in Haskell. For instance, in a function definition
f = args @ {x, y, z}: ...; `args' refers to the argument as a whole, which is further pattern-matched against the attribute set pattern {x, y, z}.
Diffstat (limited to 'tests/lang')
-rw-r--r--tests/lang/eval-okay-patterns.exp1
-rw-r--r--tests/lang/eval-okay-patterns.nix16
-rw-r--r--tests/lang/eval-okay-xml.exp.xml12
-rw-r--r--tests/lang/eval-okay-xml.nix2
-rw-r--r--tests/lang/parse-fail-patterns-1.nix1
5 files changed, 32 insertions, 0 deletions
diff --git a/tests/lang/eval-okay-patterns.exp b/tests/lang/eval-okay-patterns.exp
new file mode 100644
index 000000000..382a0bd26
--- /dev/null
+++ b/tests/lang/eval-okay-patterns.exp
@@ -0,0 +1 @@
+Str("abcxyzDDDDEFgh",[])
diff --git a/tests/lang/eval-okay-patterns.nix b/tests/lang/eval-okay-patterns.nix
new file mode 100644
index 000000000..bcb9f3842
--- /dev/null
+++ b/tests/lang/eval-okay-patterns.nix
@@ -0,0 +1,16 @@
+let
+
+ f = args@{x, y, z}: x + args.y + z;
+
+ g = {x, y, z}@args: f args;
+
+ h = {x ? "d", y ? x, z ? args.x}@args: x + y + z;
+
+ i = args@args2: args.x + args2.y;
+
+in
+ f {x = "a"; y = "b"; z = "c";} +
+ g {x = "x"; y = "y"; z = "z";} +
+ h {x = "D";} +
+ h {x = "D"; y = "E"; z = "F";} +
+ i {x = "g"; y = "h";}
diff --git a/tests/lang/eval-okay-xml.exp.xml b/tests/lang/eval-okay-xml.exp.xml
index 4798e87f8..4f55c69a7 100644
--- a/tests/lang/eval-okay-xml.exp.xml
+++ b/tests/lang/eval-okay-xml.exp.xml
@@ -4,6 +4,18 @@
<attr name="a">
<string value="foo" />
</attr>
+ <attr name="at">
+ <function>
+ <at>
+ <varpat name="args" />
+ <attrspat>
+ <attr name="x" />
+ <attr name="y" />
+ <attr name="z" />
+ </attrspat>
+ </at>
+ </function>
+ </attr>
<attr name="b">
<string value="bar" />
</attr>
diff --git a/tests/lang/eval-okay-xml.nix b/tests/lang/eval-okay-xml.nix
index 75420316d..44afbff1e 100644
--- a/tests/lang/eval-okay-xml.nix
+++ b/tests/lang/eval-okay-xml.nix
@@ -12,4 +12,6 @@ rec {
id = x: x;
+ at = args@{x, y, z}: x;
+
}
diff --git a/tests/lang/parse-fail-patterns-1.nix b/tests/lang/parse-fail-patterns-1.nix
new file mode 100644
index 000000000..7b4061641
--- /dev/null
+++ b/tests/lang/parse-fail-patterns-1.nix
@@ -0,0 +1 @@
+args@{args, x, y, z}: x