aboutsummaryrefslogtreecommitdiff
path: root/stdlib/source/lux/tool/compiler/phase/extension/analysis/jvm.lux
diff options
context:
space:
mode:
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.lux15
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