@Override public final boolean test(final T t) { return MetadataHelper.isSubType(t, anchor); } };
public static boolean isConvertible(final TypeReference source, final TypeReference target, final boolean allowUnchecked) { VerifyArgument.notNull(source, "source"); VerifyArgument.notNull(target, "target"); final boolean tPrimitive = target.isPrimitive(); final boolean sPrimitive = source.isPrimitive(); if (source == BuiltinTypes.Null) { return !tPrimitive; } if (target.isWildcardType() && target.isUnbounded()) { return !sPrimitive; } if (tPrimitive == sPrimitive) { return allowUnchecked ? isSubTypeUnchecked(source, target) : isSubType(source, target); } if (tPrimitive) { return getNumericConversionType(target, source).isImplicit(); } return allowUnchecked ? isSubTypeUnchecked(getBoxedTypeOrSelf(source), target) : isSubType(getBoxedTypeOrSelf(source), target); }
@Override public final boolean test(final T t) { return MetadataHelper.isSubType(anchor, t); } };
@Override public final boolean test(final T t) { return MetadataHelper.isSubType(anchor, t); } };
@Override public final boolean test(final T t) { return MetadataHelper.isSubType(t, anchor); } };
@Override public final boolean test(final T t) { return MetadataHelper.isSubType(t, anchor); } };
@Override public final boolean test(final T t) { return MetadataHelper.isSubType(anchor, t); } };
@Override public TypeReference visitArrayType(final ArrayType t, final TypeReference s) { return isSubType(t, s) ? s : null; }
@Override public TypeReference visitArrayType(final ArrayType t, final TypeReference s) { return isSubType(t, s) ? s : null; }
@Override public TypeReference visitArrayType(final ArrayType t, final TypeReference s) { return isSubType(t, s) ? s : null; }
public static boolean isSubTypeNoCapture(final TypeReference type, final TypeReference baseType) { return isSubType(type, baseType, false); }
public static boolean isSubTypeNoCapture(final TypeReference type, final TypeReference baseType) { return isSubType(type, baseType, false); }
public static boolean isSubTypeNoCapture(final TypeReference type, final TypeReference baseType) { return isSubType(type, baseType, false); }
public static boolean isSubType(final TypeReference type, final TypeReference baseType) { VerifyArgument.notNull(type, "type"); VerifyArgument.notNull(baseType, "baseType"); return isSubType(type, baseType, true); }
public static boolean isSubType(final TypeReference type, final TypeReference baseType) { VerifyArgument.notNull(type, "type"); VerifyArgument.notNull(baseType, "baseType"); return isSubType(type, baseType, true); }
public static boolean isSubType(final TypeReference type, final TypeReference baseType) { VerifyArgument.notNull(type, "type"); VerifyArgument.notNull(baseType, "baseType"); return isSubType(type, baseType, true); }
public static boolean isSubType(final TypeReference type, final TypeReference baseType, final boolean capture) { if (type == baseType) { return true; } if (type == null || baseType == null) { return false; } if (baseType instanceof CompoundTypeReference) { final CompoundTypeReference c = (CompoundTypeReference) baseType; if (!isSubType(type, getSuperType(c), capture)) { return false; } for (final TypeReference interfaceType : c.getInterfaces()) { if (!isSubType(type, interfaceType, capture)) { return false; } } return true; } final TypeReference lower = getLowerBound(baseType); if (lower != baseType) { return isSubType(capture ? capture(type) : type, lower, false); } return IS_SUBTYPE_VISITOR.visit(capture ? capture(type) : type, baseType); }
@Override public ResolveResult visitInstanceOfExpression(final InstanceOfExpression node, final Void data) { final ResolveResult childResult = node.getExpression().acceptVisitor(this, data); if (childResult == null) { return new ResolveResult(BuiltinTypes.Boolean); } final TypeReference childType = childResult.getType(); final ResolveResult typeResult = resolveType(node.getType()); if (childType == null || typeResult == null || typeResult.getType() == null) { return new ResolveResult(BuiltinTypes.Boolean); } return new PrimitiveResolveResult( BuiltinTypes.Boolean, MetadataHelper.isSubType(typeResult.getType(), childType) ); }
@Override public ResolveResult visitInstanceOfExpression(final InstanceOfExpression node, final Void data) { final ResolveResult childResult = node.getExpression().acceptVisitor(this, data); if (childResult == null) { return new ResolveResult(BuiltinTypes.Boolean); } final TypeReference childType = childResult.getType(); final ResolveResult typeResult = resolveType(node.getType()); if (childType == null || typeResult == null || typeResult.getType() == null) { return new ResolveResult(BuiltinTypes.Boolean); } return new PrimitiveResolveResult( BuiltinTypes.Boolean, MetadataHelper.isSubType(typeResult.getType(), childType) ); }
@Override public ResolveResult visitInstanceOfExpression(final InstanceOfExpression node, final Void data) { final ResolveResult childResult = node.getExpression().acceptVisitor(this, data); if (childResult == null) { return new ResolveResult(BuiltinTypes.Boolean); } final TypeReference childType = childResult.getType(); final ResolveResult typeResult = resolveType(node.getType()); if (childType == null || typeResult == null || typeResult.getType() == null) { return new ResolveResult(BuiltinTypes.Boolean); } return new PrimitiveResolveResult( BuiltinTypes.Boolean, MetadataHelper.isSubType(typeResult.getType(), childType) ); }