package jetbrains.mps.resolve;
/*Generated by MPS */
import org.jetbrains.mps.openapi.model.SModel;
import org.jetbrains.mps.openapi.module.SRepository;
import org.jetbrains.mps.openapi.model.SModelReference;
import jetbrains.mps.internal.collections.runtime.ListSequence;
import jetbrains.mps.smodel.SModelOperations;
import org.jetbrains.mps.openapi.model.SReference;
import org.jetbrains.mps.openapi.model.SNode;
import org.jetbrains.mps.openapi.module.SModule;
import jetbrains.mps.lang.smodel.generator.smodelAdapter.SNodeOperations;
import jetbrains.mps.scope.Scope;
import jetbrains.mps.smodel.constraints.ModelConstraints;
public class ReferenceResolverUtils {
public static boolean canExecuteImmediately(SModel model, SRepository repository) {
if (repository == null) {
return false;
}
for (SModelReference modelReference : ListSequence.fromList(SModelOperations.getImportedModelUIDs(model))) {
if (modelReference.resolve(repository) == null) {
return false;
}
}
return true;
}
public static String getResolveInfo(SReference reference, SNode sourceNode) {
String result = ((jetbrains.mps.smodel.SReference) reference).getResolveInfo();
if (result != null) {
return result;
}
SModule module = check_y1vr00_a0c0b(SNodeOperations.getModel(sourceNode));
SNode target = jetbrains.mps.util.SNodeOperations.getTargetNodeSilently(reference);
if (target != null && module != null) {
Scope scope = ModelConstraints.getScope(reference);
result = scope.getReferenceText(sourceNode, target);
}
return result;
}
private static SModule check_y1vr00_a0c0b(SModel checkedDotOperand) {
if (null != checkedDotOperand) {
return checkedDotOperand.getModule();
}
return null;
}
}