| 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 library dart2js.resolution_strategy; | 5 library dart2js.resolution_strategy; |
| 6 | 6 |
| 7 import 'package:front_end/src/fasta/scanner.dart' show Token; | 7 import 'package:front_end/src/fasta/scanner.dart' show Token; |
| 8 | 8 |
| 9 import '../common.dart'; | 9 import '../common.dart'; |
| 10 import '../common_elements.dart'; | 10 import '../common_elements.dart'; |
| (...skipping 467 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 478 "The class '${cls.name}' does not contain " | 478 "The class '${cls.name}' does not contain " |
| 479 "required constructor: '$name'."); | 479 "required constructor: '$name'."); |
| 480 } | 480 } |
| 481 return constructor?.declaration; | 481 return constructor?.declaration; |
| 482 } | 482 } |
| 483 | 483 |
| 484 @override | 484 @override |
| 485 void forEachClassMember( | 485 void forEachClassMember( |
| 486 ClassElement cls, void f(ClassElement declarer, MemberElement member)) { | 486 ClassElement cls, void f(ClassElement declarer, MemberElement member)) { |
| 487 cls.ensureResolved(_resolution); | 487 cls.ensureResolved(_resolution); |
| 488 cls.forEachMember((ClassElement declarer, MemberElement member) { | 488 cls.forEachMember((ClassElement declarer, _member) { |
| 489 MemberElement member = _member; |
| 489 if (member.isSynthesized) return; | 490 if (member.isSynthesized) return; |
| 490 if (member.isMalformed) return; | 491 if (member.isMalformed) return; |
| 491 if (member.isConstructor) return; | 492 if (member.isConstructor) return; |
| 492 f(declarer, member); | 493 f(declarer, member); |
| 493 }, includeSuperAndInjectedMembers: true); | 494 }, includeSuperAndInjectedMembers: true); |
| 494 } | 495 } |
| 495 | 496 |
| 496 @override | 497 @override |
| 497 void forEachConstructor( | 498 void forEachConstructor( |
| 498 ClassElement cls, void f(ConstructorEntity constructor)) { | 499 ClassElement cls, void f(ConstructorEntity constructor)) { |
| (...skipping 295 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 794 | 795 |
| 795 if (!classElement | 796 if (!classElement |
| 796 .implementsInterface(_commonElements.jsJavaScriptObjectClass)) { | 797 .implementsInterface(_commonElements.jsJavaScriptObjectClass)) { |
| 797 _compiler.reporter.reportErrorMessage(classElement, | 798 _compiler.reporter.reportErrorMessage(classElement, |
| 798 MessageKind.JS_INTEROP_CLASS_CANNOT_EXTEND_DART_CLASS, { | 799 MessageKind.JS_INTEROP_CLASS_CANNOT_EXTEND_DART_CLASS, { |
| 799 'cls': classElement.name, | 800 'cls': classElement.name, |
| 800 'superclass': classElement.superclass.name | 801 'superclass': classElement.superclass.name |
| 801 }); | 802 }); |
| 802 } | 803 } |
| 803 | 804 |
| 804 classElement | 805 classElement.forEachMember((ClassElement classElement, _member) { |
| 805 .forEachMember((ClassElement classElement, MemberElement member) { | 806 MemberElement member = _member; |
| 806 String memberName = processJsInteropAnnotation(member); | 807 String memberName = processJsInteropAnnotation(member); |
| 807 if (memberName != null) { | 808 if (memberName != null) { |
| 808 nativeDataBuilder.setJsInteropMemberName(member, memberName); | 809 nativeDataBuilder.setJsInteropMemberName(member, memberName); |
| 809 } | 810 } |
| 810 | 811 |
| 811 if (!member.isSynthesized && | 812 if (!member.isSynthesized && |
| 812 nativeBasicData.isJsInteropClass(classElement) && | 813 nativeBasicData.isJsInteropClass(classElement) && |
| 813 member is MethodElement) { | 814 member is MethodElement) { |
| 814 MethodElement fn = member; | 815 MethodElement fn = member; |
| 815 if (!fn.isExternal && | 816 if (!fn.isExternal && |
| 816 !fn.isAbstract && | 817 !fn.isAbstract && |
| 817 !fn.isConstructor && | 818 !fn.isConstructor && |
| 818 !fn.isStatic) { | 819 !fn.isStatic) { |
| 819 _compiler.reporter.reportErrorMessage( | 820 _compiler.reporter.reportErrorMessage( |
| 820 fn, | 821 fn, |
| 821 MessageKind.JS_INTEROP_CLASS_NON_EXTERNAL_MEMBER, | 822 MessageKind.JS_INTEROP_CLASS_NON_EXTERNAL_MEMBER, |
| 822 {'cls': classElement.name, 'member': member.name}); | 823 {'cls': classElement.name, 'member': member.name}); |
| 823 } | 824 } |
| 824 | 825 |
| 825 if (fn.isFactoryConstructor && isAnonymous) { | 826 if (fn.isFactoryConstructor && isAnonymous) { |
| 826 fn.functionSignature | 827 fn.functionSignature.orderedForEachParameter((_parameter) { |
| 827 .orderedForEachParameter((ParameterElement parameter) { | 828 ParameterElement parameter = _parameter; |
| 828 if (!parameter.isNamed) { | 829 if (!parameter.isNamed) { |
| 829 _compiler.reporter.reportErrorMessage( | 830 _compiler.reporter.reportErrorMessage( |
| 830 parameter, | 831 parameter, |
| 831 MessageKind | 832 MessageKind |
| 832 .JS_OBJECT_LITERAL_CONSTRUCTOR_WITH_POSITIONAL_ARGUMEN
TS, | 833 .JS_OBJECT_LITERAL_CONSTRUCTOR_WITH_POSITIONAL_ARGUMEN
TS, |
| 833 {'parameter': parameter.name, 'cls': classElement.name}); | 834 {'parameter': parameter.name, 'cls': classElement.name}); |
| 834 } | 835 } |
| 835 }); | 836 }); |
| 836 } else { | 837 } else { |
| 837 checkFunctionParameters(fn); | 838 checkFunctionParameters(fn); |
| (...skipping 18 matching lines...) Expand all Loading... |
| 856 @override | 857 @override |
| 857 WorkItem createWorkItem(MemberElement element) { | 858 WorkItem createWorkItem(MemberElement element) { |
| 858 assert(element.isDeclaration, failedAt(element)); | 859 assert(element.isDeclaration, failedAt(element)); |
| 859 if (element.isMalformed) return null; | 860 if (element.isMalformed) return null; |
| 860 | 861 |
| 861 assert(element is AnalyzableElement, | 862 assert(element is AnalyzableElement, |
| 862 failedAt(element, 'Element $element is not analyzable.')); | 863 failedAt(element, 'Element $element is not analyzable.')); |
| 863 return _resolution.createWorkItem(element); | 864 return _resolution.createWorkItem(element); |
| 864 } | 865 } |
| 865 } | 866 } |
| OLD | NEW |