private boolean printQualified(CtTypeReference<?> ref) { if (importsContext.isImported(ref) // If my.pkg.Something is imported || (this.env.isAutoImports() && ref.getPackage() != null && "java.lang".equals(ref.getPackage().getSimpleName())) // or that we are in java.lang ) { for (CacheBasedConflictFinder typeContext : context.currentThis) { //A) we are in the context of a class which is also called "Something", if (typeContext.getSimpleName().equals(ref.getSimpleName()) && !Objects.equals(typeContext.getPackage(), ref.getPackage())) { return true; } //B) we are in the context of a class which defines field which is also called "Something", // we should still use qualified version my.pkg.Something if (typeContext.hasFieldConflict(ref.getSimpleName()) || typeContext.hasNestedTypeConflict(ref.getSimpleName()) // fix of #2369 ) { return true; } } return false; } else { return true; } }
public void visitCtTypeParameterReference(CtTypeParameterReference ref) { printTypeAnnotations(ref); if (importsContext.isImported(ref)) { write(ref.getSimpleName()); } else { write(ref.getQualifiedName()); } if ((!context.isInvocation || "?".equals(ref.getSimpleName())) && !(ref.getBounds() == null) && !ref.getBounds().isEmpty() && !((ref.getBounds().size() == 1) && "java.lang.Object" .equals(ref.getBounds().get(0).getQualifiedName()))) { if (ref.isUpper()) { write(" extends "); } else { write(" super "); } for (CtTypeReference<?> b : ref.getBounds()) { scan(b); write(" & "); } removeLastChar(); } }
public void visitCtTypeReferenceWithoutGenerics(CtTypeReference<?> ref) { if (ref.isPrimitive()) { write(ref.getSimpleName()); return; } if (importsContext.isImported(ref) && ref.getPackage() != null) { printTypeAnnotations(ref); write(ref.getSimpleName()); } else { if (ref.getDeclaringType() != null) { if (!context.currentThis.contains(ref.getDeclaringType()) || ref.getModifiers().contains(ModifierKind.STATIC) || hasDeclaringTypeWithGenerics(ref)) { if (!context.ignoreEnclosingClass) { boolean ign = context.ignoreGenerics; context.ignoreGenerics = true; scan(ref.getDeclaringType()); write("."); context.ignoreGenerics = ign; } } write(ref.getSimpleName()); } else { write(ref.getQualifiedName()); } } }
public <T> void visitCtTypeReference(CtTypeReference<T> ref) { if (ref.isPrimitive()) { write(ref.getSimpleName()); return; } if (importsContext.isImported(ref) && ref.getPackage() != null) { printTypeAnnotations(ref); write(ref.getSimpleName()); } else { if (ref.getDeclaringType() != null) { if (!context.currentThis.contains(ref.getDeclaringType()) || ref.getModifiers().contains(ModifierKind.STATIC) || hasDeclaringTypeWithGenerics(ref)) { if (!context.ignoreEnclosingClass) { boolean ign = context.ignoreGenerics; context.ignoreGenerics = false; scan(ref.getDeclaringType()); write("."); context.ignoreGenerics = ign; } } write(ref.getSimpleName()); } else { write(ref.getQualifiedName()); } } if (!context.ignoreGenerics) { writeActualTypeArguments(ref); } }