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 Boolean visitGenericParameter(final GenericParameter t, final TypeReference s) { if (s instanceof GenericParameter) { // // Type substitution does not preserve type variable types; check that type variable // bounds are indeed the same. // return areSameGenericParameters(t, (GenericParameter) s); } // // Special case for s == ? super X, where upper(s) == u; check that u == t. // return s.hasSuperBound() && !s.hasExtendsBound() && visit(t, getUpperBound(s)); }
@Override public Boolean visitGenericParameter(final GenericParameter t, final TypeReference s) { if (s instanceof GenericParameter) { // // Type substitution does not preserve type variable types; check that type variable // bounds are indeed the same. // return areSameGenericParameters(t, (GenericParameter) s); } // // Special case for s == ? super X, where upper(s) == u; check that u == t. // return s.hasSuperBound() && !s.hasExtendsBound() && visit(t, getUpperBound(s)); }
@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 Boolean visitGenericParameter(final GenericParameter t, final TypeReference s) { if (s instanceof GenericParameter) { // // Type substitution does not preserve type variable types; check that type variable // bounds are indeed the same. // return areSameGenericParameters(t, (GenericParameter) s); } // // Special case for s == ? super X, where upper(s) == u; check that u == t. // return s.hasSuperBound() && !s.hasExtendsBound() && visit(t, getUpperBound(s)); }
@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 @SuppressWarnings("StatementWithEmptyBody") public Void visitGenericParameter(final GenericParameter source, final TypeReference target) { TypeReference value = mapping.get(source); if (value != null) { if (value.hasSuperBound() && target.hasSuperBound()) { value = isSubType(getLowerBound(value), getLowerBound(target)) ? target : value; } else if (value.hasExtendsBound() && target.hasExtendsBound()) { value = isSubType(getUpperBound(value), getUpperBound(target)) ? value : target; } else if (value.isWildcardType() && value.isUnbounded()) { // do nothing } else if (!isSameType(value, target)) { throw new AdaptFailure(); } } else { value = target; from.append(source); to.append(target); } mapping.put(source, value); return null; } }
private TypeReference toRawType(TypeReference type) { if(type.hasExtendsBound()) return toRawType(type.getExtendsBound()); if(type.hasSuperBound()) return BuiltinTypes.Object; if(type instanceof GenericParameter) return toRawType(type.getUnderlyingType()); if(!type.isGenericType()) return type; try { return type.getRawType(); } catch (UnsupportedOperationException e) { return BuiltinTypes.Object; } }
@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; } }