| // 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"); |
| } |
| } |