private TypeReference L(final TypeReference t) { TypeReference current = t; while (current.isWildcardType()) { if (current.isUnbounded() || current.hasExtendsBound()) { return BuiltinTypes.Bottom; } current = current.getSuperBound(); } return current; }
private TypeReference L(final TypeReference t) { TypeReference current = t; while (current.isWildcardType()) { if (current.isUnbounded() || current.hasExtendsBound()) { return BuiltinTypes.Bottom; } current = current.getSuperBound(); } return current; }
private TypeReference L(final TypeReference t) { TypeReference current = t; while (current.isWildcardType()) { if (current.isUnbounded() || current.hasExtendsBound()) { return BuiltinTypes.Bottom; } current = current.getSuperBound(); } return current; }
private TypeReference U(final TypeReference t) { TypeReference current = t; while (current.isWildcardType()) { if (current.isUnbounded()) { return BuiltinTypes.Object; } if (current.hasSuperBound()) { return current.getSuperBound(); } current = current.getExtendsBound(); } return current; }
private TypeReference U(final TypeReference t) { TypeReference current = t; while (current.isWildcardType()) { if (current.isUnbounded()) { return BuiltinTypes.Object; } if (current.hasSuperBound()) { return current.getSuperBound(); } current = current.getExtendsBound(); } return current; }
private TypeReference U(final TypeReference t) { TypeReference current = t; while (current.isWildcardType()) { if (current.isUnbounded()) { return BuiltinTypes.Object; } if (current.hasSuperBound()) { return current.getSuperBound(); } current = current.getExtendsBound(); } return current; }
@Override public TypeReference visitType(final TypeReference t, final Void ignored) { if (t.isWildcardType() || t.isGenericParameter() || t instanceof ICapturedType) { return t.isUnbounded() || t.hasSuperBound() ? BuiltinTypes.Object : visit(t.getExtendsBound()); } return t; }
@Override public TypeReference visitType(final TypeReference t, final Void ignored) { if (t.isWildcardType() || t.isGenericParameter() || t instanceof ICapturedType) { return t.isUnbounded() || t.hasSuperBound() ? BuiltinTypes.Object : visit(t.getExtendsBound()); } return t; }
@Override public TypeReference visitType(final TypeReference t, final Void ignored) { if (t.isWildcardType() || t.isGenericParameter() || t instanceof ICapturedType) { return t.isUnbounded() || t.hasSuperBound() ? BuiltinTypes.Object : visit(t.getExtendsBound()); } return t; }
private static boolean isSameWildcard(final TypeReference t, final TypeReference s) { VerifyArgument.notNull(t, "t"); VerifyArgument.notNull(s, "s"); if (!t.isWildcardType() || !s.isWildcardType()) { return false; } if (t.isUnbounded()) { return s.isUnbounded(); } if (t.hasSuperBound()) { return s.hasSuperBound() && isSameType(t.getSuperBound(), s.getSuperBound()); } return s.hasExtendsBound() && isSameType(t.getExtendsBound(), s.getExtendsBound()); }
private static boolean isSameWildcard(final TypeReference t, final TypeReference s) { VerifyArgument.notNull(t, "t"); VerifyArgument.notNull(s, "s"); if (!t.isWildcardType() || !s.isWildcardType()) { return false; } if (t.isUnbounded()) { return s.isUnbounded(); } if (t.hasSuperBound()) { return s.hasSuperBound() && isSameType(t.getSuperBound(), s.getSuperBound()); } return s.hasExtendsBound() && isSameType(t.getExtendsBound(), s.getExtendsBound()); }
private static boolean isSameWildcard(final TypeReference t, final TypeReference s) { VerifyArgument.notNull(t, "t"); VerifyArgument.notNull(s, "s"); if (!t.isWildcardType() || !s.isWildcardType()) { return false; } if (t.isUnbounded()) { return s.isUnbounded(); } if (t.hasSuperBound()) { return s.hasSuperBound() && isSameType(t.getSuperBound(), s.getSuperBound()); } return s.hasExtendsBound() && isSameType(t.getExtendsBound(), s.getExtendsBound()); }
@Override public Boolean visitWildcard(final WildcardType t, final TypeReference s) { if (s.isWildcardType()) { if (t.isUnbounded()) { return s.isUnbounded(); } if (t.hasExtendsBound()) { return s.hasExtendsBound() && isSameType(t.getExtendsBound(), s.getExtendsBound()); } return s.hasSuperBound() && isSameType(t.getSuperBound(), s.getSuperBound()); } return false; } }
@Override public Boolean visitWildcard(final WildcardType t, final TypeReference s) { if (s.isWildcardType()) { if (t.isUnbounded()) { return s.isUnbounded(); } if (t.hasExtendsBound()) { return s.hasExtendsBound() && isSameType(t.getExtendsBound(), s.getExtendsBound()); } return s.hasSuperBound() && isSameType(t.getSuperBound(), s.getSuperBound()); } return false; } }
@Override public Boolean visitWildcard(final WildcardType t, final TypeReference s) { if (s.isWildcardType()) { if (t.isUnbounded()) { return s.isUnbounded(); } if (t.hasExtendsBound()) { return s.hasExtendsBound() && isSameType(t.getExtendsBound(), s.getExtendsBound()); } return s.hasSuperBound() && isSameType(t.getSuperBound(), s.getSuperBound()); } return false; } }
@Override public Boolean visitWildcard(final WildcardType t, final TypeReference s) { if (s.isWildcardType()) { if (t.isUnbounded()) { return s.isUnbounded(); } if (t.hasExtendsBound()) { return s.hasExtendsBound() && visit(getUpperBound(t), getUpperBound(s)); } if (t.hasSuperBound()) { return s.hasSuperBound() && visit(getLowerBound(t), getLowerBound(s)); } } return Boolean.FALSE; } }
@Override public Boolean visitWildcard(final WildcardType t, final TypeReference s) { if (s.isWildcardType()) { if (t.isUnbounded()) { return s.isUnbounded(); } if (t.hasExtendsBound()) { return s.hasExtendsBound() && visit(getUpperBound(t), getUpperBound(s)); } if (t.hasSuperBound()) { return s.hasSuperBound() && visit(getLowerBound(t), getLowerBound(s)); } } return Boolean.FALSE; } }
@Override public Boolean visitWildcard(final WildcardType t, final TypeReference s) { if (s.isWildcardType()) { if (t.isUnbounded()) { return s.isUnbounded(); } if (t.hasExtendsBound()) { return s.hasExtendsBound() && visit(getUpperBound(t), getUpperBound(s)); } if (t.hasSuperBound()) { return s.hasSuperBound() && visit(getLowerBound(t), getLowerBound(s)); } } return Boolean.FALSE; } }
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); }
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) { switch (getNumericConversionType(target, source)) { case IDENTITY: case IMPLICIT: return true; default: return false; } } return allowUnchecked ? isSubTypeUnchecked(getBoxedTypeOrSelf(source), target) : isSubType(getBoxedTypeOrSelf(source), target); }