about summary refs log tree commit diff
path: root/tests/lang
diff options
context:
space:
mode:
authorEelco Dolstra <e.dolstra@tudelft.nl>2009-05-15T12·35+0000
committerEelco Dolstra <e.dolstra@tudelft.nl>2009-05-15T12·35+0000
commitd407d572fdc72f4eb14cc0f37d7d61446425b663 (patch)
tree039d1409f7bdd30c2e953cf894b06b858db3a6f3 /tests/lang
parente42975490fa96e811c9fd80435ce20c26f8603f8 (diff)
* Some syntactic sugar for attribute sets: allow {x.y.z = ...;} as a
  shorthand for {x = {y = {z = ...;};};}.  This is especially useful
  for NixOS configuration files, e.g.

    {
      services = {
        sshd = {
          enable = true;
          port = 2022;
        };
      };
    }

  can now be written as

    {
      services.sshd.enable = true;
      services.sshd.port = 2022;
    }

  However, it is currently not permitted to write
  
    {
      services.sshd = {enable = true;};
      services.sshd.port = 2022;
    }

  as this is considered a duplicate definition of `services.sshd'.

Diffstat (limited to 'tests/lang')
-rw-r--r--tests/lang/eval-okay-attrs3.exp1
-rw-r--r--tests/lang/eval-okay-attrs3.nix22
-rw-r--r--tests/lang/parse-fail-dup-attrs-4.nix4
-rw-r--r--tests/lang/parse-fail-dup-attrs-5.nix4
-rw-r--r--tests/lang/parse-fail-dup-attrs-6.nix4
5 files changed, 35 insertions, 0 deletions
diff --git a/tests/lang/eval-okay-attrs3.exp b/tests/lang/eval-okay-attrs3.exp
new file mode 100644
index 000000000000..d2c7555c1f6c
--- /dev/null
+++ b/tests/lang/eval-okay-attrs3.exp
@@ -0,0 +1 @@
+Str("foo 22 80 itchyxac",[])
diff --git a/tests/lang/eval-okay-attrs3.nix b/tests/lang/eval-okay-attrs3.nix
new file mode 100644
index 000000000000..f29de11fe660
--- /dev/null
+++ b/tests/lang/eval-okay-attrs3.nix
@@ -0,0 +1,22 @@
+let
+
+  config = 
+    {
+      services.sshd.enable = true;
+      services.sshd.port = 22;
+      services.httpd.port = 80;
+      hostName = "itchy";
+      a.b.c.d.e.f.g.h.i.j.k.l.m.n.o.p.q.r.s.t.u.v.w.x.y.z = "x";
+      foo = {
+        a = "a";
+        b.c = "c";
+      };
+    };
+
+in
+  if config.services.sshd.enable
+  then "foo ${toString config.services.sshd.port} ${toString config.services.httpd.port} ${config.hostName}"
+       + "${config.a.b.c.d.e.f.g.h.i.j.k.l.m.n.o.p.q.r.s.t.u.v.w.x.y.z}"
+       + "${config.foo.a}"
+       + "${config.foo.b.c}"
+  else "bar"
diff --git a/tests/lang/parse-fail-dup-attrs-4.nix b/tests/lang/parse-fail-dup-attrs-4.nix
new file mode 100644
index 000000000000..77417432b347
--- /dev/null
+++ b/tests/lang/parse-fail-dup-attrs-4.nix
@@ -0,0 +1,4 @@
+{
+  services.ssh.port = 22;
+  services.ssh.port = 23;
+}
diff --git a/tests/lang/parse-fail-dup-attrs-5.nix b/tests/lang/parse-fail-dup-attrs-5.nix
new file mode 100644
index 000000000000..f4b9efd0c596
--- /dev/null
+++ b/tests/lang/parse-fail-dup-attrs-5.nix
@@ -0,0 +1,4 @@
+{
+  services.ssh = { enable = true; };
+  services.ssh.port = 23;
+}
diff --git a/tests/lang/parse-fail-dup-attrs-6.nix b/tests/lang/parse-fail-dup-attrs-6.nix
new file mode 100644
index 000000000000..ae6d7a769305
--- /dev/null
+++ b/tests/lang/parse-fail-dup-attrs-6.nix
@@ -0,0 +1,4 @@
+{
+  services.ssh.port = 23;
+  services.ssh = { enable = true; };
+}