diff options
Diffstat (limited to 'test/junit/scala/tools/nsc/symtab/FlagsTest.scala')
-rw-r--r-- | test/junit/scala/tools/nsc/symtab/FlagsTest.scala | 53 |
1 files changed, 45 insertions, 8 deletions
diff --git a/test/junit/scala/tools/nsc/symtab/FlagsTest.scala b/test/junit/scala/tools/nsc/symtab/FlagsTest.scala index fc0e8b0f6b..4e78ca7f22 100644 --- a/test/junit/scala/tools/nsc/symtab/FlagsTest.scala +++ b/test/junit/scala/tools/nsc/symtab/FlagsTest.scala @@ -2,15 +2,17 @@ package scala.tools.nsc package symtab import org.junit.Assert._ -import scala.tools.testing.AssertUtil._ import org.junit.Test import org.junit.runner.RunWith import org.junit.runners.JUnit4 +import scala.tools.testing.BytecodeTesting + @RunWith(classOf[JUnit4]) -class FlagsTest { +class FlagsTest extends BytecodeTesting { object symbolTable extends SymbolTableForUnitTesting import symbolTable._ + import Flags._ def sym = NoSymbol.newTermSymbol(nme.EMPTY) @@ -31,13 +33,7 @@ class FlagsTest { @Test def testTimedFlags(): Unit = { - testLate(lateDEFERRED, _.isDeferred) - testLate(lateFINAL, _.isFinal) - testLate(lateINTERFACE, _.isInterface) - testLate(lateMETHOD, _.isMethod) - testLate(lateMODULE, _.isModule) testNot(PROTECTED | notPROTECTED, _.isProtected) - testNot(OVERRIDE | notOVERRIDE, _.isOverride) testNot(PRIVATE | notPRIVATE, _.isPrivate) assertFalse(withFlagMask(AllFlags)(sym.setFlag(PRIVATE | notPRIVATE).isPrivate)) @@ -86,4 +82,45 @@ class FlagsTest { assertEquals(withFlagMask(AllFlags)(sym.setFlag(lateFlags).flags), lateFlags | lateable) } + + @Test + def javaClassMirrorAnnotationFlag(): Unit = { + import scala.reflect.runtime.universe._ + val dep = typeOf[java.lang.Deprecated].typeSymbol + assertTrue(dep.isJavaAnnotation && dep.isJava) + } + + @Test + def interfaceFlag(): Unit = { + // scala traits are `isInterface` if they have only type defs and abstract methods / fields. + // java interfaces are always `isInterface`. + val scalaCode = + """package p + |trait T1 { + | import scala.collection + | def m: Int + | val f: Int + | type T <: AnyRef + |} + |trait T2 { + | def m = 1 + |} + |trait T3 { + | val f = 1 + |} + |trait T4 { + | println() + |} + """.stripMargin + val javaI1 = "package p; interface I1 { int m(); }" + val javaI2 = "package p; interface I2 { default int m() { return 1; } }" + compiler.compileClasses(code = scalaCode, javaCode = (javaI1, "I1.java") :: (javaI2, "I2.java") :: Nil) + import compiler.global.rootMirror._ + assert( getRequiredClass("p.T1").isInterface) + assert(!getRequiredClass("p.T2").isInterface) + assert(!getRequiredClass("p.T3").isInterface) + assert(!getRequiredClass("p.T4").isInterface) + assert( getRequiredClass("p.I1").isInterface) + assert( getRequiredClass("p.I2").isInterface) + } } |