Skip to content

Commit c36eb0a

Browse files
committed
Exclude Qualified Names in Error Messages
1 parent d5e29a1 commit c36eb0a

11 files changed

Lines changed: 55 additions & 8 deletions

File tree

liquidjava-verifier/src/main/java/liquidjava/diagnostics/errors/GhostInvocationError.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ public class GhostInvocationError extends LJError {
1616
public GhostInvocationError(String message, SourcePosition pos, Expression expected,
1717
TranslationTable translationTable) {
1818
super("Ghost Invocation Error", message, "", pos, translationTable);
19-
this.expected = expected.toString();
19+
this.expected = expected.toSimplifiedString();
2020
}
2121

2222
public String getExpected() {

liquidjava-verifier/src/main/java/liquidjava/diagnostics/errors/RefinementError.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,10 @@ public class RefinementError extends LJError {
1717

1818
public RefinementError(CtElement element, Expression expected, ValDerivationNode found,
1919
TranslationTable translationTable) {
20-
super("Refinement Error", String.format("%s is not a subtype of %s", found.getValue(), expected), "",
20+
super("Refinement Error",
21+
String.format("%s is not a subtype of %s", found.getValue(), expected.toSimplifiedString()), "",
2122
element.getPosition(), translationTable);
22-
this.expected = expected.toString();
23+
this.expected = expected.toSimplifiedString();
2324
this.found = found;
2425
}
2526

liquidjava-verifier/src/main/java/liquidjava/diagnostics/errors/StateConflictError.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ public StateConflictError(CtElement element, Expression state, String className,
1818
TranslationTable translationTable) {
1919
super("State Conflict Error", "Found multiple disjoint states in state transition",
2020
"State transition can only go to one state of each state set", element.getPosition(), translationTable);
21-
this.state = state.toString();
21+
this.state = state.toSimplifiedString();
2222
this.className = className;
2323
}
2424

liquidjava-verifier/src/main/java/liquidjava/diagnostics/errors/StateRefinementError.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,13 @@ public StateRefinementError(CtElement element, String method, Expression[] expec
2222
TranslationTable translationTable) {
2323
super("State Refinement Error", "State refinement transition violation",
2424
String.format("Expected: %s\nFound: %s",
25-
String.join(", ", Arrays.stream(expected).map(Expression::toString).toArray(String[]::new)),
26-
found.toString()),
25+
String.join(", ",
26+
Arrays.stream(expected).map(Expression::toSimplifiedString).toArray(String[]::new)),
27+
found.toSimplifiedString()),
2728
element.getPosition(), translationTable);
2829
this.method = method;
29-
this.expected = Arrays.stream(expected).map(Expression::toString).toArray(String[]::new);
30-
this.found = found.toString();
30+
this.expected = Arrays.stream(expected).map(Expression::toSimplifiedString).toArray(String[]::new);
31+
this.found = found.toSimplifiedString();
3132
}
3233

3334
public String getMethod() {

liquidjava-verifier/src/main/java/liquidjava/rj_language/ast/AliasInvocation.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,12 @@ public String toString() {
3333
return name + "(" + getArgs().stream().map(p -> p.toString()).collect(Collectors.joining(", ")) + ")";
3434
}
3535

36+
@Override
37+
public String toSimplifiedString() {
38+
return name + "(" + getArgs().stream().map(Expression::toSimplifiedString).collect(Collectors.joining(", "))
39+
+ ")";
40+
}
41+
3642
@Override
3743
public void getVariableNames(List<String> toAdd) {
3844
for (Expression e : getArgs())

liquidjava-verifier/src/main/java/liquidjava/rj_language/ast/BinaryExpression.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,11 @@ public String toString() {
4949
return getFirstOperand().toString() + " " + op + " " + getSecondOperand().toString();
5050
}
5151

52+
@Override
53+
public String toSimplifiedString() {
54+
return getFirstOperand().toSimplifiedString() + " " + op + " " + getSecondOperand().toSimplifiedString();
55+
}
56+
5257
@Override
5358
public void getVariableNames(List<String> toAdd) {
5459
getFirstOperand().getVariableNames(toAdd);

liquidjava-verifier/src/main/java/liquidjava/rj_language/ast/Expression.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,17 @@ public abstract class Expression {
2929

3030
public abstract String toString();
3131

32+
/**
33+
* Returns a simplified string representation of this expression with unqualified names (e.g.,
34+
* com.example.State.open => open Default implementation delegates to toString() Subclasses that contain qualified
35+
* names should override this method
36+
*
37+
* @return simplified string representation
38+
*/
39+
public String toSimplifiedString() {
40+
return toString();
41+
}
42+
3243
List<Expression> children = new ArrayList<>();
3344

3445
public void addChild(Expression e) {

liquidjava-verifier/src/main/java/liquidjava/rj_language/ast/FunctionInvocation.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,13 @@ public String toString() {
3939
return name + "(" + getArgs().stream().map(p -> p.toString()).collect(Collectors.joining(",")) + ")";
4040
}
4141

42+
@Override
43+
public String toSimplifiedString() {
44+
String simpleName = Utils.getSimpleName(name);
45+
return simpleName + "("
46+
+ getArgs().stream().map(Expression::toSimplifiedString).collect(Collectors.joining(",")) + ")";
47+
}
48+
4249
@Override
4350
public void getVariableNames(List<String> toAdd) {
4451
for (Expression e : getArgs())

liquidjava-verifier/src/main/java/liquidjava/rj_language/ast/GroupExpression.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,11 @@ public String toString() {
2323
return "(" + getExpression().toString() + ")";
2424
}
2525

26+
@Override
27+
public String toSimplifiedString() {
28+
return "(" + getExpression().toSimplifiedString() + ")";
29+
}
30+
2631
@Override
2732
public void getVariableNames(List<String> toAdd) {
2833
getExpression().getVariableNames(toAdd);

liquidjava-verifier/src/main/java/liquidjava/rj_language/ast/Ite.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,12 @@ public String toString() {
3434
return getCondition().toString() + "?" + getThen().toString() + ":" + getElse().toString();
3535
}
3636

37+
@Override
38+
public String toSimplifiedString() {
39+
return getCondition().toSimplifiedString() + "?" + getThen().toSimplifiedString() + ":"
40+
+ getElse().toSimplifiedString();
41+
}
42+
3743
@Override
3844
public void getVariableNames(List<String> toAdd) {
3945
getCondition().getVariableNames(toAdd);

0 commit comments

Comments
 (0)