summaryrefslogtreecommitdiff
path: root/src/library/scala/reflect/api/Names.scala
blob: e226d2265a1bfa4b767582614d686572b7bb3178 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
package scala.reflect
package api

trait Names {

  type Name >: Null <: AbsName
  type TypeName <: Name
  type TermName <: Name

  abstract class AbsName {
    def isTermName: Boolean
    def isTypeName: Boolean
    def toTermName: TermName
    def toTypeName: TypeName

    /** Replace all occurrences of $op_names in this name by corresponding operator symbols.
     *  Example: `foo_+=` becomes `foo_$plus$eq`.
     */
    def decode: String

    /** Replace all occurrences of operator symbols in this name by corresponding $op_names.
     *  Example: `foo_$plus$eq` becomes `foo_+=`
     */
    def encode: Name
  }

  def newTermName(s: String): TermName
  def newTypeName(s: String): TypeName

  def EmptyTermName: TermName = newTermName("")
  def EmptyTypeName: TypeName = EmptyTermName.toTypeName
}