diff options
Diffstat (limited to 'stdlib/source/lux/tool/compiler/phase/extension/analysis/jvm.lux')
-rw-r--r-- | stdlib/source/lux/tool/compiler/phase/extension/analysis/jvm.lux | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/stdlib/source/lux/tool/compiler/phase/extension/analysis/jvm.lux b/stdlib/source/lux/tool/compiler/phase/extension/analysis/jvm.lux index 63f0561c0..98cf8baf8 100644 --- a/stdlib/source/lux/tool/compiler/phase/extension/analysis/jvm.lux +++ b/stdlib/source/lux/tool/compiler/phase/extension/analysis/jvm.lux @@ -50,7 +50,10 @@ ["/#" // #_ [reference (#+)] ["#." analysis (#+ Analysis Operation Phase Handler Bundle)] - ["#." synthesis]]]]]) + ["#." synthesis] + [meta + [archive + [descriptor (#+ Module)]]]]]]]) (def: reflection (|>> jvm.reflection reflection.reflection)) (def: signature (|>> jvm.signature signature.signature)) @@ -1890,6 +1893,12 @@ mapping)) jvm-alias.fresh))))) +(def: (anonymous-class-name module id) + (-> Module Nat Text) + (let [global (text.replace-all .module-separator ..jvm-package-separator module) + local (format "anonymous-class" (%.nat id))] + (format global ..jvm-package-separator local))) + (def: class::anonymous Handler (..custom @@ -1916,9 +1925,7 @@ name (///.lift (do macro.monad [where macro.current-module-name id macro.count] - (wrap (format (text.replace-all .module-separator ..jvm-package-separator where) - ..jvm-package-separator - "anonymous-class" (%.nat id))))) + (wrap (..anonymous-class-name where id)))) super-classT (typeA.with-env (luxT.check (luxT.class mapping) (..signature super-class))) super-interfaceT+ (typeA.with-env |