| 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 286 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 297 procedures: [newEmptyMethod('foo')])); | 297 procedures: [newEmptyMethod('foo')])); |
| 298 var b = addClass(new Class( | 298 var b = addClass(new Class( |
| 299 name: 'B', | 299 name: 'B', |
| 300 supertype: a.asThisSupertype, | 300 supertype: a.asThisSupertype, |
| 301 procedures: [newEmptyMethod('foo', isAbstract: true)])); | 301 procedures: [newEmptyMethod('foo', isAbstract: true)])); |
| 302 var c = addClass(new Class( | 302 var c = addClass(new Class( |
| 303 name: 'C', | 303 name: 'C', |
| 304 supertype: a.asThisSupertype, | 304 supertype: a.asThisSupertype, |
| 305 procedures: [newEmptyMethod('foo', isAbstract: true)], | 305 procedures: [newEmptyMethod('foo', isAbstract: true)], |
| 306 isAbstract: true)); | 306 isAbstract: true)); |
| 307 var d = addClass(new Class(name: 'D', supertype: b.asThisSupertype)); |
| 308 var e = addClass(new Class(name: 'E', supertype: c.asThisSupertype)); |
| 307 | 309 |
| 308 _assertTestLibraryText(''' | 310 _assertTestLibraryText(''' |
| 309 class A { | 311 class A { |
| 310 method foo() → void {} | 312 method foo() → void {} |
| 311 } | 313 } |
| 312 class B extends self::A { | 314 class B extends self::A { |
| 313 abstract method foo() → void; | 315 abstract method foo() → void; |
| 314 } | 316 } |
| 315 abstract class C extends self::A { | 317 abstract class C extends self::A { |
| 316 abstract method foo() → void; | 318 abstract method foo() → void; |
| 317 } | 319 } |
| 320 class D extends self::B {} |
| 321 class E extends self::C {} |
| 318 '''); | 322 '''); |
| 319 | 323 |
| 320 _assertOverridePairs(b, [ | 324 _assertOverridePairs(b, [ |
| 321 'test::A::foo overrides test::B::foo', | 325 'test::A::foo overrides test::B::foo', |
| 322 'test::B::foo overrides test::A::foo' | 326 'test::B::foo overrides test::A::foo' |
| 323 ]); | 327 ]); |
| 324 _assertOverridePairs(c, [ | 328 _assertOverridePairs(c, ['test::C::foo overrides test::A::foo']); |
| 325 'test::A::foo overrides test::C::foo', | 329 _assertOverridePairs(d, ['test::A::foo overrides test::B::foo']); |
| 326 'test::C::foo overrides test::A::foo' | 330 _assertOverridePairs(e, ['test::A::foo overrides test::C::foo']); |
| 327 ]); | |
| 328 } | 331 } |
| 329 | 332 |
| 330 /// 3. A non-abstract member is inherited from a superclass, and it overrides | 333 /// 3. A non-abstract member is inherited from a superclass, and it overrides |
| 331 /// an abstract member declared in this class. | 334 /// an abstract member declared in this class. |
| 332 void test_forEachOverridePair_supertypeOverridesThisAbstract() { | 335 void test_forEachOverridePair_supertypeOverridesThisAbstract() { |
| 333 var a = addClass(new Class( | 336 var a = addClass(new Class( |
| 334 name: 'A', | 337 name: 'A', |
| 335 supertype: objectSuper, | 338 supertype: objectSuper, |
| 336 procedures: [newEmptyMethod('foo'), newEmptyMethod('bar')])); | 339 procedures: [newEmptyMethod('foo'), newEmptyMethod('bar')])); |
| 337 var b = addClass(new Class( | 340 var b = addClass(new Class( |
| (...skipping 1001 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1339 actualText = actualText.replaceAll(' extends core::Object', ''); | 1342 actualText = actualText.replaceAll(' extends core::Object', ''); |
| 1340 | 1343 |
| 1341 if (actualText != expectedText) { | 1344 if (actualText != expectedText) { |
| 1342 print('-------- Actual --------'); | 1345 print('-------- Actual --------'); |
| 1343 print(actualText + '------------------------'); | 1346 print(actualText + '------------------------'); |
| 1344 } | 1347 } |
| 1345 | 1348 |
| 1346 expect(actualText, expectedText); | 1349 expect(actualText, expectedText); |
| 1347 } | 1350 } |
| 1348 } | 1351 } |
| OLD | NEW |