Более информативные ошибки в модуле java

This commit is contained in:
Victor 2019-10-04 22:16:29 +03:00
parent f03cbb6fc7
commit 1cfe654e92

View File

@ -153,7 +153,7 @@ public final class java implements Module {
set("cast", new FunctionValue(this::cast)); set("cast", new FunctionValue(this::cast));
} }
private Value asSubclass(Value... args) { private Value asSubclass(Value[] args) {
Arguments.check(1, args.length); Arguments.check(1, args.length);
return new ClassValue(clazz.asSubclass( ((ClassValue)args[0]).clazz )); return new ClassValue(clazz.asSubclass( ((ClassValue)args[0]).clazz ));
} }
@ -208,7 +208,7 @@ public final class java implements Module {
@Override @Override
public boolean containsKey(Value key) { public boolean containsKey(Value key) {
return getValue(object.getClass(), object, key.asString()) != null; return get(key) != null;
} }
@Override @Override
@ -228,7 +228,7 @@ public final class java implements Module {
} }
//</editor-fold> //</editor-fold>
private Value isNull(Value... args) { private Value isNull(Value[] args) {
Arguments.checkAtLeast(1, args.length); Arguments.checkAtLeast(1, args.length);
for (Value arg : args) { for (Value arg : args) {
if (arg.raw() == null) return NumberValue.ONE; if (arg.raw() == null) return NumberValue.ONE;
@ -236,24 +236,24 @@ public final class java implements Module {
return NumberValue.ZERO; return NumberValue.ZERO;
} }
private Value newClass(Value... args) { private Value newClass(Value[] args) {
Arguments.check(1, args.length); Arguments.check(1, args.length);
final String className = args[0].asString(); final String className = args[0].asString();
try { try {
return new ClassValue(Class.forName(className)); return new ClassValue(Class.forName(className));
} catch (ClassNotFoundException ce) { } catch (ClassNotFoundException ce) {
return NULL; throw new RuntimeException("Class " + className + " not found.", ce);
} }
} }
private Value toObject(Value... args) { private Value toObject(Value[] args) {
Arguments.check(1, args.length); Arguments.check(1, args.length);
if (args[0] == NULL) return NULL; if (args[0] == NULL) return NULL;
return new ObjectValue(valueToObject(args[0])); return new ObjectValue(valueToObject(args[0]));
} }
private Value toValue(Value... args) { private Value toValue(Value[] args) {
Arguments.check(1, args.length); Arguments.check(1, args.length);
if (args[0] instanceof ObjectValue) { if (args[0] instanceof ObjectValue) {
return objectToValue( ((ObjectValue) args[0]).object ); return objectToValue( ((ObjectValue) args[0]).object );
@ -305,7 +305,8 @@ public final class java implements Module {
// skip // skip
} }
} }
return null; throw new RuntimeException("Constructor for " + args.length + " arguments"
+ " not found or non accessible");
} }
private static Function methodsToFunction(Object object, List<Method> methods) { private static Function methodsToFunction(Object object, List<Method> methods) {
@ -323,7 +324,9 @@ public final class java implements Module {
// skip // skip
} }
} }
return null; final String className = (object == null ? "null" : object.getClass().getName());
throw new RuntimeException("Method for " + args.length + " arguments"
+ " not found or non accessible in " + className);
}; };
} }