blob: e186cf4553dc1b65497441ff1c6e576c5fac90c9 (
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
|
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
}
}
|