aboutsummaryrefslogtreecommitdiff
path: root/stdlib/source/library/lux/meta/compiler/language/lux/phase/generation/jvm.lux
diff options
context:
space:
mode:
Diffstat (limited to 'stdlib/source/library/lux/meta/compiler/language/lux/phase/generation/jvm.lux')
-rw-r--r--stdlib/source/library/lux/meta/compiler/language/lux/phase/generation/jvm.lux47
1 files changed, 3 insertions, 44 deletions
diff --git a/stdlib/source/library/lux/meta/compiler/language/lux/phase/generation/jvm.lux b/stdlib/source/library/lux/meta/compiler/language/lux/phase/generation/jvm.lux
index d25fe3fcf..d8c4eb180 100644
--- a/stdlib/source/library/lux/meta/compiler/language/lux/phase/generation/jvm.lux
+++ b/stdlib/source/library/lux/meta/compiler/language/lux/phase/generation/jvm.lux
@@ -39,49 +39,6 @@
["[0]" reference]
["[1]" phase (.use "[1]#[0]" monad)]]]]])
-(exception.def .public (not_an_extension [name expected actual])
- (Exception [Symbol Type Type])
- (exception.report
- (list ["Name" (%.symbol name)]
- ["Expected" (%.type expected)]
- ["Actual" (%.type actual)])))
-
-(exception.def .public (extension_error error)
- (Exception Text)
- error)
-
-(def (extension_application extender lux
- phase archive
- name parameters)
- (-> extension.Extender Lux
- Phase Archive
- Symbol (List Synthesis)
- (Operation (Bytecode Any)))
- (when (|> (do [! meta.monad]
- [definition (meta.try (meta.export name))]
- (when definition
- {try.#Success [exported? type definition]}
- (in [type {.#Left definition}])
-
- {try.#Failure error}
- (do !
- [[exported? type default] (meta.default name)]
- (in [type {.#Right default}]))))
- (is (Meta [Type (Either Any Any)]))
- (meta.result lux))
- {try.#Success [type value]}
- (if (check.subsumes? .Generation type)
- (when value
- {.#Left definition}
- ((extender definition) phase archive parameters)
-
- {.#Right default}
- ((as Handler default) phase archive parameters))
- (///.except ..not_an_extension [name .Generation type]))
-
- {try.#Failure error}
- (///.except ..extension_error [error])))
-
(def .public (generate extender lux)
(-> extension.Extender Lux Phase)
(function (phase archive synthesis)
@@ -136,5 +93,7 @@
(/function.apply phase archive application)
{synthesis.#Extension [name parameters]}
- (extension_application extender lux phase archive name parameters)
+ (extension.application extender lux phase archive .Generation name parameters
+ (|>>)
+ (function (_ _) {.#None}))
)))