use of abs.frontend.ast.PureExp in project abstools by abstools.
the class TreeUtilsTest method findChildrenIncludeOnlySelf.
@Test
public void findChildrenIncludeOnlySelf() {
Model model = assertParseOkStdLib("def Int test(Int i) = test(1);");
FunctionDecl functionDecl = getLastFunctionDecl(model);
assertEquals("test", functionDecl.getName());
ExpFunctionDef def = (ExpFunctionDef) functionDecl.getFunctionDef();
PureExp exp = def.getRhs();
Stream<PureExp> children = def.findChildren(cast(PureExp.class), n -> false);
assertNotNull(children);
List<PureExp> result = children.distinct().collect(Collectors.toList());
assertEquals(1, result.size());
assertTrue(result.contains(exp));
}
use of abs.frontend.ast.PureExp in project abstools by abstools.
the class TreeUtilsTest method closestParent.
@Test
public void closestParent() {
Model model = assertParseOkStdLib("def Int test() = 1;");
FunctionDecl functionDecl = getLastFunctionDecl(model);
assertEquals("test", functionDecl.getName());
PureExp exp = ((ExpFunctionDef) functionDecl.getFunctionDef()).getRhs();
assertSame(functionDecl, exp.closestParent(Decl.class));
assertSame(functionDecl, exp.closestParent(FunctionDecl.class));
}
use of abs.frontend.ast.PureExp in project abstools by abstools.
the class TreeUtilsTest method findChildrenListLazy.
@Test
public void findChildrenListLazy() {
Model model = assertParseOkStdLib("def Int test(Int i) = test(1);");
FunctionDecl functionDecl = getLastFunctionDecl(model);
assertEquals("test", functionDecl.getName());
List<PureExp> children = functionDecl.getFunctionDef().findChildren(PureExp.class, true);
assertEquals(1, children.size());
assertTrue(children.get(0) instanceof FnApp);
}
use of abs.frontend.ast.PureExp in project abstools by abstools.
the class TreeUtilsTest method findChildrenIncludeSelf.
@Test
public void findChildrenIncludeSelf() {
Model model = assertParseOkStdLib("def Int test(Int i) = test(1);");
FunctionDecl functionDecl = getLastFunctionDecl(model);
assertEquals("test", functionDecl.getName());
ExpFunctionDef def = (ExpFunctionDef) functionDecl.getFunctionDef();
PureExp exp = def.getRhs();
Stream<PureExp> children = def.findChildren(cast(PureExp.class), n -> true);
assertNotNull(children);
List<PureExp> result = children.distinct().collect(Collectors.toList());
assertEquals(2, result.size());
assertTrue(result.contains(exp));
}
use of abs.frontend.ast.PureExp in project abstools by abstools.
the class JavaGeneratorHelper method generateExprGuard.
public static void generateExprGuard(ExpGuard expGuard, PrintStream beforeAwaitStream, PrintStream stream) {
PureExp expr = expGuard.getPureExp();
replaceLocalVariables((PureExp) expr.copy(), beforeAwaitStream);
stream.print("new " + JavaBackendConstants.EXPGUARD + "() { public " + ABSBool.class.getName() + " evaluateExp() { return ");
expGuard.getPureExp().generateJava(stream);
stream.print("; }}");
}
Aggregations