| 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.kernel.element_map; | 5 library dart2js.kernel.element_map; |
| 6 | 6 |
| 7 import 'package:kernel/ast.dart' as ir; | 7 import 'package:kernel/ast.dart' as ir; |
| 8 | 8 |
| 9 import '../common.dart'; | 9 import '../common.dart'; |
| 10 import '../common/names.dart' show Identifiers; | 10 import '../common/names.dart' show Identifiers; |
| (...skipping 1674 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1685 | 1685 |
| 1686 @override | 1686 @override |
| 1687 bool isJsInteropMember(MemberEntity element) { | 1687 bool isJsInteropMember(MemberEntity element) { |
| 1688 // TODO(redemption): Compute this. | 1688 // TODO(redemption): Compute this. |
| 1689 return false; | 1689 return false; |
| 1690 } | 1690 } |
| 1691 } | 1691 } |
| 1692 | 1692 |
| 1693 class JsToFrontendMapImpl extends JsToFrontendMapBase | 1693 class JsToFrontendMapImpl extends JsToFrontendMapBase |
| 1694 implements JsToFrontendMap { | 1694 implements JsToFrontendMap { |
| 1695 final KernelToElementMapBase _frontend; | |
| 1696 final KernelToElementMapBase _backend; | 1695 final KernelToElementMapBase _backend; |
| 1697 | 1696 |
| 1698 JsToFrontendMapImpl(this._frontend, this._backend); | 1697 JsToFrontendMapImpl(this._backend); |
| 1699 | 1698 |
| 1700 LibraryEntity toBackendLibrary(covariant IndexedLibrary library) { | 1699 LibraryEntity toBackendLibrary(covariant IndexedLibrary library) { |
| 1701 return _backend._libraryList[library.libraryIndex]; | 1700 return _backend._libraryList[library.libraryIndex]; |
| 1702 } | 1701 } |
| 1703 | 1702 |
| 1704 LibraryEntity toFrontendLibrary(covariant IndexedLibrary library) { | |
| 1705 return _frontend._libraryList[library.libraryIndex]; | |
| 1706 } | |
| 1707 | |
| 1708 ClassEntity toBackendClass(covariant IndexedClass cls) { | 1703 ClassEntity toBackendClass(covariant IndexedClass cls) { |
| 1709 return _backend._classList[cls.classIndex]; | 1704 return _backend._classList[cls.classIndex]; |
| 1710 } | 1705 } |
| 1711 | 1706 |
| 1712 ClassEntity toFrontendClass(covariant IndexedClass cls) { | |
| 1713 return _frontend._classList[cls.classIndex]; | |
| 1714 } | |
| 1715 | |
| 1716 MemberEntity toBackendMember(covariant IndexedMember member) { | 1707 MemberEntity toBackendMember(covariant IndexedMember member) { |
| 1717 return _backend._memberList[member.memberIndex]; | 1708 return _backend._memberList[member.memberIndex]; |
| 1718 } | 1709 } |
| 1719 | 1710 |
| 1720 MemberEntity toFrontendMember(covariant IndexedMember member) { | |
| 1721 return _frontend._memberList[member.memberIndex]; | |
| 1722 } | |
| 1723 | |
| 1724 TypeVariableEntity toBackendTypeVariable( | 1711 TypeVariableEntity toBackendTypeVariable( |
| 1725 covariant IndexedTypeVariable typeVariable) { | 1712 covariant IndexedTypeVariable typeVariable) { |
| 1726 return _backend._typeVariableList[typeVariable.typeVariableIndex]; | 1713 return _backend._typeVariableList[typeVariable.typeVariableIndex]; |
| 1727 } | 1714 } |
| 1728 | |
| 1729 TypeVariableEntity toFrontendTypeVariable( | |
| 1730 covariant IndexedTypeVariable typeVariable) { | |
| 1731 return _frontend._typeVariableList[typeVariable.typeVariableIndex]; | |
| 1732 } | |
| 1733 } | 1715 } |
| 1734 | 1716 |
| 1735 class JsKernelToElementMap extends KernelToElementMapBase | 1717 class JsKernelToElementMap extends KernelToElementMapBase |
| 1736 with | 1718 with |
| 1737 KernelToElementMapForBuildingMixin, | 1719 KernelToElementMapForBuildingMixin, |
| 1738 JsElementCreatorMixin, | 1720 JsElementCreatorMixin, |
| 1739 // TODO(johnniwinther): Avoid mixin in [ElementCreatorMixin]. The | 1721 // TODO(johnniwinther): Avoid mixin in [ElementCreatorMixin]. The |
| 1740 // codegen world should be a strict subset of the resolution world and | 1722 // codegen world should be a strict subset of the resolution world and |
| 1741 // creating elements for IR nodes should therefore not be needed. | 1723 // creating elements for IR nodes should therefore not be needed. |
| 1742 // Currently some are created purely for testing (like | 1724 // Currently some are created purely for testing (like |
| 1743 // `element == commonElements.foo`, where 'foo' might not be live). | 1725 // `element == commonElements.foo`, where 'foo' might not be live). |
| 1744 // Others are created because we do a | 1726 // Others are created because we do a |
| 1745 // `elementEnvironment.forEachLibraryMember(...)` call on each emitted | 1727 // `elementEnvironment.forEachLibraryMember(...)` call on each emitted |
| 1746 // library. | 1728 // library. |
| 1747 ElementCreatorMixin | 1729 ElementCreatorMixin |
| 1748 implements | 1730 implements |
| 1749 KernelToWorldBuilder { | 1731 KernelToWorldBuilder { |
| 1750 JsToFrontendMap _jsToFrontendMap; | |
| 1751 | |
| 1752 JsKernelToElementMap(DiagnosticReporter reporter, Environment environment, | 1732 JsKernelToElementMap(DiagnosticReporter reporter, Environment environment, |
| 1753 KernelToElementMapForImpactImpl _elementMap) | 1733 KernelToElementMapForImpactImpl _elementMap) |
| 1754 : super(reporter, environment) { | 1734 : super(reporter, environment) { |
| 1755 _jsToFrontendMap = new JsToFrontendMapImpl(_elementMap, this); | |
| 1756 _env = _elementMap._env; | 1735 _env = _elementMap._env; |
| 1757 for (int libraryIndex = 0; | 1736 for (int libraryIndex = 0; |
| 1758 libraryIndex < _elementMap._libraryEnvs.length; | 1737 libraryIndex < _elementMap._libraryEnvs.length; |
| 1759 libraryIndex++) { | 1738 libraryIndex++) { |
| 1760 LibraryEnv env = _elementMap._libraryEnvs[libraryIndex]; | 1739 LibraryEnv env = _elementMap._libraryEnvs[libraryIndex]; |
| 1761 LibraryEntity oldLibrary = _elementMap._libraryList[libraryIndex]; | 1740 LibraryEntity oldLibrary = _elementMap._libraryList[libraryIndex]; |
| 1762 LibraryEntity newLibrary = convertLibrary(oldLibrary); | 1741 LibraryEntity newLibrary = convertLibrary(oldLibrary); |
| 1763 _libraryMap[env.library] = newLibrary; | 1742 _libraryMap[env.library] = newLibrary; |
| 1764 _libraryList.add(newLibrary); | 1743 _libraryList.add(newLibrary); |
| 1765 _libraryEnvs.add(env); | 1744 _libraryEnvs.add(env); |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1820 | 1799 |
| 1821 @override | 1800 @override |
| 1822 bool checkFamily(Entity entity) { | 1801 bool checkFamily(Entity entity) { |
| 1823 assert( | 1802 assert( |
| 1824 '$entity'.startsWith(jsElementPrefix), | 1803 '$entity'.startsWith(jsElementPrefix), |
| 1825 failedAt(entity, | 1804 failedAt(entity, |
| 1826 "Unexpected entity $entity, expected family $jsElementPrefix.")); | 1805 "Unexpected entity $entity, expected family $jsElementPrefix.")); |
| 1827 return true; | 1806 return true; |
| 1828 } | 1807 } |
| 1829 | 1808 |
| 1830 JsToFrontendMap get jsToFrontendMap => _jsToFrontendMap; | |
| 1831 | |
| 1832 @override | 1809 @override |
| 1833 Spannable getSpannable(MemberEntity member, ir.Node node) { | 1810 Spannable getSpannable(MemberEntity member, ir.Node node) { |
| 1834 return _getSpannable(member, node); | 1811 return _getSpannable(member, node); |
| 1835 } | 1812 } |
| 1836 | 1813 |
| 1837 Iterable<LibraryEntity> get _libraries { | 1814 Iterable<LibraryEntity> get _libraries { |
| 1838 return _libraryMap.values; | 1815 return _libraryMap.values; |
| 1839 } | 1816 } |
| 1840 | 1817 |
| 1841 @override | 1818 @override |
| (...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1944 if (data.constructorBody != null) { | 1921 if (data.constructorBody != null) { |
| 1945 f(data.constructorBody); | 1922 f(data.constructorBody); |
| 1946 } | 1923 } |
| 1947 }); | 1924 }); |
| 1948 } | 1925 } |
| 1949 | 1926 |
| 1950 String getDeferredUri(ir.LibraryDependency node) { | 1927 String getDeferredUri(ir.LibraryDependency node) { |
| 1951 throw new UnimplementedError('JsKernelToElementMap.getDeferredUri'); | 1928 throw new UnimplementedError('JsKernelToElementMap.getDeferredUri'); |
| 1952 } | 1929 } |
| 1953 } | 1930 } |
| OLD | NEW |