| Index: pkg/compiler/lib/src/kernel/element_map_impl.dart
|
| diff --git a/pkg/compiler/lib/src/kernel/element_map_impl.dart b/pkg/compiler/lib/src/kernel/element_map_impl.dart
|
| index 07dc4f65c4e3c48fb953cc2124373149a4c6e76e..5bccd2bda1810c598e475d1f5541b5837189e33f 100644
|
| --- a/pkg/compiler/lib/src/kernel/element_map_impl.dart
|
| +++ b/pkg/compiler/lib/src/kernel/element_map_impl.dart
|
| @@ -29,6 +29,7 @@ import '../js_backend/constant_system_javascript.dart';
|
| import '../js_backend/interceptor_data.dart';
|
| import '../js_backend/native_data.dart';
|
| import '../js_backend/no_such_method_registry.dart';
|
| +import '../js_model/elements.dart';
|
| import '../native/native.dart' as native;
|
| import '../native/resolver.dart';
|
| import '../ordered_typeset.dart';
|
| @@ -494,7 +495,7 @@ class KernelToElementMapImpl extends KernelToElementMapMixin {
|
| }
|
| }
|
|
|
| - InterfaceType getThisType(KClass cls) {
|
| + InterfaceType _getThisType(KClass cls) {
|
| _KClassEnv env = _classEnvs[cls.classIndex];
|
| _ensureThisAndRawType(cls, env);
|
| return env.thisType;
|
| @@ -576,7 +577,7 @@ class KernelToElementMapImpl extends KernelToElementMapMixin {
|
|
|
| DartType _substByContext(DartType type, InterfaceType context) {
|
| return type.subst(
|
| - context.typeArguments, getThisType(context.element).typeArguments);
|
| + context.typeArguments, _getThisType(context.element).typeArguments);
|
| }
|
|
|
| InterfaceType _getSuperType(KClass cls) {
|
| @@ -742,7 +743,7 @@ class KernelToElementMapImpl extends KernelToElementMapMixin {
|
| return member;
|
| }
|
|
|
| - /// Returns the kernel IR node that defines the [member].
|
| + @override
|
| ir.Member getMemberNode(KMember member) {
|
| return _memberList[member.memberIndex].node;
|
| }
|
| @@ -1138,7 +1139,7 @@ class KernelElementEnvironment implements ElementEnvironment {
|
|
|
| @override
|
| InterfaceType getThisType(ClassEntity cls) {
|
| - return elementMap.getThisType(cls);
|
| + return elementMap._getThisType(cls);
|
| }
|
|
|
| @override
|
| @@ -1705,3 +1706,130 @@ class KernelNativeMemberResolver extends NativeMemberResolverBase {
|
| return false;
|
| }
|
| }
|
| +
|
| +class JsKernelToElementMap extends KernelToElementMapMixin {
|
| + final JsToFrontendMap _map;
|
| + final ElementEnvironment _elementEnvironment;
|
| + final CommonElements _commonElements;
|
| + final KernelToElementMapImpl _elementMap;
|
| +
|
| + JsKernelToElementMap(this._map, this._elementEnvironment,
|
| + this._commonElements, this._elementMap);
|
| +
|
| + @override
|
| + Spannable getSpannable(MemberEntity member, ir.Node node) {
|
| + return _elementMap.getSpannable(_map.toFrontendMember(member), node);
|
| + }
|
| +
|
| + @override
|
| + LibraryEntity getLibrary(ir.Library node) {
|
| + return _map.toBackendLibrary(_elementMap.getLibrary(node));
|
| + }
|
| +
|
| + @override
|
| + Local getLocalFunction(ir.TreeNode node) {
|
| + throw new UnsupportedError("JsKernelToElementMap.getLocalFunction");
|
| + }
|
| +
|
| + @override
|
| + ClassEntity getClass(ir.Class node) {
|
| + return _map.toBackendClass(_elementMap.getClass(node));
|
| + }
|
| +
|
| + @override
|
| + FieldEntity getField(ir.Field node) {
|
| + return _map.toBackendMember(_elementMap.getField(node));
|
| + }
|
| +
|
| + @override
|
| + MemberEntity getSuperMember(ir.Member context, ir.Name name, ir.Member target,
|
| + {bool setter: false}) {
|
| + return _map.toBackendMember(
|
| + _elementMap.getSuperMember(context, name, target, setter: setter));
|
| + }
|
| +
|
| + @override
|
| + FunctionEntity getMethod(ir.Procedure node) {
|
| + return _map.toBackendMember(_elementMap.getMethod(node));
|
| + }
|
| +
|
| + @override
|
| + ir.Member getMemberNode(MemberEntity member) {
|
| + return _elementMap.getMemberNode(_map.toFrontendMember(member));
|
| + }
|
| +
|
| + @override
|
| + MemberEntity getMember(ir.Member node) {
|
| + return _map.toBackendMember(_elementMap.getMember(node));
|
| + }
|
| +
|
| + @override
|
| + ConstructorEntity getSuperConstructor(
|
| + ir.Constructor constructor, ir.Member target) {
|
| + return _map
|
| + .toBackendMember(_elementMap.getSuperConstructor(constructor, target));
|
| + }
|
| +
|
| + @override
|
| + ConstructorEntity getConstructor(ir.Member node) {
|
| + return _map.toBackendMember(_elementMap.getConstructor(node));
|
| + }
|
| +
|
| + @override
|
| + InterfaceType createInterfaceType(
|
| + ir.Class cls, List<ir.DartType> typeArguments) {
|
| + return _map
|
| + .toBackendType(_elementMap.createInterfaceType(cls, typeArguments));
|
| + }
|
| +
|
| + @override
|
| + InterfaceType getInterfaceType(ir.InterfaceType type) {
|
| + return _map.toBackendType(_elementMap.getInterfaceType(type));
|
| + }
|
| +
|
| + @override
|
| + List<DartType> getDartTypes(List<ir.DartType> types) {
|
| + return _elementMap.getDartTypes(types).map(_map.toBackendType).toList();
|
| + }
|
| +
|
| + @override
|
| + FunctionType getFunctionType(ir.FunctionNode node) {
|
| + return _map.toBackendType(_elementMap.getFunctionType(node));
|
| + }
|
| +
|
| + @override
|
| + DartType getDartType(ir.DartType type) {
|
| + return _map.toBackendType(_elementMap.getDartType(type));
|
| + }
|
| +
|
| + @override
|
| + ElementEnvironment get elementEnvironment {
|
| + return _elementEnvironment;
|
| + }
|
| +
|
| + @override
|
| + CommonElements get commonElements {
|
| + return _commonElements;
|
| + }
|
| +
|
| + @override
|
| + ConstantValue computeConstantValue(ConstantExpression constant,
|
| + {bool requireConstant: true}) {
|
| + throw new UnsupportedError("JsKernelToElementMap.computeConstantValue");
|
| + }
|
| +
|
| + @override
|
| + native.BehaviorBuilder get nativeBehaviorBuilder {
|
| + throw new UnsupportedError("JsKernelToElementMap.nativeBehaviorBuilder");
|
| + }
|
| +
|
| + @override
|
| + DiagnosticReporter get reporter {
|
| + return _elementMap.reporter;
|
| + }
|
| +
|
| + @override
|
| + ConstantValue getFieldConstantValue(ir.Field field) {
|
| + throw new UnsupportedError("JsKernelToElementMap.getFieldConstantValue");
|
| + }
|
| +}
|
|
|