Don't serialize signature to string to check against toString/hashCode/equals
This commit is contained in:
+31
-8
@@ -96,10 +96,14 @@ public final class DescriptorResolverUtils {
|
||||
public static boolean shouldBeInEnumClassObject(@NotNull JavaMethod method) {
|
||||
if (!method.getContainingClass().isEnum()) return false;
|
||||
|
||||
String signature = JavaSignatureFormatter.getInstance().formatMethod(method);
|
||||
|
||||
return "values()".equals(signature) ||
|
||||
"valueOf(java.lang.String)".equals(signature);
|
||||
String name = method.getName().asString();
|
||||
if (name.equals("values")) {
|
||||
return method.getValueParameters().isEmpty();
|
||||
}
|
||||
else if (name.equals("valueOf")) {
|
||||
return isMethodWithOneParameterWithFqName(method, "java.lang.String");
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static boolean isObjectMethodInInterface(@NotNull JavaMember member) {
|
||||
@@ -107,10 +111,29 @@ public final class DescriptorResolverUtils {
|
||||
}
|
||||
|
||||
public static boolean isObjectMethod(@NotNull JavaMethod method) {
|
||||
String signature = JavaSignatureFormatter.getInstance().formatMethod(method);
|
||||
return "hashCode()".equals(signature) ||
|
||||
"equals(java.lang.Object)".equals(signature) ||
|
||||
"toString()".equals(signature);
|
||||
String name = method.getName().asString();
|
||||
if (name.equals("toString") || name.equals("hashCode")) {
|
||||
return method.getValueParameters().isEmpty();
|
||||
}
|
||||
else if (name.equals("equals")) {
|
||||
return isMethodWithOneParameterWithFqName(method, "java.lang.Object");
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private static boolean isMethodWithOneParameterWithFqName(@NotNull JavaMethod method, @NotNull String fqName) {
|
||||
List<JavaValueParameter> parameters = method.getValueParameters();
|
||||
if (parameters.size() == 1) {
|
||||
JavaType type = parameters.get(0).getType();
|
||||
if (type instanceof JavaClassifierType) {
|
||||
JavaClassifier classifier = ((JavaClassifierType) type).getClassifier();
|
||||
if (classifier instanceof JavaClass) {
|
||||
FqName classFqName = ((JavaClass) classifier).getFqName();
|
||||
return classFqName != null && classFqName.asString().equals(fqName);
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
|
||||
Reference in New Issue
Block a user