| 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 /// Entity model for elements derived from Kernel IR. | 5 /// Entity model for elements derived from Kernel IR. |
| 6 | 6 |
| 7 import '../elements/entities.dart'; | 7 import '../elements/entities.dart'; |
| 8 import '../elements/names.dart'; | 8 import '../elements/names.dart'; |
| 9 import '../elements/types.dart'; | 9 import '../elements/types.dart'; |
| 10 import 'elements.dart'; |
| 10 | 11 |
| 11 class KLibrary implements LibraryEntity { | 12 class KLibrary implements IndexedLibrary { |
| 12 /// Library index used for fast lookup in [KernelWorldBuilder]. | 13 /// Library index used for fast lookup in [KernelWorldBuilder]. |
| 13 final int libraryIndex; | 14 final int libraryIndex; |
| 14 final String name; | 15 final String name; |
| 15 final Uri canonicalUri; | 16 final Uri canonicalUri; |
| 16 | 17 |
| 17 KLibrary(this.libraryIndex, this.name, this.canonicalUri); | 18 KLibrary(this.libraryIndex, this.name, this.canonicalUri); |
| 18 | 19 |
| 19 String toString() => 'library($name)'; | 20 String toString() => 'library($name)'; |
| 20 } | 21 } |
| 21 | 22 |
| 22 class KClass implements ClassEntity { | 23 class KClass implements IndexedClass { |
| 23 final KLibrary library; | 24 final KLibrary library; |
| 24 | 25 |
| 25 /// Class index used for fast lookup in [KernelWorldBuilder]. | 26 /// Class index used for fast lookup in [KernelWorldBuilder]. |
| 26 final int classIndex; | 27 final int classIndex; |
| 27 | 28 |
| 28 final String name; | 29 final String name; |
| 29 final bool isAbstract; | 30 final bool isAbstract; |
| 30 | 31 |
| 31 KClass(this.library, this.classIndex, this.name, {this.isAbstract}); | 32 KClass(this.library, this.classIndex, this.name, {this.isAbstract}); |
| 32 | 33 |
| 33 @override | 34 @override |
| 34 bool get isClosure => false; | 35 bool get isClosure => false; |
| 35 | 36 |
| 36 String toString() => 'class($name)'; | 37 String toString() => 'class($name)'; |
| 37 } | 38 } |
| 38 | 39 |
| 39 abstract class KMember implements MemberEntity { | 40 abstract class KMember implements IndexedMember { |
| 40 /// Member index used for fast lookup in [KernelWorldBuilder]. | 41 /// Member index used for fast lookup in [KernelWorldBuilder]. |
| 41 final int memberIndex; | 42 final int memberIndex; |
| 42 final KLibrary library; | 43 final KLibrary library; |
| 43 final KClass enclosingClass; | 44 final KClass enclosingClass; |
| 44 final Name _name; | 45 final Name _name; |
| 45 final bool _isStatic; | 46 final bool _isStatic; |
| 46 | 47 |
| 47 KMember(this.memberIndex, this.library, this.enclosingClass, this._name, | 48 KMember(this.memberIndex, this.library, this.enclosingClass, this._name, |
| 48 {bool isStatic: false}) | 49 {bool isStatic: false}) |
| 49 : _isStatic = isStatic; | 50 : _isStatic = isStatic; |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 84 | 85 |
| 85 @override | 86 @override |
| 86 bool get isTopLevel => enclosingClass == null; | 87 bool get isTopLevel => enclosingClass == null; |
| 87 | 88 |
| 88 String get _kind; | 89 String get _kind; |
| 89 | 90 |
| 90 String toString() => | 91 String toString() => |
| 91 '$_kind(${enclosingClass != null ? '${enclosingClass.name}.' : ''}$name)'; | 92 '$_kind(${enclosingClass != null ? '${enclosingClass.name}.' : ''}$name)'; |
| 92 } | 93 } |
| 93 | 94 |
| 94 abstract class KFunction extends KMember implements FunctionEntity { | 95 abstract class KFunction extends KMember |
| 96 implements FunctionEntity, IndexedFunction { |
| 95 final ParameterStructure parameterStructure; | 97 final ParameterStructure parameterStructure; |
| 96 final bool isExternal; | 98 final bool isExternal; |
| 97 final AsyncMarker asyncMarker; | 99 final AsyncMarker asyncMarker; |
| 98 | 100 |
| 99 KFunction(int memberIndex, KLibrary library, KClass enclosingClass, Name name, | 101 KFunction(int memberIndex, KLibrary library, KClass enclosingClass, Name name, |
| 100 this.parameterStructure, this.asyncMarker, | 102 this.parameterStructure, this.asyncMarker, |
| 101 {bool isStatic: false, this.isExternal: false}) | 103 {bool isStatic: false, this.isExternal: false}) |
| 102 : super(memberIndex, library, enclosingClass, name, isStatic: isStatic); | 104 : super(memberIndex, library, enclosingClass, name, isStatic: isStatic); |
| 103 } | 105 } |
| 104 | 106 |
| 105 abstract class KConstructor extends KFunction implements ConstructorEntity { | 107 abstract class KConstructor extends KFunction |
| 108 implements ConstructorEntity, IndexedConstructor { |
| 106 final bool isConst; | 109 final bool isConst; |
| 107 | 110 |
| 108 KConstructor(int memberIndex, KClass enclosingClass, Name name, | 111 KConstructor(int memberIndex, KClass enclosingClass, Name name, |
| 109 ParameterStructure parameterStructure, {bool isExternal, this.isConst}) | 112 ParameterStructure parameterStructure, {bool isExternal, this.isConst}) |
| 110 : super(memberIndex, enclosingClass.library, enclosingClass, name, | 113 : super(memberIndex, enclosingClass.library, enclosingClass, name, |
| 111 parameterStructure, AsyncMarker.SYNC, | 114 parameterStructure, AsyncMarker.SYNC, |
| 112 isExternal: isExternal); | 115 isExternal: isExternal); |
| 113 | 116 |
| 114 @override | 117 @override |
| 115 bool get isConstructor => true; | 118 bool get isConstructor => true; |
| (...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 202 | 205 |
| 203 @override | 206 @override |
| 204 bool get isAssignable => true; | 207 bool get isAssignable => true; |
| 205 | 208 |
| 206 @override | 209 @override |
| 207 bool get isSetter => true; | 210 bool get isSetter => true; |
| 208 | 211 |
| 209 String get _kind => 'setter'; | 212 String get _kind => 'setter'; |
| 210 } | 213 } |
| 211 | 214 |
| 212 class KField extends KMember implements FieldEntity { | 215 class KField extends KMember implements FieldEntity, IndexedField { |
| 213 final bool isAssignable; | 216 final bool isAssignable; |
| 214 final bool isConst; | 217 final bool isConst; |
| 215 | 218 |
| 216 KField(int memberIndex, KLibrary library, KClass enclosingClass, Name name, | 219 KField(int memberIndex, KLibrary library, KClass enclosingClass, Name name, |
| 217 {bool isStatic, this.isAssignable, this.isConst}) | 220 {bool isStatic, this.isAssignable, this.isConst}) |
| 218 : super(memberIndex, library, enclosingClass, name, isStatic: isStatic); | 221 : super(memberIndex, library, enclosingClass, name, isStatic: isStatic); |
| 219 | 222 |
| 220 @override | 223 @override |
| 221 bool get isField => true; | 224 bool get isField => true; |
| 222 | 225 |
| (...skipping 15 matching lines...) Expand all Loading... |
| 238 final MemberEntity memberContext; | 241 final MemberEntity memberContext; |
| 239 final Entity executableContext; | 242 final Entity executableContext; |
| 240 final FunctionType functionType; | 243 final FunctionType functionType; |
| 241 | 244 |
| 242 KLocalFunction( | 245 KLocalFunction( |
| 243 this.name, this.memberContext, this.executableContext, this.functionType); | 246 this.name, this.memberContext, this.executableContext, this.functionType); |
| 244 | 247 |
| 245 String toString() => | 248 String toString() => |
| 246 'local_function(${memberContext.name}.${name ?? '<anonymous>'})'; | 249 'local_function(${memberContext.name}.${name ?? '<anonymous>'})'; |
| 247 } | 250 } |
| OLD | NEW |