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 |