]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/errors/ErrorLog.java
Sync git svn branch with SVN repository r33144.
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / errors / ErrorLog.java
1 package org.simantics.scl.compiler.errors;
2
3 import java.util.ArrayList;
4 import java.util.Collections;
5
6 import org.simantics.scl.compiler.common.exceptions.InternalCompilerError;
7
8 public class ErrorLog {
9     ArrayList<CompilationError> errors = new ArrayList<CompilationError>(); 
10     long exceptionPosition;
11     
12     public void log(String message) {
13         errors.add(new CompilationError(message));
14     }
15     
16     public void log(CompilationError error) {
17         errors.add(error);
18     }
19     
20     public void log(long locatable, String description) {
21         log(new CompilationError(locatable, description));
22     }
23
24     public void log(Exception e) {
25         if(e instanceof InternalCompilerError)
26             log(((InternalCompilerError)e).location, e);
27         else
28             log(new CompilationError(e));
29     }
30     
31     public void log(long location, Exception e) {
32         log(new CompilationError(location, e));
33     }
34     
35     public boolean isEmpty() {
36         return errors.isEmpty();
37     }
38
39     public CompilationError[] getErrors() {
40         Collections.sort(errors);
41         return errors.toArray(new CompilationError[errors.size()]);
42     }
43
44     public void setExceptionPosition(long exceptionPosition) {
45         if(this.exceptionPosition == Locations.NO_LOCATION)
46             this.exceptionPosition = exceptionPosition;
47     }
48     
49     public long getExceptionPosition() {
50         return exceptionPosition;
51     }
52
53     public String getErrorsAsString() {
54         StringBuilder b = new StringBuilder();
55         for(CompilationError error : errors)
56             b.append(error.description).append('\n');
57         return b.toString();
58     }
59     
60     @Override
61     public String toString() {
62         return getErrorsAsString();
63     }
64 }