package jetbrains.mps.baseLanguage.util.plugin.refactorings;
/*Generated by MPS */
import org.jetbrains.mps.openapi.model.SNode;
import jetbrains.mps.lang.smodel.generator.smodelAdapter.SConceptOperations;
import jetbrains.mps.smodel.adapter.structure.MetaAdapterFactory;
import jetbrains.mps.lang.smodel.generator.smodelAdapter.SLinkOperations;
import java.util.List;
import jetbrains.mps.lang.smodel.generator.smodelAdapter.SNodeOperations;
import jetbrains.mps.internal.collections.runtime.ListSequence;
public class ExtractMethodWithReturn extends ExtractMethodFromStatementsRefactoring {
/*package*/ ExtractMethodWithReturn(ExtractMethodRefactoringParameters params) {
super(params);
}
@Override
public SNode getMethodType() {
return this.myAnalyzer.getExtractMethodReafactoringProcessor().getContainerReturnType();
}
@Override
public void replaceMatch(MethodMatch match, SNode methodDeclaration) {
SNode methodCall = this.createMethodCall(match, methodDeclaration);
SNode returnlStatement = SConceptOperations.createNewNode(MetaAdapterFactory.getConcept(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0xf8cc67c7feL, "jetbrains.mps.baseLanguage.structure.ReturnStatement"));
SLinkOperations.setTarget(returnlStatement, MetaAdapterFactory.getContainmentLink(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0xf8cc67c7feL, 0xf8cc6bf96cL, "expression"), methodCall);
List<SNode> statements = match.getNodes();
SNodeOperations.insertPrevSiblingChild(ListSequence.fromList(statements).first(), returnlStatement);
for (SNode statement : ListSequence.fromList(statements)) {
SNodeOperations.deleteNode(statement);
}
}
}