summaryrefslogtreecommitdiff
path: root/src/compiler/scala/reflect/api/Names.scala
blob: 76e50497decd9f2602f1b04a3492f1eba8dae363 (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
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
  }

  def newTermName(cs: Array[Char], offset: Int, len: Int): TermName
  def newTermName(cs: Array[Byte], offset: Int, len: Int): TermName
  def newTermName(s: String): TermName

  def newTypeName(cs: Array[Char], offset: Int, len: Int): TypeName
  def newTypeName(cs: Array[Byte], offset: Int, len: Int): TypeName
  def newTypeName(s: String): TypeName

  implicit def promoteTermNamesAsNecessary(name: Name): TermName = name.toTermName

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