package jetbrains.mps.resolve; /*Generated by MPS */ import org.apache.log4j.Logger; import org.apache.log4j.LogManager; import org.jetbrains.annotations.NotNull; import org.jetbrains.mps.openapi.model.SReference; import org.jetbrains.mps.openapi.model.SNode; import org.jetbrains.mps.openapi.module.SRepository; import jetbrains.mps.scope.Scope; import jetbrains.mps.smodel.constraints.ModelConstraints; import jetbrains.mps.scope.ErrorScope; public class ScopeResolver implements IResolver { private static final Logger LOG = LogManager.getLogger(ScopeResolver.class); public ScopeResolver() { } @Override public boolean resolve(@NotNull final SReference reference, @NotNull final SNode sourceNode, @NotNull final SRepository repository) { Scope refScope = ModelConstraints.getScope(reference); if (refScope instanceof ErrorScope) { LOG.error("Couldn't create referent search scope : " + ((ErrorScope) refScope).getMessage()); return false; } SNode result = null; String resolveInfo = ((jetbrains.mps.smodel.SReference) reference).getResolveInfo(); if (resolveInfo != null) { try { result = refScope.resolve(sourceNode, resolveInfo); } catch (Throwable t) { LOG.warn("Exception was thrown during reference resolving", t); } } if (result == null) { return false; } sourceNode.setReferenceTarget(reference.getLink(), result); return true; } }