Migrating Code from Scalac - smarter/dotty GitHub Wiki
-
sym.linkedClassOfClass
=>sym.linkedClass
-
definitions
=>ctx.definitions
tpe.member(name)
and tpe.decl(name)
now return a Denotation
, not a Symbol
. If no definition is found they return NoDenotation
(instead of NoSymbol
).
Most sym.isProperty
methods don't exist in dotc, test for flags instead. See dotc vs scalac: Trees, Symbols, Types & Denotations.
There are various kinds of logging
- Errors, warnings, etc:
ctx.inform
,ctx.warning
,ctx.error
, ... - Log messages displayed under
-Ylog:phase
:log(msg)
in scalac =>ctx.log(msg)
in dotc - Debug-Log messages displayed under
-Ydebug -Ylog:<phase>
:debuglog(msg)
in scalac =>ctx.debuglog(msg)
in dotc - Assertions:
assert(invariant)
- Fatal errors:
abort(msg)
in scalac =>throw new dotty.tools.dotc.FatalError(msg)
in dotc
Instead of Predef.println
, use dotc.config.Printers.somePrinter.println
Printers.scala. Printers can be easily added, enabled and disabled without changing command line arguments.
val default: Printer = new Printer // new Printer => print
val core: Printer = noPrinter // noPrinter => shut up
...