in languages/languageDesign/smodel/source_gen/jetbrains/mps/lang/smodel/scripts/SModelLanguageEnhancements_Pointers_MigrationScript.java [26:675]
public SModelLanguageEnhancements_Pointers_MigrationScript() {
super("SModel Lanugage Enhancements (node-ptr<> and model-ptr)");
// whitespace
// whitespace
this.addRefactoring(new AbstractMigrationRefactoring() {
@Override
public String getName() {
return "Replace reference link assignment with `.set ptr` operation";
}
@Override
public String getAdditionalInfo() {
return "Replace reference link assignment with `.set ptr` operation";
}
@Override
public SAbstractConcept getApplicableConcept() {
return CONCEPTS.AssignmentExpression$SE;
}
@Override
public boolean isApplicableInstanceNode(SNode node) {
return SEnumOperations.isMember(SPropertyOperations.getEnum(SLinkOperations.getTarget(SNodeOperations.as(SLinkOperations.getTarget(SNodeOperations.as(SLinkOperations.getTarget(node, LINKS.lValue$splI), CONCEPTS.DotExpression$yW), LINKS.operation$gs9E), CONCEPTS.SLinkAccess$Pk), LINKS.link$zuOT), PROPS.metaClass$PeKc), 0xfc6f4e95b8L) && SNodeOperations.isInstanceOf(SLinkOperations.getTarget(node, LINKS.rValue$spNK), CONCEPTS.AbstractNodeRefExpression$M3);
}
@Override
public void doUpdateInstanceNode(SNode node) {
SNode linkAccessExpression = SLinkOperations.getTarget(node, LINKS.lValue$splI);
SNode targetNodeIdentity = NodePointerMigrations.toNodeIdentity(SNodeOperations.cast(SLinkOperations.getTarget(node, LINKS.rValue$spNK), CONCEPTS.AbstractNodeRefExpression$M3));
SNode replacement = createDotExpression_y8o86o_a0c0a4(linkAccessExpression, targetNodeIdentity);
SNodeOperations.replaceWithAnother(node, replacement);
}
@Override
public boolean isShowAsIntention() {
return true;
}
});
this.addRefactoring(new AbstractMigrationRefactoring() {
@Override
public String getName() {
return "Replace `.set` with `.set ptr` operation";
}
@Override
public String getAdditionalInfo() {
return "Replace `.set` with `.set ptr` operation";
}
@Override
public SAbstractConcept getApplicableConcept() {
return CONCEPTS.Link_SetTargetOperation$Mn;
}
@Override
public boolean isApplicableInstanceNode(SNode node) {
return SEnumOperations.isMember(SPropertyOperations.getEnum(SLinkOperations.getTarget(SNodeOperations.as(SNodeOperation__BehaviorDescriptor.getLeftExpressionOperation_idhEwJdHi.invoke(node), CONCEPTS.SLinkAccess$Pk), LINKS.link$zuOT), PROPS.metaClass$PeKc), 0xfc6f4e95b8L) && SNodeOperations.isInstanceOf(SLinkOperations.getTarget(node, LINKS.linkTarget$tLt0), CONCEPTS.AbstractNodeRefExpression$M3);
}
@Override
public void doUpdateInstanceNode(SNode node) {
SNode targetNodeIdentity = NodePointerMigrations.toNodeIdentity(SNodeOperations.cast(SLinkOperations.getTarget(node, LINKS.linkTarget$tLt0), CONCEPTS.AbstractNodeRefExpression$M3));
SNode replacement = createLink_SetTargetPointerOperation_y8o86o_a0b0a5(targetNodeIdentity);
SNodeOperations.replaceWithAnother(node, replacement);
}
@Override
public boolean isShowAsIntention() {
return false;
}
});
this.addRefactoring(new AbstractMigrationRefactoring() {
@Override
public String getName() {
return "Replace `==` with `.is` operation";
}
@Override
public String getAdditionalInfo() {
return "Replace `==` with `.is` operation";
}
@Override
public SAbstractConcept getApplicableConcept() {
return CONCEPTS.EqualsExpression$MF;
}
@Override
public boolean isApplicableInstanceNode(SNode node) {
return NodePointerMigrations.isValidForEquality(SLinkOperations.getTarget(node, LINKS.leftExpression$sEj), SLinkOperations.getTarget(node, LINKS.rightExpression$nvX));
}
@Override
public void doUpdateInstanceNode(SNode node) {
SNodeOperations.replaceWithAnother(node, NodePointerMigrations.getEqualityReplacement(SLinkOperations.getTarget(node, LINKS.leftExpression$sEj), SLinkOperations.getTarget(node, LINKS.rightExpression$nvX)));
}
@Override
public boolean isShowAsIntention() {
return true;
}
});
this.addRefactoring(new AbstractMigrationRefactoring() {
@Override
public String getName() {
return "Replace `==` with `.is` operation";
}
@Override
public String getAdditionalInfo() {
return "Replace `==` with `.is` operation";
}
@Override
public SAbstractConcept getApplicableConcept() {
return CONCEPTS.EqualsExpression$MF;
}
@Override
public boolean isApplicableInstanceNode(SNode node) {
return NodePointerMigrations.isValidForEquality(SLinkOperations.getTarget(node, LINKS.rightExpression$nvX), SLinkOperations.getTarget(node, LINKS.leftExpression$sEj));
}
@Override
public void doUpdateInstanceNode(SNode node) {
SNodeOperations.replaceWithAnother(node, NodePointerMigrations.getEqualityReplacement(SLinkOperations.getTarget(node, LINKS.rightExpression$nvX), SLinkOperations.getTarget(node, LINKS.leftExpression$sEj)));
}
@Override
public boolean isShowAsIntention() {
return true;
}
});
this.addRefactoring(new AbstractMigrationRefactoring() {
@Override
public String getName() {
return "Replace `!=` with `.is` operation";
}
@Override
public String getAdditionalInfo() {
return "Replace `!=` with `.is` operation";
}
@Override
public SAbstractConcept getApplicableConcept() {
return CONCEPTS.NotEqualsExpression$aX;
}
@Override
public boolean isApplicableInstanceNode(SNode node) {
return NodePointerMigrations.isValidForEquality(SLinkOperations.getTarget(node, LINKS.leftExpression$sEj), SLinkOperations.getTarget(node, LINKS.rightExpression$nvX));
}
@Override
public void doUpdateInstanceNode(SNode node) {
SNodeOperations.replaceWithAnother(node, NodePointerMigrations.getNotEqualityReplacement(SLinkOperations.getTarget(node, LINKS.leftExpression$sEj), SLinkOperations.getTarget(node, LINKS.rightExpression$nvX)));
}
@Override
public boolean isShowAsIntention() {
return true;
}
});
this.addRefactoring(new AbstractMigrationRefactoring() {
@Override
public String getName() {
return "Replace `!=` with `.is` operation";
}
@Override
public String getAdditionalInfo() {
return "Replace `!=` with `.is` operation";
}
@Override
public SAbstractConcept getApplicableConcept() {
return CONCEPTS.NotEqualsExpression$aX;
}
@Override
public boolean isApplicableInstanceNode(SNode node) {
return NodePointerMigrations.isValidForEquality(SLinkOperations.getTarget(node, LINKS.rightExpression$nvX), SLinkOperations.getTarget(node, LINKS.leftExpression$sEj));
}
@Override
public void doUpdateInstanceNode(SNode node) {
SNodeOperations.replaceWithAnother(node, NodePointerMigrations.getNotEqualityReplacement(SLinkOperations.getTarget(node, LINKS.rightExpression$nvX), SLinkOperations.getTarget(node, LINKS.leftExpression$sEj)));
}
@Override
public boolean isShowAsIntention() {
return true;
}
});
this.addRefactoring(new AbstractMigrationRefactoring() {
@Override
public String getName() {
return "Replace `:eq:` with `.is` operation";
}
@Override
public String getAdditionalInfo() {
return "Replace `:eq:` with `.is` operation";
}
@Override
public SAbstractConcept getApplicableConcept() {
return CONCEPTS.NPEEqualsExpression$Ey;
}
@Override
public boolean isApplicableInstanceNode(SNode node) {
return NodePointerMigrations.isValidForEquality(SLinkOperations.getTarget(node, LINKS.leftExpression$sEj), SLinkOperations.getTarget(node, LINKS.rightExpression$nvX));
}
@Override
public void doUpdateInstanceNode(SNode node) {
SNodeOperations.replaceWithAnother(node, NodePointerMigrations.getEqualityReplacement(SLinkOperations.getTarget(node, LINKS.leftExpression$sEj), SLinkOperations.getTarget(node, LINKS.rightExpression$nvX)));
}
@Override
public boolean isShowAsIntention() {
return true;
}
});
this.addRefactoring(new AbstractMigrationRefactoring() {
@Override
public String getName() {
return "Replace `:eq:` with `.is` operation";
}
@Override
public String getAdditionalInfo() {
return "Replace `:eq:` with `.is` operation";
}
@Override
public SAbstractConcept getApplicableConcept() {
return CONCEPTS.NPEEqualsExpression$Ey;
}
@Override
public boolean isApplicableInstanceNode(SNode node) {
return NodePointerMigrations.isValidForEquality(SLinkOperations.getTarget(node, LINKS.rightExpression$nvX), SLinkOperations.getTarget(node, LINKS.leftExpression$sEj));
}
@Override
public void doUpdateInstanceNode(SNode node) {
SNodeOperations.replaceWithAnother(node, NodePointerMigrations.getEqualityReplacement(SLinkOperations.getTarget(node, LINKS.rightExpression$nvX), SLinkOperations.getTarget(node, LINKS.leftExpression$sEj)));
}
@Override
public boolean isShowAsIntention() {
return true;
}
});
this.addRefactoring(new AbstractMigrationRefactoring() {
@Override
public String getName() {
return "Replace `:ne:` with `.is` operation";
}
@Override
public String getAdditionalInfo() {
return "Replace `:ne:` with `.is` operation";
}
@Override
public SAbstractConcept getApplicableConcept() {
return CONCEPTS.NPENotEqualsExpression$Ef;
}
@Override
public boolean isApplicableInstanceNode(SNode node) {
return NodePointerMigrations.isValidForEquality(SLinkOperations.getTarget(node, LINKS.leftExpression$sEj), SLinkOperations.getTarget(node, LINKS.rightExpression$nvX));
}
@Override
public void doUpdateInstanceNode(SNode node) {
SNodeOperations.replaceWithAnother(node, NodePointerMigrations.getNotEqualityReplacement(SLinkOperations.getTarget(node, LINKS.leftExpression$sEj), SLinkOperations.getTarget(node, LINKS.rightExpression$nvX)));
}
@Override
public boolean isShowAsIntention() {
return true;
}
});
this.addRefactoring(new AbstractMigrationRefactoring() {
@Override
public String getName() {
return "Replace `:ne:` with `.is` operation";
}
@Override
public String getAdditionalInfo() {
return "Replace `:ne:` with `.is` operation";
}
@Override
public SAbstractConcept getApplicableConcept() {
return CONCEPTS.NPENotEqualsExpression$Ef;
}
@Override
public boolean isApplicableInstanceNode(SNode node) {
return NodePointerMigrations.isValidForEquality(SLinkOperations.getTarget(node, LINKS.rightExpression$nvX), SLinkOperations.getTarget(node, LINKS.leftExpression$sEj));
}
@Override
public void doUpdateInstanceNode(SNode node) {
SNodeOperations.replaceWithAnother(node, NodePointerMigrations.getNotEqualityReplacement(SLinkOperations.getTarget(node, LINKS.rightExpression$nvX), SLinkOperations.getTarget(node, LINKS.leftExpression$sEj)));
}
@Override
public boolean isShowAsIntention() {
return true;
}
});
// whitespace
// whitespace
this.addRefactoring(new AbstractMigrationRefactoring() {
@Override
public String getName() {
return "Replace reference link assigment and quotation with `.set ptr` operation";
}
@Override
public String getAdditionalInfo() {
return "Replace reference link assigment and quotation with `.set ptr` operation";
}
@Override
public SAbstractConcept getApplicableConcept() {
return CONCEPTS.AssignmentExpression$SE;
}
@Override
public boolean isApplicableInstanceNode(SNode node) {
return SEnumOperations.isMember(SPropertyOperations.getEnum(SLinkOperations.getTarget(SNodeOperations.as(SLinkOperations.getTarget(SNodeOperations.as(SLinkOperations.getTarget(node, LINKS.lValue$splI), CONCEPTS.DotExpression$yW), LINKS.operation$gs9E), CONCEPTS.SLinkAccess$Pk), LINKS.link$zuOT), PROPS.metaClass$PeKc), 0xfc6f4e95b8L) && NodePointerMigrations.isQuotationSuitForNodePointer(SLinkOperations.getTarget(node, LINKS.rValue$spNK));
}
@Override
public void doUpdateInstanceNode(SNode node) {
SNode linkAccessExpression = SLinkOperations.getTarget(node, LINKS.lValue$splI);
SNode targetNodeIdentity = NodePointerMigrations.quotationToNodeIdentity(SLinkOperations.getTarget(node, LINKS.rValue$spNK));
SNode replacement = createDotExpression_y8o86o_a0c0a91(linkAccessExpression, targetNodeIdentity);
SNodeOperations.replaceWithAnother(node, replacement);
}
@Override
public boolean isShowAsIntention() {
return true;
}
});
this.addRefactoring(new AbstractMigrationRefactoring() {
@Override
public String getName() {
return "Replace `.set` and quotation with `.set ptr` operation";
}
@Override
public String getAdditionalInfo() {
return "Replace `.set` and quotation with `.set ptr` operation";
}
@Override
public SAbstractConcept getApplicableConcept() {
return CONCEPTS.Link_SetTargetOperation$Mn;
}
@Override
public boolean isApplicableInstanceNode(SNode node) {
return SEnumOperations.isMember(SPropertyOperations.getEnum(SLinkOperations.getTarget(SNodeOperations.as(SNodeOperation__BehaviorDescriptor.getLeftExpressionOperation_idhEwJdHi.invoke(node), CONCEPTS.SLinkAccess$Pk), LINKS.link$zuOT), PROPS.metaClass$PeKc), 0xfc6f4e95b8L) && NodePointerMigrations.isQuotationSuitForNodePointer(SLinkOperations.getTarget(node, LINKS.linkTarget$tLt0));
}
@Override
public void doUpdateInstanceNode(SNode node) {
SNode targetNodeIdentity = NodePointerMigrations.quotationToNodeIdentity(SLinkOperations.getTarget(node, LINKS.linkTarget$tLt0));
SNode replacement = createLink_SetTargetPointerOperation_y8o86o_a0b0a02(targetNodeIdentity);
SNodeOperations.replaceWithAnother(node, replacement);
}
@Override
public boolean isShowAsIntention() {
return false;
}
});
this.addRefactoring(new AbstractMigrationRefactoring() {
@Override
public String getName() {
return "Replace `==` and quotation with `.is` operation";
}
@Override
public String getAdditionalInfo() {
return "Replace `==` and quotation with `.is` operation";
}
@Override
public SAbstractConcept getApplicableConcept() {
return CONCEPTS.EqualsExpression$MF;
}
@Override
public boolean isApplicableInstanceNode(SNode node) {
return NodePointerMigrations.isValidForEquality_Quotation(SLinkOperations.getTarget(node, LINKS.leftExpression$sEj), SLinkOperations.getTarget(node, LINKS.rightExpression$nvX));
}
@Override
public void doUpdateInstanceNode(SNode node) {
SNodeOperations.replaceWithAnother(node, NodePointerMigrations.getEqualityReplacement_Quotation(SLinkOperations.getTarget(node, LINKS.leftExpression$sEj), SLinkOperations.getTarget(node, LINKS.rightExpression$nvX)));
}
@Override
public boolean isShowAsIntention() {
return true;
}
});
this.addRefactoring(new AbstractMigrationRefactoring() {
@Override
public String getName() {
return "Replace `==` and quotation with `.is` operation";
}
@Override
public String getAdditionalInfo() {
return "Replace `==` and quotation with `.is` operation";
}
@Override
public SAbstractConcept getApplicableConcept() {
return CONCEPTS.EqualsExpression$MF;
}
@Override
public boolean isApplicableInstanceNode(SNode node) {
return NodePointerMigrations.isValidForEquality_Quotation(SLinkOperations.getTarget(node, LINKS.rightExpression$nvX), SLinkOperations.getTarget(node, LINKS.leftExpression$sEj));
}
@Override
public void doUpdateInstanceNode(SNode node) {
SNodeOperations.replaceWithAnother(node, NodePointerMigrations.getEqualityReplacement_Quotation(SLinkOperations.getTarget(node, LINKS.rightExpression$nvX), SLinkOperations.getTarget(node, LINKS.leftExpression$sEj)));
}
@Override
public boolean isShowAsIntention() {
return true;
}
});
// whitespace
this.addRefactoring(new AbstractMigrationRefactoring() {
@Override
public String getName() {
return "Replace `!=` and quotation with `.is` operation";
}
@Override
public String getAdditionalInfo() {
return "Replace `!=` and quotation with `.is` operation";
}
@Override
public SAbstractConcept getApplicableConcept() {
return CONCEPTS.NotEqualsExpression$aX;
}
@Override
public boolean isApplicableInstanceNode(SNode node) {
return NodePointerMigrations.isValidForEquality_Quotation(SLinkOperations.getTarget(node, LINKS.leftExpression$sEj), SLinkOperations.getTarget(node, LINKS.rightExpression$nvX));
}
@Override
public void doUpdateInstanceNode(SNode node) {
SNodeOperations.replaceWithAnother(node, NodePointerMigrations.getNotEqualityReplacement_Quotation(SLinkOperations.getTarget(node, LINKS.leftExpression$sEj), SLinkOperations.getTarget(node, LINKS.rightExpression$nvX)));
}
@Override
public boolean isShowAsIntention() {
return true;
}
});
this.addRefactoring(new AbstractMigrationRefactoring() {
@Override
public String getName() {
return "Replace `!=` and quotation with `.is` operation";
}
@Override
public String getAdditionalInfo() {
return "Replace `!=` and quotation with `.is` operation";
}
@Override
public SAbstractConcept getApplicableConcept() {
return CONCEPTS.NotEqualsExpression$aX;
}
@Override
public boolean isApplicableInstanceNode(SNode node) {
return NodePointerMigrations.isValidForEquality_Quotation(SLinkOperations.getTarget(node, LINKS.rightExpression$nvX), SLinkOperations.getTarget(node, LINKS.leftExpression$sEj));
}
@Override
public void doUpdateInstanceNode(SNode node) {
SNodeOperations.replaceWithAnother(node, NodePointerMigrations.getNotEqualityReplacement_Quotation(SLinkOperations.getTarget(node, LINKS.rightExpression$nvX), SLinkOperations.getTarget(node, LINKS.leftExpression$sEj)));
}
@Override
public boolean isShowAsIntention() {
return true;
}
});
// whitespace
this.addRefactoring(new AbstractMigrationRefactoring() {
@Override
public String getName() {
return "Replace `:eq:` and quotation with `.is` operation";
}
@Override
public String getAdditionalInfo() {
return "Replace `:eq:` and quotation with `.is` operation";
}
@Override
public SAbstractConcept getApplicableConcept() {
return CONCEPTS.NPEEqualsExpression$Ey;
}
@Override
public boolean isApplicableInstanceNode(SNode node) {
return NodePointerMigrations.isValidForEquality_Quotation(SLinkOperations.getTarget(node, LINKS.leftExpression$sEj), SLinkOperations.getTarget(node, LINKS.rightExpression$nvX));
}
@Override
public void doUpdateInstanceNode(SNode node) {
SNodeOperations.replaceWithAnother(node, NodePointerMigrations.getEqualityReplacement_Quotation(SLinkOperations.getTarget(node, LINKS.leftExpression$sEj), SLinkOperations.getTarget(node, LINKS.rightExpression$nvX)));
}
@Override
public boolean isShowAsIntention() {
return true;
}
});
this.addRefactoring(new AbstractMigrationRefactoring() {
@Override
public String getName() {
return "Replace `:eq:` and quotation with `.is` operation";
}
@Override
public String getAdditionalInfo() {
return "Replace `:eq:` and quotation with `.is` operation";
}
@Override
public SAbstractConcept getApplicableConcept() {
return CONCEPTS.NPEEqualsExpression$Ey;
}
@Override
public boolean isApplicableInstanceNode(SNode node) {
return NodePointerMigrations.isValidForEquality_Quotation(SLinkOperations.getTarget(node, LINKS.rightExpression$nvX), SLinkOperations.getTarget(node, LINKS.leftExpression$sEj));
}
@Override
public void doUpdateInstanceNode(SNode node) {
SNodeOperations.replaceWithAnother(node, NodePointerMigrations.getEqualityReplacement_Quotation(SLinkOperations.getTarget(node, LINKS.rightExpression$nvX), SLinkOperations.getTarget(node, LINKS.leftExpression$sEj)));
}
@Override
public boolean isShowAsIntention() {
return true;
}
});
// whitespace
this.addRefactoring(new AbstractMigrationRefactoring() {
@Override
public String getName() {
return "Replace `:ne:` and quotation with `.is` operation";
}
@Override
public String getAdditionalInfo() {
return "Replace `:ne:` and quotation with `.is` operation";
}
@Override
public SAbstractConcept getApplicableConcept() {
return CONCEPTS.NPENotEqualsExpression$Ef;
}
@Override
public boolean isApplicableInstanceNode(SNode node) {
return NodePointerMigrations.isValidForEquality_Quotation(SLinkOperations.getTarget(node, LINKS.leftExpression$sEj), SLinkOperations.getTarget(node, LINKS.rightExpression$nvX));
}
@Override
public void doUpdateInstanceNode(SNode node) {
SNodeOperations.replaceWithAnother(node, NodePointerMigrations.getNotEqualityReplacement_Quotation(SLinkOperations.getTarget(node, LINKS.leftExpression$sEj), SLinkOperations.getTarget(node, LINKS.rightExpression$nvX)));
}
@Override
public boolean isShowAsIntention() {
return true;
}
});
this.addRefactoring(new AbstractMigrationRefactoring() {
@Override
public String getName() {
return "Replace `:ne:` and quotation with `.is` operation";
}
@Override
public String getAdditionalInfo() {
return "Replace `:ne:` and quotation with `.is` operation";
}
@Override
public SAbstractConcept getApplicableConcept() {
return CONCEPTS.NPENotEqualsExpression$Ef;
}
@Override
public boolean isApplicableInstanceNode(SNode node) {
return NodePointerMigrations.isValidForEquality_Quotation(SLinkOperations.getTarget(node, LINKS.rightExpression$nvX), SLinkOperations.getTarget(node, LINKS.leftExpression$sEj));
}
@Override
public void doUpdateInstanceNode(SNode node) {
SNodeOperations.replaceWithAnother(node, NodePointerMigrations.getNotEqualityReplacement_Quotation(SLinkOperations.getTarget(node, LINKS.rightExpression$nvX), SLinkOperations.getTarget(node, LINKS.leftExpression$sEj)));
}
@Override
public boolean isShowAsIntention() {
return true;
}
});
// whitespace
// whitespace
// whitespace
this.addRefactoring(new AbstractMigrationRefactoring() {
@Override
public String getName() {
return "Replace downcast and SNode#getReference method call with `.pointer` operation";
}
@Override
public String getAdditionalInfo() {
return "Replace downcast and SNode#getReference method call with `.pointer` operation";
}
@Override
public SAbstractConcept getApplicableConcept() {
return CONCEPTS.DotExpression$yW;
}
@Override
public boolean isApplicableInstanceNode(SNode node) {
return NodePointerMigrations.isDowncastToGetReferenceMethod_Node(node) && NodePointerMigrations.isSafeToReplace(node);
}
@Override
public void doUpdateInstanceNode(SNode node) {
NodePointerMigrations.replaceDowncastToGetReferenceMethod_Node(node);
}
@Override
public boolean isShowAsIntention() {
return true;
}
});
this.addRefactoring(new AbstractMigrationRefactoring() {
@Override
public String getName() {
return "Replace downcast and SNode#getReference method call with `.pointer` operation (may lead typesystem errors)";
}
@Override
public String getAdditionalInfo() {
return "Replace downcast and SNode#getReference method call with `.pointer` operation (may lead typesystem errors)";
}
@Override
public SAbstractConcept getApplicableConcept() {
return CONCEPTS.DotExpression$yW;
}
@Override
public boolean isApplicableInstanceNode(SNode node) {
return NodePointerMigrations.isDowncastToGetReferenceMethod_Node(node) && !(NodePointerMigrations.isSafeToReplace(node));
}
@Override
public void doUpdateInstanceNode(SNode node) {
NodePointerMigrations.replaceDowncastToGetReferenceMethod_Node(node);
}
@Override
public boolean isShowAsIntention() {
return true;
}
});
// whitespace
// whitespace
this.addRefactoring(new AbstractMigrationRefactoring() {
@Override
public String getName() {
return "Replace downcast and SModel#getReference method call with `.pointer` operation";
}
@Override
public String getAdditionalInfo() {
return "Replace downcast and SModel#getReference method call with `.pointer` operation";
}
@Override
public SAbstractConcept getApplicableConcept() {
return CONCEPTS.DotExpression$yW;
}
@Override
public boolean isApplicableInstanceNode(SNode node) {
return NodePointerMigrations.isDowncastToGetReferenceMethod_Model(node) && NodePointerMigrations.isSafeToReplace(node);
}
@Override
public void doUpdateInstanceNode(SNode node) {
NodePointerMigrations.replaceDowncastToGetReferenceMethod_Model(node);
}
@Override
public boolean isShowAsIntention() {
return true;
}
});
this.addRefactoring(new AbstractMigrationRefactoring() {
@Override
public String getName() {
return "Replace downcast and SModel#getReference method call with `.pointer` operation (may lead typesystem errors)";
}
@Override
public String getAdditionalInfo() {
return "Replace downcast and SModel#getReference method call with `.pointer` operation (may lead typesystem errors)";
}
@Override
public SAbstractConcept getApplicableConcept() {
return CONCEPTS.DotExpression$yW;
}
@Override
public boolean isApplicableInstanceNode(SNode node) {
return NodePointerMigrations.isDowncastToGetReferenceMethod_Model(node) && !(NodePointerMigrations.isSafeToReplace(node));
}
@Override
public void doUpdateInstanceNode(SNode node) {
NodePointerMigrations.replaceDowncastToGetReferenceMethod_Model(node);
}
@Override
public boolean isShowAsIntention() {
return true;
}
});
// whitespace
}