| OLD | NEW |
| 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, 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 library dart2js.resolution.compute_members; | 5 library dart2js.resolution.compute_members; |
| 6 | 6 |
| 7 import '../common.dart'; | 7 import '../common.dart'; |
| 8 import '../common/names.dart' show Identifiers, Names; | 8 import '../common/names.dart' show Identifiers, Names; |
| 9 import '../common/resolution.dart' show Resolution; | 9 import '../common/resolution.dart' show Resolution; |
| 10 import '../dart_types.dart'; | 10 import '../dart_types.dart'; |
| (...skipping 262 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 273 infos.add(reporter.createMessage( | 273 infos.add(reporter.createMessage( |
| 274 inherited.element, | 274 inherited.element, |
| 275 inherited.isDeclaredByField | 275 inherited.isDeclaredByField |
| 276 ? implicitlyDeclaredKind | 276 ? implicitlyDeclaredKind |
| 277 : explicitlyDeclaredKind, | 277 : explicitlyDeclaredKind, |
| 278 {'class': inherited.declarer.name, 'name': name.text})); | 278 {'class': inherited.declarer.name, 'name': name.text})); |
| 279 } | 279 } |
| 280 reporter.reportWarning(warning, infos); | 280 reporter.reportWarning(warning, infos); |
| 281 }); | 281 }); |
| 282 } | 282 } |
| 283 |
| 283 if (interfaceMember.isSetter) { | 284 if (interfaceMember.isSetter) { |
| 284 reportWarning( | 285 reportWarning( |
| 285 MessageKind.UNIMPLEMENTED_SETTER_ONE, | 286 MessageKind.UNIMPLEMENTED_SETTER_ONE, |
| 286 MessageKind.UNIMPLEMENTED_SETTER, | 287 MessageKind.UNIMPLEMENTED_SETTER, |
| 287 MessageKind.UNIMPLEMENTED_EXPLICIT_SETTER, | 288 MessageKind.UNIMPLEMENTED_EXPLICIT_SETTER, |
| 288 MessageKind.UNIMPLEMENTED_IMPLICIT_SETTER); | 289 MessageKind.UNIMPLEMENTED_IMPLICIT_SETTER); |
| 289 } else if (interfaceMember.isGetter) { | 290 } else if (interfaceMember.isGetter) { |
| 290 reportWarning( | 291 reportWarning( |
| 291 MessageKind.UNIMPLEMENTED_GETTER_ONE, | 292 MessageKind.UNIMPLEMENTED_GETTER_ONE, |
| 292 MessageKind.UNIMPLEMENTED_GETTER, | 293 MessageKind.UNIMPLEMENTED_GETTER, |
| (...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 436 'inheritedClass': inherited.declarer | 437 'inheritedClass': inherited.declarer |
| 437 }), | 438 }), |
| 438 <DiagnosticMessage>[ | 439 <DiagnosticMessage>[ |
| 439 reporter.createMessage(inherited.element, infoKind, { | 440 reporter.createMessage(inherited.element, infoKind, { |
| 440 'name': declared.name.text, | 441 'name': declared.name.text, |
| 441 'class': inherited.declarer | 442 'class': inherited.declarer |
| 442 }), | 443 }), |
| 443 ]); | 444 ]); |
| 444 }); | 445 }); |
| 445 } | 446 } |
| 447 |
| 446 if (declared.isDeclaredByField) { | 448 if (declared.isDeclaredByField) { |
| 447 if (inherited.isDeclaredByField) { | 449 if (inherited.isDeclaredByField) { |
| 448 reportWarning( | 450 reportWarning( |
| 449 inherited.element, | 451 inherited.element, |
| 450 MessageKind.INVALID_OVERRIDE_FIELD, | 452 MessageKind.INVALID_OVERRIDE_FIELD, |
| 451 MessageKind.INVALID_OVERRIDDEN_FIELD); | 453 MessageKind.INVALID_OVERRIDDEN_FIELD); |
| 452 } else if (inherited.isGetter) { | 454 } else if (inherited.isGetter) { |
| 453 reportWarning( | 455 reportWarning( |
| 454 inherited, | 456 inherited, |
| 455 MessageKind.INVALID_OVERRIDE_GETTER_WITH_FIELD, | 457 MessageKind.INVALID_OVERRIDE_GETTER_WITH_FIELD, |
| (...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 679 if (!declared.isStatic) { | 681 if (!declared.isStatic) { |
| 680 interfaceMembers[name] = declared; | 682 interfaceMembers[name] = declared; |
| 681 } | 683 } |
| 682 } else if (inheritedMembers.length == 1) { | 684 } else if (inheritedMembers.length == 1) { |
| 683 interfaceMembers[name] = inheritedMembers.single; | 685 interfaceMembers[name] = inheritedMembers.single; |
| 684 } else { | 686 } else { |
| 685 bool someAreGetters = false; | 687 bool someAreGetters = false; |
| 686 bool allAreGetters = true; | 688 bool allAreGetters = true; |
| 687 Map<DartType, Setlet<Member>> subtypesOfAllInherited = | 689 Map<DartType, Setlet<Member>> subtypesOfAllInherited = |
| 688 new Map<DartType, Setlet<Member>>(); | 690 new Map<DartType, Setlet<Member>>(); |
| 689 outer: for (Member inherited in inheritedMembers) { | 691 outer: |
| 692 for (Member inherited in inheritedMembers) { |
| 690 if (inherited.isGetter) { | 693 if (inherited.isGetter) { |
| 691 someAreGetters = true; | 694 someAreGetters = true; |
| 692 if (!allAreGetters) break outer; | 695 if (!allAreGetters) break outer; |
| 693 } else { | 696 } else { |
| 694 allAreGetters = false; | 697 allAreGetters = false; |
| 695 if (someAreGetters) break outer; | 698 if (someAreGetters) break outer; |
| 696 } | 699 } |
| 697 for (MemberSignature other in inheritedMembers) { | 700 for (MemberSignature other in inheritedMembers) { |
| 698 if (!resolution.types | 701 if (!resolution.types |
| 699 .isSubtype(inherited.functionType, other.functionType)) { | 702 .isSubtype(inherited.functionType, other.functionType)) { |
| (...skipping 251 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 951 message: "Members have not been fully computed for $this.")); | 954 message: "Members have not been fully computed for $this.")); |
| 952 if (interfaceMembersAreClassMembers) { | 955 if (interfaceMembersAreClassMembers) { |
| 953 classMembers.forEach((_, member) { | 956 classMembers.forEach((_, member) { |
| 954 if (!member.isStatic) f(member); | 957 if (!member.isStatic) f(member); |
| 955 }); | 958 }); |
| 956 } else { | 959 } else { |
| 957 interfaceMembers.forEach((_, member) => f(member)); | 960 interfaceMembers.forEach((_, member) => f(member)); |
| 958 } | 961 } |
| 959 } | 962 } |
| 960 } | 963 } |
| OLD | NEW |