Skip to content

Commit 425a5b8

Browse files
committed
Check If Refinement Aliases Return Boolean Expressions
1 parent b1d6701 commit 425a5b8

1 file changed

Lines changed: 7 additions & 1 deletion

File tree

  • liquidjava-verifier/src/main/java/liquidjava/processor/refinement_checker

liquidjava-verifier/src/main/java/liquidjava/processor/refinement_checker/TypeChecker.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ public Optional<Predicate> getRefinementFromAnnotation(CtElement element) throws
9696
}
9797
if (errorEmitter.foundError())
9898
return Optional.empty();
99-
99+
100100
constr = Optional.of(p);
101101
}
102102
return constr;
@@ -252,6 +252,12 @@ protected void handleAlias(String value, CtElement element) {
252252
}
253253
if (klass != null && path != null) {
254254
a.parse(path);
255+
// refinement alias must return a boolean expression
256+
if (a.getExpression() != null && !a.getExpression().isBooleanExpression()) {
257+
ErrorHandler.printCustomError(element, "Refinement alias must return a boolean expression",
258+
errorEmitter);
259+
return;
260+
}
255261
AliasWrapper aw = new AliasWrapper(a, factory, WILD_VAR, context, klass, path);
256262
context.addAlias(aw);
257263
}

0 commit comments

Comments
 (0)