package jetbrains.mps.baseLanguage.scopes; /*Generated by MPS */ import jetbrains.mps.util.annotation.ToRemove; import jetbrains.mps.scope.Scope; import org.jetbrains.mps.openapi.model.SNode; import org.jetbrains.annotations.Nullable; import jetbrains.mps.internal.collections.runtime.ListSequence; import java.util.ArrayList; import org.jetbrains.annotations.NotNull; import java.util.StringTokenizer; import jetbrains.mps.lang.smodel.generator.smodelAdapter.SNodeOperations; import jetbrains.mps.smodel.adapter.structure.MetaAdapterFactory; import jetbrains.mps.lang.smodel.generator.smodelAdapter.SPropertyOperations; import jetbrains.mps.internal.collections.runtime.Sequence; @Deprecated @ToRemove(version = 2017.1) public class SimpleClassifiersScope extends Scope { private SNode myClassifier; private boolean myGoUpHieracrhy; @Deprecated public SimpleClassifiersScope(SNode classifier, boolean goUpInHierarchy) { myClassifier = classifier; myGoUpHieracrhy = goUpInHierarchy; } public Iterable<SNode> getAvailableElements(@Nullable String prefix) { // FIXME return ListSequence.fromList(new ArrayList<SNode>()); } @Nullable public String getReferenceText(SNode contextNode, @NotNull SNode node) { // FIXME return ""; } @Nullable public SNode resolve(SNode contextNode, @NotNull String refText) { StringTokenizer tokenizer = new StringTokenizer(refText, "."); if (!(tokenizer.hasMoreTokens())) { return null; } String firstComponent = tokenizer.nextToken(); // this exact class which provides the scope if (!(SNodeOperations.isInstanceOf(myClassifier, MetaAdapterFactory.getConcept(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0x1107e0cb103L, "jetbrains.mps.baseLanguage.structure.AnonymousClass")))) { if (firstComponent.equals(SPropertyOperations.getString(myClassifier, MetaAdapterFactory.getProperty(0xceab519525ea4f22L, 0x9b92103b95ca8c0cL, 0x110396eaaa4L, 0x110396ec041L, "name")))) { return ClassifierResolveUtils.construct(myClassifier, tokenizer); } } // scope provider's nested classes for (SNode nestedClas : Sequence.fromIterable(ClassifierResolveUtils.getImmediateNestedClassifiers(myClassifier))) { ClassifierResolveUtils.getImmediateNestedClassifiers(myClassifier); if (firstComponent.equals(SPropertyOperations.getString(nestedClas, MetaAdapterFactory.getProperty(0xceab519525ea4f22L, 0x9b92103b95ca8c0cL, 0x110396eaaa4L, 0x110396ec041L, "name")))) { return ClassifierResolveUtils.construct(myClassifier, tokenizer); } } // nested classes of base classes of our scope provider // (not base classes themselves, but only their immediate nested classes) if (myGoUpHieracrhy) { for (SNode ancestor : Sequence.fromIterable(ClassifierResolveUtils.getAncestors(myClassifier))) { for (SNode nested : Sequence.fromIterable(ClassifierResolveUtils.getImmediateNestedClassifiers(ancestor))) { if (firstComponent.equals(SPropertyOperations.getString(nested, MetaAdapterFactory.getProperty(0xceab519525ea4f22L, 0x9b92103b95ca8c0cL, 0x110396eaaa4L, 0x110396ec041L, "name")))) { return ClassifierResolveUtils.construct(nested, tokenizer); } } } } return null; } }