diff --git a/org.lflang.diagram/src/org/lflang/diagram/synthesis/util/SynthesisErrorReporter.java b/org.lflang.diagram/src/org/lflang/diagram/synthesis/util/SynthesisErrorReporter.java index 29e3f20720..f53f342276 100644 --- a/org.lflang.diagram/src/org/lflang/diagram/synthesis/util/SynthesisErrorReporter.java +++ b/org.lflang.diagram/src/org/lflang/diagram/synthesis/util/SynthesisErrorReporter.java @@ -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; diff --git a/org.lflang.lfc/src/org/lflang/lfc/StandaloneErrorReporter.java b/org.lflang.lfc/src/org/lflang/lfc/StandaloneErrorReporter.java index d34118a55b..0893f98d7f 100644 --- a/org.lflang.lfc/src/org/lflang/lfc/StandaloneErrorReporter.java +++ b/org.lflang.lfc/src/org/lflang/lfc/StandaloneErrorReporter.java @@ -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) { @@ -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) { @@ -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() { diff --git a/org.lflang/src/org/lflang/DefaultErrorReporter.java b/org.lflang/src/org/lflang/DefaultErrorReporter.java index 3d659133ea..704e19951c 100644 --- a/org.lflang/src/org/lflang/DefaultErrorReporter.java +++ b/org.lflang/src/org/lflang/DefaultErrorReporter.java @@ -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; diff --git a/org.lflang/src/org/lflang/ErrorReporter.java b/org.lflang/src/org/lflang/ErrorReporter.java index de4622fce9..3d9273adf6 100644 --- a/org.lflang/src/org/lflang/ErrorReporter.java +++ b/org.lflang/src/org/lflang/ErrorReporter.java @@ -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. @@ -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. @@ -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. + * + * @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. @@ -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); } @@ -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); } diff --git a/org.lflang/src/org/lflang/generator/EclipseErrorReporter.java b/org.lflang/src/org/lflang/generator/EclipseErrorReporter.java index 95f86e0688..582aa64321 100644 --- a/org.lflang/src/org/lflang/generator/EclipseErrorReporter.java +++ b/org.lflang/src/org/lflang/generator/EclipseErrorReporter.java @@ -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); @@ -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); @@ -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. * @@ -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. * @@ -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. * diff --git a/org.lflang/src/org/lflang/generator/GeneratorUtils.java b/org.lflang/src/org/lflang/generator/GeneratorUtils.java index c668a693d4..de21ecf281 100644 --- a/org.lflang/src/org/lflang/generator/GeneratorUtils.java +++ b/org.lflang/src/org/lflang/generator/GeneratorUtils.java @@ -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; } diff --git a/org.lflang/src/org/lflang/generator/LanguageServerErrorReporter.java b/org.lflang/src/org/lflang/generator/LanguageServerErrorReporter.java index 2cf81800c6..945a55ce9e 100644 --- a/org.lflang/src/org/lflang/generator/LanguageServerErrorReporter.java +++ b/org.lflang/src/org/lflang/generator/LanguageServerErrorReporter.java @@ -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); @@ -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); @@ -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( diff --git a/org.lflang/src/org/lflang/validation/ValidatorErrorReporter.java b/org.lflang/src/org/lflang/validation/ValidatorErrorReporter.java index 8d4511463e..0b289a00d5 100644 --- a/org.lflang/src/org/lflang/validation/ValidatorErrorReporter.java +++ b/org.lflang/src/org/lflang/validation/ValidatorErrorReporter.java @@ -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. */ @@ -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. @@ -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. *