blob: 7aba7b54de07f8050f9e055ab9f84aa0bf85f003 [file] [log] [blame]
package org.eclipse.dltk.itcl.internal.core.search;
import org.eclipse.dltk.ast.ASTNode;
import org.eclipse.dltk.ast.declarations.FieldDeclaration;
import org.eclipse.dltk.ast.declarations.MethodDeclaration;
import org.eclipse.dltk.ast.expressions.CallExpression;
import org.eclipse.dltk.core.IModelElement;
import org.eclipse.dltk.core.ISourceModule;
import org.eclipse.dltk.core.search.matching.PatternLocator;
import org.eclipse.dltk.internal.core.search.matching.MatchingNodeSet;
import org.eclipse.dltk.itcl.internal.core.parser.ast.IncrTclBodyDeclaration;
import org.eclipse.dltk.itcl.internal.core.parser.ast.IncrTclMethodCallStatement;
import org.eclipse.dltk.tcl.core.extensions.IMatchLocatorExtension;
import org.eclipse.dltk.tcl.internal.core.search.TclMatchLocator;
public class IncrTclMatchLocatorExtension implements IMatchLocatorExtension {
@Override
public void visitGeneral(ASTNode node, PatternLocator locator, MatchingNodeSet nodeSet) {
if (node instanceof IncrTclMethodCallStatement) {
IncrTclMethodCallStatement st = (IncrTclMethodCallStatement) node;
FieldDeclaration instanceVariable = st.getInstanceVariable();
CallExpression call = new CallExpression(instanceVariable, st.getName(), null);
locator.match(call, nodeSet);
}
}
@Override
public IModelElement createMethodHandle(ISourceModule parent, MethodDeclaration method, TclMatchLocator locator) {
if (method instanceof IncrTclBodyDeclaration) {
String methodName = method.getDeclaringTypeName() + "::" + method.getName();
return locator.createMethodHandle(parent, methodName);
}
return null;
}
}