package jetbrains.mps.baseLanguage.scripts; /*Generated by MPS */ import jetbrains.mps.lang.script.runtime.BaseMigrationScript; import jetbrains.mps.lang.script.runtime.AbstractMigrationRefactoring; import org.jetbrains.mps.openapi.language.SAbstractConcept; import jetbrains.mps.smodel.adapter.structure.MetaAdapterFactory; import org.jetbrains.mps.openapi.model.SNode; import java.util.List; import jetbrains.mps.internal.collections.runtime.Sequence; import jetbrains.mps.baseLanguage.util.OverridingMethodsFinder; import jetbrains.mps.internal.collections.runtime.IWhereFilter; import jetbrains.mps.internal.collections.runtime.ListSequence; import jetbrains.mps.lang.smodel.generator.smodelAdapter.SLinkOperations; import jetbrains.mps.lang.core.behavior.INamedConcept__BehaviorDescriptor; import jetbrains.mps.internal.collections.runtime.SetSequence; import org.jetbrains.annotations.Nullable; import org.jetbrains.mps.openapi.model.SNodeReference; import org.jetbrains.mps.openapi.persistence.PersistenceFacade; import jetbrains.mps.smodel.SModelUtil_new; import jetbrains.mps.smodel.SReference; public final class AddMissingOverrideAnnotations_MigrationScript extends BaseMigrationScript { public AddMissingOverrideAnnotations_MigrationScript() { super("Add missing @Override annotations"); this.addRefactoring(new AbstractMigrationRefactoring() { @Override public String getName() { return "add @Override annotations"; } @Override public String getAdditionalInfo() { return "add @Override annotations"; } @Override public SAbstractConcept getApplicableConcept() { return MetaAdapterFactory.getConcept(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0xf8c108ca66L, "jetbrains.mps.baseLanguage.structure.ClassConcept"); } @Override public boolean isApplicableInstanceNode(SNode node) { List<SNode> instanceMethods = Sequence.fromIterable(OverridingMethodsFinder.getInstanceMethods(node)).where(new IWhereFilter<SNode>() { public boolean accept(SNode it) { return OverridingMethodsFinder.canOverride(it) && ListSequence.fromList(SLinkOperations.getChildren(it, MetaAdapterFactory.getContainmentLink(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0x114a6be947aL, 0x114a6beb0bdL, "annotation"))).all(new IWhereFilter<SNode>() { public boolean accept(SNode it) { return !("java.lang.Override".equals(INamedConcept__BehaviorDescriptor.getFqName_idhEwIO9y.invoke(SLinkOperations.getTarget(it, MetaAdapterFactory.getReferenceLink(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0x114a6b4ccabL, 0x114a6b85d40L, "annotation"))))); } }); } }).toListSequence(); if (ListSequence.fromList(instanceMethods).isEmpty()) { return false; } OverridingMethodsFinder finder = new OverridingMethodsFinder(node, instanceMethods); return SetSequence.fromSet(finder.getOverridingMethods()).isNotEmpty(); } @Override public void doUpdateInstanceNode(SNode node) { List<SNode> instanceMethods = Sequence.fromIterable(OverridingMethodsFinder.getInstanceMethods(node)).where(new IWhereFilter<SNode>() { public boolean accept(SNode it) { return OverridingMethodsFinder.canOverride(it) && ListSequence.fromList(SLinkOperations.getChildren(it, MetaAdapterFactory.getContainmentLink(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0x114a6be947aL, 0x114a6beb0bdL, "annotation"))).all(new IWhereFilter<SNode>() { public boolean accept(SNode it) { return !("java.lang.Override".equals(INamedConcept__BehaviorDescriptor.getFqName_idhEwIO9y.invoke(SLinkOperations.getTarget(it, MetaAdapterFactory.getReferenceLink(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0x114a6b4ccabL, 0x114a6b85d40L, "annotation"))))); } }); } }).toListSequence(); OverridingMethodsFinder finder = new OverridingMethodsFinder(node, instanceMethods); for (SNode meth : SetSequence.fromSet(finder.getOverridingMethods())) { ListSequence.fromList(SLinkOperations.getChildren(meth, MetaAdapterFactory.getContainmentLink(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0x114a6be947aL, 0x114a6beb0bdL, "annotation"))).addElement(createAnnotationInstance_eltaeh_a0a0a2a0a()); } } @Override public boolean isShowAsIntention() { return true; } }); } @Nullable @Override public SNodeReference getScriptNode() { return PersistenceFacade.getInstance().createNodeReference("r:00000000-0000-4000-0000-011c895902c9(jetbrains.mps.baseLanguage.scripts)/1645752949772869851"); } private static SNode createAnnotationInstance_eltaeh_a0a0a2a0a() { PersistenceFacade facade = PersistenceFacade.getInstance(); SNode n1 = SModelUtil_new.instantiateConceptDeclaration(MetaAdapterFactory.getConcept(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0x114a6b4ccabL, "jetbrains.mps.baseLanguage.structure.AnnotationInstance"), null, null, false); n1.setReference(MetaAdapterFactory.getReferenceLink(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0x114a6b4ccabL, 0x114a6b85d40L, "annotation"), SReference.create(MetaAdapterFactory.getReferenceLink(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0x114a6b4ccabL, 0x114a6b85d40L, "annotation"), n1, facade.createModelReference("6354ebe7-c22a-4a0f-ac54-50b52ab9b065/java:java.lang(JDK/)"), facade.createNodeId("~Override"))); return n1; } }