Differences between scalameta implementation and dotc.
- Generally put all zero length method calls or arguments in Synthetics section
- Pattern val defs -- [unapply|unapplySeq is zero-length]
- For comprehensions -- [map|flatMap|withFilter|foreach etc is zero-length].
- Implicit conversions -- [span of Apply node is same as its single argument (which has a length)].
- Implicit arguments -- [span of argument is zero length].
- Record signature information in Symbols section.
- Record access modifier information in Symbols section.
- Recognise named arguments and traverse their bodies.
- Recognise pattern val definitions.
- Recognise anonymous functions.
- Recognise specialised constant enum values.
- Use setter symbol when assigning to a var.
- Substitute constructor type params for the class parameters.
- Skip the synthetic import statement in an Enum class.
- Do not traverse RHS of synthetic val|var|def unless anonymous.
- Avoid symbols with volatile names. - [$1$,
, etc]. - Skip module val
- Add metac printer.