diff options
author | Eugene Burmako <xeno.by@gmail.com> | 2013-05-30 19:16:28 +0200 |
---|---|---|
committer | Eugene Burmako <xeno.by@gmail.com> | 2014-02-12 14:50:16 +0100 |
commit | 30174f9453a44845156f4abca0cd6317da3e27cc (patch) | |
tree | 1cf6d6049c769cb14e0306ef0c1e23b05cb521a2 /test/files/run/t7533.scala | |
parent | 1af8dcb22b36cf256eef0615e2f3a7005ee21e68 (diff) | |
download | scala-30174f9453a44845156f4abca0cd6317da3e27cc.tar.gz scala-30174f9453a44845156f4abca0cd6317da3e27cc.tar.bz2 scala-30174f9453a44845156f4abca0cd6317da3e27cc.zip |
SI-7533 Adds Symbol.isAbstract
Amazingly enough, we've missed the fact that non-type symbols can also
be abstract. Having been enlightened by this, I'm exposing isDeferred
and merging it along with isAbstractType and isAbstractClass into the
unified Symbol.isAbstract method.
Diffstat (limited to 'test/files/run/t7533.scala')
-rw-r--r-- | test/files/run/t7533.scala | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/test/files/run/t7533.scala b/test/files/run/t7533.scala new file mode 100644 index 0000000000..46d0b3b02e --- /dev/null +++ b/test/files/run/t7533.scala @@ -0,0 +1,38 @@ +import scala.reflect.runtime.universe._ + +abstract class C { + val x1: Int + val x2: Int = 2 + def y1: Int + def y2: Int = 2 + type T1 <: Int + type T2 = Int +} +trait T { + val z1: Int + val z2: Int = 2 + def w1: Int + def w2: Int = 2 + type U1 <: Int + type U2 = Int +} +class D extends C { + val x1 = 3 + def y1 = 3 +} +object M + +object Test extends App { + println("Testing Symbol.isAbstract...") + def test[T: TypeTag] = { + val sym = typeOf[T].typeSymbol + println(s"=======$sym=======") + def printAbstract(sym: Symbol) = println(s"$sym => ${sym.isAbstract}") + printAbstract(sym) + sym.typeSignature.declarations.sorted.foreach(printAbstract) + } + test[C] + test[T] + test[D] + test[M.type] +}
\ No newline at end of file |