X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=bundles%2Forg.simantics.scl.compiler%2Fsrc%2Forg%2Fsimantics%2Fscl%2Fcompiler%2Ferrors%2FErrorLog.java;h=0e61a1644ef961bd99b9ae4a770eda46ffadf87e;hp=13e80fc6d62755e6d162d14536b74cff6e32e160;hb=84b211a0aa05c956d33e038a1106bb0464ce373a;hpb=96bb7ef9cbe42d82eb58306d8f9b62392cc29ba8 diff --git a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/errors/ErrorLog.java b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/errors/ErrorLog.java index 13e80fc6d..0e61a1644 100644 --- a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/errors/ErrorLog.java +++ b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/errors/ErrorLog.java @@ -6,34 +6,51 @@ import java.util.Collections; import org.simantics.scl.compiler.common.exceptions.InternalCompilerError; public class ErrorLog { - ArrayList errors = new ArrayList(); - long exceptionPosition; + ArrayList errors = new ArrayList(); + int errorCount; + long exceptionPosition = Locations.NO_LOCATION; public void log(String message) { - errors.add(new CompilationError(message)); + log(new CompilationError(message)); } public void log(CompilationError error) { errors.add(error); + if(error.severity != ErrorSeverity.WARNING) + ++errorCount; } public void log(long locatable, String description) { log(new CompilationError(locatable, description)); } + + public void logWarning(long locatable, String description) { + log(new CompilationError(locatable, description, ErrorSeverity.WARNING)); + } public void log(Exception e) { + long location = Locations.NO_LOCATION; if(e instanceof InternalCompilerError) - log(((InternalCompilerError)e).location, e); - else - log(new CompilationError(e)); + location = ((InternalCompilerError)e).location; + if(location == Locations.NO_LOCATION) + location = exceptionPosition; + log(new CompilationError(location, e)); } public void log(long location, Exception e) { log(new CompilationError(location, e)); } - public boolean isEmpty() { - return errors.isEmpty(); + public boolean hasNoErrors() { + return errorCount == 0; + } + + public boolean hasErrors() { + return errorCount > 0; + } + + public boolean hasErrorsOrWarnings() { + return !errors.isEmpty(); } public CompilationError[] getErrors() { @@ -45,12 +62,9 @@ public class ErrorLog { if(this.exceptionPosition == Locations.NO_LOCATION) this.exceptionPosition = exceptionPosition; } - - public long getExceptionPosition() { - return exceptionPosition; - } public String getErrorsAsString() { + Collections.sort(errors); StringBuilder b = new StringBuilder(); for(CompilationError error : errors) b.append(error.description).append('\n'); @@ -61,4 +75,8 @@ public class ErrorLog { public String toString() { return getErrorsAsString(); } + + public int getErrorCount() { + return errorCount; + } }