@Override public Boolean visitWildcardType(final Type type, final Type parameter) { return parameter.hasSuperBound() && !parameter.hasExtendsBound() && visit(type, upperBound(parameter)); }
@Override public Boolean visitWildcardType(final Type type, final Type parameter) { return parameter.hasSuperBound() && !parameter.hasExtendsBound() && visit(type, upperBound(parameter)); }
@Override public Boolean visitWildcardType(final Type type, final Type parameter) { return parameter.hasSuperBound() && !parameter.hasExtendsBound() && visit(type, upperBound(parameter)); }
@Override public Void visitWildcardType(final Type<?> type, final MemberInfo scope) { super.visitWildcardType(type, scope); if (type.isUnbounded()) { return null; } if (type.hasSuperBound()) { _frames.push(new VerifierFrame(FrameType.TYPE_BOUND, type.getSuperBound())); visit(type.getSuperBound(), scope); _frames.pop(); } else { _frames.push(new VerifierFrame(FrameType.TYPE_BOUND, type.getExtendsBound())); visit(type.getExtendsBound(), scope); _frames.pop(); } return null; }
private Type U(Type t) { while (t.isWildcardType()) { if (t.hasSuperBound()) { final Type lowerBound = t.getSuperBound(); if (lowerBound.hasExtendsBound()) { return lowerBound.getExtendsBound(); } return Types.Object; } t = t.getExtendsBound(); } return t; }
private Type U(Type t) { while (t.isWildcardType()) { if (t.hasSuperBound()) { final Type lowerBound = t.getSuperBound(); if (lowerBound.hasExtendsBound()) { return lowerBound.getExtendsBound(); } return Types.Object; } t = t.getExtendsBound(); } return t; }
private Type U(Type t) { while (t.isWildcardType()) { if (t.hasSuperBound()) { final Type lowerBound = t.getSuperBound(); if (lowerBound.hasExtendsBound()) { return lowerBound.getExtendsBound(); } return Types.Object; } t = t.getExtendsBound(); } return t; }
@Override public Type visitWildcardType(final Type t, final Void ignored) { if (t.hasSuperBound()) { final Type lowerBound = t.getSuperBound(); if (lowerBound.hasExtendsBound()) { return visit(lowerBound.getExtendsBound()); } return Types.Object; } else { return visit(t.getExtendsBound()); } }
@Override public Type visitWildcardType(final Type t, final Void ignored) { if (t.hasSuperBound()) { final Type lowerBound = t.getSuperBound(); if (lowerBound.hasExtendsBound()) { return visit(lowerBound.getExtendsBound()); } return Types.Object; } else { return visit(t.getExtendsBound()); } }
@Override public Type visitWildcardType(final Type t, final Void ignored) { if (t.hasSuperBound()) { final Type lowerBound = t.getSuperBound(); if (lowerBound.hasExtendsBound()) { return visit(lowerBound.getExtendsBound()); } return Types.Object; } else { return visit(t.getExtendsBound()); } }
public static boolean isSameWildcard(final Type t, final Type p) { if (!p.isWildcardType() || !t.isWildcardType()) { return false; } if (p.isUnbounded()) { return t.isUnbounded(); } if (p.hasSuperBound()) { return t.hasSuperBound() && isSameType(p.getSuperBound(), t.getSuperBound()); } return p.hasExtendsBound() && t.hasExtendsBound() && isSameType(p.getExtendsBound(), t.getExtendsBound()); }
public static boolean isSameWildcard(final Type t, final Type p) { if (!p.isWildcardType() || !t.isWildcardType()) { return false; } if (p.isUnbounded()) { return t.isUnbounded(); } if (p.hasSuperBound()) { return t.hasSuperBound() && isSameType(p.getSuperBound(), t.getSuperBound()); } return p.hasExtendsBound() && t.hasExtendsBound() && isSameType(p.getExtendsBound(), t.getExtendsBound()); }
public static boolean isSameWildcard(final Type t, final Type p) { if (!p.isWildcardType() || !t.isWildcardType()) { return false; } if (p.isUnbounded()) { return t.isUnbounded(); } if (p.hasSuperBound()) { return t.hasSuperBound() && isSameType(p.getSuperBound(), t.getSuperBound()); } return p.hasExtendsBound() && t.hasExtendsBound() && isSameType(p.getExtendsBound(), t.getExtendsBound()); }
@Override public Void visitWildcardType(final Type source, final Type target) throws AdaptFailure { if (source.hasExtendsBound()) { adaptRecursive(upperBound(source), upperBound(target)); } else if (source.hasSuperBound()) { adaptRecursive(lowerBound(source), lowerBound(target)); } return null; }
@Override public Void visitWildcardType(final Type source, final Type target) throws AdaptFailure { if (source.hasExtendsBound()) { adaptRecursive(upperBound(source), upperBound(target)); } else if (source.hasSuperBound()) { adaptRecursive(lowerBound(source), lowerBound(target)); } return null; }
@Override public Void visitWildcardType(final Type source, final Type target) throws AdaptFailure { if (source.hasExtendsBound()) { adaptRecursive(upperBound(source), upperBound(target)); } else if (source.hasSuperBound()) { adaptRecursive(lowerBound(source), lowerBound(target)); } return null; }
@Override public Boolean visitWildcardType(final Type t, final Type p) { return isSameWildcard(t, p) || isCaptureOf(p, t) || ((t.hasExtendsBound() || isSubtypeNoCapture(L(t), lowerBound(p))) && (t.hasSuperBound() || isSubtypeNoCapture(upperBound(p), U(t)))); } };
@Override public Boolean visitWildcardType(final Type t, final Type p) { return isSameWildcard(t, p) || isCaptureOf(p, t) || ((t.hasExtendsBound() || isSubtypeNoCapture(L(t), lowerBound(p))) && (t.hasSuperBound() || isSubtypeNoCapture(upperBound(p), U(t)))); } };
@Override public Boolean visitWildcardType(final Type t, final Type p) { return isSameWildcard(t, p) || isCaptureOf(p, t) || ((t.hasExtendsBound() || isSubtypeNoCapture(L(t), lowerBound(p))) && (t.hasSuperBound() || isSubtypeNoCapture(upperBound(p), U(t)))); } };
public boolean containsGenericParameter(final Type<?> genericParameter) { if (!VerifyArgument.notNull(genericParameter, "genericParameter").isGenericParameter()) { throw Error.notGenericParameter(genericParameter); } if (hasElementType()) { return getRootElementType().containsGenericParameter(genericParameter); } if (isGenericParameter()) { return genericParameter == this || getExtendsBound().containsGenericParameter(genericParameter); } if (isWildcardType()) { return hasSuperBound() && getSuperBound().containsGenericParameter(genericParameter) || getExtendsBound().containsGenericParameter(genericParameter); } if (!isGenericType()) { return false; } final TypeBindings typeArguments = getTypeBindings(); for (int i = 0, n = typeArguments.size(); i < n; i++) { if (typeArguments.getBoundType(i).containsGenericParameters()) { return true; } } return false; }