package org.pitest.mutationtest.engine.gregor;
import org.objectweb.asm.Label;
import org.objectweb.asm.MethodVisitor;
import org.objectweb.asm.Opcodes;
class LineFilterMethodAdapter extends MethodVisitor {
private static final String DISABLE_REASON = "AVOIDED_LINE";
private final MutationContext context;
private final PremutationClassInfo classInfo;
LineFilterMethodAdapter(final MutationContext context,
final PremutationClassInfo classInfo,
final MethodVisitor delegateMethodVisitor) {
super(Opcodes.ASM5, delegateMethodVisitor);
this.context = context;
this.classInfo = classInfo;
}
@Override
public void visitLineNumber(final int line, final Label start) {
if (this.classInfo.isLineToAvoid(line)) {
this.context.disableMutations(DISABLE_REASON);
} else {
this.context.enableMutatations(DISABLE_REASON);
}
this.mv.visitLineNumber(line, start);
}
}