Skip to content

Commit c0c5913

Browse files
committed
Improve Alias Parsing Error Handling
1 parent 51d457a commit c0c5913

File tree

4 files changed

+21
-24
lines changed

4 files changed

+21
-24
lines changed

liquidjava-verifier/src/main/java/liquidjava/processor/facade/AliasDTO.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ public AliasDTO(String name, List<CtTypeReference<?>> varTypes, List<String> var
2222
this.expression = expression;
2323
}
2424

25-
public AliasDTO(String name2, List<String> varTypes2, List<String> varNames2, String ref) throws ParsingException {
25+
public AliasDTO(String name2, List<String> varTypes2, List<String> varNames2, String ref) {
2626
super();
2727
this.name = name2;
2828
this.varTypes = varTypes2;

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

Lines changed: 14 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -233,28 +233,22 @@ protected void getGhostFunction(String value, CtElement element) {
233233
protected void handleAlias(String value, CtElement element) {
234234
try {
235235
AliasDTO a = RefinementsParser.getAliasDeclaration(value);
236-
237-
if (a != null) {
238-
String klass = null;
239-
String path = null;
240-
if (element instanceof CtClass) {
241-
klass = ((CtClass<?>) element).getSimpleName();
242-
path = ((CtClass<?>) element).getQualifiedName();
243-
} else if (element instanceof CtInterface<?>) {
244-
klass = ((CtInterface<?>) element).getSimpleName();
245-
path = ((CtInterface<?>) element).getQualifiedName();
246-
}
247-
if (klass != null && path != null) {
248-
a.parse(path);
249-
AliasWrapper aw = new AliasWrapper(a, factory, WILD_VAR, context, klass, path);
250-
context.addAlias(aw);
251-
}
252-
} else {
253-
// alias syntax error
254-
ErrorHandler.printSyntaxError("Invalid alias definition", value, element, errorEmitter);
236+
String klass = null;
237+
String path = null;
238+
if (element instanceof CtClass) {
239+
klass = ((CtClass<?>) element).getSimpleName();
240+
path = ((CtClass<?>) element).getQualifiedName();
241+
} else if (element instanceof CtInterface<?>) {
242+
klass = ((CtInterface<?>) element).getSimpleName();
243+
path = ((CtInterface<?>) element).getQualifiedName();
244+
}
245+
if (klass != null && path != null) {
246+
a.parse(path);
247+
AliasWrapper aw = new AliasWrapper(a, factory, WILD_VAR, context, klass, path);
248+
context.addAlias(aw);
255249
}
256250
} catch (ParsingException e) {
257-
ErrorHandler.printCustomError(element, e.getMessage(), errorEmitter);
251+
ErrorHandler.printSyntaxError(e.getMessage(), value, element, errorEmitter);
258252
return;
259253
// e.printStackTrace();
260254
}

liquidjava-verifier/src/main/java/liquidjava/rj_language/parsing/RefinementsParser.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ public static GhostDTO getGhostDeclaration(String s) throws ParsingException {
3636
ParseTree rc = compile(s);
3737
GhostDTO g = GhostVisitor.getGhostDecl(rc);
3838
if (g == null)
39-
throw new ParsingException(" The ghost should be in format <type> <name> (<parameters>)");
39+
throw new ParsingException("Ghost declarations should be in format <type> <name> (<parameters>)");
4040
return g;
4141
}
4242

@@ -59,7 +59,10 @@ public static AliasDTO getAliasDeclaration(String s) throws ParsingException {
5959

6060
RuleContext rc = parser.prog();
6161
AliasVisitor av = new AliasVisitor(input);
62-
return av.getAlias(rc);
62+
AliasDTO alias = av.getAlias(rc);
63+
if (alias == null)
64+
throw new ParsingException("Alias definitions should be in format <name>(<parameters>) { <definition> }");
65+
return alias;
6366
}
6467

6568
private static ParseTree compile(String toParse) throws ParsingException {

liquidjava-verifier/src/main/java/liquidjava/rj_language/visitors/AliasVisitor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ public AliasVisitor(CodePointCharStream input) {
3131
*
3232
* @throws ParsingException
3333
*/
34-
public AliasDTO getAlias(ParseTree rc) throws ParsingException {
34+
public AliasDTO getAlias(ParseTree rc) {
3535
if (rc instanceof AliasContext) {
3636
AliasContext ac = (AliasContext) rc;
3737
String name = ac.ID_UPPER().getText();

0 commit comments

Comments
 (0)