| OLD | NEW |
| 1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 import 'package:kernel/ast.dart'; | 5 import 'package:kernel/ast.dart'; |
| 6 import 'package:kernel/class_hierarchy.dart'; | 6 import 'package:kernel/class_hierarchy.dart'; |
| 7 import 'package:kernel/core_types.dart'; | 7 import 'package:kernel/core_types.dart'; |
| 8 import 'package:kernel/src/incremental_class_hierarchy.dart'; | 8 import 'package:kernel/src/incremental_class_hierarchy.dart'; |
| 9 import 'package:kernel/testing/mock_sdk_program.dart'; | 9 import 'package:kernel/testing/mock_sdk_program.dart'; |
| 10 import 'package:kernel/text/ast_to_text.dart'; | 10 import 'package:kernel/text/ast_to_text.dart'; |
| (...skipping 977 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 988 var b_int = new InterfaceType(b, [int]); | 988 var b_int = new InterfaceType(b, [int]); |
| 989 expect(hierarchy.getTypeAsInstanceOf(b_int, a), | 989 expect(hierarchy.getTypeAsInstanceOf(b_int, a), |
| 990 new InterfaceType(a, [int, bool])); | 990 new InterfaceType(a, [int, bool])); |
| 991 expect(hierarchy.getTypeAsInstanceOf(b_int, objectClass), | 991 expect(hierarchy.getTypeAsInstanceOf(b_int, objectClass), |
| 992 new InterfaceType(objectClass)); | 992 new InterfaceType(objectClass)); |
| 993 } | 993 } |
| 994 | 994 |
| 995 void _assertOverridePairs(Class class_, List<String> expected, | 995 void _assertOverridePairs(Class class_, List<String> expected, |
| 996 {bool crossGettersSetters: false}) { | 996 {bool crossGettersSetters: false}) { |
| 997 List<String> overrideDescriptions = []; | 997 List<String> overrideDescriptions = []; |
| 998 hierarchy.forEachOverridePair(class_, | 998 void callback( |
| 999 (Member declaredMember, Member interfaceMember, bool isSetter) { | 999 Member declaredMember, Member interfaceMember, bool isSetter) { |
| 1000 String declaredSuffix; | 1000 String declaredSuffix; |
| 1001 String interfaceSuffix; | 1001 String interfaceSuffix; |
| 1002 declaredSuffix = isSetter ? '=' : ''; |
| 1002 if (crossGettersSetters) { | 1003 if (crossGettersSetters) { |
| 1003 declaredSuffix = _isSetter(declaredMember) ? '=' : ''; | 1004 interfaceSuffix = isSetter ? '' : '='; |
| 1004 interfaceSuffix = _isSetter(interfaceMember) ? '=' : ''; | |
| 1005 } else { | 1005 } else { |
| 1006 declaredSuffix = isSetter ? '=' : ''; | |
| 1007 interfaceSuffix = isSetter ? '=' : ''; | 1006 interfaceSuffix = isSetter ? '=' : ''; |
| 1008 } | 1007 } |
| 1009 String declaredName = '$declaredMember$declaredSuffix'; | 1008 String declaredName = '$declaredMember$declaredSuffix'; |
| 1010 String interfaceName = '$interfaceMember$interfaceSuffix'; | 1009 String interfaceName = '$interfaceMember$interfaceSuffix'; |
| 1011 var desc = '$declaredName overrides $interfaceName'; | 1010 var desc = '$declaredName overrides $interfaceName'; |
| 1012 overrideDescriptions.add(desc); | 1011 overrideDescriptions.add(desc); |
| 1013 }, crossGettersSetters: crossGettersSetters); | 1012 } |
| 1013 |
| 1014 if (crossGettersSetters) { |
| 1015 hierarchy.forEachCrossOverridePair(class_, callback); |
| 1016 } else { |
| 1017 hierarchy.forEachOverridePair(class_, callback); |
| 1018 } |
| 1014 expect(overrideDescriptions, unorderedEquals(expected)); | 1019 expect(overrideDescriptions, unorderedEquals(expected)); |
| 1015 } | 1020 } |
| 1016 | 1021 |
| 1017 /// Assert that the test [library] has the [expectedText] presentation. | 1022 /// Assert that the test [library] has the [expectedText] presentation. |
| 1018 /// The presentation is close, but not identical to the normal Kernel one. | 1023 /// The presentation is close, but not identical to the normal Kernel one. |
| 1019 void _assertTestLibraryText(String expectedText) { | 1024 void _assertTestLibraryText(String expectedText) { |
| 1020 StringBuffer sb = new StringBuffer(); | 1025 StringBuffer sb = new StringBuffer(); |
| 1021 Printer printer = new Printer(sb); | 1026 Printer printer = new Printer(sb); |
| 1022 printer.writeLibraryFile(library); | 1027 printer.writeLibraryFile(library); |
| 1023 | 1028 |
| (...skipping 12 matching lines...) Expand all Loading... |
| 1036 actualText = actualText.replaceAll('{\n}', '{}'); | 1041 actualText = actualText.replaceAll('{\n}', '{}'); |
| 1037 actualText = actualText.replaceAll(' extends core::Object', ''); | 1042 actualText = actualText.replaceAll(' extends core::Object', ''); |
| 1038 | 1043 |
| 1039 if (actualText != expectedText) { | 1044 if (actualText != expectedText) { |
| 1040 print('-------- Actual --------'); | 1045 print('-------- Actual --------'); |
| 1041 print(actualText + '------------------------'); | 1046 print(actualText + '------------------------'); |
| 1042 } | 1047 } |
| 1043 | 1048 |
| 1044 expect(actualText, expectedText); | 1049 expect(actualText, expectedText); |
| 1045 } | 1050 } |
| 1046 | |
| 1047 static bool _isSetter(Member member) { | |
| 1048 return member is Procedure && member.kind == ProcedureKind.Setter; | |
| 1049 } | |
| 1050 } | 1051 } |
| OLD | NEW |