@Override public WildcardType doMerge(WildcardType first, WildcardType second) { WildcardType wt = new WildcardType(); wt.setAnnotations(mergeCollections(first.getAnnotations(),second.getAnnotations())); wt.setExtends(mergeSingle(first.getExtends(),second.getExtends())); wt.setSuper(mergeSingle(first.getSuper(),second.getSuper())); return first; }
@Override public boolean doIsEquals(WildcardType first, WildcardType second) { if (!isEqualsUseMerger(first.getExtends(), second.getExtends())) return false; if (!isEqualsUseMerger(first.getSuper(), second.getSuper())) return false; return true; } }
} else if (type instanceof WildcardType) { WildcardType wildcardType = (WildcardType) type; if (wildcardType.getExtendedTypes().isPresent() && !wildcardType.getSuperTypes().isPresent()) { return ResolvedWildcard.extendsBound(convertToUsage(wildcardType.getExtendedTypes().get(), context)); // removed (ReferenceTypeImpl) } else if (!wildcardType.getExtendedTypes().isPresent() && wildcardType.getSuperTypes().isPresent()) { return ResolvedWildcard.superBound(convertToUsage(wildcardType.getSuperTypes().get(), context)); // removed (ReferenceTypeImpl) } else if (!wildcardType.getExtendedTypes().isPresent() && !wildcardType.getSuperTypes().isPresent()) { return ResolvedWildcard.UNBOUNDED; } else { throw new UnsupportedOperationException(wildcardType.toString());
} else if (type instanceof WildcardType) { WildcardType wildcardType = (WildcardType) type; if (wildcardType.getExtendedType().isPresent() && !wildcardType.getSuperType().isPresent()) { return ResolvedWildcard.extendsBound(convertToUsage(wildcardType.getExtendedType().get(), context)); // removed (ReferenceTypeImpl) } else if (!wildcardType.getExtendedType().isPresent() && wildcardType.getSuperType().isPresent()) { return ResolvedWildcard.superBound(convertToUsage(wildcardType.getSuperType().get(), context)); // removed (ReferenceTypeImpl) } else if (!wildcardType.getExtendedType().isPresent() && !wildcardType.getSuperType().isPresent()) { return ResolvedWildcard.UNBOUNDED; } else { throw new UnsupportedOperationException(wildcardType.toString());
} else if (type instanceof WildcardType) { WildcardType wildcardType = (WildcardType) type; if (wildcardType.getExtendedTypes().isPresent() && !wildcardType.getSuperTypes().isPresent()) { return ResolvedWildcard.extendsBound(convertToUsage(wildcardType.getExtendedTypes().get(), context)); // removed (ReferenceTypeImpl) } else if (!wildcardType.getExtendedTypes().isPresent() && wildcardType.getSuperTypes().isPresent()) { return ResolvedWildcard.superBound(convertToUsage(wildcardType.getSuperTypes().get(), context)); // removed (ReferenceTypeImpl) } else if (!wildcardType.getExtendedTypes().isPresent() && !wildcardType.getSuperTypes().isPresent()) { return ResolvedWildcard.UNBOUNDED; } else { throw new UnsupportedOperationException(wildcardType.toString());
@Nullable private ClassOrInterfaceType getReferencedType(@Nonnull Type type) { final Type nestedType; if (ReferenceType.class.isInstance(type)) { nestedType = ReferenceType.class.cast(type).getType(); } else if (WildcardType.class.isInstance(type)) { WildcardType wildcardType = WildcardType.class.cast(type); ReferenceType referenceType = wildcardType.getExtends(); if (referenceType == null) { referenceType = wildcardType.getSuper(); } if (referenceType == null) { // unbounded wildcard - nothing ro refer to return null; } nestedType = referenceType.getType(); } else { logger.warn("Encountered unexpected Type [{}:{}]; please create an issue at https://github.com/ImmobilienScout24/deadcode4j.", type.getClass(), type); return null; } if (PrimitiveType.class.isInstance(nestedType)) { // references to primitives won't be reported return null; } if (!ClassOrInterfaceType.class.isInstance(nestedType)) { logger.warn("[{}:{}] is no ClassOrInterfaceType; please create an issue at https://github.com/ImmobilienScout24/deadcode4j.", type.getClass(), type); return null; } return ClassOrInterfaceType.class.cast(nestedType); }