private MethodDefinition findMethodInType(TypeDefinition typeDef, String uniqueStr) { String[] linkParts = uniqueStr.split("\\|"); if (linkParts.length != 5) return null; String methodName = linkParts[3]; String methodErasedSignature = linkParts[4]; if (methodName.trim().length() <= 0 || methodErasedSignature.trim().length() <= 0) return null; List<MethodDefinition> declaredMethods = typeDef.getDeclaredMethods(); if (declaredMethods == null) return null; boolean isFound = false; for (MethodDefinition declaredMethod : declaredMethods) { isFound = (declaredMethod != null && methodName.equals(declaredMethod.getName())); isFound = (isFound && methodErasedSignature.equals(declaredMethod.getErasedSignature())); if (isFound) { if (declaredMethod.isSynthetic() && !settings.getShowSyntheticMembers()) { return null; } else { return declaredMethod; } } } return null; }
@Override public boolean test(final MethodDefinition m) { return m.isConstructor() && !m.isSynthetic() && !StringUtilities.equals(m.getErasedSignature(), method.getErasedSignature()); } }
@Override public boolean test(final MethodDefinition m) { return m.isConstructor() && !m.isSynthetic() && !StringUtilities.equals(m.getErasedSignature(), method.getErasedSignature()); } }
@Override public boolean test(final MethodDefinition m) { return m.isConstructor() && !m.isSynthetic() && !StringUtilities.equals(m.getErasedSignature(), method.getErasedSignature()); } }
public static MethodDefinition findMethod(TypeDefinition td, MemberInfo mi) { if(td == null) return null; for(MethodDefinition decl : td.getDeclaredMethods()) { if(decl.getName().equals(mi.getName())) { String sig1 = decl.getErasedSignature(); String sig2 = mi.getSignature(); if(sig1 == sig2) return decl; if(sig1.substring(0, sig1.indexOf(')')).equals(sig2.substring(0, sig2.indexOf(')')))) return decl; } } return null; }
public static boolean isMain(MethodDefinition md) { return md.getName().equals("main") && md.isPublic() && md.isStatic() && md.getErasedSignature().startsWith("([Ljava/lang/String;)"); }
@AstVisitor(nodes = AstNodes.ROOT) public void checkSameAsConstructor(Block root, MethodDefinition md, TypeDefinition td, MethodContext mc) { if (md.getName().equals(td.getSimpleName()) && md.getReturnType().isVoid() && !md.isDeprecated()) { int priority = 0; if (root.getBody().isEmpty()) { priority += 20; } else if (root.getBody().size() == 1 && Nodes.isOp(root.getBody().get(0), AstCode.AThrow)) { priority += 40; } if (td.getDeclaredMethods().stream().anyMatch( m -> m.isConstructor() && m.getErasedSignature().equals(md.getErasedSignature()))) { priority += 10; } mc.report("BadNameOfMethodSameAsConstructor", priority); } }
@Override public boolean equals(final Object obj) { if (obj instanceof MethodDefinition) { final MethodDefinition other = (MethodDefinition) obj; return StringUtilities.equals(getName(), other.getName()) && StringUtilities.equals(getErasedSignature(), other.getErasedSignature()) && typeNamesMatch(getDeclaringType(), other.getDeclaringType()); } return false; }
@Override public boolean equals(final Object obj) { if (obj instanceof MethodDefinition) { final MethodDefinition other = (MethodDefinition) obj; return StringUtilities.equals(getName(), other.getName()) && StringUtilities.equals(getErasedSignature(), other.getErasedSignature()) && typeNamesMatch(getDeclaringType(), other.getDeclaringType()); } return false; }
@Override public boolean equals(final Object obj) { if (obj instanceof MethodDefinition) { final MethodDefinition other = (MethodDefinition) obj; return StringUtilities.equals(getName(), other.getName()) && StringUtilities.equals(getErasedSignature(), other.getErasedSignature()) && typeNamesMatch(getDeclaringType(), other.getDeclaringType()); } return false; }
static MethodDefinition getMethod(final List<MethodDefinition> candidates, final MethodReference reference) { final String erasedSignature = reference.getErasedSignature(); for (int i = 0, n = candidates.size(); i < n; i++) { final MethodDefinition candidate = candidates.get(i); if (!StringComparator.Ordinal.equals(candidate.getName(), reference.getName())) { continue; } if (StringComparator.Ordinal.equals(candidate.getErasedSignature(), erasedSignature)) { return candidate; } if (reference.hasGenericParameters()) { if (!candidate.hasGenericParameters() || candidate.getGenericParameters().size() != reference.getGenericParameters().size()) { continue; } } if (!StringComparator.Ordinal.equals(candidate.getErasedSignature(), erasedSignature)) { continue; } return candidate; } return null; }
static MethodDefinition getMethod(final List<MethodDefinition> candidates, final MethodReference reference) { final String erasedSignature = reference.getErasedSignature(); for (int i = 0, n = candidates.size(); i < n; i++) { final MethodDefinition candidate = candidates.get(i); if (!StringComparator.Ordinal.equals(candidate.getName(), reference.getName())) { continue; } if (StringComparator.Ordinal.equals(candidate.getErasedSignature(), erasedSignature)) { return candidate; } if (reference.hasGenericParameters()) { if (!candidate.hasGenericParameters() || candidate.getGenericParameters().size() != reference.getGenericParameters().size()) { continue; } } if (!StringComparator.Ordinal.equals(candidate.getErasedSignature(), erasedSignature)) { continue; } return candidate; } return null; }
static MethodDefinition getMethod(final List<MethodDefinition> candidates, final MethodReference reference) { final String erasedSignature = reference.getErasedSignature(); for (int i = 0, n = candidates.size(); i < n; i++) { final MethodDefinition candidate = candidates.get(i); if (!StringComparator.Ordinal.equals(candidate.getName(), reference.getName())) { continue; } if (StringComparator.Ordinal.equals(candidate.getErasedSignature(), erasedSignature)) { return candidate; } if (reference.hasGenericParameters()) { if (!candidate.hasGenericParameters() || candidate.getGenericParameters().size() != reference.getGenericParameters().size()) { continue; } } if (!StringComparator.Ordinal.equals(candidate.getErasedSignature(), erasedSignature)) { continue; } return candidate; } return null; }
private boolean areMethodsEquivalent(final MethodReference m1, final MethodDefinition m2) { if (m1 == m2) { return true; } //noinspection SimplifiableIfStatement if (m1 == null || m2 == null) { return false; } return StringUtilities.equals(m1.getFullName(), m2.getFullName()) && StringUtilities.equals(m1.getErasedSignature(), m2.getErasedSignature()); } }
private boolean areMethodsEquivalent(final MethodReference m1, final MethodDefinition m2) { if (m1 == m2) { return true; } if (m1 == null || m2 == null) { return false; } return StringUtilities.equals(m1.getFullName(), m2.getFullName()) && StringUtilities.equals(m1.getErasedSignature(), m2.getErasedSignature()); } }
private boolean areMethodsEquivalent(final MethodReference m1, final MethodDefinition m2) { if (m1 == m2) { return true; } if (m1 == null || m2 == null) { return false; } return StringUtilities.equals(m1.getFullName(), m2.getFullName()) && StringUtilities.equals(m1.getErasedSignature(), m2.getErasedSignature()); } }
private static boolean areEquivalent(final GenericParameter a, final GenericParameter b) { if (a.getPosition() != b.getPosition()) { return false; } final IGenericParameterProvider ownerA = a.getOwner(); final IGenericParameterProvider ownerB = b.getOwner(); if (ownerA instanceof TypeDefinition) { return ownerB instanceof TypeDefinition && areEquivalent((TypeDefinition) ownerA, (TypeDefinition) ownerB); } if (ownerA instanceof MethodDefinition) { if (!(ownerB instanceof MethodDefinition)) { return false; } final MethodDefinition methodA = (MethodDefinition) ownerA; final MethodDefinition methodB = (MethodDefinition) ownerB; return areEquivalent(methodA.getDeclaringType(), methodB.getDeclaringType()) && StringUtilities.equals(methodA.getErasedSignature(), methodB.getErasedSignature()); } return true; }
private static boolean areEquivalent(final GenericParameter a, final GenericParameter b) { if (a.getPosition() != b.getPosition()) { return false; } final IGenericParameterProvider ownerA = a.getOwner(); final IGenericParameterProvider ownerB = b.getOwner(); if (ownerA instanceof TypeDefinition) { return ownerB instanceof TypeDefinition && areEquivalent((TypeDefinition) ownerA, (TypeDefinition) ownerB); } if (ownerA instanceof MethodDefinition) { if (!(ownerB instanceof MethodDefinition)) { return false; } final MethodDefinition methodA = (MethodDefinition) ownerA; final MethodDefinition methodB = (MethodDefinition) ownerB; return areEquivalent(methodA.getDeclaringType(), methodB.getDeclaringType()) && StringUtilities.equals(methodA.getErasedSignature(), methodB.getErasedSignature()); } return true; }
private static boolean areEquivalent(final GenericParameter a, final GenericParameter b) { if (a.getPosition() != b.getPosition()) { return false; } final IGenericParameterProvider ownerA = a.getOwner(); final IGenericParameterProvider ownerB = b.getOwner(); if (ownerA instanceof TypeDefinition) { return ownerB instanceof TypeDefinition && areEquivalent((TypeDefinition) ownerA, (TypeDefinition) ownerB); } if (ownerA instanceof MethodDefinition) { if (!(ownerB instanceof MethodDefinition)) { return false; } final MethodDefinition methodA = (MethodDefinition) ownerA; final MethodDefinition methodB = (MethodDefinition) ownerB; return areEquivalent(methodA.getDeclaringType(), methodB.getDeclaringType()) && StringUtilities.equals(methodA.getErasedSignature(), methodB.getErasedSignature()); } return true; }
public static MethodDefinition resolveToBridge(MethodDefinition md) { if (md.isBridgeMethod()) { return md; } for (MethodDefinition candidate : md.getDeclaringType().getDeclaredMethods()) { if (candidate.getName().equals(md.getName()) && candidate.isBridgeMethod()) { List<ParameterDefinition> params = candidate.getParameters(); if (params.size() == md.getParameters().size()) { MethodBody body = candidate.getBody(); if (body != null) { for (Instruction instr : body.getInstructions()) { if (instr.getOperandCount() == 1) { Object operand = instr.getOperand(0); if (operand instanceof MethodReference) { MethodReference mr = (MethodReference) operand; if (mr.getName().equals(md.getName()) && mr.getErasedSignature().equals(md .getErasedSignature()) && mr.getDeclaringType().isEquivalentTo(md .getDeclaringType())) { return candidate; } } } } } } } } return md; }