summaryrefslogtreecommitdiff
path: root/test/files/run/t8196.scala
blob: e219ac166b0d8ae4dc50ecc52370988d6c8d9e92 (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
import scala.reflect.runtime.{ universe => ru }

object Test extends App {
 
  trait FormTrait {

    val runtimeMirror = ru.runtimeMirror(this.getClass.getClassLoader)
    val instanceMirror = runtimeMirror.reflect(this)
    val members = instanceMirror.symbol.typeSignature.members
    def fields = members.filter(_.typeSignature <:< ru.typeOf[Int])
  }
 
  val f = () => {
 
    class Form1 extends FormTrait {
      val f1 = 5
    }
    val form1 = new Form1
 
    println(form1.fields)
 
    val form2 = new FormTrait {
      val g1 = new Form1
    }
 
    form2.g1 // comment this line in order to make the test pass
    ()
  }

  val g = () => {
    // Reported as SI-8195, same root cause
    trait Form {
 
      private val runtimeMirror = ru.runtimeMirror(this.getClass.getClassLoader)
      private val instanceMirror = runtimeMirror.reflect(this)
      private val members = instanceMirror.symbol.typeSignature.members
 
    }
 
    val f1 = new Form {
      val a = 1
    }
 
    val f2 = new Form {
      val b = f1.a
    }
  }

  f() 
  g() 
}