diff options
author | Eelco Dolstra <e.dolstra@tudelft.nl> | 2008-08-14 12:53:29 +0000 |
---|---|---|
committer | Eelco Dolstra <e.dolstra@tudelft.nl> | 2008-08-14 12:53:29 +0000 |
commit | 1b962fc7206bf3134b2a2097d3db0ee6d2863c47 (patch) | |
tree | 9e259b7df5f0fa3ca748fa9b9035f2dd35b1a44d /tests/lang | |
parent | e8188384129bda7c8cdd5e17023ab05047551e6e (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.exp | 1 | ||||
-rw-r--r-- | tests/lang/eval-okay-patterns.nix | 16 | ||||
-rw-r--r-- | tests/lang/eval-okay-xml.exp.xml | 12 | ||||
-rw-r--r-- | tests/lang/eval-okay-xml.nix | 2 | ||||
-rw-r--r-- | tests/lang/parse-fail-patterns-1.nix | 1 |
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 |