Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Augmented ErrorReporter API with informational messages #1192

Merged
merged 12 commits into from
May 25, 2022
Merged
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,22 @@ public String reportWarning(EObject object, String message) {
public String reportWarning(Path file, Integer line, String message) {
return null;
}


@Override
public String reportInfo(String message) {
return null;
}

@Override
public String reportInfo(EObject object, String message) {
return null;
}

@Override
public String reportInfo(Path file, Integer line, String message) {
return null;
}

@Override
public boolean getErrorsOccurred() {
return false;
Expand Down
15 changes: 15 additions & 0 deletions org.lflang.lfc/src/org/lflang/lfc/StandaloneErrorReporter.java
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,11 @@ public String reportWarning(String message) {
return reportSimpleFileCtx(message, Severity.WARNING, null, null);
}

@Override
public String reportInfo(String message) {
return reportSimpleFileCtx(message, Severity.INFO, null, null);
}


@Override
public String reportError(EObject obj, String message) {
Expand All @@ -81,6 +86,11 @@ public String reportWarning(EObject obj, String message) {
return reportWithNode(message, Severity.WARNING, obj);
}

@Override
public String reportInfo(EObject obj, String message) {
return reportWithNode(message, Severity.INFO, obj);
}


@Override
public String reportError(Path file, Integer line, String message) {
Expand All @@ -93,6 +103,11 @@ public String reportWarning(Path file, Integer line, String message) {
return reportSimpleFileCtx(message, Severity.WARNING, line, file);
}

@Override
public String reportInfo(Path file, Integer line, String message) {
return reportSimpleFileCtx(message, Severity.INFO, line, file);
}


@Override
public boolean getErrorsOccurred() {
Expand Down
15 changes: 15 additions & 0 deletions org.lflang/src/org/lflang/DefaultErrorReporter.java
Original file line number Diff line number Diff line change
Expand Up @@ -40,16 +40,31 @@ public String reportWarning(String message) {
return println("WARNING: " + message);
}

@Override
public String reportInfo(String message) {
return println("INFO: " + message);
}

@Override
public String reportWarning(EObject object, String message) {
return println("WARNING: " + message);
}

@Override
public String reportInfo(EObject object, String message) {
return println("INFO: " + message);
}

@Override
public String reportWarning(Path file, Integer line, String message) {
return println("WARNING: " + message);
}

@Override
public String reportInfo(Path file, Integer line, String message) {
return println("INFO: " + message);
}

@Override
public boolean getErrorsOccurred() {
return errorsOccurred;
Expand Down
32 changes: 31 additions & 1 deletion org.lflang/src/org/lflang/ErrorReporter.java
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,14 @@ public interface ErrorReporter {
*/
String reportWarning(String message);

/**
* Report an informational message.
*
* @param message The message to report
* @return a string that describes the error
*/
String reportInfo(String message);


/**
* Report an error on the specified parse tree object.
Expand All @@ -53,6 +61,15 @@ public interface ErrorReporter {
*/
String reportWarning(EObject object, String message);

/**
* Report an informational message on the specified parse tree object.
*
* @param object The parse tree object.
* @param message The informational message
* @return a string that describes the info
*/
String reportInfo(EObject object, String message);


/**
* Report an error at the specified line within a file.
Expand All @@ -75,6 +92,17 @@ public interface ErrorReporter {
*/
String reportWarning(Path file, Integer line, String message);


/**
* Report an informational message at the specified line within a file.
*
lhstrh marked this conversation as resolved.
Show resolved Hide resolved
* @param file The file to report at.
* @param line The one-based line number to report at.
* @param message The error message.
* @return
*/
String reportInfo(Path file, Integer line, String message);

/**
* Report a message of severity {@code severity}.
* @param file The file to which the message pertains, or {@code null} if the file is unknown.
Expand All @@ -88,7 +116,8 @@ default String report(Path file, DiagnosticSeverity severity, String message) {
return reportError(message);
case Warning:
case Hint:
case Information: // FIXME: Information -> warning?? If this results in false alarms from LFC, we should expand API.
case Information:
return reportInfo(message);
default:
return reportWarning(message);
}
Expand All @@ -111,6 +140,7 @@ default String report(Path file, DiagnosticSeverity severity, String message, in
case Warning:
case Hint:
case Information:
return reportInfo(file, line, message);
default:
return reportWarning(file, line, message);
}
Expand Down
22 changes: 19 additions & 3 deletions org.lflang/src/org/lflang/generator/EclipseErrorReporter.java
Original file line number Diff line number Diff line change
Expand Up @@ -94,17 +94,18 @@ private String report(String message, Severity severity, EObject obj) {
* (within the Eclipse IDE), then this also adds a marker to the editor.
*
* @param message The error message.
* @param severity One of IMarker.SEVERITY_ERROR or IMarker.SEVERITY_WARNING
* @param severity One of IMarker.SEVERITY_ERROR or IMarker.SEVERITY_WARNING or IMarker.SEVERITY_INFO
* @param line The line number or null if it is not known.
* @param file The file, or null if it is not known.
*/
private String report(String message, Severity severity, Integer line, Path file) {
final boolean isError = severity == Severity.ERROR;
final boolean isInfo = severity == Severity.INFO;
if (isError) {
errorsOccurred = true;
}

final String header = isError ? "ERROR" : "WARNING";
final String header = isError ? "ERROR" : (isInfo ? "INFO" : "WARNING");

if (line == null || file == null)
System.err.println(header + ": " + message);
Expand Down Expand Up @@ -135,7 +136,7 @@ private String report(String message, Severity severity, Integer line, Path file
marker.setAttribute(IMarker.LOCATION,
line == null ? "1" : line.toString());
// Mark as an error or warning.
marker.setAttribute(IMarker.SEVERITY, isError ? IMarker.SEVERITY_ERROR : IMarker.SEVERITY_WARNING);
marker.setAttribute(IMarker.SEVERITY, isError ? IMarker.SEVERITY_ERROR : (isInfo ? IMarker.SEVERITY_INFO : IMarker.SEVERITY_WARNING));
marker.setAttribute(IMarker.PRIORITY, IMarker.PRIORITY_HIGH);

marker.setAttribute(IMarker.USER_EDITABLE, false);
Expand Down Expand Up @@ -173,6 +174,11 @@ public String reportWarning(String message) {
return report(message, Severity.WARNING, null, null);
}

@Override
public String reportInfo(String message) {
return report(message, Severity.INFO, null, null);
}

/**
* Report an error on the receiving parse tree object.
*
Expand All @@ -195,6 +201,11 @@ public String reportWarning(EObject obj, String message) {
return report(message, Severity.WARNING, obj);
}

@Override
public String reportInfo(EObject obj, String message) {
return report(message, Severity.INFO, obj);
}

/**
* Report an error at the specified line within a file.
*
Expand All @@ -221,6 +232,11 @@ public String reportWarning(Path file, Integer line, String message) {
return report(message, Severity.WARNING, line, file);
}

@Override
public String reportInfo(Path file, Integer line, String message) {
return report(message, Severity.INFO, line, file);
}

/**
* Check if errors where reported.
*
Expand Down
2 changes: 1 addition & 1 deletion org.lflang/src/org/lflang/generator/GeneratorUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -354,7 +354,7 @@ public static boolean canGenerate(
}
// abort if there is no main reactor
if (mainDef == null) {
errorReporter.reportWarning("WARNING: The given Lingua Franca program does not define a main reactor. Therefore, no code was generated.");
errorReporter.reportInfo("INFO: The given Lingua Franca program does not define a main reactor. Therefore, no code was generated.");
context.finish(GeneratorResult.NOTHING);
return false;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,11 @@ public String reportWarning(String message) {
return report(getMainFile(), DiagnosticSeverity.Warning, message);
}

@Override
public String reportInfo(String message) {
return report(getMainFile(), DiagnosticSeverity.Information, message);
}

@Override
public String reportError(EObject object, String message) {
return reportError(message);
Expand All @@ -73,6 +78,11 @@ public String reportWarning(EObject object, String message) {
return reportWarning(message);
}

@Override
public String reportInfo(EObject object, String message) {
return reportInfo(message);
}

@Override
public String reportError(Path file, Integer line, String message) {
return report(file, DiagnosticSeverity.Error, message, line != null ? line : 1);
Expand All @@ -83,6 +93,11 @@ public String reportWarning(Path file, Integer line, String message) {
return report(file, DiagnosticSeverity.Warning, message, line != null ? line : 1);
}

@Override
public String reportInfo(Path file, Integer line, String message) {
return report(file, DiagnosticSeverity.Information, message, line != null ? line : 1);
}

@Override
public boolean getErrorsOccurred() {
return diagnostics.values().stream().anyMatch(
Expand Down
23 changes: 23 additions & 0 deletions org.lflang/src/org/lflang/validation/ValidatorErrorReporter.java
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,13 @@ public String reportWarning(String message) {
return message;
}

@Override
public String reportInfo(String message) {
acceptor.acceptInfo(message, validatorState.getCurrentObject(), null,
ValidationMessageAcceptor.INSIGNIFICANT_INDEX, null);
return message;
}

/**
* Report the given message as a warning on the given object.
*/
Expand All @@ -125,6 +132,13 @@ public String reportWarning(EObject object, String message) {
return message;
}

@Override
public String reportInfo(EObject object, String message) {
acceptor.acceptInfo(message, object, null,
ValidationMessageAcceptor.INSIGNIFICANT_INDEX, null);
return message;
}


/**
* Report the given message as an warning on the current object.
Expand All @@ -146,6 +160,15 @@ public String reportWarning(Path file, Integer line, String message) {
return fullMessage;
}

@Override
public String reportInfo(Path file, Integer line, String message) {
String fullMessage = message + " (Reported from " + file.toString() + " on line "
+ line.toString() + ")";
acceptor.acceptInfo(fullMessage, validatorState.getCurrentObject(),
null, ValidationMessageAcceptor.INSIGNIFICANT_INDEX, null);
return fullMessage;
}

/**
* Check if errors where reported.
*
Expand Down