trait ZincReporter extends xsbti.Reporter with ConfigurableReporter
- Alphabetic
- By Inheritance
- ZincReporter
- ConfigurableReporter
- Reporter
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
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
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(previousSuccessfulProblems: List[ProblemPerPhase], code: StatusCode): Unit
A function called at the very end of compilation, before returning from Zinc to bloop.
A function called at the very end of compilation, before returning from Zinc to bloop. This method **is** called if the compilation is a no-op.
- 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.
-
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[File], 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[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @native() @throws( ... )
-
final
def
eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
def
equals(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
def
finalize(): Unit
- Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( classOf[java.lang.Throwable] )
-
final
def
getClass(): Class[_]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
-
def
hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
-
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()
-
final
def
notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
-
final
def
synchronized[T0](arg0: ⇒ T0): T0
- Definition Classes
- AnyRef
-
def
toString(): String
- Definition Classes
- AnyRef → Any
-
final
def
wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @throws( ... )