Skip to content

Commit 057b158

Browse files
committed
update TODO
1 parent afff105 commit 057b158

File tree

1 file changed

+18
-45
lines changed

1 file changed

+18
-45
lines changed

tests/semanticdb/todo.md

Lines changed: 18 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1,50 +1,23 @@
11
# Todo List
22
Differences between scalameta implementation and dotc.
33

4-
- [ ] For comprehension in Synthetic section.
5-
- [ ] Implicit conversions in Synthetic section.
6-
- [ ] Record signature information in Symbols section.
7-
- [ ] Record access modifier information in Symbols section.
8-
- [x] Record all definitions in Symbols section.
4+
- Generally put all zero length method calls or arguments in Synthetics section
5+
- Pattern val defs -- [unapply|unapplySeq is zero-length]
6+
- For comprehensions -- [map|flatMap|withFilter|foreach etc is zero-length].
7+
- Implicit conversions -- [span of Apply node is same as its single argument (which has a length)].
8+
- Implicit arguments -- [span of argument is zero length].
9+
- Record signature information in Symbols section.
10+
- Record access modifier information in Symbols section.
911

10-
## ValPatterns
12+
## Completed
1113

12-
Val patterns are tricky due to desugaring before ExtractSemanticDB sees them.
13-
14-
### Tuples
15-
```scala
16-
val (left, right) = (1, 2)
17-
```
18-
desugars to
19-
```scala
20-
private[this] <synthetic> val $3$: (Int, Int) = Tuple2.apply[Int, Int](1, 2)
21-
val left: Int = this.$3$._1
22-
val right: Int = this.$3$._2
23-
```
24-
25-
### Product1 Pattern
26-
```scala
27-
val Some(number1) = Some(1)
28-
```
29-
desugars to
30-
```scala
31-
val number1: Int = Some.apply[Int](1):Some[Int] @unchecked match {
32-
case Some.unapply[Int](number1 @ _):Some[Int] => number1:Int
33-
}
34-
```
35-
36-
### ProductN Pattern
37-
```scala
38-
val x #:: xs = LazyList(1, 2)
39-
```
40-
desugars to
41-
```scala
42-
private[this] <synthetic> val $2$: (Int, LazyList[Int]) =
43-
LazyList.apply[Int]([1,2 : Int]:Int*):LazyList[Int] @unchecked match {
44-
case #::.unapply[Int](x @ _, xs @ _):LazyList[Int] => Tuple2.apply[Int, LazyList[Int]](x, xs)
45-
}
46-
val x: Int = this.$2$._1
47-
val xs: LazyList[Int] = this.$2$._2
48-
```
49-
50-
perhaps it is safe to recognise these patterns if the binds were made synthetic.
14+
- [x] Recognise pattern val definitions.
15+
- [x] Recognise anonymous functions.
16+
- [x] Recognise specialised constant enum values.
17+
- [x] Use setter symbol when assigning to a var.
18+
- [x] Substitute constructor type params for the class parameters.
19+
- [x] Skip the synthetic import statement in an Enum class.
20+
- [x] Do not traverse RHS of synthetic val|var|def unless anonymous.
21+
- [x] Avoid symbols with volatile names. - [$1$, $2$, etc].
22+
- [x] Skip module val
23+
- [x] Add metac printer.

0 commit comments

Comments
 (0)