trait ZincReporter extends xsbti.Reporter with ConfigurableReporter
- Alphabetic
- By Inheritance
- ZincReporter
- ConfigurableReporter
- Reporter
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Abstract Value Members
- abstract def allProblems: Seq[Problem]
All the
Problems
seen by this reporter.All the
Problems
seen by this reporter.- Definition Classes
- ConfigurableReporter
- abstract def allProblemsPerPhase: Seq[ProblemPerPhase]
- abstract def comment(arg0: Position, arg1: String): Unit
- Definition Classes
- Reporter
- abstract def config: ReporterConfig
The configuration for this reporter.
The configuration for this reporter.
- Definition Classes
- ConfigurableReporter
- abstract def cwd: AbsolutePath
The current working directory of the user who started compilation.
The current working directory of the user who started compilation.
- Definition Classes
- ConfigurableReporter
- abstract def enableFatalWarnings(): Unit
Enables internal bloop implementation of fatal warnings.
Enables internal bloop implementation of fatal warnings.
Having fatal warnings implemented inside the compiler has several drawbacks:
1. Bloop receives a failed compilation when there is a warning. A failed compilation doesn't allow us to cache the work done during an incremental compiler cycle and the compilation products generated are thrown away. This means next time we compile we need to redo the work of compiling all changed source files when we would only want to recompile the files that produced a fatal warning.
2. When warnings are produced, Metals doesn't have access to the class files generated by the failed compilation. This affects negatively the editing experience in the editor.
To work around these limitations, we remove
-Xfatal-warnings
from the scalac options passed to the compiler and we implement fatal warnings ourselves in our reporter implementation.Our implementation promotes warnings to errors just before we're going to report them but still represents warnings as warnings in the analysis file. At the same time, it also treats successful compilations with fatal warnings as errors at the very end of the compilation pipeline, after all the compilation passes have been done in a build graph, and guarantees that it works for clients that have their compilations deduplicated.
All in all, implementing fatal warnings reproduces the previous behavior in the compiler but without the inconveniences of handling compilation results as failures when only fatal warnings are solely responsible for the failed result.
- abstract def getSourceFilesWithFatalWarnings: Set[File]
Tells the caller which source files have fatal warnings so that Bloop can mark them as changed and get recompiled in the next incremental cycle.
- abstract def hasErrors(): Boolean
true
if this reporter has received errors,false
otherwise.true
if this reporter has received errors,false
otherwise.- Definition Classes
- ConfigurableReporter
- abstract def hasWarnings(): Boolean
true
if this reporter has received warnings,false
otherwise.true
if this reporter has received warnings,false
otherwise.- Definition Classes
- ConfigurableReporter
- abstract def log(arg0: xsbti.Problem): Unit
- Definition Classes
- Reporter
- abstract def printSummary(): Unit
- Definition Classes
- Reporter
- abstract def problems(): Array[xsbti.Problem]
- Definition Classes
- Reporter
- abstract def processEndCompilation(previousSuccessfulProblems: List[ProblemPerPhase], code: StatusCode, clientClassesDir: Option[AbsolutePath], analysisOut: Option[AbsolutePath]): Unit
A function called at the very end of compilation that processes the state of the reporter.
A function called at the very end of compilation that processes the state of the reporter. The execution of this endpoint can clean or report more diagnostics with the client but it does not announce the end of compilation, which is instead done with announceEndCompilation.
- previousSuccessfulProblems
The problems reported in the previous compiler analysis that were successful.
- code
The status code for a given compilation. The status code can be used whenever there is a noop compile and it's successful or cancelled.
- clientClassesDir
The analysis file of the client in case it has been rewritten. compilation has been finished. When the request is deduplicated, this directory matches the classes directory of the deduplicated client.
- abstract def reportCancelledCompilation(): Unit
Report the compile cancellation of this project.
- abstract def reportCompilationProgress(progress: Long, total: Long): Unit
Report the progress from the compiler.
- abstract def reportEndCompilation(): Unit
A function called at the very end of compilation that processes the end of compilation from the reporter point of view as well as announce the end to the client.
A function called at the very end of compilation that processes the end of compilation from the reporter point of view as well as announce the end to the client.
This method is called when the caller knows for sure that announcing the end of compilation to the client is safe. For example, when a compilation fails and there are no background tasks to run. Compare this to the sister
reportEndCompilation
method which is used for the opposite. - abstract def reportEndIncrementalCycle(durationMs: Long, result: Try[Unit]): Unit
A function called after every incremental cycle, even if any compilation errors happen.
A function called after every incremental cycle, even if any compilation errors happen. This method is not called if the compilation is a no-op (e.g. same analysis as before).
- durationMs
The time it took to complete the incremental compiler cycle.
- result
The result of the incremental cycle. We don't use
bsp.StatusCode
because the bloop backend, where this method is used, should not depend on bsp4j.
- abstract def reportNextPhase(phase: String, sourceFile: File): Unit
Report when the compiler enters in a phase.
- abstract def reportStartCompilation(previousProblems: List[ProblemPerPhase]): Unit
A function called *always* at the very beginning of compilation.
- abstract def reportStartIncrementalCycle(sources: Seq[VirtualFile], outputDirs: Seq[File]): Unit
A function called before every incremental cycle with the compilation inputs.
A function called before every incremental cycle with the compilation inputs. This method is not called if the compilation is a no-op (e.g. same analysis as before).
- abstract def reset(): Unit
- Definition Classes
- Reporter
Concrete Value Members
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##: Int
- Definition Classes
- AnyRef → Any
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native() @IntrinsicCandidate()
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native() @IntrinsicCandidate()
- def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native() @IntrinsicCandidate()
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @IntrinsicCandidate()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @IntrinsicCandidate()
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def toString(): String
- Definition Classes
- AnyRef → Any
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
Deprecated Value Members
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable]) @Deprecated @Deprecated
- Deprecated