diff options
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.lux | 47 |
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})) ))) |