private static boolean parentClassImplementsEquals(ClassTree tree) { TypeTree superClass = tree.superClass(); if (superClass != null) { Type superClassType = superClass.symbolType(); while (superClassType.symbol().isTypeSymbol() && !superClassType.is("java.lang.Object")) { Symbol.TypeSymbol superClassSymbol = superClassType.symbol(); Optional<Symbol> equalsMethod = equalsMethod(superClassSymbol); if (equalsMethod.isPresent()) { return !equalsMethod.get().isFinal(); } superClassType = superClassSymbol.superClass(); } } return false; }
private JavaType refinedTypeForConstructor(JavaType capturedReturnType, JavaType refinedReturnType) { JavaType sanitizedCaptured = capturedReturnType; JavaType refinedConstructorType = refinedReturnType; if (refinedConstructorType.symbol().isTypeSymbol() && !((JavaSymbol.TypeJavaSymbol) refinedConstructorType.symbol()).typeParameters().scopeSymbols().isEmpty()) { refinedConstructorType = parametrizedTypeCache.getParametrizedTypeType(refinedConstructorType.symbol, new TypeSubstitution()); } if (sanitizedCaptured.isTagged(JavaType.TYPEVAR)) { sanitizedCaptured = ((TypeVariableJavaType) sanitizedCaptured).bounds.get(0); } if (refinedConstructorType.isParameterized()) { refinedConstructorType = resolve.resolveTypeSubstitutionWithDiamondOperator((ParametrizedTypeJavaType) refinedConstructorType, sanitizedCaptured); } return refinedConstructorType; }
private static boolean parentClassImplementsEquals(ClassTree tree) { TypeTree superClass = tree.superClass(); if (superClass != null) { Type superClassType = superClass.symbolType(); while (superClassType.symbol().isTypeSymbol() && !superClassType.is("java.lang.Object")) { Symbol.TypeSymbol superClassSymbol = superClassType.symbol(); Optional<Symbol> equalsMethod = equalsMethod(superClassSymbol); if (equalsMethod.isPresent()) { return !equalsMethod.get().isFinal(); } superClassType = superClassSymbol.superClass(); } } return false; }
private JavaType refinedTypeForConstructor(JavaType capturedReturnType, JavaType refinedReturnType) { JavaType sanitizedCaptured = capturedReturnType; JavaType refinedConstructorType = refinedReturnType; if (refinedConstructorType.symbol().isTypeSymbol() && !((JavaSymbol.TypeJavaSymbol) refinedConstructorType.symbol()).typeParameters().scopeSymbols().isEmpty()) { refinedConstructorType = parametrizedTypeCache.getParametrizedTypeType(refinedConstructorType.symbol, new TypeSubstitution()); } if (sanitizedCaptured.isTagged(JavaType.TYPEVAR)) { sanitizedCaptured = ((TypeVariableJavaType) sanitizedCaptured).bounds.get(0); } if (refinedConstructorType.isParameterized()) { refinedConstructorType = resolve.resolveTypeSubstitutionWithDiamondOperator((ParametrizedTypeJavaType) refinedConstructorType, sanitizedCaptured); } return refinedConstructorType; }
private static boolean parentClassImplementsEquals(Symbol.TypeSymbol symbol) { Type superClass = symbol.superClass(); while (superClass != null && superClass.symbol().isTypeSymbol()) { Symbol.TypeSymbol superClassSymbol = superClass.symbol(); if (!superClass.is(JAVA_LANG_OBJECT) && hasEqualsMethod(superClassSymbol)) { return true; } superClass = superClassSymbol.superClass(); } return false; }
private static boolean parentClassImplementsEquals(Symbol.TypeSymbol symbol) { Type superClass = symbol.superClass(); while (superClass != null && superClass.symbol().isTypeSymbol()) { Symbol.TypeSymbol superClassSymbol = superClass.symbol(); if (!superClass.is(JAVA_LANG_OBJECT) && hasEqualsMethod(superClassSymbol)) { return true; } superClass = superClassSymbol.superClass(); } return false; }