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
...