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.world_builder; | 5 library dart2js.kernel.world_builder; |
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/backend_api.dart'; | 10 import '../common/backend_api.dart'; |
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
152 return member != null ? getConstructor(member) : null; | 152 return member != null ? getConstructor(member) : null; |
153 } | 153 } |
154 | 154 |
155 KClass _getClass(ir.Class node, [KClassEnv classEnv]) { | 155 KClass _getClass(ir.Class node, [KClassEnv classEnv]) { |
156 return _classMap.putIfAbsent(node, () { | 156 return _classMap.putIfAbsent(node, () { |
157 KLibrary library = _getLibrary(node.enclosingLibrary); | 157 KLibrary library = _getLibrary(node.enclosingLibrary); |
158 if (classEnv == null) { | 158 if (classEnv == null) { |
159 classEnv = _libraryEnvs[library.libraryIndex].lookupClass(node.name); | 159 classEnv = _libraryEnvs[library.libraryIndex].lookupClass(node.name); |
160 } | 160 } |
161 _classEnvs.add(classEnv); | 161 _classEnvs.add(classEnv); |
162 return new KClass(library, _classMap.length, node.name); | 162 return new KClass(library, _classMap.length, node.name, |
| 163 isAbstract: node.isAbstract); |
163 }); | 164 }); |
164 } | 165 } |
165 | 166 |
166 KTypeVariable _getTypeVariable(ir.TypeParameter node) { | 167 KTypeVariable _getTypeVariable(ir.TypeParameter node) { |
167 return _typeVariableMap.putIfAbsent(node, () { | 168 return _typeVariableMap.putIfAbsent(node, () { |
168 if (node.parent is ir.Class) { | 169 if (node.parent is ir.Class) { |
169 ir.Class cls = node.parent; | 170 ir.Class cls = node.parent; |
170 int index = cls.typeParameters.indexOf(node); | 171 int index = cls.typeParameters.indexOf(node); |
171 return new KTypeVariable(_getClass(cls), node.name, index); | 172 return new KTypeVariable(_getClass(cls), node.name, index); |
172 } | 173 } |
(...skipping 422 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
595 } | 596 } |
596 return member; | 597 return member; |
597 } | 598 } |
598 | 599 |
599 @override | 600 @override |
600 ClassEntity getSuperClass(ClassEntity cls) { | 601 ClassEntity getSuperClass(ClassEntity cls) { |
601 throw new UnimplementedError('KernelElementEnvironment.getSuperClass'); | 602 throw new UnimplementedError('KernelElementEnvironment.getSuperClass'); |
602 } | 603 } |
603 | 604 |
604 @override | 605 @override |
| 606 void forEachSupertype(ClassEntity cls, void f(InterfaceType supertype)) { |
| 607 throw new UnimplementedError('KernelElementEnvironment.forEachSupertype'); |
| 608 } |
| 609 |
| 610 @override |
605 void forEachMixin(ClassEntity cls, void f(ClassEntity mixin)) { | 611 void forEachMixin(ClassEntity cls, void f(ClassEntity mixin)) { |
606 throw new UnimplementedError('KernelElementEnvironment.forEachMixin'); | 612 throw new UnimplementedError('KernelElementEnvironment.forEachMixin'); |
607 } | 613 } |
608 | 614 |
609 @override | 615 @override |
610 void forEachClassMember( | 616 void forEachClassMember( |
611 ClassEntity cls, void f(ClassEntity declarer, MemberEntity member)) { | 617 ClassEntity cls, void f(ClassEntity declarer, MemberEntity member)) { |
612 throw new UnimplementedError( | 618 throw new UnimplementedError( |
613 'KernelElementEnvironment.forEachInstanceMember'); | 619 'KernelElementEnvironment.forEachInstanceMember'); |
614 } | 620 } |
(...skipping 271 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
886 } | 892 } |
887 | 893 |
888 InterfaceType getMixinTypeForClass(KClass cls) { | 894 InterfaceType getMixinTypeForClass(KClass cls) { |
889 KClassEnv env = builder._classEnvs[cls.classIndex]; | 895 KClassEnv env = builder._classEnvs[cls.classIndex]; |
890 ir.Supertype mixedInType = env.cls.mixedInType; | 896 ir.Supertype mixedInType = env.cls.mixedInType; |
891 if (mixedInType == null) return null; | 897 if (mixedInType == null) return null; |
892 return builder.createInterfaceType( | 898 return builder.createInterfaceType( |
893 mixedInType.classNode, mixedInType.typeArguments); | 899 mixedInType.classNode, mixedInType.typeArguments); |
894 } | 900 } |
895 } | 901 } |
OLD | NEW |