Skip to content

Commit 3d2cf55

Browse files
committed
Add Element Context to Exceptions
1 parent c151570 commit 3d2cf55

1 file changed

Lines changed: 16 additions & 0 deletions

File tree

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

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

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,22 @@ public Factory getFactory() {
6363
return factory;
6464
}
6565

66+
@Override
67+
public void scan(CtElement element) {
68+
try {
69+
super.scan(element);
70+
} catch (LJError e) {
71+
throw e;
72+
} catch (RuntimeException e) {
73+
SourcePosition position = element.getPosition();
74+
String location = position.getFile().getAbsolutePath() + ":" + position.getLine();
75+
String expression = Utils.getExpressionFromPosition(position);
76+
String msg = String.format("\nError while checking %s\n on %s \n at %s\n with %s",
77+
element.getClass().getSimpleName(), expression, location, e.getMessage());
78+
throw new RuntimeException(msg, e);
79+
}
80+
}
81+
6682
public Predicate getRefinement(CtElement elem) {
6783
Predicate c = (Predicate) elem.getMetadata(Keys.REFINEMENT);
6884
return c == null ? new Predicate() : c;

0 commit comments

Comments
 (0)