@Override public List<TypeReference> visitClassType(final TypeReference t, final Void ignored) { final TypeDefinition r = t.resolve(); if (r == null) { return Collections.emptyList(); } final List<TypeReference> interfaces = r.getExplicitInterfaces(); if (r.isGenericDefinition()) { if (t.isGenericDefinition()) { return interfaces; } if (isRawType(t)) { return eraseRecursive(interfaces); } final List<? extends TypeReference> formal = getTypeArguments(r); final List<? extends TypeReference> actual = getTypeArguments(t); final ArrayList<TypeReference> result = new ArrayList<>(); final Map<TypeReference, TypeReference> mappings = new HashMap<>(); for (int i = 0, n = formal.size(); i < n; i++) { mappings.put(formal.get(i), actual.get(i)); } for (int i = 0, n = interfaces.size(); i < n; i++) { result.add(substituteGenericArguments(interfaces.get(i), mappings)); } return result; } return interfaces; }
@Override public List<TypeReference> visitClassType(final TypeReference t, final Void ignored) { final TypeDefinition r = t.resolve(); if (r == null) { return Collections.emptyList(); } final List<TypeReference> interfaces = r.getExplicitInterfaces(); if (r.isGenericDefinition()) { if (t.isGenericDefinition()) { return interfaces; } if (isRawType(t)) { return eraseRecursive(interfaces); } final List<? extends TypeReference> formal = getTypeArguments(r); final List<? extends TypeReference> actual = getTypeArguments(t); final ArrayList<TypeReference> result = new ArrayList<>(); final Map<TypeReference, TypeReference> mappings = new HashMap<>(); for (int i = 0, n = formal.size(); i < n; i++) { mappings.put(formal.get(i), actual.get(i)); } for (int i = 0, n = interfaces.size(); i < n; i++) { result.add(substituteGenericArguments(interfaces.get(i), mappings)); } return result; } return interfaces; }
@Override public List<TypeReference> visitClassType(final TypeReference t, final Void ignored) { final TypeDefinition r = t.resolve(); if (r == null) { return Collections.emptyList(); } final List<TypeReference> interfaces = r.getExplicitInterfaces(); if (r.isGenericDefinition()) { if (t.isGenericDefinition()) { return interfaces; } if (isRawType(t)) { return eraseRecursive(interfaces); } final List<? extends TypeReference> formal = getTypeArguments(r); final List<? extends TypeReference> actual = getTypeArguments(t); final ArrayList<TypeReference> result = new ArrayList<>(); final Map<TypeReference, TypeReference> mappings = new HashMap<>(); for (int i = 0, n = formal.size(); i < n; i++) { mappings.put(formal.get(i), actual.get(i)); } for (int i = 0, n = interfaces.size(); i < n; i++) { result.add(substituteGenericArguments(interfaces.get(i), mappings)); } return result; } return interfaces; }
public static TypeReference asSubType(final TypeReference type, final TypeReference baseType) { VerifyArgument.notNull(type, "type"); VerifyArgument.notNull(baseType, "baseType"); TypeReference effectiveType = type; if (type instanceof RawType) { effectiveType = type.getUnderlyingType(); } else if (isRawType(type)) { final TypeDefinition resolvedType = type.resolve(); effectiveType = resolvedType != null ? resolvedType : type; } return AS_SUBTYPE_VISITOR.visit(baseType, effectiveType); }
private static TypeReference adjustDeclaringType(final ResolveResult valueResult, final TypeReference declaringType) { if (valueResult.getType().isGenericType() && (declaringType.isGenericType() || MetadataHelper.isRawType(declaringType))) { final TypeReference asSuper = MetadataHelper.asSuper(declaringType, valueResult.getType()); if (asSuper != null) { return asSuper; } } return declaringType; }
public static TypeReference asSubType(final TypeReference type, final TypeReference baseType) { VerifyArgument.notNull(type, "type"); VerifyArgument.notNull(baseType, "baseType"); TypeReference effectiveType = type; if (type instanceof RawType) { effectiveType = type.getUnderlyingType(); } else if (isRawType(type)) { final TypeDefinition resolvedType = type.resolve(); effectiveType = resolvedType != null ? resolvedType : type; } return AS_SUBTYPE_VISITOR.visit(baseType, effectiveType); }
public static TypeReference asSubType(final TypeReference type, final TypeReference baseType) { VerifyArgument.notNull(type, "type"); VerifyArgument.notNull(baseType, "baseType"); TypeReference effectiveType = type; if (type instanceof RawType) { effectiveType = type.getUnderlyingType(); } else if (isRawType(type)) { final TypeDefinition resolvedType = type.resolve(); effectiveType = resolvedType != null ? resolvedType : type; } return AS_SUBTYPE_VISITOR.visit(baseType, effectiveType); }
if (!(mappedType instanceof RawType) && MetadataHelper.isRawType(mappedType)) { final TypeReference bound = MetadataHelper.getUpperBound(t); final TypeReference asSuper = MetadataHelper.asSuper(mappedType, bound);
if (!(mappedType instanceof RawType) && MetadataHelper.isRawType(mappedType)) { final TypeReference bound = MetadataHelper.getUpperBound(t); final TypeReference asSuper = MetadataHelper.asSuper(mappedType, bound);
@Override public Boolean visitClassType(final TypeReference t, final TypeReference s) { if (t == s) { return true; } if (!(t instanceof RawType) && isRawType(t)) { final TypeDefinition tResolved = t.resolve(); if (tResolved != null) { return visitClassType(tResolved, s); } } if (!(s instanceof RawType) && isRawType(s)) { final TypeDefinition sResolved = s.resolve(); if (sResolved != null) { return visitClassType(t, sResolved); } } if (t.isGenericDefinition()) { return s.isGenericDefinition() && StringUtilities.equals(t.getInternalName(), s.getInternalName()) && visit(t.getDeclaringType(), s.getDeclaringType()); } return s.getSimpleType() == JvmType.Object && StringUtilities.equals(t.getInternalName(), s.getInternalName()) && //isSameType(t.getDeclaringType(), s.getDeclaringType(), false) && containsTypes(getTypeArguments(t), getTypeArguments(s)); }
private static boolean isSubtypeUncheckedInternal(final TypeReference t, final TypeReference s) { if (t == s) { return true; } if (t == null || s == null) { return false; } if (t.isArray() && s.isArray()) { if (t.getElementType().isPrimitive()) { return isSameType(getElementType(t), getElementType(s)); } else { return isSubTypeUnchecked(getElementType(t), getElementType(s)); } } else if (isSubType(t, s)) { return true; } else if (t.isGenericParameter() && t.hasExtendsBound()) { return isSubTypeUnchecked(getUpperBound(t), s); } else if (!isRawType(s)) { final TypeReference t2 = asSuper(s, t); if (t2 != null && isRawType(t2)) { return true; } } return false; }
private static boolean isSubtypeUncheckedInternal(final TypeReference t, final TypeReference s) { if (t == s) { return true; } if (t == null || s == null) { return false; } if (t.isArray() && s.isArray()) { if (t.getElementType().isPrimitive()) { return isSameType(getElementType(t), getElementType(s)); } else { return isSubTypeUnchecked(getElementType(t), getElementType(s)); } } else if (isSubType(t, s)) { return true; } else if (t.isGenericParameter() && t.hasExtendsBound()) { return isSubTypeUnchecked(getUpperBound(t), s); } else if (!isRawType(s)) { final TypeReference t2 = asSuper(s, t); if (t2 != null && isRawType(t2)) { return true; } } return false; }
private static boolean isSubtypeUncheckedInternal(final TypeReference t, final TypeReference s) { if (t == s) { return true; } if (t == null || s == null) { return false; } if (t.isArray() && s.isArray()) { if (t.getElementType().isPrimitive()) { return isSameType(getElementType(t), getElementType(s)); } else { return isSubTypeUnchecked(getElementType(t), getElementType(s)); } } else if (isSubType(t, s)) { return true; } else if (t.isGenericParameter() && t.hasExtendsBound()) { return isSubTypeUnchecked(getUpperBound(t), s); } else if (!isRawType(s)) { final TypeReference t2 = asSuper(s, t); if (t2 != null && isRawType(t2)) { return true; } } return false; }
private boolean shouldInferVariableType(final Variable variable) { final VariableDefinition variableDefinition = variable.getOriginalVariable(); if (variable.isGenerated() || variable.isLambdaParameter()) { return true; } final ParameterDefinition parameter = variable.getOriginalParameter(); if (parameter != null) { if (parameter == _context.getCurrentMethod().getBody().getThisParameter()) { return false; } final TypeReference parameterType = parameter.getParameterType(); return !_preserveMetadataGenericTypes && (parameterType.isGenericType() || MetadataHelper.isRawType(parameterType)); } //noinspection RedundantIfStatement if (variableDefinition != null && variableDefinition.isFromMetadata() && (variableDefinition.getVariableType().isGenericType() ? _preserveMetadataGenericTypes : _preserveMetadataTypes)) { return false; } return true; }
private boolean shouldInferVariableType(final Variable variable) { final VariableDefinition variableDefinition = variable.getOriginalVariable(); if (variable.isGenerated() || variable.isLambdaParameter()) { return true; } if (variable.isParameter()) { final ParameterDefinition parameter = variable.getOriginalParameter(); if (parameter == _context.getCurrentMethod().getBody().getThisParameter()) { return false; } final TypeReference parameterType = parameter.getParameterType(); return !_preserveMetadataGenericTypes && (parameterType.isGenericType() || MetadataHelper.isRawType(parameterType)); } //noinspection RedundantIfStatement if (variableDefinition != null && variableDefinition.isFromMetadata() && (variableDefinition.getVariableType().isGenericType() ? _preserveMetadataGenericTypes : _preserveMetadataTypes)) { return false; } return true; }
private boolean shouldInferVariableType(final Variable variable) { final VariableDefinition variableDefinition = variable.getOriginalVariable(); if (variable.isGenerated() || variable.isLambdaParameter()) { return true; } if (variable.isParameter()) { final ParameterDefinition parameter = variable.getOriginalParameter(); if (parameter == _context.getCurrentMethod().getBody().getThisParameter()) { return false; } final TypeReference parameterType = parameter.getParameterType(); return !_preserveMetadataGenericTypes && (parameterType.isGenericType() || MetadataHelper.isRawType(parameterType)); } //noinspection RedundantIfStatement if (variableDefinition != null && variableDefinition.isFromMetadata() && (variableDefinition.getVariableType().isGenericType() ? _preserveMetadataGenericTypes : _preserveMetadataTypes)) { return false; } return true; }
MetadataHelper.isRawType(declaringType))) {
MetadataHelper.isRawType(declaringType))) {