From 5232f0701cd95f260005a65d220a361dd71b6b96 Mon Sep 17 00:00:00 2001 From: Eduardo Julian Date: Wed, 29 Jun 2022 02:28:21 -0400 Subject: Better syntax for calling virtual methods when defining JVM classes. --- stdlib/source/test/lux/abstract.lux | 4 +- stdlib/source/test/lux/abstract/predicate.lux | 91 ---------------------- stdlib/source/test/lux/control/function.lux | 4 +- stdlib/source/test/lux/control/function/mixin.lux | 5 +- .../source/test/lux/control/function/predicate.lux | 91 ++++++++++++++++++++++ stdlib/source/test/lux/data/binary.lux | 5 +- stdlib/source/test/lux/data/collection/bits.lux | 4 +- .../source/test/lux/data/collection/set/multi.lux | 4 +- stdlib/source/test/lux/ffi.jvm.lux | 22 +++--- stdlib/source/test/lux/math/modular.lux | 5 +- stdlib/source/test/lux/time/day.lux | 5 +- stdlib/source/test/lux/time/month.lux | 5 +- .../compiler/language/lux/analysis/coverage.lux | 5 +- stdlib/source/test/lux/type/refinement.lux | 5 +- stdlib/source/test/lux/world/file/watch.lux | 5 +- 15 files changed, 136 insertions(+), 124 deletions(-) delete mode 100644 stdlib/source/test/lux/abstract/predicate.lux create mode 100644 stdlib/source/test/lux/control/function/predicate.lux (limited to 'stdlib/source/test') diff --git a/stdlib/source/test/lux/abstract.lux b/stdlib/source/test/lux/abstract.lux index eac73fa40..9a4c8d3ce 100644 --- a/stdlib/source/test/lux/abstract.lux +++ b/stdlib/source/test/lux/abstract.lux @@ -17,8 +17,7 @@ ["[1][0]" monad (.only) ["[1]/[0]" free]] ["[1][0]" monoid] - ["[1][0]" order] - ["[1][0]" predicate]]) + ["[1][0]" order]]) (def functor Test @@ -53,7 +52,6 @@ /interval.test /monoid.test /order.test - /predicate.test ..functor ..monad ..comonad diff --git a/stdlib/source/test/lux/abstract/predicate.lux b/stdlib/source/test/lux/abstract/predicate.lux deleted file mode 100644 index 28d0eed16..000000000 --- a/stdlib/source/test/lux/abstract/predicate.lux +++ /dev/null @@ -1,91 +0,0 @@ -(.require - [library - [lux (.except) - ["_" test (.only Test)] - [abstract - [equivalence (.only Equivalence)] - [monad (.only do)] - [\\specification - ["$[0]" monoid] - [functor - ["$[0]" contravariant]]]] - [control - ["[0]" function]] - [data - ["[0]" bit (.use "[1]#[0]" equivalence)] - [collection - ["[0]" list]]] - [math - ["[0]" random (.only Random)] - [number - ["n" nat]]]]] - [\\library - ["[0]" /]]) - -(def (multiple? factor) - (-> Nat (/.Predicate Nat)) - (case factor - 0 (function.constant false) - _ (|>> (n.% factor) (n.= 0)))) - -(def .public test - Test - (<| (_.covering /._) - (do [! random.monad] - [sample random.nat - samples (random.list 10 random.nat) - .let [equivalence (is (Equivalence (/.Predicate Nat)) - (implementation - (def (= left right) - (bit#= (left sample) - (right sample)))))]]) - (_.for [/.Predicate]) - (all _.and - (_.for [/.functor] - ($contravariant.spec equivalence (multiple? 2) /.functor)) - (let [generator (is (Random (/.Predicate Nat)) - (|> random.nat - (random.only (|>> (n.= 0) not)) - (at ! each multiple?)))] - (all _.and - (_.for [/.union] - ($monoid.spec equivalence /.union generator)) - (_.for [/.intersection] - ($monoid.spec equivalence /.intersection generator)))) - - (_.coverage [/.none] - (bit#= false (/.none sample))) - (_.coverage [/.all] - (bit#= true (/.all sample))) - (_.coverage [/.or] - (bit#= (/.all sample) - ((/.or /.none /.all) sample))) - (_.coverage [/.and] - (bit#= (/.none sample) - ((/.and /.none /.all) sample))) - (_.coverage [/.complement] - (and (not (bit#= (/.none sample) - ((/.complement /.none) sample))) - (not (bit#= (/.all sample) - ((/.complement /.all) sample))))) - (_.coverage [/.difference] - (let [/2? (multiple? 2) - /3? (multiple? 3)] - (bit#= (and (/2? sample) - (not (/3? sample))) - ((/.difference /3? /2?) sample)))) - (_.coverage [/.rec] - (let [even? (multiple? 2) - any_even? (is (/.Predicate (List Nat)) - (/.rec (function (_ again) - (function (_ values) - (case values - {.#End} - false - - {.#Item head tail} - (or (even? head) - (again tail)))))))] - (bit#= (list.any? even? samples) - (any_even? samples)))) - ))) diff --git a/stdlib/source/test/lux/control/function.lux b/stdlib/source/test/lux/control/function.lux index bb688959f..a3e9c5440 100644 --- a/stdlib/source/test/lux/control/function.lux +++ b/stdlib/source/test/lux/control/function.lux @@ -18,7 +18,8 @@ ["[1][0]" memo] ["[1][0]" mixin] ["[1][0]" mutual] - ["[1][0]" inline]]) + ["[1][0]" inline] + ["[1][0]" predicate]]) (def .public test Test @@ -64,4 +65,5 @@ /mixin.test /mutual.test /inline.test + /predicate.test )))) diff --git a/stdlib/source/test/lux/control/function/mixin.lux b/stdlib/source/test/lux/control/function/mixin.lux index e84f4293a..3ed034a69 100644 --- a/stdlib/source/test/lux/control/function/mixin.lux +++ b/stdlib/source/test/lux/control/function/mixin.lux @@ -4,12 +4,13 @@ ["_" test (.only Test)] [abstract [equivalence (.only Equivalence)] - [predicate (.only Predicate)] [monad (.only do)] [\\specification ["$[0]" monoid]]] [control - ["[0]" state (.only State)]] + ["[0]" state (.only State)] + [function + [predicate (.only Predicate)]]] [data ["[0]" product] [collection diff --git a/stdlib/source/test/lux/control/function/predicate.lux b/stdlib/source/test/lux/control/function/predicate.lux new file mode 100644 index 000000000..28d0eed16 --- /dev/null +++ b/stdlib/source/test/lux/control/function/predicate.lux @@ -0,0 +1,91 @@ +(.require + [library + [lux (.except) + ["_" test (.only Test)] + [abstract + [equivalence (.only Equivalence)] + [monad (.only do)] + [\\specification + ["$[0]" monoid] + [functor + ["$[0]" contravariant]]]] + [control + ["[0]" function]] + [data + ["[0]" bit (.use "[1]#[0]" equivalence)] + [collection + ["[0]" list]]] + [math + ["[0]" random (.only Random)] + [number + ["n" nat]]]]] + [\\library + ["[0]" /]]) + +(def (multiple? factor) + (-> Nat (/.Predicate Nat)) + (case factor + 0 (function.constant false) + _ (|>> (n.% factor) (n.= 0)))) + +(def .public test + Test + (<| (_.covering /._) + (do [! random.monad] + [sample random.nat + samples (random.list 10 random.nat) + .let [equivalence (is (Equivalence (/.Predicate Nat)) + (implementation + (def (= left right) + (bit#= (left sample) + (right sample)))))]]) + (_.for [/.Predicate]) + (all _.and + (_.for [/.functor] + ($contravariant.spec equivalence (multiple? 2) /.functor)) + (let [generator (is (Random (/.Predicate Nat)) + (|> random.nat + (random.only (|>> (n.= 0) not)) + (at ! each multiple?)))] + (all _.and + (_.for [/.union] + ($monoid.spec equivalence /.union generator)) + (_.for [/.intersection] + ($monoid.spec equivalence /.intersection generator)))) + + (_.coverage [/.none] + (bit#= false (/.none sample))) + (_.coverage [/.all] + (bit#= true (/.all sample))) + (_.coverage [/.or] + (bit#= (/.all sample) + ((/.or /.none /.all) sample))) + (_.coverage [/.and] + (bit#= (/.none sample) + ((/.and /.none /.all) sample))) + (_.coverage [/.complement] + (and (not (bit#= (/.none sample) + ((/.complement /.none) sample))) + (not (bit#= (/.all sample) + ((/.complement /.all) sample))))) + (_.coverage [/.difference] + (let [/2? (multiple? 2) + /3? (multiple? 3)] + (bit#= (and (/2? sample) + (not (/3? sample))) + ((/.difference /3? /2?) sample)))) + (_.coverage [/.rec] + (let [even? (multiple? 2) + any_even? (is (/.Predicate (List Nat)) + (/.rec (function (_ again) + (function (_ values) + (case values + {.#End} + false + + {.#Item head tail} + (or (even? head) + (again tail)))))))] + (bit#= (list.any? even? samples) + (any_even? samples)))) + ))) diff --git a/stdlib/source/test/lux/data/binary.lux b/stdlib/source/test/lux/data/binary.lux index 1389e4620..52fa6519a 100644 --- a/stdlib/source/test/lux/data/binary.lux +++ b/stdlib/source/test/lux/data/binary.lux @@ -6,7 +6,6 @@ ["[0]" type] [abstract [equivalence (.only Equivalence)] - [predicate (.only Predicate)] ["[0]" monad (.only do)] ["[0]" enum] [\\specification @@ -17,7 +16,9 @@ ["[0]" pipe] ["[0]" maybe] ["[0]" try (.only Try)] - ["[0]" exception (.only Exception)]] + ["[0]" exception (.only Exception)] + [function + [predicate (.only Predicate)]]] [data ["[0]" sum] ["[0]" bit] diff --git a/stdlib/source/test/lux/data/collection/bits.lux b/stdlib/source/test/lux/data/collection/bits.lux index a96aff9cc..98d288dc5 100644 --- a/stdlib/source/test/lux/data/collection/bits.lux +++ b/stdlib/source/test/lux/data/collection/bits.lux @@ -4,9 +4,11 @@ ["_" test (.only Test)] [abstract [monad (.only do)] - ["[0]" predicate] [\\specification ["$[0]" equivalence]]] + [control + [function + ["[0]" predicate]]] [math ["[0]" random (.only Random)] [number diff --git a/stdlib/source/test/lux/data/collection/set/multi.lux b/stdlib/source/test/lux/data/collection/set/multi.lux index 1b48f0fd0..a0dd01e06 100644 --- a/stdlib/source/test/lux/data/collection/set/multi.lux +++ b/stdlib/source/test/lux/data/collection/set/multi.lux @@ -5,10 +5,12 @@ [abstract [hash (.only Hash)] [monad (.only do)] - ["[0]" predicate] [\\specification ["$[0]" equivalence] ["$[0]" hash]]] + [control + [function + ["[0]" predicate]]] [data ["[0]" bit (.use "[1]#[0]" equivalence)] [collection diff --git a/stdlib/source/test/lux/ffi.jvm.lux b/stdlib/source/test/lux/ffi.jvm.lux index 6edf7e3ac..581d89f2d 100644 --- a/stdlib/source/test/lux/ffi.jvm.lux +++ b/stdlib/source/test/lux/ffi.jvm.lux @@ -381,11 +381,11 @@ ("private" value java/lang/Long) ... Constructors ("public" [] (new self [value java/lang/Long]) [] - (/.set value value)) + (/.set value value self)) ... Methods (test/TestInterface0 [] (actual0 self []) java/lang/Long - (/.get value))) + (/.get value self))) (/.import test/TestClass0 "[1]::[0]" @@ -396,13 +396,13 @@ ("private" value java/lang/Long) ... Constructors ("public" [] (new self [value java/lang/Long]) [] - (/.set value value)) + (/.set value value self)) ... Methods (test/TestInterface1 [] (actual1 self [throw? java/lang/Boolean]) java/lang/Long "throws" [java/lang/Throwable] (if (not (/.of_boolean throw?)) - (/.get value) + (/.get value self) (panic! "YOLO")))) (/.import test/TestClass1 @@ -428,12 +428,12 @@ ("private" value a) ... Constructors ("public" [] (new self [value a]) [] - (/.set value value)) + (/.set value value self)) ... Methods ((test/TestInterface3 a) [] (actual3 self []) a - (/.get value))) + (/.get value self))) (/.import (test/TestClass3 a) "[1]::[0]" @@ -513,12 +513,12 @@ ("private" value9 a) ... Constructors ("public" [] (new self [value a]) [] - (/.set value9 value)) + (/.set value9 value self)) ... Methods ("public" (set_actual9 self [value a]) void - (/.set value9 value)) + (/.set value9 value self)) ("public" (get_actual9 self []) a - (/.get value9))) + (/.get value9 self))) (/.import (test/TestClass9 a) "[1]::[0]" @@ -531,7 +531,7 @@ ("public" value10 a) ... Constructors ("public" [] (new self [init a]) [] - (/.set value10 init))) + (/.set value10 init self))) (/.import (test/TestClass10 a) "[1]::[0]" @@ -543,7 +543,7 @@ ("public" value11 a) ... Constructors ("public" [] (new self [init a]) [] - (/.set value11 init))) + (/.set value11 init self))) (/.import (test/TestClass11 a) "[1]::[0]" diff --git a/stdlib/source/test/lux/math/modular.lux b/stdlib/source/test/lux/math/modular.lux index b3a516885..c3a1b8f53 100644 --- a/stdlib/source/test/lux/math/modular.lux +++ b/stdlib/source/test/lux/math/modular.lux @@ -5,7 +5,6 @@ ["[0]" type (.use "[1]#[0]" equivalence)] [abstract [monad (.only do)] - ["[0]" predicate] [\\specification ["$[0]" equivalence] ["$[0]" order] @@ -13,7 +12,9 @@ ["$[0]" codec]]] [control ["[0]" try] - ["[0]" exception]] + ["[0]" exception] + [function + ["[0]" predicate]]] [data ["[0]" product] ["[0]" bit (.use "[1]#[0]" equivalence)]] diff --git a/stdlib/source/test/lux/time/day.lux b/stdlib/source/test/lux/time/day.lux index 53271cc96..eecc8a0fb 100644 --- a/stdlib/source/test/lux/time/day.lux +++ b/stdlib/source/test/lux/time/day.lux @@ -4,7 +4,6 @@ ["_" test (.only Test)] [abstract [monad (.only do)] - ["[0]" predicate] [\\specification ["$[0]" equivalence] ["$[0]" hash] @@ -13,7 +12,9 @@ ["$[0]" codec]]] [control ["[0]" try (.use "[1]#[0]" functor)] - ["[0]" exception]] + ["[0]" exception] + [function + ["[0]" predicate]]] [data [collection ["[0]" list] diff --git a/stdlib/source/test/lux/time/month.lux b/stdlib/source/test/lux/time/month.lux index 751d0f3f7..c87a956cd 100644 --- a/stdlib/source/test/lux/time/month.lux +++ b/stdlib/source/test/lux/time/month.lux @@ -4,7 +4,6 @@ ["_" test (.only Test)] [abstract [monad (.only do)] - ["[0]" predicate] [\\specification ["$[0]" equivalence] ["$[0]" hash] @@ -13,7 +12,9 @@ ["$[0]" codec]]] [control ["[0]" try (.use "[1]#[0]" functor)] - ["[0]" exception]] + ["[0]" exception] + [function + ["[0]" predicate]]] [data [collection ["[0]" set] diff --git a/stdlib/source/test/lux/tool/compiler/language/lux/analysis/coverage.lux b/stdlib/source/test/lux/tool/compiler/language/lux/analysis/coverage.lux index 9f3d0b5ac..e6eb4333c 100644 --- a/stdlib/source/test/lux/tool/compiler/language/lux/analysis/coverage.lux +++ b/stdlib/source/test/lux/tool/compiler/language/lux/analysis/coverage.lux @@ -4,13 +4,14 @@ ["_" test (.only Test)] [abstract ["[0]" monad (.only do)] - ["[0]" predicate] [\\specification ["$[0]" equivalence]]] [control ["[0]" pipe] ["[0]" try (.only Try) (.use "[1]#[0]" functor)] - ["[0]" exception (.only Exception)]] + ["[0]" exception (.only Exception)] + [function + ["[0]" predicate]]] [data ["[0]" product] ["[0]" bit (.use "[1]#[0]" equivalence)] diff --git a/stdlib/source/test/lux/type/refinement.lux b/stdlib/source/test/lux/type/refinement.lux index ce23ba709..711d0401f 100644 --- a/stdlib/source/test/lux/type/refinement.lux +++ b/stdlib/source/test/lux/type/refinement.lux @@ -3,10 +3,11 @@ [lux (.except) ["_" test (.only Test)] [abstract - [predicate (.only Predicate)] [monad (.only do)]] [control - ["[0]" maybe (.use "[1]#[0]" monad)]] + ["[0]" maybe (.use "[1]#[0]" monad)] + [function + [predicate (.only Predicate)]]] [data [collection ["[0]" list (.use "[1]#[0]" functor)]]] diff --git a/stdlib/source/test/lux/world/file/watch.lux b/stdlib/source/test/lux/world/file/watch.lux index 21e653751..36f1f444b 100644 --- a/stdlib/source/test/lux/world/file/watch.lux +++ b/stdlib/source/test/lux/world/file/watch.lux @@ -3,13 +3,14 @@ [lux (.except) ["_" test (.only Test)] [abstract - [predicate (.only Predicate)] [monad (.only do)]] [control ["[0]" try (.only Try)] ["[0]" exception] [concurrency - ["[0]" async (.only Async)]]] + ["[0]" async (.only Async)]] + [function + [predicate (.only Predicate)]]] [data ["[0]" binary (.only Binary) (.use "[1]#[0]" equivalence)] ["[0]" text (.use "[1]#[0]" equivalence) -- cgit v1.2.3