Copyright (c) 2000, 2019 IBM Corporation and others. This program and the accompanying materials are made available under the terms of the Eclipse Public License 2.0 which accompanies this distribution, and is available at https://www.eclipse.org/legal/epl-2.0/ SPDX-License-Identifier: EPL-2.0 Contributors: IBM Corporation - initial API and implementation Red Hat Inc. - refactored to jdt.core.manipulation
/******************************************************************************* * Copyright (c) 2000, 2019 IBM Corporation and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 * which accompanies this distribution, and is available at * https://www.eclipse.org/legal/epl-2.0/ * * SPDX-License-Identifier: EPL-2.0 * * Contributors: * IBM Corporation - initial API and implementation * Red Hat Inc. - refactored to jdt.core.manipulation *******************************************************************************/
package org.eclipse.jdt.internal.corext.dom; import org.eclipse.core.runtime.Assert; import org.eclipse.jdt.core.dom.ASTMatcher; import org.eclipse.jdt.core.dom.ASTNode; import org.eclipse.jdt.core.dom.IBinding; import org.eclipse.jdt.core.dom.SimpleName; public class JdtASTMatcher extends ASTMatcher { @Override public boolean match(SimpleName node, Object other) { boolean isomorphic= super.match(node, other); if (! isomorphic || !(other instanceof SimpleName)) return false; SimpleName name= (SimpleName)other; IBinding nodeBinding= node.resolveBinding(); IBinding otherBinding= name.resolveBinding(); if (nodeBinding == null) { if (otherBinding != null) { return false; } } else { if (nodeBinding != otherBinding) { return false; } } if (node.resolveTypeBinding() != name.resolveTypeBinding()) return false; return true; } public static boolean doNodesMatch(ASTNode one, ASTNode other) { Assert.isNotNull(one); Assert.isNotNull(other); return one.subtreeMatch(new JdtASTMatcher(), other); } }