diff --git a/langkit/expressions/logic.py b/langkit/expressions/logic.py index 0362e0683..164d46364 100644 --- a/langkit/expressions/logic.py +++ b/langkit/expressions/logic.py @@ -41,7 +41,7 @@ class Bind(AbstractExpression): Bind(A, B, property) """ - def __init__(self, from_expr, to_expr, conv_prop=None): + def __init__(self, from_expr, to_expr, conv_prop=None, eq_prop=None): """ :param AbstractExpression from_expr: An expression resolving to a logical variable that is the source of the bind. diff --git a/testsuite/tests/adalog/custom_bind/support.ads b/testsuite/tests/adalog/custom_bind/support.ads index 96a366f2e..ef9aa9d63 100644 --- a/testsuite/tests/adalog/custom_bind/support.ads +++ b/testsuite/tests/adalog/custom_bind/support.ads @@ -2,11 +2,12 @@ with Adalog.Abstract_Relation; use Adalog.Abstract_Relation; with Adalog.Main_Support; use Adalog.Main_Support; package Support is + function Eq (A, B : Integer) return Boolean is (A = B); type Dummy_Data is null record; - D : Dummy_Data; + No_Data : constant Dummy_Data := (null record); function Transform (D : Dummy_Data; I : Integer) return Integer is (I ** 2); - package Bind is new Eq_Int.Raw_Custom_Bind (Dummy_Data, Transform); + package Bind is new Eq_Int.Raw_Custom_Bind (Dummy_Data, No_Data, Transform, Eq); function Square (X, Y : Eq_Int.Refs.Raw_Var) return Relation - is (Bind.Create (X, Y, D)); + is (Bind.Create (X, Y, No_Data)); end Support; diff --git a/testsuite/tests/adalog/deferred_predicate/support.ads b/testsuite/tests/adalog/deferred_predicate/support.ads index 85e4116e7..c071444d3 100644 --- a/testsuite/tests/adalog/deferred_predicate/support.ads +++ b/testsuite/tests/adalog/deferred_predicate/support.ads @@ -2,9 +2,11 @@ with Adalog.Main_Support; use Adalog.Main_Support; with Adalog.Predicates; use Adalog.Predicates; package Support is + function Eq (A, B : Integer) return Boolean is (A = B); type Dummy_Data is null record; + No_Data : constant Dummy_Data := (null record); function Transform (D : Dummy_Data; I : Integer) return Integer is (I * 3); - package Bind is new Eq_Int.Raw_Custom_Bind (Dummy_Data, Transform); + package Bind is new Eq_Int.Raw_Custom_Bind (Dummy_Data, No_Data, Transform, Eq); type Pred is null record; diff --git a/testsuite/tests/adalog/general/support.ads b/testsuite/tests/adalog/general/support.ads index 9f49ea5bb..7b564f6ff 100644 --- a/testsuite/tests/adalog/general/support.ads +++ b/testsuite/tests/adalog/general/support.ads @@ -1,7 +1,9 @@ with Adalog.Main_Support; use Adalog.Main_Support; package Support is + function Eq (A, B : Integer) return Boolean is (A = B); type Dummy_Data is null record; + No_Data : constant Dummy_Data := (null record); function Transform (D : Dummy_Data; I : Integer) return Integer is (I * 3); - package Bind is new Eq_Int.Raw_Custom_Bind (Dummy_Data, Transform); + package Bind is new Eq_Int.Raw_Custom_Bind (Dummy_Data, No_Data, Transform, Eq); end Support; diff --git a/testsuite/tests/adalog/n_predicate/support.ads b/testsuite/tests/adalog/n_predicate/support.ads index 049f18f0e..fb4c63405 100644 --- a/testsuite/tests/adalog/n_predicate/support.ads +++ b/testsuite/tests/adalog/n_predicate/support.ads @@ -2,9 +2,11 @@ with Adalog.Main_Support; use Adalog.Main_Support; with Adalog.Predicates; use Adalog.Predicates; package Support is + function Eq (A, B : Integer) return Boolean is (A = B); type Dummy_Data is null record; + No_Data : constant Dummy_Data := (null record); function Transform (D : Dummy_Data; I : Integer) return Integer is (I * 3); - package Bind is new Eq_Int.Raw_Custom_Bind (Dummy_Data, Transform); + package Bind is new Eq_Int.Raw_Custom_Bind (Dummy_Data, No_Data, Transform, Eq); type Pred is null record; function Call (Self : Pred; L, R : Integer) return Boolean is (L = R * 2); diff --git a/testsuite/tests/adalog/variadics/support.ads b/testsuite/tests/adalog/variadics/support.ads index 9f49ea5bb..7b564f6ff 100644 --- a/testsuite/tests/adalog/variadics/support.ads +++ b/testsuite/tests/adalog/variadics/support.ads @@ -1,7 +1,9 @@ with Adalog.Main_Support; use Adalog.Main_Support; package Support is + function Eq (A, B : Integer) return Boolean is (A = B); type Dummy_Data is null record; + No_Data : constant Dummy_Data := (null record); function Transform (D : Dummy_Data; I : Integer) return Integer is (I * 3); - package Bind is new Eq_Int.Raw_Custom_Bind (Dummy_Data, Transform); + package Bind is new Eq_Int.Raw_Custom_Bind (Dummy_Data, No_Data, Transform, Eq); end Support;