Pickler

dotty.tools.dotc.transform.Pickler
See thePickler companion class
object Pickler

Attributes

Companion
class
Graph
Supertypes
class Object
trait Matchable
class Any
Self type
Pickler.type

Members list

Type members

Classlikes

A holder for syncronization points and reports when writing TASTy asynchronously. The callbacks should only be called once.

A holder for syncronization points and reports when writing TASTy asynchronously. The callbacks should only be called once.

Attributes

Companion
object
Supertypes
class Object
trait Matchable
class Any

Attributes

Companion
class
Supertypes
class Object
trait Matchable
class Any
Self type

Attributes

Supertypes
class Object
trait Matchable
class Any

Value members

Concrete methods

Asynchronously writes TASTy files to the destination -Yearly-tasty-output. If no units have been suspended, then we are "done", which enables Zinc to be signalled.

Asynchronously writes TASTy files to the destination -Yearly-tasty-output. If no units have been suspended, then we are "done", which enables Zinc to be signalled.

If there are suspended units, (due to calling a macro defined in the same run), then the API is incomplete, so it would be a mistake to signal Zinc. This is a sensible default, because Zinc by default will ignore the signal if there are macros in the API.

  • See sbt-test/pipelining/pipelining-scala-macro for an example.

TODO: The user can override this default behaviour in Zinc to always listen to the signal, (e.g. if they define the macro implementation in an upstream, non-pipelined project).

  • See sbt-test/pipelining/pipelining-scala-macro-force where we force Zinc to listen to the signal. If the user wants force early output to be written, then they probably also want to benefit from pipelining, which then makes suspension problematic as it increases compilation times. Proposal: perhaps we should provide a flag -Ystrict-pipelining (as an alternative to -Yno-suspended-units), which fails in the condition of definition of a macro where its implementation is in the same project. (regardless of if it is used); this is also more strict than preventing suspension at typer. The user is then certain that they are always benefitting as much as possible from pipelining.

Attributes

Concrete fields

inline val ParallelPickling: true

If set, perform jump target compacting, position and comment pickling, as well as final assembly in parallel with downstream phases; force only in backend.

If set, perform jump target compacting, position and comment pickling, as well as final assembly in parallel with downstream phases; force only in backend.

Attributes

val name: String