public K gen(Rule r, K body) {
if (!cover || !r.att().getOptional(Source.class).isPresent()) {
return body;
}
K left = RewriteToTop.toLeft(body);
K right = RewriteToTop.toRight(body);
String file = r.att().get(Source.class).source();
if (file.startsWith(JarInfo.getKBase())) {
return body;
}
int line = r.att().get(Location.class).startLine();
int col = r.att().get(Location.class).startColumn();
String loc = file + ":" + line + ":" + col;
String id = r.att().get("UNIQUE_ID");
allRulesFile.print(id);
allRulesFile.print(" ");
allRulesFile.println(loc);
if (r.att().contains("macro") || r.att().contains("alias")) {
return body;
}
return KRewrite(left, KSequence(KApply(KLabel("#logToFile"),
KToken(StringUtil.enquoteKString(files.resolveKompiled("coverage.txt").getAbsolutePath()), Sorts.String()),
KToken(StringUtil.enquoteKString(id + '\n'), Sorts.String())), right));
}