diff options
Diffstat (limited to 'stdlib/source/library/lux/target/jvm/reflection.lux')
-rw-r--r-- | stdlib/source/library/lux/target/jvm/reflection.lux | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/stdlib/source/library/lux/target/jvm/reflection.lux b/stdlib/source/library/lux/target/jvm/reflection.lux index e2297f313..50bb2b974 100644 --- a/stdlib/source/library/lux/target/jvm/reflection.lux +++ b/stdlib/source/library/lux/target/jvm/reflection.lux @@ -96,9 +96,11 @@ (getGenericParameterTypes [] [java/lang/reflect/Type]) (getGenericExceptionTypes [] [java/lang/reflect/Type])]) +(import: java/lang/ClassLoader) + (import: (java/lang/Class c) ["#::." - (#static forName [java/lang/String] #try (java/lang/Class java/lang/Object)) + (#static forName [java/lang/String boolean java/lang/ClassLoader] #try (java/lang/Class java/lang/Object)) (getName [] java/lang/String) (getModifiers [] int) (isAssignableFrom [(java/lang/Class java/lang/Object)] boolean) @@ -123,20 +125,20 @@ [cannot_convert_to_a_lux_type] ) -(def: #export (load name) - (-> External (Try (java/lang/Class java/lang/Object))) - (case (java/lang/Class::forName name) +(def: #export (load class_loader name) + (-> java/lang/ClassLoader External (Try (java/lang/Class java/lang/Object))) + (case (java/lang/Class::forName name false class_loader) (#try.Success class) (#try.Success class) (#try.Failure _) (exception.throw ..unknown_class name))) -(def: #export (sub? super sub) - (-> External External (Try Bit)) +(def: #export (sub? class_loader super sub) + (-> java/lang/ClassLoader External External (Try Bit)) (do try.monad - [super (..load super) - sub (..load sub)] + [super (..load class_loader super) + sub (..load class_loader sub)] (wrap (java/lang/Class::isAssignableFrom sub super)))) (def: (class' parameter reflection) |