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;fp=bundles%2Forg.simantics.scl.compiler%2Fsrc%2Forg%2Fsimantics%2Fscl%2Fcompiler%2Ferrors%2FErrorLog.java;h=dbd2c3fe9d1bf287aaaf72e811dde0d2822d59bb;hp=0000000000000000000000000000000000000000;hb=969bd23cab98a79ca9101af33334000879fb60c5;hpb=866dba5cd5a3929bbeae85991796acb212338a08 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 new file mode 100644 index 000000000..dbd2c3fe9 --- /dev/null +++ b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/errors/ErrorLog.java @@ -0,0 +1,59 @@ +package org.simantics.scl.compiler.errors; + +import java.util.ArrayList; +import java.util.Collections; + +import org.simantics.scl.compiler.common.exceptions.InternalCompilerError; + +public class ErrorLog { + ArrayList errors = new ArrayList(); + long exceptionPosition; + + public void log(String message) { + errors.add(new CompilationError(message)); + } + + public void log(CompilationError error) { + errors.add(error); + } + + public void log(long locatable, String description) { + log(new CompilationError(locatable, description)); + } + + public void log(Exception e) { + if(e instanceof InternalCompilerError) + log(((InternalCompilerError)e).location, e); + else + log(new CompilationError(e)); + } + + public void log(long location, Exception e) { + log(new CompilationError(location, e)); + } + + public boolean isEmpty() { + return errors.isEmpty(); + } + + public CompilationError[] getErrors() { + Collections.sort(errors); + return errors.toArray(new CompilationError[errors.size()]); + } + + public void setExceptionPosition(long exceptionPosition) { + if(this.exceptionPosition == Locations.NO_LOCATION) + this.exceptionPosition = exceptionPosition; + } + + public long getExceptionPosition() { + return exceptionPosition; + } + + public String getErrorsAsString() { + StringBuilder b = new StringBuilder(); + for(CompilationError error : errors) + b.append(error.description).append('\n'); + return b.toString(); + } +}