aboutsummaryrefslogblamecommitdiff
path: root/docs/docs/usage/migrating.md
blob: 5a2f64be3d1693fcbf2485c846eebd526d94e180 (plain) (tree)
1
2
3
4
5
   
                


                           













                                                                              
                                   







                                                                             














                                                                                                                                                 
---
layout: doc-page
title: "Migrating to Dotty"
---

### Minor tweaks ###
 * `sym.linkedClassOfClass` => `sym.linkedClass`
 * `definitions` => `ctx.definitions`

### Member Lookup ###
`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`).

### Symbol Properties ###
Most `sym.isProperty` methods don't exist in dotc, test for flags instead. See
[dotc vs scalac: Trees, Symbols, Types & Denotations]

### Logging, Error Reporting, Failures ###
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


#### During development / debugging ####
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.

```scala
val default: Printer = new Printer // new Printer => print
val core:    Printer = noPrinter   // noPrinter   => shut up
```

[dotc vs scalac: Trees, Symbols, Types & Denotations]: https://github.com/lampepfl/dotty/wiki/dotc-vs-scalac:-Trees,-Symbols,-Types-&-Denotations
[Printers.scala]: https://github.com/lampepfl/dotty/blob/master/src/dotty/tools/dotc/config/Printers.scala