From b7873d4b68ffc041f9ff134c52a32b54c20febf9 Mon Sep 17 00:00:00 2001 From: Eduardo Julian Date: Sun, 9 Jan 2022 05:35:12 -0400 Subject: Fixed a bug when testing extensions on the JVM compiler. --- lux-jvm/source/luxc/lang/translation/jvm/case.lux | 11 ++++++++++- lux-jvm/source/luxc/lang/translation/jvm/expression.lux | 3 +++ lux-jvm/source/luxc/lang/translation/jvm/extension/host.lux | 6 +++--- 3 files changed, 16 insertions(+), 4 deletions(-) (limited to 'lux-jvm/source/luxc/lang') diff --git a/lux-jvm/source/luxc/lang/translation/jvm/case.lux b/lux-jvm/source/luxc/lang/translation/jvm/case.lux index 0c9ad675f..94a3deb05 100644 --- a/lux-jvm/source/luxc/lang/translation/jvm/case.lux +++ b/lux-jvm/source/luxc/lang/translation/jvm/case.lux @@ -1,6 +1,6 @@ (.using [library - [lux {"-" Type Label Primitive if let case} + [lux {"-" Type Label Primitive if exec let case} [abstract ["[0]" monad {"+" do}]] [control @@ -253,6 +253,15 @@ elseI (_.label @end)))))) +(def: .public (exec phase archive [this that]) + (Generator [Synthesis Synthesis]) + (do phase.monad + [this! (phase archive this) + that! (phase archive that)] + (in (|>> this! + _.POP + that!)))) + (def: .public (let phase archive [inputS register exprS]) (Generator [Synthesis Nat Synthesis]) (do phase.monad diff --git a/lux-jvm/source/luxc/lang/translation/jvm/expression.lux b/lux-jvm/source/luxc/lang/translation/jvm/expression.lux index c92212370..8749b2ef2 100644 --- a/lux-jvm/source/luxc/lang/translation/jvm/expression.lux +++ b/lux-jvm/source/luxc/lang/translation/jvm/expression.lux @@ -47,6 +47,9 @@ (^ (synthesis.constant constant)) (reference.constant archive constant) + (^ (synthesis.branch/exec it)) + (case.exec translate archive it) + (^ (synthesis.branch/let data)) (case.let translate archive data) diff --git a/lux-jvm/source/luxc/lang/translation/jvm/extension/host.lux b/lux-jvm/source/luxc/lang/translation/jvm/extension/host.lux index 7048bdd25..17165b434 100644 --- a/lux-jvm/source/luxc/lang/translation/jvm/extension/host.lux +++ b/lux-jvm/source/luxc/lang/translation/jvm/extension/host.lux @@ -820,7 +820,7 @@ hidden [_ {synthesis.#Control {synthesis.#Branch {synthesis.#Case _ path}}}] - (loop [path path] + (loop [path (: synthesis.Path path)] (case path (^or {synthesis.#Pop} {synthesis.#Access _} @@ -908,8 +908,8 @@ (^template [] [(^ ) body]) - ([{//////synthesis.#Primitive _}] - [(//////synthesis.constant _)]) + ([{synthesis.#Primitive _}] + [(synthesis.constant _)]) (^ (synthesis.variant [lefts right? sub])) (synthesis.variant [lefts right? (again sub)]) -- cgit v1.2.3