summaryrefslogtreecommitdiff
path: root/test/files/neg/compile-time-only-a.scala
blob: 533175a6996ceb4c63ab74db238e24415a79e2af (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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
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)
}