From 1b962fc7206bf3134b2a2097d3db0ee6d2863c47 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Thu, 14 Aug 2008 12:53:29 +0000 Subject: * @-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}. --- tests/lang/eval-okay-patterns.exp | 1 + tests/lang/eval-okay-patterns.nix | 16 ++++++++++++++++ tests/lang/eval-okay-xml.exp.xml | 12 ++++++++++++ tests/lang/eval-okay-xml.nix | 2 ++ tests/lang/parse-fail-patterns-1.nix | 1 + 5 files changed, 32 insertions(+) create mode 100644 tests/lang/eval-okay-patterns.exp create mode 100644 tests/lang/eval-okay-patterns.nix create mode 100644 tests/lang/parse-fail-patterns-1.nix (limited to 'tests/lang') 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 @@ + + + + + + + + + + + + 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 -- cgit v1.2.3