]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/errors/ErrorLog.java
(refs #7386) Minor SCL tools improvements
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / errors / ErrorLog.java
index f2e648b0089ea022021c815f98cf5e52d5d4228c..0e61a1644ef961bd99b9ae4a770eda46ffadf87e 100644 (file)
@@ -6,20 +6,27 @@ import java.util.Collections;
 import org.simantics.scl.compiler.common.exceptions.InternalCompilerError;
 
 public class ErrorLog {
-    ArrayList<CompilationError> errors = new ArrayList<CompilationError>(); 
+    ArrayList<CompilationError> errors = new ArrayList<CompilationError>();
+    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;
@@ -34,8 +41,16 @@ public class ErrorLog {
         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() {
@@ -49,6 +64,7 @@ public class ErrorLog {
     }
 
     public String getErrorsAsString() {
+        Collections.sort(errors);
         StringBuilder b = new StringBuilder();
         for(CompilationError error : errors)
             b.append(error.description).append('\n');
@@ -61,6 +77,6 @@ public class ErrorLog {
     }
 
     public int getErrorCount() {
-        return errors.size();
+        return errorCount;
     }
 }