diff options
Diffstat (limited to '')
-rw-r--r-- | new-luxc/source/luxc/host.jvm.lux | 27 |
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) |