@@ -2076,7 +2076,7 @@ public void testReferencingFieldsGenerics_GreferingToJ() {
2076
2076
}
2077
2077
2078
2078
@ Test
2079
- public void testAbstractCovariance_1 () {
2079
+ public void testAbstractCovariance1 () {
2080
2080
//@formatter:off
2081
2081
String [] sources = {
2082
2082
"Foo.groovy" ,
@@ -2091,7 +2091,7 @@ public void testAbstractCovariance_1() {
2091
2091
}
2092
2092
2093
2093
@ Test
2094
- public void testAbstractCovariance_2 () {
2094
+ public void testAbstractCovariance2 () {
2095
2095
//@formatter:off
2096
2096
String [] sources = {
2097
2097
"Foo.groovy" ,
@@ -2110,25 +2110,19 @@ public void testAbstractCovariance_2() {
2110
2110
"----------\n " );
2111
2111
}
2112
2112
2113
- @ Test
2114
- public void testAbstractCovariance_3 () {
2113
+ @ Test // https://issues.apache.org/jira/projects/GROOVY/issues/GROOVY-9059
2114
+ public void testAbstractCovariance3 () {
2115
2115
//@formatter:off
2116
2116
String [] sources = {
2117
- "Face1.java" ,
2118
- "@FunctionalInterface\n " +
2119
- "interface Face1<I, O> {\n " +
2120
- " O apply(I in);\n " +
2121
- "}\n " ,
2122
-
2123
- "Face2.java" ,
2124
- "interface Face2<X, Y> extends Face1<X, Y> {\n " +
2125
- " Object another();\n " +
2117
+ "Face.java" ,
2118
+ "interface Face<T> {\n " +
2119
+ " <O extends T> O process(O o);\n " +
2126
2120
"}\n " ,
2127
2121
2128
2122
"Impl.groovy" ,
2129
- "class Impl implements Face2<Number, String > {\n " +
2130
- " @Override String apply(Number n) { '' } \n " +
2131
- " @Override Object another( ) { null }\n " +
2123
+ "class Impl implements Face<CharSequence > { \n " +
2124
+ " @Override\n " +
2125
+ " def <Chars extends CharSequence> Chars process(Chars chars ) { chars }\n " +
2132
2126
"}\n " ,
2133
2127
};
2134
2128
//@formatter:on
@@ -2137,7 +2131,7 @@ public void testAbstractCovariance_3() {
2137
2131
}
2138
2132
2139
2133
@ Test // https://issues.apache.org/jira/projects/GROOVY/issues/GROOVY-9059
2140
- public void testAbstractCovariance_GROOVY9059 () {
2134
+ public void testAbstractCovariance4 () {
2141
2135
//@formatter:off
2142
2136
String [] sources = {
2143
2137
"Face.java" ,
@@ -2146,9 +2140,9 @@ public void testAbstractCovariance_GROOVY9059() {
2146
2140
"}\n " ,
2147
2141
2148
2142
"Impl.groovy" ,
2149
- "class Impl implements Face<CharSequence> { \n " +
2143
+ "def impl = new Face<CharSequence>() { \n " +
2150
2144
" @Override\n " +
2151
- " public <Chars extends CharSequence> Chars process(Chars chars) { chars }\n " +
2145
+ " def <Chars extends CharSequence> Chars process(Chars chars) { chars }\n " +
2152
2146
"}\n " ,
2153
2147
};
2154
2148
//@formatter:on
@@ -2157,7 +2151,7 @@ public void testAbstractCovariance_GROOVY9059() {
2157
2151
}
2158
2152
2159
2153
@ Test // https://issues.apache.org/jira/projects/GROOVY/issues/GROOVY-9059
2160
- public void testAbstractCovariance_GROOVY9059a () {
2154
+ public void testAbstractCovariance5 () {
2161
2155
//@formatter:off
2162
2156
String [] sources = {
2163
2157
"Face.java" ,
@@ -2167,8 +2161,8 @@ public void testAbstractCovariance_GROOVY9059a() {
2167
2161
2168
2162
"Impl.groovy" ,
2169
2163
"def impl = new Face<CharSequence>() { \n " +
2170
- " @Override\n " +
2171
- " public <Chars extends CharSequence> Chars process(Chars chars) { chars }\n " +
2164
+ " @Override @SuppressWarnings('unchecked') \n " +
2165
+ " CharSequence process(CharSequence chars) { chars }\n " +
2172
2166
"}\n " ,
2173
2167
};
2174
2168
//@formatter:on
@@ -2177,7 +2171,7 @@ public void testAbstractCovariance_GROOVY9059a() {
2177
2171
}
2178
2172
2179
2173
@ Test // https://issues.apache.org/jira/projects/GROOVY/issues/GROOVY-9059
2180
- public void testAbstractCovariance_GROOVY9059b () {
2174
+ public void testAbstractCovariance6 () {
2181
2175
//@formatter:off
2182
2176
String [] sources = {
2183
2177
"Face.java" ,
@@ -2186,9 +2180,9 @@ public void testAbstractCovariance_GROOVY9059b() {
2186
2180
"}\n " ,
2187
2181
2188
2182
"Impl.groovy" ,
2189
- "def impl = new Face<CharSequence >() { \n " +
2183
+ "def impl = new Face<String >() { \n " +
2190
2184
" @Override @SuppressWarnings('unchecked')\n " +
2191
- " public CharSequence process(CharSequence chars ) { chars }\n " +
2185
+ " String process(String string ) { string }\n " +
2192
2186
"}\n " ,
2193
2187
};
2194
2188
//@formatter:on
@@ -2197,18 +2191,44 @@ public void testAbstractCovariance_GROOVY9059b() {
2197
2191
}
2198
2192
2199
2193
@ Test // https://issues.apache.org/jira/projects/GROOVY/issues/GROOVY-9059
2200
- public void testAbstractCovariance_GROOVY9059c () {
2194
+ public void testAbstractCovariance7 () {
2201
2195
//@formatter:off
2202
2196
String [] sources = {
2203
- "Face.java " ,
2197
+ "Face.groovy " ,
2204
2198
"interface Face<T> {\n " +
2205
- " <O extends T> O process(O o); \n " +
2199
+ " def <O extends T> O process(O o)\n " +
2206
2200
"}\n " ,
2207
2201
2208
2202
"Impl.groovy" ,
2209
2203
"def impl = new Face<String>() { \n " +
2210
2204
" @Override @SuppressWarnings('unchecked')\n " +
2211
- " public String process(String string) { string }\n " +
2205
+ " String process(String string) { string }\n " +
2206
+ "}\n " ,
2207
+ };
2208
+ //@formatter:on
2209
+
2210
+ runWarningFreeTest (sources );
2211
+ }
2212
+
2213
+ @ Test // https://issues.apache.org/jira/projects/GROOVY/issues/GROOVY-10675
2214
+ public void testAbstractCovariance8 () {
2215
+ //@formatter:off
2216
+ String [] sources = {
2217
+ "Face1.java" ,
2218
+ "@FunctionalInterface\n " +
2219
+ "interface Face1<I, O> {\n " +
2220
+ " O apply(I in);\n " +
2221
+ "}\n " ,
2222
+
2223
+ "Face2.java" ,
2224
+ "interface Face2<X, Y> extends Face1<X, Y> {\n " +
2225
+ " Object another();\n " +
2226
+ "}\n " ,
2227
+
2228
+ "Impl.groovy" ,
2229
+ "class Impl implements Face2<Number, String> {\n " +
2230
+ " @Override String apply(Number n) { '' }\n " +
2231
+ " @Override Object another() { null }\n " +
2212
2232
"}\n " ,
2213
2233
};
2214
2234
//@formatter:on
0 commit comments