private boolean canCast(Class from, Class to) { return isAssignableFrom(from, to) || (from.isInterface() && interfaceAssignable(from, to)); }
private boolean canCast(Class from, Class to) { return isAssignableFrom(from, to) || (from.isInterface() && interfaceAssignable(from, to)); }
public static boolean canConvert(Class toType, Class convertFrom) { if (isAssignableFrom(toType, convertFrom)) return true; if (CONVERTERS.containsKey(toType)) { return CONVERTERS.get(toType).canConvertFrom(toNonPrimitiveType(convertFrom)); } else if (toType.isArray() && canConvert(toType.getComponentType(), convertFrom)) { return true; } return false; }
public static boolean canConvert(Class toType, Class convertFrom) { if (isAssignableFrom(toType, convertFrom)) return true; if (CONVERTERS.containsKey(toType)) { return CONVERTERS.get(toType).canConvertFrom(toNonPrimitiveType(convertFrom)); } else if (toType.isArray() && canConvert(toType.getComponentType(), convertFrom)) { return true; } return false; }
private void subCompile(int start, int offset) { if (colType == null) { subCompileExpression(property, start, offset, pCtx); } else { Class r = ((ExecutableStatement) subCompileExpression(property, start, offset, pCtx)).getKnownEgressType(); if (r != null && !isAssignableFrom(colType, r) && (isStrongType() || !DataConversion.canConvert(r, colType))) { throw new CompileException("expected type: " + colType.getName() + "; but found: " + r.getName(), property, cursor); } } }
private void subCompile(int start, int offset) { if (colType == null) { subCompileExpression(property, start, offset, pCtx); } else { Class r = ((ExecutableStatement) subCompileExpression(property, start, offset, pCtx)).getKnownEgressType(); if (r != null && !isAssignableFrom(colType, r) && (isStrongType() || !DataConversion.canConvert(r, colType))) { throw new CompileException("expected type: " + colType.getName() + "; but found: " + r.getName(), property, cursor); } } }
public ExprValueAccessor(String ex, Class expectedType, Object ctx, VariableResolverFactory factory, ParserContext pCtx) { stmt = (ExecutableStatement) ParseTools.subCompileExpression(ex.toCharArray(), pCtx); //if (expectedType.isArray()) { Class tt = getSubComponentType(expectedType); Class et = stmt.getKnownEgressType(); if (stmt.getKnownEgressType() != null && !isAssignableFrom(tt, et)) { if ((stmt instanceof ExecutableLiteral) && canConvert(et, tt)) { try { stmt = new ExecutableLiteral(convert(stmt.getValue(ctx, factory), tt)); return; } catch (IllegalArgumentException e) { // fall through; } } if (pCtx != null && pCtx.isStrongTyping()) throw new RuntimeException("was expecting type: " + tt + "; but found type: " + (et == null ? "null" : et.getName())); } }
public ExprValueAccessor(String ex, Class expectedType, Object ctx, VariableResolverFactory factory, ParserContext pCtx) { stmt = (ExecutableStatement) ParseTools.subCompileExpression(ex.toCharArray(), pCtx); //if (expectedType.isArray()) { Class tt = getSubComponentType(expectedType); Class et = stmt.getKnownEgressType(); if (stmt.getKnownEgressType() != null && !isAssignableFrom(tt, et)) { if ((stmt instanceof ExecutableLiteral) && canConvert(et, tt)) { try { stmt = new ExecutableLiteral(convert(stmt.getValue(ctx, factory), tt)); return; } catch (IllegalArgumentException e) { // fall through; } } if (pCtx != null && pCtx.isStrongTyping()) throw new RuntimeException("was expecting type: " + tt + "; but found type: " + (et == null ? "null" : et.getName())); } }