Skip to content

Commit 26a5ac8

Browse files
committed
Add NR1 assignment and enhanced-for cases to AssignmentNR1S test
1 parent 448bfb9 commit 26a5ac8

File tree

2 files changed

+33
-10
lines changed

2 files changed

+33
-10
lines changed

test/langtools/tools/javac/patterns/AssignmentNR1S.java

Lines changed: 25 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,22 @@
11
/*
22
* @test /nodynamiccopyright/
33
* @summary
4-
* @enablePreview
5-
* @compile AssignmentNR1S.java
6-
* @run main AssignmentNR1S
4+
* @compile/fail/ref=AssignmentNR1S.out -XDrawDiagnostics AssignmentNR1S.java
5+
* @compile --enable-preview --source ${jdk.version} AssignmentNR1S.java
6+
* @run main/othervm --enable-preview AssignmentNR1S
77
*/
88
import java.util.Objects;
9+
import java.util.List;
910

1011
public class AssignmentNR1S {
1112
public static void main(String[] args) {
1213
method0();
1314
method1();
1415
method2();
16+
method3();
1517
method4();
1618
method5();
19+
method6();
1720
}
1821

1922
static sealed abstract class SA1 permits SB1 {}
@@ -31,30 +34,42 @@ static SB1 method2() {
3134
SA1 sa = new SB1();
3235
return sa; // ok
3336
}
34-
// <T extends SA1> void method3(T t) { // TODO
35-
// SB1 sb = t; // ok
36-
// }
3737

3838
static sealed abstract class SA2<T> permits SB2 {}
3939
static final class SB2<T> extends SA2<T> {}
40-
static <T> void method4() {
40+
static <T> void method3() {
4141
SA2<T> sa = new SB2<>(); // WRC, OK
4242
SB2<T> sb = sa;
4343
}
4444

4545
static record R1(int x) implements IR {}
4646
static sealed interface IR {}
47-
static void method5() {
47+
static void method4() {
4848
IR ir = new R1(42);
49-
R1(int x) = ir; // OK
5049
R1 r1 = ir; // OK
5150
}
5251

52+
static sealed interface IFoo permits FooImpl {}
53+
static final class FooImpl implements IFoo {}
54+
static void method5() {
55+
IFoo f = new FooImpl();
56+
FooImpl fi = new FooImpl();
57+
fi = f; // OK
58+
}
59+
60+
static void method6() {
61+
List<IFoo> fs = List.of(new FooImpl(), new FooImpl());
62+
int count = 0;
63+
for (FooImpl fi : fs) {
64+
count++;
65+
}
66+
assertEquals(2, count);
67+
}
68+
5369
static void assertEquals(Object expected, Object actual) {
5470
if (!Objects.equals(expected, actual)) {
5571
throw new AssertionError("Expected: " + expected + "," +
5672
"got: " + actual);
5773
}
5874
}
5975
}
60-
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
AssignmentNR1S.java:26:18: compiler.err.prob.found.req: (compiler.misc.inconvertible.types: AssignmentNR1S.SA1, AssignmentNR1S.SB1)
2+
AssignmentNR1S.java:31:17: compiler.err.prob.found.req: (compiler.misc.inconvertible.types: AssignmentNR1S.SA1, AssignmentNR1S.SB1)
3+
AssignmentNR1S.java:35:16: compiler.err.prob.found.req: (compiler.misc.inconvertible.types: AssignmentNR1S.SA1, AssignmentNR1S.SB1)
4+
AssignmentNR1S.java:42:21: compiler.err.prob.found.req: (compiler.misc.inconvertible.types: AssignmentNR1S.SA2<T>, AssignmentNR1S.SB2<T>)
5+
AssignmentNR1S.java:49:17: compiler.err.prob.found.req: (compiler.misc.inconvertible.types: AssignmentNR1S.IR, AssignmentNR1S.R1)
6+
AssignmentNR1S.java:57:14: compiler.err.prob.found.req: (compiler.misc.inconvertible.types: AssignmentNR1S.IFoo, AssignmentNR1S.FooImpl)
7+
AssignmentNR1S.java:63:27: compiler.err.prob.found.req: (compiler.misc.inconvertible.types: AssignmentNR1S.IFoo, AssignmentNR1S.FooImpl)
8+
7 errors

0 commit comments

Comments
 (0)