|  | // Copyright (c) 2025, the Dart project authors.  Please see the AUTHORS file | 
|  | // for details. All rights reserved. Use of this source code is governed by a | 
|  | // BSD-style license that can be found in the LICENSE file. | 
|  |  | 
|  | import 'package:expect/expect.dart'; | 
|  | import 'package:reload_test/reload_test_utils.dart'; | 
|  |  | 
|  | // Adapted from: | 
|  | // https://github.com/dart-lang/sdk/blob/be2aabd91c67f7f331c49cb74e18fe5e469f04db/runtime/vm/isolate_reload_test.cc#L2464 | 
|  |  | 
|  | enum A { | 
|  | A1(B.B1), | 
|  | A2(null), | 
|  | A3(B.B3); | 
|  |  | 
|  | const A(this.a); | 
|  | final a; | 
|  | } | 
|  |  | 
|  | enum B { | 
|  | B1(C.C1, 1), | 
|  | B2(C.C2, 2), | 
|  | B3(null, 3); | 
|  |  | 
|  | const B(this.b, this.x); | 
|  | final b; | 
|  | final x; | 
|  | } | 
|  |  | 
|  | enum C { | 
|  | C1(null), | 
|  | C2(A.A2), | 
|  | C3(A.A3); | 
|  |  | 
|  | const C(this.c); | 
|  | final c; | 
|  | } | 
|  |  | 
|  | var a1; | 
|  | var a1_hash; | 
|  | var a2; | 
|  | var a2_hash; | 
|  | var a3; | 
|  | var a3_hash; | 
|  | var b1; | 
|  | var b1_hash; | 
|  | var b2; | 
|  | var b2_hash; | 
|  | var b3; | 
|  | var b3_hash; | 
|  | var c1; | 
|  | var c1_hash; | 
|  | var c2; | 
|  | var c2_hash; | 
|  | var c3; | 
|  | var c3_hash; | 
|  |  | 
|  | Future<void> main() async { | 
|  | a1 = A.A1; | 
|  | a1_hash = a1.hashCode; | 
|  | a2 = A.A2; | 
|  | a2_hash = a2.hashCode; | 
|  | a3 = A.A3; | 
|  | a3_hash = a3.hashCode; | 
|  | b1 = B.B1; | 
|  | b1_hash = b1.hashCode; | 
|  | b2 = B.B2; | 
|  | b2_hash = b2.hashCode; | 
|  | b3 = B.B3; | 
|  | b3_hash = b3.hashCode; | 
|  | c1 = C.C1; | 
|  | c1_hash = c1.hashCode; | 
|  | c2 = C.C2; | 
|  | c2_hash = c2.hashCode; | 
|  | c3 = C.C3; | 
|  | c3_hash = c3.hashCode; | 
|  | await hotReload(); | 
|  |  | 
|  | Expect.identical(a1, A.A1, 'i-a1'); | 
|  | Expect.equals(a1.hashCode, A.A1.hashCode, 'h-a1'); | 
|  | Expect.identical(a2, A.A2, 'i-a2'); | 
|  | Expect.equals(a2.hashCode, A.A2.hashCode, 'h-a2'); | 
|  | Expect.identical(a3, A.A3, 'i-a3'); | 
|  | Expect.equals(a3.hashCode, A.A3.hashCode, 'h-a3'); | 
|  |  | 
|  | Expect.identical(b1, B.B1, 'i-b1'); | 
|  | Expect.equals(b1.hashCode, B.B1.hashCode, 'h-b1'); | 
|  | Expect.identical(b2, B.B2, 'i-b2'); | 
|  | Expect.equals(b2.hashCode, B.B2.hashCode, 'h-b2'); | 
|  | Expect.identical(b3, B.B3, 'i-b3'); | 
|  | Expect.equals(b3.hashCode, B.B3.hashCode, 'h-b3'); | 
|  |  | 
|  | Expect.identical(c1, C.C1, 'i-c1'); | 
|  | Expect.equals(c1.hashCode, C.C1.hashCode, 'h-c1'); | 
|  | Expect.identical(c2, C.C2, 'i-c2'); | 
|  | Expect.equals(c2.hashCode, C.C2.hashCode, 'h-c2'); | 
|  | Expect.identical(c3, C.C3, 'i-c3'); | 
|  | Expect.equals(c3.hashCode, C.C3.hashCode, 'h-c3'); | 
|  | } | 
|  |  | 
|  | /** DIFF **/ | 
|  | /* | 
|  | // https://github.com/dart-lang/sdk/blob/be2aabd91c67f7f331c49cb74e18fe5e469f04db/runtime/vm/isolate_reload_test.cc#L2464 | 
|  |  | 
|  | enum A { | 
|  | -  A1(B.B1, 1), | 
|  | -  A2(null, 2), | 
|  | -  A3(B.B3, 3); | 
|  | +  A1(B.B1), | 
|  | +  A2(null), | 
|  | +  A3(B.B3); | 
|  |  | 
|  | -  const A(this.a, this.x); | 
|  | +  const A(this.a); | 
|  | final a; | 
|  | -  final x; | 
|  | } | 
|  |  | 
|  | enum B { | 
|  | -  B1(C.C1), | 
|  | -  B2(C.C2), | 
|  | -  B3(null); | 
|  | +  B1(C.C1, 1), | 
|  | +  B2(C.C2, 2), | 
|  | +  B3(null, 3); | 
|  |  | 
|  | -  const B(this.b); | 
|  | +  const B(this.b, this.x); | 
|  | final b; | 
|  | +  final x; | 
|  | } | 
|  |  | 
|  | enum C { | 
|  | */ |