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;
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 if(e instanceof InternalCompilerError)
26 log(((InternalCompilerError)e).location, e);
28 log(new CompilationError(e));
31 public void log(long location, Exception e) {
32 log(new CompilationError(location, e));
35 public boolean isEmpty() {
36 return errors.isEmpty();
39 public CompilationError[] getErrors() {
40 Collections.sort(errors);
41 return errors.toArray(new CompilationError[errors.size()]);
44 public void setExceptionPosition(long exceptionPosition) {
45 if(this.exceptionPosition == Locations.NO_LOCATION)
46 this.exceptionPosition = exceptionPosition;
49 public long getExceptionPosition() {
50 return exceptionPosition;
53 public String getErrorsAsString() {
54 StringBuilder b = new StringBuilder();
55 for(CompilationError error : errors)
56 b.append(error.description).append('\n');