1 /*
2 * @test /nodynamiccopyright/
3 * @bug 8267843
4 * @summary Check that javac diagnoses `this` being passed around and instance method being invoked before value class instance is fully initialized.
5 * @enablePreview
6 * @compile/fail/ref=DualNonDuplicateErrors.out -XDrawDiagnostics DualNonDuplicateErrors.java
7 */
8
9 public value class DualNonDuplicateErrors {
10
11 int x;
12
13 DualNonDuplicateErrors() {
14 // The call below should trigger two errors - they are not duplicates really.
15 // First one is for `this` being passed around ("exposed")
16 // Second is for instance method being invoked thereby allowing that method to
17 // observe the value class instance in a partially initialized state.
18 foo(this);
19 x = 10;
20 super();
21 foo(this); // No error here.
22 }
23
24 void foo(DualNonDuplicateErrors x) {
25 }
26 }