Skip to content

Commit 012cb93

Browse files
committed
Add proper name to tasty.Symbol
1 parent 61c50a3 commit 012cb93

File tree

7 files changed

+97
-102
lines changed

7 files changed

+97
-102
lines changed

compiler/src/dotty/tools/dotc/tasty/internal/TastySymbol.scala

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import dotty.tools.dotc.core.Contexts.Context
44
import dotty.tools.dotc.core.Symbols._
55

66
import scala.tasty.trees
7+
import scala.tasty.names
78

89
object TastySymbol {
910

@@ -12,23 +13,13 @@ object TastySymbol {
1213

1314
private class Impl(sym: Symbol, ctx: Context) extends scala.tasty.Symbol { self =>
1415

15-
override def name: String = sym.name(ctx).toString
16+
override def name: names.Name = Name(sym.name(ctx))
1617

1718
override def owner: scala.tasty.Symbol = TastySymbol(sym.denot(ctx).owner)(ctx)
1819

1920
override def definition: Option[trees.Definition] = None // TODO return definition if it is known
2021

21-
def ownersIterator: Iterator[scala.tasty.Symbol] = new Iterator[scala.tasty.Symbol] {
22-
private[this] var current: scala.tasty.Symbol = self.owner
23-
override def hasNext = current != scala.tasty.NoSymbol
24-
override def next() = {
25-
val c = current
26-
current = current.owner
27-
c
28-
}
29-
}
30-
3122
override def toString: String =
32-
s"Symbol(${ownersIterator.foldLeft(name)((acc, s) => s"${s.name}.$acc")})"
23+
s"Symbol(${sym.showFullName(ctx)})"
3324
}
3425
}

library/src/scala/tasty/NoSymbol.scala

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
package scala.tasty
22

3+
import scala.tasty.names.Name
4+
35
object NoSymbol extends Symbol {
4-
def name: String = "NoSymbol"
6+
def name: Name = new Name { override def toString = "<NoSymbol>" } // name that cannot be extracted
57
def owner: Symbol = NoSymbol
68
def definition: None.type = None
79
override def toString: String = "NoSymbol"

library/src/scala/tasty/Symbol.scala

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
package scala.tasty
22

3+
import scala.tasty.names.Name
34
import scala.tasty.trees.Definition
45

56
trait Symbol {
6-
def name: String // TODO should be Name?
7+
def name: Name
78
def owner: Symbol
89
def definition: Option[Definition]
910
}

tests/pos/tasty/definitions.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ object definitions {
5555
// ------ Definitions ---------------------------------
5656

5757
trait Symbol {
58+
def name: Name = ???
5859
def owner: Symbol = ???
5960
def definition: Option[Definition] = ???
6061
}

tests/run-with-compiler/tasty-extractors-1.check

Lines changed: 32 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -17,16 +17,16 @@ Literal(String("abc"))
1717
ConstantType(String("abc"))
1818

1919
Apply(Ident(Simple(println)), List(Literal(String("abc"))))
20-
SymRef(Symbol(<root>.scala.Unit), ThisType(SymRef(Symbol(<root>.scala), NoPrefix)))
20+
SymRef(Symbol(scala.Unit), ThisType(SymRef(Symbol(scala), NoPrefix)))
2121

2222
Typed(Literal(Int(8)), Ident(TypeName(Simple(Int))))
23-
NameRef(TypeName(Simple(Int)), SymRef(Symbol(<root>.scala), ThisType(SymRef(Symbol(<root>), NoPrefix))))
23+
NameRef(TypeName(Simple(Int)), SymRef(Symbol(scala), ThisType(SymRef(Symbol(<root>), NoPrefix))))
2424

2525
Typed(Literal(Byte(8)), Ident(TypeName(Simple(Byte))))
26-
NameRef(TypeName(Simple(Byte)), SymRef(Symbol(<root>.scala), ThisType(SymRef(Symbol(<root>), NoPrefix))))
26+
NameRef(TypeName(Simple(Byte)), SymRef(Symbol(scala), ThisType(SymRef(Symbol(<root>), NoPrefix))))
2727

2828
Typed(Literal(Short(8)), Ident(TypeName(Simple(Short))))
29-
NameRef(TypeName(Simple(Short)), SymRef(Symbol(<root>.scala), ThisType(SymRef(Symbol(<root>), NoPrefix))))
29+
NameRef(TypeName(Simple(Short)), SymRef(Symbol(scala), ThisType(SymRef(Symbol(<root>), NoPrefix))))
3030

3131
Literal(Char('a'))
3232
ConstantType(Char('a'))
@@ -35,89 +35,89 @@ Block(List(Literal(Int(1)), Literal(Int(2))), Literal(Int(3)))
3535
ConstantType(Int(3))
3636

3737
If(Typed(Literal(Boolean(true)), Ident(TypeName(Simple(Boolean)))), Literal(Int(1)), Literal(Int(2)))
38-
SymRef(Symbol(<root>.scala.Int), ThisType(SymRef(Symbol(<root>.scala), NoPrefix)))
38+
SymRef(Symbol(scala.Int), ThisType(SymRef(Symbol(scala), NoPrefix)))
3939

4040
Match(Literal(String("a")), List(CaseDef(Value(Literal(String("a"))), None, Block(Nil, Literal(Unit())))))
41-
SymRef(Symbol(<root>.scala.Unit), ThisType(SymRef(Symbol(<root>.scala), NoPrefix)))
41+
SymRef(Symbol(scala.Unit), ThisType(SymRef(Symbol(scala), NoPrefix)))
4242

4343
Match(Literal(String("b")), List(CaseDef(Bind(Simple(n), Value(Ident(Simple(_)))), None, Block(Nil, Literal(Unit())))))
44-
SymRef(Symbol(<root>.scala.Unit), ThisType(SymRef(Symbol(<root>.scala), NoPrefix)))
44+
SymRef(Symbol(scala.Unit), ThisType(SymRef(Symbol(scala), NoPrefix)))
4545

4646
Match(Literal(String("c")), List(CaseDef(Bind(Simple(n), TypeTest(Ident(TypeName(Simple(String))))), None, Block(Nil, Literal(Unit())))))
47-
SymRef(Symbol(<root>.scala.Unit), ThisType(SymRef(Symbol(<root>.scala), NoPrefix)))
47+
SymRef(Symbol(scala.Unit), ThisType(SymRef(Symbol(scala), NoPrefix)))
4848

4949
Match(Literal(String("e")), List(CaseDef(Value(Ident(Simple(_))), None, Block(Nil, Literal(Unit())))))
50-
SymRef(Symbol(<root>.scala.Unit), ThisType(SymRef(Symbol(<root>.scala), NoPrefix)))
50+
SymRef(Symbol(scala.Unit), ThisType(SymRef(Symbol(scala), NoPrefix)))
5151

5252
Match(Literal(String("f")), List(CaseDef(TypeTest(Ident(TypeName(Simple(String)))), None, Block(Nil, Literal(Unit())))))
53-
SymRef(Symbol(<root>.scala.Unit), ThisType(SymRef(Symbol(<root>.scala), NoPrefix)))
53+
SymRef(Symbol(scala.Unit), ThisType(SymRef(Symbol(scala), NoPrefix)))
5454

5555
Match(Literal(String("g")), List(CaseDef(Alternative(List(TypeTest(Ident(TypeName(Simple(String)))), TypeTest(Ident(TypeName(Simple(Int)))))), None, Block(Nil, Literal(Unit())))))
56-
SymRef(Symbol(<root>.scala.Unit), ThisType(SymRef(Symbol(<root>.scala), NoPrefix)))
56+
SymRef(Symbol(scala.Unit), ThisType(SymRef(Symbol(scala), NoPrefix)))
5757

5858
Match(Literal(String("h")), List(CaseDef(Value(Ident(Simple(_))), Some(Literal(Boolean(false))), Block(Nil, Literal(Unit())))))
59-
SymRef(Symbol(<root>.scala.Unit), ThisType(SymRef(Symbol(<root>.scala), NoPrefix)))
59+
SymRef(Symbol(scala.Unit), ThisType(SymRef(Symbol(scala), NoPrefix)))
6060

6161
Block(List(ValDef(Simple(a), Synthetic(), Some(Literal(String("o"))), List())), Match(Literal(String("i")), List(CaseDef(Bind(Simple(a), Value(Ident(Simple(_)))), None, Block(Nil, Literal(Unit()))))))
62-
SymRef(Symbol(<root>.scala.Unit), ThisType(SymRef(Symbol(<root>.scala), NoPrefix)))
62+
SymRef(Symbol(scala.Unit), ThisType(SymRef(Symbol(scala), NoPrefix)))
6363

6464
Match(Apply(TypeApply(Select(Ident(Simple(Option)), Simple(apply)), List(Synthetic())), List(Literal(Int(4)))), List(CaseDef(TypeTest(Synthetic()), None, Block(Nil, Typed(Ident(Simple(a)), Synthetic()))), CaseDef(Value(Ident(Simple(None))), None, Block(Nil, Literal(Int(1))))))
65-
NameRef(TypeName(Simple(Int)), SymRef(Symbol(<root>.scala), ThisType(SymRef(Symbol(<root>), NoPrefix))))
65+
NameRef(TypeName(Simple(Int)), SymRef(Symbol(scala), ThisType(SymRef(Symbol(<root>), NoPrefix))))
6666

6767
Match(Ident(Simple(Nil)), List(CaseDef(Unapply(TypeApply(Select(Ident(Simple(List)), Simple(unapplySeq)), List(Synthetic())), Nil, List(Bind(Simple(a), Value(Ident(Simple(_)))), Bind(Simple(b), Value(Ident(Simple(_)))), Bind(Simple(c), Value(Ident(Simple(_)))))), None, Block(Nil, Literal(Unit())))))
68-
SymRef(Symbol(<root>.scala.Unit), ThisType(SymRef(Symbol(<root>.scala), NoPrefix)))
68+
SymRef(Symbol(scala.Unit), ThisType(SymRef(Symbol(scala), NoPrefix)))
6969

7070
Try(Literal(Int(1)), List(CaseDef(Value(Ident(Simple(_))), None, Block(Nil, Literal(Unit())))), None)
71-
OrType(SymRef(Symbol(<root>.scala.Int), ThisType(SymRef(Symbol(<root>.scala), NoPrefix))), SymRef(Symbol(<root>.scala.Unit), ThisType(SymRef(Symbol(<root>.scala), NoPrefix))))
71+
OrType(SymRef(Symbol(scala.Int), ThisType(SymRef(Symbol(scala), NoPrefix))), SymRef(Symbol(scala.Unit), ThisType(SymRef(Symbol(scala), NoPrefix))))
7272

7373
Try(Literal(Int(2)), Nil, Some(Literal(Unit())))
7474
ConstantType(Int(2))
7575

7676
Try(Literal(Int(3)), List(CaseDef(Value(Ident(Simple(_))), None, Block(Nil, Literal(Unit())))), Some(Literal(Unit())))
77-
OrType(SymRef(Symbol(<root>.scala.Int), ThisType(SymRef(Symbol(<root>.scala), NoPrefix))), SymRef(Symbol(<root>.scala.Unit), ThisType(SymRef(Symbol(<root>.scala), NoPrefix))))
77+
OrType(SymRef(Symbol(scala.Int), ThisType(SymRef(Symbol(scala), NoPrefix))), SymRef(Symbol(scala.Unit), ThisType(SymRef(Symbol(scala), NoPrefix))))
7878

7979
Apply(Select(Literal(String("a")), Simple(==)), List(Literal(String("b"))))
80-
SymRef(Symbol(<root>.scala.Boolean), ThisType(SymRef(Symbol(<root>.scala), NoPrefix)))
80+
SymRef(Symbol(scala.Boolean), ThisType(SymRef(Symbol(scala), NoPrefix)))
8181

8282
Apply(Select(New(Ident(TypeName(Simple(Object)))), Simple(<init>)), Nil)
83-
SymRef(Symbol(<root>.java.lang.Object), ThisType(SymRef(Symbol(<root>.java.lang), NoPrefix)))
83+
SymRef(Symbol(java.lang.Object), ThisType(SymRef(Symbol(java.lang), NoPrefix)))
8484

8585
Apply(Select(Ident(Simple(Int)), Simple(box)), List(NamedArg(Simple(x), Literal(Int(9)))))
86-
SymRef(Symbol(<root>.java.lang.Integer), ThisType(SymRef(Symbol(<root>.java.lang), NoPrefix)))
86+
SymRef(Symbol(java.lang.Integer), ThisType(SymRef(Symbol(java.lang), NoPrefix)))
8787

8888
Apply(TypeApply(Select(Ident(Simple(Ordering)), Simple(apply)), List(Ident(TypeName(Simple(Int))))), List(Ident(Simple(Int))))
89-
AppliedType(SymRef(Symbol(<root>.scala.math.Ordering), ThisType(SymRef(Symbol(<root>.scala.math), NoPrefix))), List(NameRef(TypeName(Simple(Int)), SymRef(Symbol(<root>.scala), ThisType(SymRef(Symbol(<root>), NoPrefix))))))
89+
AppliedType(SymRef(Symbol(scala.math.Ordering), ThisType(SymRef(Symbol(scala.math), NoPrefix))), List(NameRef(TypeName(Simple(Int)), SymRef(Symbol(scala), ThisType(SymRef(Symbol(<root>), NoPrefix))))))
9090

9191
Block(List(ValDef(Simple(a), Ident(TypeName(Simple(Int))), Some(Literal(Int(3))), List())), Literal(Unit()))
92-
SymRef(Symbol(<root>.scala.Unit), ThisType(SymRef(Symbol(<root>.scala), NoPrefix)))
92+
SymRef(Symbol(scala.Unit), ThisType(SymRef(Symbol(scala), NoPrefix)))
9393

9494
Block(List(ValDef(Simple(b), Ident(TypeName(Simple(Int))), Some(Literal(Int(3))), List())), Literal(Unit()))
95-
SymRef(Symbol(<root>.scala.Unit), ThisType(SymRef(Symbol(<root>.scala), NoPrefix)))
95+
SymRef(Symbol(scala.Unit), ThisType(SymRef(Symbol(scala), NoPrefix)))
9696

9797
Block(List(DefDef(Simple(f1), List(), List(), Ident(TypeName(Simple(Int))), Some(Literal(Int(3))), List())), Literal(Unit()))
98-
SymRef(Symbol(<root>.scala.Unit), ThisType(SymRef(Symbol(<root>.scala), NoPrefix)))
98+
SymRef(Symbol(scala.Unit), ThisType(SymRef(Symbol(scala), NoPrefix)))
9999

100100
Block(List(DefDef(Simple(f2), List(), List(), Ident(TypeName(Simple(Int))), Some(Return(Literal(Int(4)))), List())), Literal(Unit()))
101-
SymRef(Symbol(<root>.scala.Unit), ThisType(SymRef(Symbol(<root>.scala), NoPrefix)))
101+
SymRef(Symbol(scala.Unit), ThisType(SymRef(Symbol(scala), NoPrefix)))
102102

103103
Block(List(DefDef(Simple(f3), List(), List(List(ValDef(Simple(i), Ident(TypeName(Simple(Int))), None, List()))), Ident(TypeName(Simple(Int))), Some(Ident(Simple(i))), List())), Literal(Unit()))
104-
SymRef(Symbol(<root>.scala.Unit), ThisType(SymRef(Symbol(<root>.scala), NoPrefix)))
104+
SymRef(Symbol(scala.Unit), ThisType(SymRef(Symbol(scala), NoPrefix)))
105105

106106
Block(List(DefDef(Simple(f4), List(), List(List(ValDef(Simple(i), Ident(TypeName(Simple(Int))), None, List())), List(ValDef(Simple(j), Ident(TypeName(Simple(Int))), None, List()))), Ident(TypeName(Simple(Int))), Some(Apply(Select(Ident(Simple(i)), Simple(+)), List(Ident(Simple(j))))), List())), Literal(Unit()))
107-
SymRef(Symbol(<root>.scala.Unit), ThisType(SymRef(Symbol(<root>.scala), NoPrefix)))
107+
SymRef(Symbol(scala.Unit), ThisType(SymRef(Symbol(scala), NoPrefix)))
108108

109109
Block(List(DefDef(Simple(f5), List(), List(List(ValDef(Simple(i), Ident(TypeName(Simple(Int))), None, List()))), Ident(TypeName(Simple(Int))), Some(Ident(Simple(i))), List()), DefDef(DefaultGetter(Simple(f5), f5), List(), List(), Synthetic(), Some(Literal(Int(9))), List())), Literal(Unit()))
110-
SymRef(Symbol(<root>.scala.Unit), ThisType(SymRef(Symbol(<root>.scala), NoPrefix)))
110+
SymRef(Symbol(scala.Unit), ThisType(SymRef(Symbol(scala), NoPrefix)))
111111

112112
Block(List(DefDef(Simple(f6), List(TypeDef(TypeName(Simple(T)), TypeBoundsTree(Synthetic(), Synthetic()), List())), List(List(ValDef(Simple(x), Ident(TypeName(Simple(T))), None, List()))), Ident(TypeName(Simple(T))), Some(Ident(Simple(x))), List())), Literal(Unit()))
113-
SymRef(Symbol(<root>.scala.Unit), ThisType(SymRef(Symbol(<root>.scala), NoPrefix)))
113+
SymRef(Symbol(scala.Unit), ThisType(SymRef(Symbol(scala), NoPrefix)))
114114

115115
Block(List(DefDef(Simple(f7), List(TypeDef(TypeName(Simple(T)), TypeBoundsTree(Synthetic(), Synthetic()), List())), List(List(ValDef(Simple(x), Ident(TypeName(Simple(T))), None, List()))), Singleton(Ident(Simple(x))), Some(Ident(Simple(x))), List())), Literal(Unit()))
116-
SymRef(Symbol(<root>.scala.Unit), ThisType(SymRef(Symbol(<root>.scala), NoPrefix)))
116+
SymRef(Symbol(scala.Unit), ThisType(SymRef(Symbol(scala), NoPrefix)))
117117

118118
Block(List(DefDef(Simple(f8), List(), List(List(ValDef(Simple(i), Annotated(Applied(Synthetic(), List(Ident(TypeName(Simple(Int))))), Apply(Select(New(Synthetic()), Simple(<init>)), Nil)), None, List()))), Ident(TypeName(Simple(Int))), Some(Literal(Int(9))), List())), Apply(Ident(Simple(f8)), List(Typed(Repeated(List(Literal(Int(1)), Literal(Int(2)), Literal(Int(3)))), Synthetic()))))
119-
NameRef(TypeName(Simple(Int)), SymRef(Symbol(<root>.scala), ThisType(SymRef(Symbol(<root>), NoPrefix))))
119+
NameRef(TypeName(Simple(Int)), SymRef(Symbol(scala), ThisType(SymRef(Symbol(<root>), NoPrefix))))
120120

121121
Block(List(DefDef(Simple(f9), List(), List(List(ValDef(Simple(i), ByName(Ident(TypeName(Simple(Int)))), None, List()))), Ident(TypeName(Simple(Int))), Some(Ident(Simple(i))), List())), Literal(Unit()))
122-
SymRef(Symbol(<root>.scala.Unit), ThisType(SymRef(Symbol(<root>.scala), NoPrefix)))
122+
SymRef(Symbol(scala.Unit), ThisType(SymRef(Symbol(scala), NoPrefix)))
123123

0 commit comments

Comments
 (0)