This is an automated email from the ASF dual-hosted git repository.
emilles pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/groovy.git
The following commit(s) were added to refs/heads/master by this push:
new 13690b9 GROOVY-8103: add test case
13690b9 is described below
commit 13690b913cb90251fe2954d1ac0480dbf82198c9
Author: Eric Milles <[email protected]>
AuthorDate: Thu Sep 17 17:36:32 2020 -0500
GROOVY-8103: add test case
---
.../transform/stc/StaticTypeCheckingVisitor.java | 2 +-
.../groovy/transform/stc/GenericsSTCTest.groovy | 37 +++++++++++++++++++++-
2 files changed, 37 insertions(+), 2 deletions(-)
diff --git
a/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
b/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
index 3bf4b50..95b3c7a 100644
---
a/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
+++
b/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
@@ -3432,7 +3432,7 @@ public class StaticTypeCheckingVisitor extends
ClassCodeVisitorSupport {
returnType =
typeCheckingContext.getEnclosingClassNode();
}
}
- if
(typeCheckMethodsWithGenericsOrFail(chosenReceiver.getType(), args, mn.get(0),
call)) {
+ if
(typeCheckMethodsWithGenericsOrFail(chosenReceiver.getType(), args,
directMethodCallCandidate, call)) {
returnType =
adjustWithTraits(directMethodCallCandidate, chosenReceiver.getType(), args,
returnType);
storeType(call, returnType);
diff --git a/src/test/groovy/transform/stc/GenericsSTCTest.groovy
b/src/test/groovy/transform/stc/GenericsSTCTest.groovy
index 469bb3c..fa4780d 100644
--- a/src/test/groovy/transform/stc/GenericsSTCTest.groovy
+++ b/src/test/groovy/transform/stc/GenericsSTCTest.groovy
@@ -1158,7 +1158,7 @@ class GenericsSTCTest extends StaticTypeCheckingTestCase {
}
// GROOVY-5724
- void testJunitHamcrest() {
+ void testJUnitHamcrest() {
assertScript '''
public class Matcher<T> {}
public <T> void assertThat(T obj, Matcher<T> matcher) {}
@@ -1169,6 +1169,41 @@ class GenericsSTCTest extends StaticTypeCheckingTestCase
{
'''
}
+ // GROOVY-8103
+ void testJUnitFestAssert() {
+ assertScript '''
+ import static Fluent.*
+ import Util.Ours
+
+ class Fluent {
+ static FluentAPI fluent(String s) { return new FluentAPI() }
+ static <T extends FluentExtension> T fluent(T t) { return t }
+ }
+
+ class FluentAPI {
+ FluentAPI isEqualTo(String s) { return this }
+ }
+
+ interface FluentExtension {
+ }
+
+ class Util {
+ static class Ours implements FluentExtension {
+ Ours isSimilarTo(String json) { return this }
+ }
+ static Ours factory(String json) { new Ours() }
+ }
+
+ void test() {
+ fluent('string').isEqualTo('x') // fine
+ fluent(new Ours()).isSimilarTo('') // fine
+ fluent(Util.factory('{}')).isSimilarTo('{"key":"val"}') // STC
error
+ }
+
+ test()
+ '''
+ }
+
// GROOVY-5836
void testShouldFindMethodEvenIfUsingGenerics() {
assertScript '''