diff options
author | Eelco Dolstra <e.dolstra@tudelft.nl> | 2008-08-14T12·53+0000 |
---|---|---|
committer | Eelco Dolstra <e.dolstra@tudelft.nl> | 2008-08-14T12·53+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 000000000000..382a0bd26f08 --- /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 000000000000..bcb9f3842e47 --- /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 4798e87f87b8..4f55c69a7cad 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 75420316df99..44afbff1ed13 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 000000000000..7b40616417b8 --- /dev/null +++ b/tests/lang/parse-fail-patterns-1.nix @@ -0,0 +1 @@ +args@{args, x, y, z}: x |