1 package org.simantics.scl.compiler.errors;
3 import java.util.ArrayList;
4 import java.util.Collections;
6 import org.simantics.scl.compiler.common.exceptions.InternalCompilerError;
8 public class ErrorLog {
9 ArrayList<CompilationError> errors = new ArrayList<CompilationError>();
10 long exceptionPosition = Locations.NO_LOCATION;
12 public void log(String message) {
13 errors.add(new CompilationError(message));
16 public void log(CompilationError error) {
20 public void log(long locatable, String description) {
21 log(new CompilationError(locatable, description));
24 public void log(Exception e) {
25 long location = Locations.NO_LOCATION;
26 if(e instanceof InternalCompilerError)
27 location = ((InternalCompilerError)e).location;
28 if(location == Locations.NO_LOCATION)
29 location = exceptionPosition;
30 log(new CompilationError(location, e));
33 public void log(long location, Exception e) {
34 log(new CompilationError(location, e));
37 public boolean isEmpty() {
38 return errors.isEmpty();
41 public CompilationError[] getErrors() {
42 Collections.sort(errors);
43 return errors.toArray(new CompilationError[errors.size()]);
46 public void setExceptionPosition(long exceptionPosition) {
47 if(this.exceptionPosition == Locations.NO_LOCATION)
48 this.exceptionPosition = exceptionPosition;
51 public String getErrorsAsString() {
52 StringBuilder b = new StringBuilder();
53 for(CompilationError error : errors)
54 b.append(error.description).append('\n');
59 public String toString() {
60 return getErrorsAsString();
63 public int getErrorCount() {