blob: 130a3c539f0ef13cd2ef1eea410befec86ad1c7b (
plain) (
tree)
|
|
import scala.annotation.compileTimeOnly
import scala.language.existentials
@compileTimeOnly("C1") class C1
object C1
class C2
@compileTimeOnly("C2") object C2
@compileTimeOnly("C3") case class C3(x: Int)
@compileTimeOnly("C4") case class C4(x: Int)
object C4
object pkg {
@compileTimeOnly("C5")
implicit class C5(val x: Int) {
def ext = ???
}
}
class C6(@compileTimeOnly("C6.x") val x: Int) {
@compileTimeOnly("C6.foo") def foo = 2
@compileTimeOnly("C6.Foo") type Foo = Int
@compileTimeOnly("C6.y") var y = 3
}
@compileTimeOnly("C7") class C7
@compileTimeOnly("C8") class C8[T]
object Test extends App {
new C1()
C1
new C2()
C2
new C3(2)
C3(2)
new C4(2)
C4(2)
import pkg._
2.ext
C5(2)
val c6 = new C6(2)
val _ = c6.x
c6.foo
type Foo = c6.Foo
c6.y = c6.y
val c701: (C7, C7) = ???
val c702: (C7 => C7) = ???
val c703: { val x: C7 } = ???
val c704: AnyRef with C7 = ???
// https://groups.google.com/forum/#!topic/scala-internals/5n07TiCnBZU
// val c705: ({ @compileTimeOnly("C7") type C7[T] = List[T] })#C7[_] = ???
val c706: C7 Either C7 = ???
val c707a: List[C7] = ???
val c707b = List[C7]()
val c708a: T forSome { type T <: C7 } = ???
// https://groups.google.com/forum/#!topic/scala-internals/5n07TiCnBZU
// val c708b: T forSome { @compileTimeOnly("C7") type T } = ???
val c709: (C8[Int], C8[C7]) = ???
val c710: (C8[_] => C8[_]) = ???
}
@compileTimeOnly("placebo")
class placebo extends scala.annotation.StaticAnnotation
@placebo
class Test {
@placebo def x = (2: @placebo)
}
|