Skip to content

Commit 883171c

Browse files
authored
Fix Alias & Ghost Argument Mismatch (#127)
1 parent 8e1ff89 commit 883171c

39 files changed

+394
-236
lines changed

liquidjava-example/src/main/java/testSuite/ErrorAliasArgumentSize.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Not Found Error
1+
// Argument Mismatch Error
22
package testSuite;
33

44
import liquidjava.specification.Refinement;
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
// Argument Mismatch Error
2+
package testSuite;
3+
4+
import liquidjava.specification.Refinement;
5+
import liquidjava.specification.RefinementAlias;
6+
7+
@SuppressWarnings("unused")
8+
@RefinementAlias("InRange(int val, int low, int up) {low < val && val < up}")
9+
public class ErrorAliasEmptyArguments {
10+
11+
public static void main(String[] args) {
12+
@Refinement("InRange()")
13+
int j = 15;
14+
}
15+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
// Not Found Error
2+
package testSuite;
3+
4+
import liquidjava.specification.Refinement;
5+
6+
public class ErrorAliasNotFound {
7+
8+
public static void main(String[] args) {
9+
@Refinement("UndefinedAlias(x)")
10+
int x = 5;
11+
}
12+
}

liquidjava-example/src/main/java/testSuite/ErrorAliasTypeMismatch.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Refinement Error
1+
// Argument Mismatch Error
22
package testSuite;
33

44
import liquidjava.specification.Refinement;
@@ -15,6 +15,5 @@ public static void main(String[] args) {
1515

1616
@Refinement("Positive(_)")
1717
double positive = positiveGrade2;
18-
// Positive(_) fica positive > 0
1918
}
2019
}

liquidjava-example/src/main/java/testSuite/ErrorGhostArgsTypes.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Error
1+
// Argument Mismatch Error
22
package testSuite;
33

44
import liquidjava.specification.Refinement;
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
// Not Found Error
2+
package testSuite;
3+
4+
import liquidjava.specification.Refinement;
5+
6+
public class ErrorGhostNotFound {
7+
8+
public void test() {
9+
@Refinement("notFound(x)")
10+
int x = 5;
11+
}
12+
}

liquidjava-example/src/main/java/testSuite/ErrorGhostNumberArgs.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Error
1+
// Argument Mismatch Error
22
package testSuite;
33

44
import liquidjava.specification.Refinement;

liquidjava-verifier/src/main/java/liquidjava/diagnostics/Diagnostics.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,11 +55,10 @@ public void clear() {
5555
}
5656

5757
public String getErrorOutput() {
58-
return String.join("\n", errors.stream().map(LJError::toString).toList()) + (errors.isEmpty() ? "" : "\n");
58+
return String.join("\n", errors.stream().map(LJError::toString).toList());
5959
}
6060

6161
public String getWarningOutput() {
62-
return String.join("\n", warnings.stream().map(LJWarning::toString).toList())
63-
+ (warnings.isEmpty() ? "" : "\n");
62+
return String.join("\n", warnings.stream().map(LJWarning::toString).toList());
6463
}
6564
}

liquidjava-verifier/src/main/java/liquidjava/diagnostics/LJDiagnostic.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@ public class LJDiagnostic extends RuntimeException {
1010

1111
private final String title;
1212
private final String message;
13-
private final String file;
14-
private final ErrorPosition position;
1513
private final String accentColor;
14+
private String file;
15+
private ErrorPosition position;
1616

1717
public LJDiagnostic(String title, String message, SourcePosition pos, String accentColor) {
1818
this.title = title;
@@ -38,6 +38,13 @@ public ErrorPosition getPosition() {
3838
return position;
3939
}
4040

41+
public void setPosition(SourcePosition pos) {
42+
if (pos == null)
43+
return;
44+
this.position = ErrorPosition.fromSpoonPosition(pos);
45+
this.file = pos.getFile().getPath();
46+
}
47+
4148
public String getFile() {
4249
return file;
4350
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package liquidjava.diagnostics.errors;
2+
3+
import liquidjava.diagnostics.TranslationTable;
4+
import spoon.reflect.cu.SourcePosition;
5+
6+
/**
7+
* Error indicating that the arguments provided to a function or method do not match the expected parameters either in
8+
* number or type of arguments
9+
*
10+
* @see LJError
11+
*/
12+
public class ArgumentMismatchError extends LJError {
13+
14+
public ArgumentMismatchError(String message) {
15+
super("Argument Mismatch Error", message, null, null);
16+
}
17+
18+
public ArgumentMismatchError(String message, SourcePosition position, TranslationTable translationTable) {
19+
super("Argument Mismatch Error", message, position, translationTable);
20+
}
21+
}

0 commit comments

Comments
 (0)