diff --git a/tests/functional/lang/eval-okay-equal-function-attrset-distinct-similar.exp b/tests/functional/lang/eval-okay-equal-function-attrset-distinct-similar.exp new file mode 100644 index 000000000..c508d5366 --- /dev/null +++ b/tests/functional/lang/eval-okay-equal-function-attrset-distinct-similar.exp @@ -0,0 +1 @@ +false diff --git a/tests/functional/lang/eval-okay-equal-function-attrset-distinct-similar.nix b/tests/functional/lang/eval-okay-equal-function-attrset-distinct-similar.nix new file mode 100644 index 000000000..13c30d9f7 --- /dev/null +++ b/tests/functional/lang/eval-okay-equal-function-attrset-distinct-similar.nix @@ -0,0 +1,3 @@ +# Distinct but not identical functions in attribute set compare as unequal +# See https://nix.dev/manual/nix/latest/language/operators#equality +{ a = (x: x); } == { a = (x: x); } diff --git a/tests/functional/lang/eval-okay-equal-function-attrset-identical.exp b/tests/functional/lang/eval-okay-equal-function-attrset-identical.exp new file mode 100644 index 000000000..27ba77dda --- /dev/null +++ b/tests/functional/lang/eval-okay-equal-function-attrset-identical.exp @@ -0,0 +1 @@ +true diff --git a/tests/functional/lang/eval-okay-equal-function-attrset-identical.nix b/tests/functional/lang/eval-okay-equal-function-attrset-identical.nix new file mode 100644 index 000000000..830267c82 --- /dev/null +++ b/tests/functional/lang/eval-okay-equal-function-attrset-identical.nix @@ -0,0 +1,10 @@ +# Function comparison in attribute set uses value identity optimization +# See https://nix.dev/manual/nix/latest/language/operators#value-identity-optimization +let + f = x: x; +in +{ + a = f; +} == { + a = f; +} diff --git a/tests/functional/lang/eval-okay-equal-function-direct-distinct-similar.exp b/tests/functional/lang/eval-okay-equal-function-direct-distinct-similar.exp new file mode 100644 index 000000000..c508d5366 --- /dev/null +++ b/tests/functional/lang/eval-okay-equal-function-direct-distinct-similar.exp @@ -0,0 +1 @@ +false diff --git a/tests/functional/lang/eval-okay-equal-function-direct-distinct-similar.nix b/tests/functional/lang/eval-okay-equal-function-direct-distinct-similar.nix new file mode 100644 index 000000000..f3a931c6b --- /dev/null +++ b/tests/functional/lang/eval-okay-equal-function-direct-distinct-similar.nix @@ -0,0 +1,3 @@ +# Direct comparison of distinct but not identical functions returns false +# See https://nix.dev/manual/nix/latest/language/operators#equality +(x: x) == (x: x) diff --git a/tests/functional/lang/eval-okay-equal-function-direct-identical.exp b/tests/functional/lang/eval-okay-equal-function-direct-identical.exp new file mode 100644 index 000000000..c508d5366 --- /dev/null +++ b/tests/functional/lang/eval-okay-equal-function-direct-identical.exp @@ -0,0 +1 @@ +false diff --git a/tests/functional/lang/eval-okay-equal-function-direct-identical.nix b/tests/functional/lang/eval-okay-equal-function-direct-identical.nix new file mode 100644 index 000000000..f91a39fb8 --- /dev/null +++ b/tests/functional/lang/eval-okay-equal-function-direct-identical.nix @@ -0,0 +1,6 @@ +# Direct comparison of identical function returns false +# See https://nix.dev/manual/nix/latest/language/operators#equality +let + f = x: x; +in +f == f diff --git a/tests/functional/lang/eval-okay-equal-function-list-distinct-similar.exp b/tests/functional/lang/eval-okay-equal-function-list-distinct-similar.exp new file mode 100644 index 000000000..c508d5366 --- /dev/null +++ b/tests/functional/lang/eval-okay-equal-function-list-distinct-similar.exp @@ -0,0 +1 @@ +false diff --git a/tests/functional/lang/eval-okay-equal-function-list-distinct-similar.nix b/tests/functional/lang/eval-okay-equal-function-list-distinct-similar.nix new file mode 100644 index 000000000..cd6182770 --- /dev/null +++ b/tests/functional/lang/eval-okay-equal-function-list-distinct-similar.nix @@ -0,0 +1,3 @@ +# Distinct but not identical functions in list compare as unequal +# See https://nix.dev/manual/nix/latest/language/operators#equality +[ (x: x) ] == [ (x: x) ] diff --git a/tests/functional/lang/eval-okay-equal-function-list-identical.exp b/tests/functional/lang/eval-okay-equal-function-list-identical.exp new file mode 100644 index 000000000..27ba77dda --- /dev/null +++ b/tests/functional/lang/eval-okay-equal-function-list-identical.exp @@ -0,0 +1 @@ +true diff --git a/tests/functional/lang/eval-okay-equal-function-list-identical.nix b/tests/functional/lang/eval-okay-equal-function-list-identical.nix new file mode 100644 index 000000000..5156ffc47 --- /dev/null +++ b/tests/functional/lang/eval-okay-equal-function-list-identical.nix @@ -0,0 +1,6 @@ +# Function comparison in list uses value identity optimization +# See https://nix.dev/manual/nix/latest/language/operators#value-identity-optimization +let + f = x: x; +in +[ f ] == [ f ]