aboutsummaryrefslogtreecommitdiff
path: root/new-luxc/source/luxc/host.jvm.lux
diff options
context:
space:
mode:
Diffstat (limited to 'new-luxc/source/luxc/host.jvm.lux')
-rw-r--r--new-luxc/source/luxc/host.jvm.lux27
1 files changed, 14 insertions, 13 deletions
diff --git a/new-luxc/source/luxc/host.jvm.lux b/new-luxc/source/luxc/host.jvm.lux
index 37b62b30d..d5b4e89b0 100644
--- a/new-luxc/source/luxc/host.jvm.lux
+++ b/new-luxc/source/luxc/host.jvm.lux
@@ -57,25 +57,26 @@
ClassLoader::defineClass))
(def: (fetch-byte-code class-name store)
- (-> Text &&common;Class-Store &&common;Bytecode)
- (|> store A;get io;run (d;get class-name) assume))
-
-(def: (assume!! input)
- (All [a] (-> (R;Result a) a))
- (case input
- (#R;Success output)
- output
-
- (#R;Error error)
- (error! error)))
+ (-> Text &&common;Class-Store (Maybe &&common;Bytecode))
+ (|> store A;get io;run (d;get class-name)))
(def: (memory-class-loader store)
(-> &&common;Class-Store ClassLoader)
(object ClassLoader []
[]
(ClassLoader (findClass [class-name String]) Class
- (:!! (assume!! (define-class class-name (fetch-byte-code class-name store) (:! ClassLoader _jvm_this))))
- )))
+ (case (fetch-byte-code class-name store)
+ (#;Some bytecode)
+ (case (define-class class-name bytecode (:! ClassLoader _jvm_this))
+ (#R;Success class)
+ (:!! class)
+
+ (#R;Error error)
+ (error! (format "Class definiton error: " class-name "\n"
+ error)))
+
+ #;None
+ (error! (format "Class not found: " class-name))))))
(def: #export (init-host _)
(-> Top &&common;Host)