blob: e186cf4553dc1b65497441ff1c6e576c5fac90c9 (
plain) (
tree)
|
|
package scala.scalajs.compiler.test
import scala.scalajs.compiler.test.util._
import org.junit.Test
class EnumerationInteropTest extends DirectTest with TestHelpers {
@Test
def warnIfUnableToTransformValue = {
"""
class A extends Enumeration {
val a = {
println("oh, oh!")
Value
}
val b = {
println("oh, oh!")
Value(4)
}
}
""" hasWarns
"""
|newSource1.scala:5: warning: Couldn't transform call to Enumeration.Value.
|The resulting program is unlikely to function properly as this
|operation requires reflection.
| Value
| ^
|newSource1.scala:9: warning: Couldn't transform call to Enumeration.Value.
|The resulting program is unlikely to function properly as this
|operation requires reflection.
| Value(4)
| ^
"""
}
@Test
def warnIfNoNameVal = {
"""
class A extends Enumeration {
val a = new Val
val b = new Val(10)
}
""" hasWarns
"""
|newSource1.scala:3: warning: Calls to the non-string constructors of Enumeration.Val
|require reflection at runtime. The resulting
|program is unlikely to function properly.
| val a = new Val
| ^
|newSource1.scala:4: warning: Calls to the non-string constructors of Enumeration.Val
|require reflection at runtime. The resulting
|program is unlikely to function properly.
| val b = new Val(10)
| ^
"""
}
@Test
def warnIfNullValue = {
"""
class A extends Enumeration {
val a = Value(null)
val b = Value(10, null)
}
""" hasWarns
"""
|newSource1.scala:3: warning: Passing null as name to Enumeration.Value
|requires reflection at runtime. The resulting
|program is unlikely to function properly.
| val a = Value(null)
| ^
|newSource1.scala:4: warning: Passing null as name to Enumeration.Value
|requires reflection at runtime. The resulting
|program is unlikely to function properly.
| val b = Value(10, null)
| ^
"""
}
@Test
def warnIfNullNewVal = {
"""
class A extends Enumeration {
val a = new Val(null)
val b = new Val(10, null)
}
""" hasWarns
"""
|newSource1.scala:3: warning: Passing null as name to a constructor of Enumeration.Val
|requires reflection at runtime. The resulting
|program is unlikely to function properly.
| val a = new Val(null)
| ^
|newSource1.scala:4: warning: Passing null as name to a constructor of Enumeration.Val
|requires reflection at runtime. The resulting
|program is unlikely to function properly.
| val b = new Val(10, null)
| ^
"""
}
@Test
def warnIfExtNoNameVal = {
"""
class A extends Enumeration {
protected class Val1 extends Val
protected class Val2 extends Val(1)
}
""" warns() // no message checking: position differs in 2.10 and 2.11
}
@Test
def warnIfExtNullNameVal = {
"""
class A extends Enumeration {
protected class Val1 extends Val(null)
protected class Val2 extends Val(1,null)
}
""" warns() // no message checking: position differs in 2.10 and 2.11
}
}
|