@specs-feup/lara
Version:
A js port of the popular framework for building source-to-source compilers
39 lines • 1.26 kB
TypeScript
import { LaraJoinPoint } from "../../LaraJoinPoint.js";
import MutationResult from "./MutationResult.js";
/**
* Base class that represents a code mutation.
*
* This should not be instantiated directly, instead it should be extended.
*
* @param name - the name of the mutation
*
*/
export default abstract class Mutation {
name: string;
constructor(name?: string);
/**
* @returns The name of this mutation
*/
getName(): string;
/**
* Generator function for the mutations.
*
* @param $jp - The point in the code to mutate.
*
* @returns An iterator that results the results of each mutation on each iteration.
*/
mutate($jp: LaraJoinPoint): IterableIterator<MutationResult>;
/**
* @param $jp - A point in the code to test
*
* @returns True if the given join point is a valid mutation point, false otherwise
*/
abstract isMutationPoint($jp: LaraJoinPoint): boolean;
/**
* @param $jp - The point in the code to mutate
*
* @returns An array with the results of each mutation, which must be out-of-tree copies of the given join point
*/
abstract getMutants($jp: LaraJoinPoint): MutationResult[];
}
//# sourceMappingURL=Mutation.d.ts.map