Skip to content

Commit 0e13d00

Browse files
committed
GROOVY-11769: add test case
1 parent 38660af commit 0e13d00

1 file changed

Lines changed: 34 additions & 13 deletions

File tree

src/test/groovy/groovy/transform/stc/TypeInferenceSTCTest.groovy

Lines changed: 34 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -176,8 +176,8 @@ class TypeInferenceSTCTest extends StaticTypeCheckingTestCase {
176176
}
177177
A test(Object o) {
178178
if (o instanceof A) {
179-
def v = o
180-
return v
179+
def a = o
180+
return a
181181
} else {
182182
new A()
183183
}
@@ -269,6 +269,26 @@ class TypeInferenceSTCTest extends StaticTypeCheckingTestCase {
269269
def string = test('two')
270270
assert string == '"two"'
271271
'''
272+
273+
assertScript '''
274+
abstract class Foo {
275+
abstract boolean isBaz()
276+
}
277+
class Bar extends Foo {
278+
final boolean baz = false
279+
}
280+
class Baz extends Foo {
281+
final boolean baz = true
282+
}
283+
void test(Foo foo) {
284+
if (foo instanceof Bar || foo.isBaz()) {
285+
foo.toString()
286+
}
287+
}
288+
test(new Bar())
289+
test(new Baz())
290+
test(new Foo(){ boolean isBaz() { false } })
291+
'''
272292
}
273293

274294
// GROOVY-8337
@@ -401,6 +421,7 @@ class TypeInferenceSTCTest extends StaticTypeCheckingTestCase {
401421
}
402422
assert test(42) == 42
403423
'''
424+
404425
shouldFailWithMessages '''
405426
void test(Integer i) {
406427
if (i instanceof Long) {
@@ -476,7 +497,6 @@ class TypeInferenceSTCTest extends StaticTypeCheckingTestCase {
476497
def test(o) {
477498
o instanceof A ? o.foo() : (o instanceof B ? o.bar() : 3)
478499
}
479-
480500
assert test(new A()) == 1
481501
assert test(new B()) == 2
482502
assert test(new C()) == 3
@@ -1136,19 +1156,18 @@ class TypeInferenceSTCTest extends StaticTypeCheckingTestCase {
11361156
method.set(classNode.methods.find { it.name == 'method' })
11371157
}
11381158
})
1159+
11391160
assertScript '''
11401161
void method() {
11411162
def o
11421163
o = 1
11431164
o = 'String'
11441165
}
11451166
'''
1146-
1147-
def inft = method.code.statements[0].expression.leftExpression.getNodeMetaData(StaticTypesMarker.DECLARATION_INFERRED_TYPE)
1148-
assert inft instanceof WideningCategories.LowestUpperBoundClassNode
1149-
[Comparable, Serializable].each {
1150-
assert ClassHelper.make(it) in inft.interfaces
1151-
}
1167+
ClassNode type = method.code.statements[0].expression.leftExpression.getNodeMetaData(StaticTypesMarker.DECLARATION_INFERRED_TYPE)
1168+
assert type instanceof WideningCategories.LowestUpperBoundClassNode
1169+
assert ClassHelper.make(Comparable ) in type.interfaces
1170+
assert ClassHelper.make(Serializable) in type.interfaces
11521171

11531172
assertScript '''
11541173
void method() {
@@ -1157,7 +1176,8 @@ class TypeInferenceSTCTest extends StaticTypeCheckingTestCase {
11571176
o = 2
11581177
}
11591178
'''
1160-
assert method.code.statements[0].expression.leftExpression.getNodeMetaData(StaticTypesMarker.DECLARATION_INFERRED_TYPE) == ClassHelper.int_TYPE
1179+
type = method.code.statements[0].expression.leftExpression.getNodeMetaData(StaticTypesMarker.DECLARATION_INFERRED_TYPE)
1180+
assert type == ClassHelper.int_TYPE
11611181

11621182
assertScript '''
11631183
void method() {
@@ -1166,8 +1186,8 @@ class TypeInferenceSTCTest extends StaticTypeCheckingTestCase {
11661186
o = 2
11671187
}
11681188
'''
1169-
inft = method.code.statements[0].expression.leftExpression.getNodeMetaData(StaticTypesMarker.DECLARATION_INFERRED_TYPE)
1170-
assert inft == ClassHelper.long_TYPE
1189+
type = method.code.statements[0].expression.leftExpression.getNodeMetaData(StaticTypesMarker.DECLARATION_INFERRED_TYPE)
1190+
assert type == ClassHelper.long_TYPE
11711191

11721192
assertScript '''
11731193
void method() {
@@ -1176,7 +1196,8 @@ class TypeInferenceSTCTest extends StaticTypeCheckingTestCase {
11761196
o = new LinkedHashSet()
11771197
}
11781198
'''
1179-
assert method.code.statements[0].expression.leftExpression.getNodeMetaData(StaticTypesMarker.DECLARATION_INFERRED_TYPE) == ClassHelper.make(HashSet)
1199+
type = method.code.statements[0].expression.leftExpression.getNodeMetaData(StaticTypesMarker.DECLARATION_INFERRED_TYPE)
1200+
assert type == ClassHelper.make(HashSet)
11801201
}
11811202

11821203
@Test

0 commit comments

Comments
 (0)