Package mmrnmhrm.core.search

Source Code of mmrnmhrm.core.search.DeeDefPatternLocator

package mmrnmhrm.core.search;

import java.nio.file.Path;
import java.util.Collection;
import java.util.Iterator;

import mmrnmhrm.core.engine_client.DToolClient_Bad;

import org.eclipse.dltk.core.ISourceModule;
import org.eclipse.dltk.core.search.matching.PatternLocator;

import dtool.ast.ASTNode;
import dtool.ast.definitions.INamedElement;
import dtool.ast.references.CommonQualifiedReference;
import dtool.ast.references.NamedReference;
import dtool.engine.modules.IModuleResolver;

/// XXX: get rid of this class
@Deprecated
public class DeeDefPatternLocator extends AbstractNodePatternMatcher {
 
  /** XXX: DLTK limitation: A global needed to pass parameters for the search.*/
  public static INamedElement GLOBAL_param_defunit;
 
  public final INamedElement defunit;
 
  public DeeDefPatternLocator(DeeMatchLocator deeMatchLocator) {
    super(deeMatchLocator, false, true);
    this.defunit = GLOBAL_param_defunit;
  }
 
  @Override
  public boolean match(ASTNode node, ISourceModule sourceModule, Path filePath) {
    if(node instanceof NamedReference) {
      NamedReference ref = (NamedReference) node;
     
      // don't match qualifieds, the match will be made in its children
      if(node instanceof CommonQualifiedReference)
        return true;
     
      if(!ref.canMatch(defunit.getName()))
        return true;
     
      IModuleResolver mr = DToolClient_Bad.getResolverFor(filePath);
      Collection<INamedElement> defUnits = ref.findTargetDefElements(mr, false);
      if(defUnits == null)
        return true;
      for (Iterator<INamedElement> iter = defUnits.iterator(); iter.hasNext();) {
        INamedElement targetdefunit = iter.next();
        if(defunit.equals(targetdefunit)) {
          deeMatchLocator.addMatch(ref, PatternLocator.ACCURATE_MATCH, sourceModule);
          return true;
        }
      }
    }
    return true;
  }
 
}
TOP

Related Classes of mmrnmhrm.core.search.DeeDefPatternLocator

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.