Skip to content

Commit c851e91

Browse files
committed
Report Warning Instead of Error
1 parent 9f3cd0a commit c851e91

File tree

5 files changed

+31
-11
lines changed

5 files changed

+31
-11
lines changed

liquidjava-verifier/src/main/java/liquidjava/api/CommandLineLauncher.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
import liquidjava.diagnostics.Diagnostics;
88
import liquidjava.diagnostics.errors.CustomError;
9+
import liquidjava.diagnostics.warnings.CustomWarning;
910
import liquidjava.processor.RefinementProcessor;
1011
import spoon.Launcher;
1112
import spoon.processing.ProcessingManager;
@@ -57,8 +58,7 @@ public static void launch(String... paths) {
5758

5859
boolean buildSuccess = launcher.getModelBuilder().build();
5960
if (!buildSuccess) {
60-
diagnostics.add(new CustomError("Java compilation error detected. Skipping verification."));
61-
return;
61+
diagnostics.add(new CustomWarning("Java compilation error detected"));
6262
}
6363

6464
final Factory factory = launcher.getFactory();
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package liquidjava.diagnostics.warnings;
2+
3+
import spoon.reflect.cu.SourcePosition;
4+
5+
/**
6+
* Custom warning with a message
7+
*
8+
* @see LJWarning
9+
*/
10+
public class CustomWarning extends LJWarning {
11+
12+
public CustomWarning(SourcePosition position, String message) {
13+
super(message, position);
14+
}
15+
16+
public CustomWarning(String message) {
17+
super(message, null);
18+
}
19+
20+
}

liquidjava-verifier/src/main/java/liquidjava/diagnostics/warnings/ExternalClassNotFoundWarning.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package liquidjava.diagnostics.warnings;
22

3-
import spoon.reflect.declaration.CtElement;
3+
import spoon.reflect.cu.SourcePosition;
44

55
/**
66
* Warning indicating that a class referenced in an external refinement was not found
@@ -11,8 +11,8 @@ public class ExternalClassNotFoundWarning extends LJWarning {
1111

1212
private final String className;
1313

14-
public ExternalClassNotFoundWarning(CtElement element, String message, String className) {
15-
super(message, element.getPosition());
14+
public ExternalClassNotFoundWarning(SourcePosition position, String message, String className) {
15+
super(message, position);
1616
this.className = className;
1717
}
1818

liquidjava-verifier/src/main/java/liquidjava/diagnostics/warnings/ExternalMethodNotFoundWarning.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package liquidjava.diagnostics.warnings;
22

3-
import spoon.reflect.declaration.CtElement;
3+
import spoon.reflect.cu.SourcePosition;
44

55
/**
66
* Warning indicating that a method referenced in an external refinement was not found
@@ -13,9 +13,9 @@ public class ExternalMethodNotFoundWarning extends LJWarning {
1313
private final String className;
1414
private final String[] overloads;
1515

16-
public ExternalMethodNotFoundWarning(CtElement element, String message, String methodName, String className,
16+
public ExternalMethodNotFoundWarning(SourcePosition position, String message, String methodName, String className,
1717
String[] overloads) {
18-
super(message, element.getPosition());
18+
super(message, position);
1919
this.methodName = methodName;
2020
this.className = className;
2121
this.overloads = overloads;

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ public <T> void visitCtInterface(CtInterface<T> intrface) {
4343
this.prefix = externalRefinements.get();
4444
if (!classExists(prefix)) {
4545
String message = String.format("Could not find class '%s'", prefix);
46-
diagnostics.add(new ExternalClassNotFoundWarning(intrface, message, prefix));
46+
diagnostics.add(new ExternalClassNotFoundWarning(intrface.getPosition(), message, prefix));
4747
return;
4848
}
4949
getRefinementFromAnnotation(intrface);
@@ -72,15 +72,15 @@ public <R> void visitCtMethod(CtMethod<R> method) {
7272
prefix);
7373
String[] overloads = getOverloads(targetType, method);
7474
diagnostics.add(
75-
new ExternalMethodNotFoundWarning(method, message, method.getSignature(), prefix, overloads));
75+
new ExternalMethodNotFoundWarning(method.getPosition(), message, method.getSignature(), prefix, overloads));
7676
}
7777
} else {
7878
if (!methodExists(targetType, method)) {
7979
String message = String.format("Could not find method '%s %s' for '%s'",
8080
method.getType().getSimpleName(), method.getSignature(), prefix);
8181
String[] overloads = getOverloads(targetType, method);
8282
diagnostics.add(
83-
new ExternalMethodNotFoundWarning(method, message, method.getSignature(), prefix, overloads));
83+
new ExternalMethodNotFoundWarning(method.getPosition(), message, method.getSignature(), prefix, overloads));
8484
return;
8585
}
8686
}

0 commit comments

Comments
 (0)