Migrate language_2/canonicalize to NNBD.

Change-Id: I603740794fc286527f7f37c0d57feb9b57157784
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/141661
Auto-Submit: Bob Nystrom <rnystrom@google.com>
Reviewed-by: Erik Ernst <eernst@google.com>
Commit-Queue: Bob Nystrom <rnystrom@google.com>
This commit is contained in:
Robert Nystrom
2020-03-31 00:42:49 +00:00
committed by commit-bot@chromium.org
parent 61adacd71d
commit 7cf6e52cd1
9 changed files with 80649 additions and 0 deletions
@@ -0,0 +1,11 @@
// Copyright (c) 2011, 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";
// Check that compile-time constants are correctly canonicalized.
main() {
Expect.isFalse(identical(const <num>[1, 2], const <num>[1.0, 2.0]));
}
@@ -0,0 +1,31 @@
// Copyright (c) 2013, 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.
//
// Check proper canonicalization (fields must be canonicalized as well).
import "package:expect/expect.dart";
main() {
Expect.isFalse(identical(new Duration(days: 1), new Duration(days: 1)));
Expect.isTrue(identical(const Duration(days: 2), const Duration(days: 2)));
Expect.isTrue(identical(const B(3.0), const B(3.0)));
Expect.isTrue(identical(const F(main), const F(main)));
}
class A {
final a;
const A(v) : a = v + 3.4;
}
class B extends A {
final b;
const B(v)
: b = v + 1.0,
super(v);
}
class F {
final f;
const F(v) : f = v;
}
@@ -0,0 +1,44 @@
// Copyright (c) 2011, 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.
// Check that initializers of static const fields are compile time constants.
import "package:expect/expect.dart";
class CanonicalConstTest {
static const A = const C1();
static const B = const C2();
static testMain() {
Expect.identical(null, null);
Expect.isFalse(identical(null, 0));
Expect.identical(1, 1);
Expect.isFalse(identical(1, 2));
Expect.identical(true, true);
Expect.identical("so", "so");
Expect.identical(const Object(), const Object());
Expect.isFalse(identical(const Object(), const C1()));
Expect.identical(const C1(), const C1());
Expect.identical(A, const C1());
Expect.isFalse(identical(const C1(), const C2()));
Expect.identical(B, const C2());
Expect.isFalse(identical(const [2, 1], const [1, 2]));
Expect.identical(const <int>[1, 2], const <int>[1, 2]);
Expect.identical(const <Object>[1, 2], const <Object>[1, 2]);
Expect.isFalse(identical(const <int>[1, 2], const <double>[1.0, 2.0]));
Expect.identical(const {"a": 1, "b": 2}, const {"a": 1, "b": 2});
Expect.isFalse(identical(const {"a": 1, "b": 2}, const {"a": 2, "b": 2}));
}
}
class C1 {
const C1();
}
class C2 extends C1 {
const C2() : super();
}
main() {
CanonicalConstTest.testMain();
}
@@ -0,0 +1,218 @@
// Copyright (c) 2019, 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.
// If canonicalization uses deep structural hashing without memoizing, this
// will exhibit superlinear time.
const list1_0 = <Object?>[null, null];
const list1_1 = <Object?>[list1_0, list1_0];
const list1_2 = <Object?>[list1_1, list1_1];
const list1_3 = <Object?>[list1_2, list1_2];
const list1_4 = <Object?>[list1_3, list1_3];
const list1_5 = <Object?>[list1_4, list1_4];
const list1_6 = <Object?>[list1_5, list1_5];
const list1_7 = <Object?>[list1_6, list1_6];
const list1_8 = <Object?>[list1_7, list1_7];
const list1_9 = <Object?>[list1_8, list1_8];
const list1_10 = <Object?>[list1_9, list1_9];
const list1_11 = <Object?>[list1_10, list1_10];
const list1_12 = <Object?>[list1_11, list1_11];
const list1_13 = <Object?>[list1_12, list1_12];
const list1_14 = <Object?>[list1_13, list1_13];
const list1_15 = <Object?>[list1_14, list1_14];
const list1_16 = <Object?>[list1_15, list1_15];
const list1_17 = <Object?>[list1_16, list1_16];
const list1_18 = <Object?>[list1_17, list1_17];
const list1_19 = <Object?>[list1_18, list1_18];
const list1_20 = <Object?>[list1_19, list1_19];
const list1_21 = <Object?>[list1_20, list1_20];
const list1_22 = <Object?>[list1_21, list1_21];
const list1_23 = <Object?>[list1_22, list1_22];
const list1_24 = <Object?>[list1_23, list1_23];
const list1_25 = <Object?>[list1_24, list1_24];
const list1_26 = <Object?>[list1_25, list1_25];
const list1_27 = <Object?>[list1_26, list1_26];
const list1_28 = <Object?>[list1_27, list1_27];
const list1_29 = <Object?>[list1_28, list1_28];
const list1_30 = <Object?>[list1_29, list1_29];
const list1_31 = <Object?>[list1_30, list1_30];
const list1_32 = <Object?>[list1_31, list1_31];
const list1_33 = <Object?>[list1_32, list1_32];
const list1_34 = <Object?>[list1_33, list1_33];
const list1_35 = <Object?>[list1_34, list1_34];
const list1_36 = <Object?>[list1_35, list1_35];
const list1_37 = <Object?>[list1_36, list1_36];
const list1_38 = <Object?>[list1_37, list1_37];
const list1_39 = <Object?>[list1_38, list1_38];
const list1_40 = <Object?>[list1_39, list1_39];
const list1_41 = <Object?>[list1_40, list1_40];
const list1_42 = <Object?>[list1_41, list1_41];
const list1_43 = <Object?>[list1_42, list1_42];
const list1_44 = <Object?>[list1_43, list1_43];
const list1_45 = <Object?>[list1_44, list1_44];
const list1_46 = <Object?>[list1_45, list1_45];
const list1_47 = <Object?>[list1_46, list1_46];
const list1_48 = <Object?>[list1_47, list1_47];
const list1_49 = <Object?>[list1_48, list1_48];
const list1_50 = <Object?>[list1_49, list1_49];
const list1_51 = <Object?>[list1_50, list1_50];
const list1_52 = <Object?>[list1_51, list1_51];
const list1_53 = <Object?>[list1_52, list1_52];
const list1_54 = <Object?>[list1_53, list1_53];
const list1_55 = <Object?>[list1_54, list1_54];
const list1_56 = <Object?>[list1_55, list1_55];
const list1_57 = <Object?>[list1_56, list1_56];
const list1_58 = <Object?>[list1_57, list1_57];
const list1_59 = <Object?>[list1_58, list1_58];
const list1_60 = <Object?>[list1_59, list1_59];
const list1_61 = <Object?>[list1_60, list1_60];
const list1_62 = <Object?>[list1_61, list1_61];
const list1_63 = <Object?>[list1_62, list1_62];
const list1_64 = <Object?>[list1_63, list1_63];
const list1_65 = <Object?>[list1_64, list1_64];
const list1_66 = <Object?>[list1_65, list1_65];
const list1_67 = <Object?>[list1_66, list1_66];
const list1_68 = <Object?>[list1_67, list1_67];
const list1_69 = <Object?>[list1_68, list1_68];
const list1_70 = <Object?>[list1_69, list1_69];
const list1_71 = <Object?>[list1_70, list1_70];
const list1_72 = <Object?>[list1_71, list1_71];
const list1_73 = <Object?>[list1_72, list1_72];
const list1_74 = <Object?>[list1_73, list1_73];
const list1_75 = <Object?>[list1_74, list1_74];
const list1_76 = <Object?>[list1_75, list1_75];
const list1_77 = <Object?>[list1_76, list1_76];
const list1_78 = <Object?>[list1_77, list1_77];
const list1_79 = <Object?>[list1_78, list1_78];
const list1_80 = <Object?>[list1_79, list1_79];
const list1_81 = <Object?>[list1_80, list1_80];
const list1_82 = <Object?>[list1_81, list1_81];
const list1_83 = <Object?>[list1_82, list1_82];
const list1_84 = <Object?>[list1_83, list1_83];
const list1_85 = <Object?>[list1_84, list1_84];
const list1_86 = <Object?>[list1_85, list1_85];
const list1_87 = <Object?>[list1_86, list1_86];
const list1_88 = <Object?>[list1_87, list1_87];
const list1_89 = <Object?>[list1_88, list1_88];
const list1_90 = <Object?>[list1_89, list1_89];
const list1_91 = <Object?>[list1_90, list1_90];
const list1_92 = <Object?>[list1_91, list1_91];
const list1_93 = <Object?>[list1_92, list1_92];
const list1_94 = <Object?>[list1_93, list1_93];
const list1_95 = <Object?>[list1_94, list1_94];
const list1_96 = <Object?>[list1_95, list1_95];
const list1_97 = <Object?>[list1_96, list1_96];
const list1_98 = <Object?>[list1_97, list1_97];
const list1_99 = <Object?>[list1_98, list1_98];
const list2_0 = <Object?>[null, null];
const list2_1 = <Object?>[list2_0, list2_0];
const list2_2 = <Object?>[list2_1, list2_1];
const list2_3 = <Object?>[list2_2, list2_2];
const list2_4 = <Object?>[list2_3, list2_3];
const list2_5 = <Object?>[list2_4, list2_4];
const list2_6 = <Object?>[list2_5, list2_5];
const list2_7 = <Object?>[list2_6, list2_6];
const list2_8 = <Object?>[list2_7, list2_7];
const list2_9 = <Object?>[list2_8, list2_8];
const list2_10 = <Object?>[list2_9, list2_9];
const list2_11 = <Object?>[list2_10, list2_10];
const list2_12 = <Object?>[list2_11, list2_11];
const list2_13 = <Object?>[list2_12, list2_12];
const list2_14 = <Object?>[list2_13, list2_13];
const list2_15 = <Object?>[list2_14, list2_14];
const list2_16 = <Object?>[list2_15, list2_15];
const list2_17 = <Object?>[list2_16, list2_16];
const list2_18 = <Object?>[list2_17, list2_17];
const list2_19 = <Object?>[list2_18, list2_18];
const list2_20 = <Object?>[list2_19, list2_19];
const list2_21 = <Object?>[list2_20, list2_20];
const list2_22 = <Object?>[list2_21, list2_21];
const list2_23 = <Object?>[list2_22, list2_22];
const list2_24 = <Object?>[list2_23, list2_23];
const list2_25 = <Object?>[list2_24, list2_24];
const list2_26 = <Object?>[list2_25, list2_25];
const list2_27 = <Object?>[list2_26, list2_26];
const list2_28 = <Object?>[list2_27, list2_27];
const list2_29 = <Object?>[list2_28, list2_28];
const list2_30 = <Object?>[list2_29, list2_29];
const list2_31 = <Object?>[list2_30, list2_30];
const list2_32 = <Object?>[list2_31, list2_31];
const list2_33 = <Object?>[list2_32, list2_32];
const list2_34 = <Object?>[list2_33, list2_33];
const list2_35 = <Object?>[list2_34, list2_34];
const list2_36 = <Object?>[list2_35, list2_35];
const list2_37 = <Object?>[list2_36, list2_36];
const list2_38 = <Object?>[list2_37, list2_37];
const list2_39 = <Object?>[list2_38, list2_38];
const list2_40 = <Object?>[list2_39, list2_39];
const list2_41 = <Object?>[list2_40, list2_40];
const list2_42 = <Object?>[list2_41, list2_41];
const list2_43 = <Object?>[list2_42, list2_42];
const list2_44 = <Object?>[list2_43, list2_43];
const list2_45 = <Object?>[list2_44, list2_44];
const list2_46 = <Object?>[list2_45, list2_45];
const list2_47 = <Object?>[list2_46, list2_46];
const list2_48 = <Object?>[list2_47, list2_47];
const list2_49 = <Object?>[list2_48, list2_48];
const list2_50 = <Object?>[list2_49, list2_49];
const list2_51 = <Object?>[list2_50, list2_50];
const list2_52 = <Object?>[list2_51, list2_51];
const list2_53 = <Object?>[list2_52, list2_52];
const list2_54 = <Object?>[list2_53, list2_53];
const list2_55 = <Object?>[list2_54, list2_54];
const list2_56 = <Object?>[list2_55, list2_55];
const list2_57 = <Object?>[list2_56, list2_56];
const list2_58 = <Object?>[list2_57, list2_57];
const list2_59 = <Object?>[list2_58, list2_58];
const list2_60 = <Object?>[list2_59, list2_59];
const list2_61 = <Object?>[list2_60, list2_60];
const list2_62 = <Object?>[list2_61, list2_61];
const list2_63 = <Object?>[list2_62, list2_62];
const list2_64 = <Object?>[list2_63, list2_63];
const list2_65 = <Object?>[list2_64, list2_64];
const list2_66 = <Object?>[list2_65, list2_65];
const list2_67 = <Object?>[list2_66, list2_66];
const list2_68 = <Object?>[list2_67, list2_67];
const list2_69 = <Object?>[list2_68, list2_68];
const list2_70 = <Object?>[list2_69, list2_69];
const list2_71 = <Object?>[list2_70, list2_70];
const list2_72 = <Object?>[list2_71, list2_71];
const list2_73 = <Object?>[list2_72, list2_72];
const list2_74 = <Object?>[list2_73, list2_73];
const list2_75 = <Object?>[list2_74, list2_74];
const list2_76 = <Object?>[list2_75, list2_75];
const list2_77 = <Object?>[list2_76, list2_76];
const list2_78 = <Object?>[list2_77, list2_77];
const list2_79 = <Object?>[list2_78, list2_78];
const list2_80 = <Object?>[list2_79, list2_79];
const list2_81 = <Object?>[list2_80, list2_80];
const list2_82 = <Object?>[list2_81, list2_81];
const list2_83 = <Object?>[list2_82, list2_82];
const list2_84 = <Object?>[list2_83, list2_83];
const list2_85 = <Object?>[list2_84, list2_84];
const list2_86 = <Object?>[list2_85, list2_85];
const list2_87 = <Object?>[list2_86, list2_86];
const list2_88 = <Object?>[list2_87, list2_87];
const list2_89 = <Object?>[list2_88, list2_88];
const list2_90 = <Object?>[list2_89, list2_89];
const list2_91 = <Object?>[list2_90, list2_90];
const list2_92 = <Object?>[list2_91, list2_91];
const list2_93 = <Object?>[list2_92, list2_92];
const list2_94 = <Object?>[list2_93, list2_93];
const list2_95 = <Object?>[list2_94, list2_94];
const list2_96 = <Object?>[list2_95, list2_95];
const list2_97 = <Object?>[list2_96, list2_96];
const list2_98 = <Object?>[list2_97, list2_97];
const list2_99 = <Object?>[list2_98, list2_98];
confuse(x) {
try { throw x; } catch (e) { return e; }
}
main() {
if (!identical(confuse(list1_99), confuse(list2_99))) {
throw new Exception("list1_99 !== list2_99");
}
}
@@ -0,0 +1,224 @@
// Copyright (c) 2019, 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.
// If canonicalization uses deep structural hashing without memoizing, this
// will exhibit superlinear time.
class Box {
final Object? content1;
final Object? content2;
const Box(this.content1, this.content2);
}
const box1_0 = Box(null, null);
const box1_1 = Box(box1_0, box1_0);
const box1_2 = Box(box1_1, box1_1);
const box1_3 = Box(box1_2, box1_2);
const box1_4 = Box(box1_3, box1_3);
const box1_5 = Box(box1_4, box1_4);
const box1_6 = Box(box1_5, box1_5);
const box1_7 = Box(box1_6, box1_6);
const box1_8 = Box(box1_7, box1_7);
const box1_9 = Box(box1_8, box1_8);
const box1_10 = Box(box1_9, box1_9);
const box1_11 = Box(box1_10, box1_10);
const box1_12 = Box(box1_11, box1_11);
const box1_13 = Box(box1_12, box1_12);
const box1_14 = Box(box1_13, box1_13);
const box1_15 = Box(box1_14, box1_14);
const box1_16 = Box(box1_15, box1_15);
const box1_17 = Box(box1_16, box1_16);
const box1_18 = Box(box1_17, box1_17);
const box1_19 = Box(box1_18, box1_18);
const box1_20 = Box(box1_19, box1_19);
const box1_21 = Box(box1_20, box1_20);
const box1_22 = Box(box1_21, box1_21);
const box1_23 = Box(box1_22, box1_22);
const box1_24 = Box(box1_23, box1_23);
const box1_25 = Box(box1_24, box1_24);
const box1_26 = Box(box1_25, box1_25);
const box1_27 = Box(box1_26, box1_26);
const box1_28 = Box(box1_27, box1_27);
const box1_29 = Box(box1_28, box1_28);
const box1_30 = Box(box1_29, box1_29);
const box1_31 = Box(box1_30, box1_30);
const box1_32 = Box(box1_31, box1_31);
const box1_33 = Box(box1_32, box1_32);
const box1_34 = Box(box1_33, box1_33);
const box1_35 = Box(box1_34, box1_34);
const box1_36 = Box(box1_35, box1_35);
const box1_37 = Box(box1_36, box1_36);
const box1_38 = Box(box1_37, box1_37);
const box1_39 = Box(box1_38, box1_38);
const box1_40 = Box(box1_39, box1_39);
const box1_41 = Box(box1_40, box1_40);
const box1_42 = Box(box1_41, box1_41);
const box1_43 = Box(box1_42, box1_42);
const box1_44 = Box(box1_43, box1_43);
const box1_45 = Box(box1_44, box1_44);
const box1_46 = Box(box1_45, box1_45);
const box1_47 = Box(box1_46, box1_46);
const box1_48 = Box(box1_47, box1_47);
const box1_49 = Box(box1_48, box1_48);
const box1_50 = Box(box1_49, box1_49);
const box1_51 = Box(box1_50, box1_50);
const box1_52 = Box(box1_51, box1_51);
const box1_53 = Box(box1_52, box1_52);
const box1_54 = Box(box1_53, box1_53);
const box1_55 = Box(box1_54, box1_54);
const box1_56 = Box(box1_55, box1_55);
const box1_57 = Box(box1_56, box1_56);
const box1_58 = Box(box1_57, box1_57);
const box1_59 = Box(box1_58, box1_58);
const box1_60 = Box(box1_59, box1_59);
const box1_61 = Box(box1_60, box1_60);
const box1_62 = Box(box1_61, box1_61);
const box1_63 = Box(box1_62, box1_62);
const box1_64 = Box(box1_63, box1_63);
const box1_65 = Box(box1_64, box1_64);
const box1_66 = Box(box1_65, box1_65);
const box1_67 = Box(box1_66, box1_66);
const box1_68 = Box(box1_67, box1_67);
const box1_69 = Box(box1_68, box1_68);
const box1_70 = Box(box1_69, box1_69);
const box1_71 = Box(box1_70, box1_70);
const box1_72 = Box(box1_71, box1_71);
const box1_73 = Box(box1_72, box1_72);
const box1_74 = Box(box1_73, box1_73);
const box1_75 = Box(box1_74, box1_74);
const box1_76 = Box(box1_75, box1_75);
const box1_77 = Box(box1_76, box1_76);
const box1_78 = Box(box1_77, box1_77);
const box1_79 = Box(box1_78, box1_78);
const box1_80 = Box(box1_79, box1_79);
const box1_81 = Box(box1_80, box1_80);
const box1_82 = Box(box1_81, box1_81);
const box1_83 = Box(box1_82, box1_82);
const box1_84 = Box(box1_83, box1_83);
const box1_85 = Box(box1_84, box1_84);
const box1_86 = Box(box1_85, box1_85);
const box1_87 = Box(box1_86, box1_86);
const box1_88 = Box(box1_87, box1_87);
const box1_89 = Box(box1_88, box1_88);
const box1_90 = Box(box1_89, box1_89);
const box1_91 = Box(box1_90, box1_90);
const box1_92 = Box(box1_91, box1_91);
const box1_93 = Box(box1_92, box1_92);
const box1_94 = Box(box1_93, box1_93);
const box1_95 = Box(box1_94, box1_94);
const box1_96 = Box(box1_95, box1_95);
const box1_97 = Box(box1_96, box1_96);
const box1_98 = Box(box1_97, box1_97);
const box1_99 = Box(box1_98, box1_98);
const box2_0 = Box(null, null);
const box2_1 = Box(box2_0, box2_0);
const box2_2 = Box(box2_1, box2_1);
const box2_3 = Box(box2_2, box2_2);
const box2_4 = Box(box2_3, box2_3);
const box2_5 = Box(box2_4, box2_4);
const box2_6 = Box(box2_5, box2_5);
const box2_7 = Box(box2_6, box2_6);
const box2_8 = Box(box2_7, box2_7);
const box2_9 = Box(box2_8, box2_8);
const box2_10 = Box(box2_9, box2_9);
const box2_11 = Box(box2_10, box2_10);
const box2_12 = Box(box2_11, box2_11);
const box2_13 = Box(box2_12, box2_12);
const box2_14 = Box(box2_13, box2_13);
const box2_15 = Box(box2_14, box2_14);
const box2_16 = Box(box2_15, box2_15);
const box2_17 = Box(box2_16, box2_16);
const box2_18 = Box(box2_17, box2_17);
const box2_19 = Box(box2_18, box2_18);
const box2_20 = Box(box2_19, box2_19);
const box2_21 = Box(box2_20, box2_20);
const box2_22 = Box(box2_21, box2_21);
const box2_23 = Box(box2_22, box2_22);
const box2_24 = Box(box2_23, box2_23);
const box2_25 = Box(box2_24, box2_24);
const box2_26 = Box(box2_25, box2_25);
const box2_27 = Box(box2_26, box2_26);
const box2_28 = Box(box2_27, box2_27);
const box2_29 = Box(box2_28, box2_28);
const box2_30 = Box(box2_29, box2_29);
const box2_31 = Box(box2_30, box2_30);
const box2_32 = Box(box2_31, box2_31);
const box2_33 = Box(box2_32, box2_32);
const box2_34 = Box(box2_33, box2_33);
const box2_35 = Box(box2_34, box2_34);
const box2_36 = Box(box2_35, box2_35);
const box2_37 = Box(box2_36, box2_36);
const box2_38 = Box(box2_37, box2_37);
const box2_39 = Box(box2_38, box2_38);
const box2_40 = Box(box2_39, box2_39);
const box2_41 = Box(box2_40, box2_40);
const box2_42 = Box(box2_41, box2_41);
const box2_43 = Box(box2_42, box2_42);
const box2_44 = Box(box2_43, box2_43);
const box2_45 = Box(box2_44, box2_44);
const box2_46 = Box(box2_45, box2_45);
const box2_47 = Box(box2_46, box2_46);
const box2_48 = Box(box2_47, box2_47);
const box2_49 = Box(box2_48, box2_48);
const box2_50 = Box(box2_49, box2_49);
const box2_51 = Box(box2_50, box2_50);
const box2_52 = Box(box2_51, box2_51);
const box2_53 = Box(box2_52, box2_52);
const box2_54 = Box(box2_53, box2_53);
const box2_55 = Box(box2_54, box2_54);
const box2_56 = Box(box2_55, box2_55);
const box2_57 = Box(box2_56, box2_56);
const box2_58 = Box(box2_57, box2_57);
const box2_59 = Box(box2_58, box2_58);
const box2_60 = Box(box2_59, box2_59);
const box2_61 = Box(box2_60, box2_60);
const box2_62 = Box(box2_61, box2_61);
const box2_63 = Box(box2_62, box2_62);
const box2_64 = Box(box2_63, box2_63);
const box2_65 = Box(box2_64, box2_64);
const box2_66 = Box(box2_65, box2_65);
const box2_67 = Box(box2_66, box2_66);
const box2_68 = Box(box2_67, box2_67);
const box2_69 = Box(box2_68, box2_68);
const box2_70 = Box(box2_69, box2_69);
const box2_71 = Box(box2_70, box2_70);
const box2_72 = Box(box2_71, box2_71);
const box2_73 = Box(box2_72, box2_72);
const box2_74 = Box(box2_73, box2_73);
const box2_75 = Box(box2_74, box2_74);
const box2_76 = Box(box2_75, box2_75);
const box2_77 = Box(box2_76, box2_76);
const box2_78 = Box(box2_77, box2_77);
const box2_79 = Box(box2_78, box2_78);
const box2_80 = Box(box2_79, box2_79);
const box2_81 = Box(box2_80, box2_80);
const box2_82 = Box(box2_81, box2_81);
const box2_83 = Box(box2_82, box2_82);
const box2_84 = Box(box2_83, box2_83);
const box2_85 = Box(box2_84, box2_84);
const box2_86 = Box(box2_85, box2_85);
const box2_87 = Box(box2_86, box2_86);
const box2_88 = Box(box2_87, box2_87);
const box2_89 = Box(box2_88, box2_88);
const box2_90 = Box(box2_89, box2_89);
const box2_91 = Box(box2_90, box2_90);
const box2_92 = Box(box2_91, box2_91);
const box2_93 = Box(box2_92, box2_92);
const box2_94 = Box(box2_93, box2_93);
const box2_95 = Box(box2_94, box2_94);
const box2_96 = Box(box2_95, box2_95);
const box2_97 = Box(box2_96, box2_96);
const box2_98 = Box(box2_97, box2_97);
const box2_99 = Box(box2_98, box2_98);
confuse(x) {
try { throw x; } catch (e) { return e; }
}
main() {
if (!identical(confuse(box1_99), confuse(box2_99))) {
throw new Exception("box1_99 !== box2_99");
}
}
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff