@Override public boolean isEquivalentTo(final MemberReference member) { if (super.isEquivalentTo(member)) { return true; } if (member instanceof FieldReference) { final FieldReference field = (FieldReference) member; return StringUtilities.equals(field.getName(), this.getName()) && MetadataResolver.areEquivalent(field.getDeclaringType(), this.getDeclaringType()); } return false; }
@Override public boolean isEquivalentTo(final MemberReference member) { if (super.isEquivalentTo(member)) { return true; } if (member instanceof FieldReference) { final FieldReference field = (FieldReference) member; return StringUtilities.equals(field.getName(), this.getName()) && MetadataResolver.areEquivalent(field.getDeclaringType(), this.getDeclaringType()); } return false; }
@Override public boolean isEquivalentTo(final MemberReference member) { if (super.isEquivalentTo(member)) { return true; } if (member instanceof FieldReference) { final FieldReference field = (FieldReference) member; return StringUtilities.equals(field.getName(), this.getName()) && MetadataResolver.areEquivalent(field.getDeclaringType(), this.getDeclaringType()); } return false; }
@Override public boolean isEquivalentTo(final MemberReference member) { if (super.isEquivalentTo(member)) { return true; } if (member instanceof MethodReference) { final MethodReference method = (MethodReference) member; return StringUtilities.equals(method.getName(), this.getName()) && StringUtilities.equals(method.getErasedSignature(), this.getErasedSignature()) && MetadataResolver.areEquivalent(method.getDeclaringType(), this.getDeclaringType()); } return false; }
@Override public boolean isEquivalentTo(final MemberReference member) { if (super.isEquivalentTo(member)) { return true; } if (member instanceof MethodReference) { final MethodReference method = (MethodReference) member; return StringUtilities.equals(method.getName(), this.getName()) && StringUtilities.equals(method.getErasedSignature(), this.getErasedSignature()) && MetadataResolver.areEquivalent(method.getDeclaringType(), this.getDeclaringType()); } return false; }
@Override public boolean isEquivalentTo(final MemberReference member) { if (super.isEquivalentTo(member)) { return true; } if (member instanceof MethodReference) { final MethodReference method = (MethodReference) member; return StringUtilities.equals(method.getName(), this.getName()) && StringUtilities.equals(method.getErasedSignature(), this.getErasedSignature()) && MetadataResolver.areEquivalent(method.getDeclaringType(), this.getDeclaringType()); } return false; }
@Override public Void visitConditionalExpression(final ConditionalExpression node, final Void data) { super.visitConditionalExpression(node, data); final Match m = PATTERN.match(node); if (m.success()) { final InvocationExpression call = firstOrDefault(m.<InvocationExpression>get("methodCall")); final MemberReference method = call != null ? call.getUserData(Keys.MEMBER_REFERENCE) : null; if (method == null || !method.isEquivalentTo(_method)) { return null; } final PrimitiveExpression className = firstOrDefault(m.<PrimitiveExpression>get("class")); if (className != null && className.getValue() instanceof String) { final AstBuilder builder = context.getUserData(Keys.AST_BUILDER); final String dottedName = (String) className.getValue(); final TypeReference classType = _parser.parseTypeDescriptor(dottedName.replace('.', '/')); final ClassOfExpression replacement = new ClassOfExpression( call.getOffset(), builder.convertType(classType) ); node.replaceWith(replacement); } } return null; }