clone
ssh://git@git.notashelf.dev:33/notashelf/nixir.gitCommit 3dd2d604ce6c
tarballunverified15 files changed+132-73
@@ -4,9 +4,10 @@ outputs = {nixpkgs, ...}: let systems = ["x86_64-linux" "aarch64-linux"]; forAllSystems = nixpkgs.lib.genAttrs systems;+ pkgsFor = system: nixpkgs.legacyPackages.${system}; in { devShells = forAllSystems (system: let- pkgs = nixpkgs.legacyPackages.${system};+ pkgs = pkgsFor system; in { default = pkgs.mkShell { name = "nixir";@@ -34,5 +35,21 @@ env.NIX_PLUGINABI = "0.2"; }; });++ formatter = forAllSystems (system: let+ pkgs = pkgsFor system;+ in+ pkgs.writeShellApplication {+ name = "nix3-fmt-wrapper";++ runtimeInputs = [+ pkgs.alejandra+ pkgs.fd+ ];++ text = ''+ fd "$@" -t f -e nix -x alejandra -q '{}'+ '';+ }); }; }@@ -1,4 +1,3 @@ let x = 10;-in- { a = x; }+in {a = x;}@@ -3,4 +3,6 @@ let a = 10; b = 20; in- if a < b then true else false+ if a < b+ then true+ else false@@ -1,2 +1,4 @@ # Conditional test-if true then 1 else 2+if true+then 1+else 2@@ -2,16 +2,19 @@ let x = 10; y = 20;- attrs = { a = 1; b = 2; c = 3; };-in- {- # Basic inherit from outer scope- inherit x y;+ attrs = {+ a = 1;+ b = 2;+ c = 3;+ };+in {+ # Basic inherit from outer scope+ inherit x y; - # Inherit from expression- inherit (attrs) a b;+ # Inherit from expression+ inherit (attrs) a b; - # Mixed- z = 30;- inherit (attrs) c;- }+ # Mixed+ z = 30;+ inherit (attrs) c;+}@@ -1,4 +1,3 @@ let- attrs = { a = 1; };-in- { inherit (attrs) a; }+ attrs = {a = 1;};+in {inherit (attrs) a;}@@ -1,4 +1,3 @@ let x = 10;-in- { inherit x; }+in {inherit x;}@@ -1,36 +1,61 @@ # Test lambda patterns let # Basic destructuring- f1 = { a, b }: a + b;+ f1 = {+ a,+ b,+ }:+ a + b; # With default values- f2 = { a, b ? 10 }: a + b;+ f2 = {+ a,+ b ? 10,+ }:+ a + b; # With ellipsis (extra fields allowed)- f3 = { a, ... }: a * 2;+ f3 = {a, ...}: a * 2; # Named pattern with ellipsis to allow extra fields- f4 = arg@{ a, b, ... }: a + b + arg.c;+ f4 = arg @ {+ a,+ b,+ ...+ }:+ a + b + arg.c; # Simple lambda (not a pattern) f5 = x: x + 1;-in- {- # Test basic destructuring- test1 = f1 { a = 3; b = 4; };-- # Test with defaults (provide both)- test2a = f2 { a = 5; b = 6; };-- # Test with defaults (use default for b)- test2b = f2 { a = 5; };-- # Test ellipsis (extra field ignored)- test3 = f3 { a = 7; extra = 999; };-- # Test named pattern- test4 = f4 { a = 1; b = 2; c = 3; };-- # Test simple lambda- test5 = f5 10;- }+in {+ # Test basic destructuring+ test1 = f1 {+ a = 3;+ b = 4;+ };++ # Test with defaults (provide both)+ test2a = f2 {+ a = 5;+ b = 6;+ };++ # Test with defaults (use default for b)+ test2b = f2 {a = 5;};++ # Test ellipsis (extra field ignored)+ test3 = f3 {+ a = 7;+ extra = 999;+ };++ # Test named pattern+ test4 = f4 {+ a = 1;+ b = 2;+ c = 3;+ };++ # Test simple lambda+ test5 = f5 10;+}@@ -2,4 +2,5 @@ let x = 10; y = 20;-in x+in+ x@@ -3,4 +3,8 @@ let x = true; y = false; in- if x && y then 1 else if x || y then 2 else 3+ if x && y+ then 1+ else if x || y+ then 2+ else 3@@ -1,8 +1,12 @@ # Test operator precedence let- a = 1 + 2 * 3; # Should be 1 + (2 * 3) = 7- b = 10 - 5 - 2; # Should be (10 - 5) - 2 = 3- c = true && false || true; # Should be (true && false) || true = true- d = 1 < 2 && 3 > 2; # Should be (1 < 2) && (3 > 2) = true-in- { a = a; b = b; c = c; d = d; }+ a = 1 + 2 * 3; # Should be 1 + (2 * 3) = 7+ b = 10 - 5 - 2; # Should be (10 - 5) - 2 = 3+ c = true && false || true; # Should be (true && false) || true = true+ d = 1 < 2 && 3 > 2; # Should be (1 < 2) && (3 > 2) = true+in {+ a = a;+ b = b;+ c = c;+ d = d;+}@@ -3,9 +3,8 @@ let alwaysFalse = false; alwaysTrue = true; x = 10;-in- {- and_false = alwaysFalse && alwaysTrue;- or_true = alwaysTrue || alwaysFalse;- impl_false = alwaysFalse -> alwaysFalse;- }+in {+ and_false = alwaysFalse && alwaysTrue;+ or_true = alwaysTrue || alwaysFalse;+ impl_false = alwaysFalse -> alwaysFalse;+}@@ -1 +1 @@-1 + 2\ No newline at end of file+1 + 2@@ -3,17 +3,20 @@ let name = "world"; x = 42; bool_val = true;-in- {- # Simple interpolation- greeting = "Hello ${name}!";+in {+ # Simple interpolation+ greeting = "Hello ${name}!"; - # Multiple interpolations- multi = "x is ${x} and name is ${name}";+ # Multiple interpolations+ multi = "x is ${x} and name is ${name}"; - # Nested expression- nested = "Result: ${if bool_val then "yes" else "no"}";+ # Nested expression+ nested = "Result: ${+ if bool_val+ then "yes"+ else "no"+ }"; - # Just a string (no interpolation)- plain = "plain text";- }+ # Just a string (no interpolation)+ plain = "plain text";+}@@ -2,5 +2,7 @@ let x = 10; y = true;-in- { neg = -x; not = !y; }+in {+ neg = -x;+ not = !y;+}