Skip to content
Snippets Groups Projects
Commit ea5e2761 authored by Bastien Sultan's avatar Bastien Sultan
Browse files

AMULET: patching state deletion method

parent 91b18c4b
No related branches found
No related tags found
2 merge requests!439Patching two methods on mutation compiler, creating a new CLI command for compiling a batch of mutations, adding some tests,!438Patching two bugs in mutation compiler
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="RunConfigurationProducerService">
<option name="ignoredProducers">
<set>
<option value="com.android.tools.idea.compose.preview.runconfiguration.ComposePreviewRunConfigurationProducer" />
</set>
</option>
</component>
</project>
......@@ -41,6 +41,7 @@ package avatartranslator.mutation;
import avatartranslator.*;
import myutil.TraceManager;
import java.util.LinkedList;
import java.util.List;
/**
......@@ -60,18 +61,27 @@ public class RmStateMutation extends StateMutation implements RmMutation {
public void apply(AvatarSpecification _avspec) throws ApplyMutationException {
AvatarState state = getElement(_avspec);
AvatarStateMachine asm = getAvatarStateMachine(_avspec);
List<AvatarStateMachineElement> elements = asm.getListOfElements();
for (AvatarStateMachineElement element : elements) {
if (element.getNexts().contains(state)){
for (AvatarStateMachineElement element2 : elements) {
if (element2.getNexts().contains(element)){
List<AvatarStateMachineElement> asmElements = asm.getListOfElements();
List<AvatarStateMachineElement> asmElementsToRemove = new LinkedList<>();
for (AvatarStateMachineElement element : asmElements) {
if (element.getNexts().contains(state)) {
for (AvatarStateMachineElement element2 : asmElements) {
if (element2.getNexts().contains(element)) {
element2.removeNext(element);
}
}
asm.removeElement(element);
asmElementsToRemove.add(element);
}
if (element == state) {
for (AvatarStateMachineElement element3 : state.getNexts()) {
asmElementsToRemove.add(element3);
}
}
}
System.out.println(asmElementsToRemove.toString());
for (AvatarStateMachineElement element : asmElementsToRemove){
asm.removeElement(element);
}
state.removeAllNexts();
asm.removeElement(state);
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment