| 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 import 'elements.dart'; |
| 11 | 11 |
| 12 const String kElementPrefix = 'k'; |
| 13 |
| 12 class KLibrary implements IndexedLibrary { | 14 class KLibrary implements IndexedLibrary { |
| 13 /// Library index used for fast lookup in [KernelWorldBuilder]. | 15 /// Library index used for fast lookup in [KernelWorldBuilder]. |
| 14 final int libraryIndex; | 16 final int libraryIndex; |
| 15 final String name; | 17 final String name; |
| 16 final Uri canonicalUri; | 18 final Uri canonicalUri; |
| 17 | 19 |
| 18 KLibrary(this.libraryIndex, this.name, this.canonicalUri); | 20 KLibrary(this.libraryIndex, this.name, this.canonicalUri); |
| 19 | 21 |
| 20 String toString() => 'library($name)'; | 22 String toString() => '${kElementPrefix}library($name)'; |
| 21 } | 23 } |
| 22 | 24 |
| 23 class KClass implements IndexedClass { | 25 class KClass implements IndexedClass { |
| 24 final KLibrary library; | 26 final KLibrary library; |
| 25 | 27 |
| 26 /// Class index used for fast lookup in [KernelWorldBuilder]. | 28 /// Class index used for fast lookup in [KernelWorldBuilder]. |
| 27 final int classIndex; | 29 final int classIndex; |
| 28 | 30 |
| 29 final String name; | 31 final String name; |
| 30 final bool isAbstract; | 32 final bool isAbstract; |
| 31 | 33 |
| 32 KClass(this.library, this.classIndex, this.name, {this.isAbstract}); | 34 KClass(this.library, this.classIndex, this.name, {this.isAbstract}); |
| 33 | 35 |
| 34 @override | 36 @override |
| 35 bool get isClosure => false; | 37 bool get isClosure => false; |
| 36 | 38 |
| 37 String toString() => 'class($name)'; | 39 String toString() => '${kElementPrefix}class($name)'; |
| 38 } | 40 } |
| 39 | 41 |
| 40 abstract class KMember implements IndexedMember { | 42 abstract class KMember implements IndexedMember { |
| 41 /// Member index used for fast lookup in [KernelWorldBuilder]. | 43 /// Member index used for fast lookup in [KernelWorldBuilder]. |
| 42 final int memberIndex; | 44 final int memberIndex; |
| 43 final KLibrary library; | 45 final KLibrary library; |
| 44 final KClass enclosingClass; | 46 final KClass enclosingClass; |
| 45 final Name _name; | 47 final Name _name; |
| 46 final bool _isStatic; | 48 final bool _isStatic; |
| 47 | 49 |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 81 bool get isInstanceMember => enclosingClass != null && !_isStatic; | 83 bool get isInstanceMember => enclosingClass != null && !_isStatic; |
| 82 | 84 |
| 83 @override | 85 @override |
| 84 bool get isStatic => enclosingClass != null && _isStatic; | 86 bool get isStatic => enclosingClass != null && _isStatic; |
| 85 | 87 |
| 86 @override | 88 @override |
| 87 bool get isTopLevel => enclosingClass == null; | 89 bool get isTopLevel => enclosingClass == null; |
| 88 | 90 |
| 89 String get _kind; | 91 String get _kind; |
| 90 | 92 |
| 91 String toString() => | 93 String toString() => '${kElementPrefix}$_kind' |
| 92 '$_kind(${enclosingClass != null ? '${enclosingClass.name}.' : ''}$name)'; | 94 '(${enclosingClass != null ? '${enclosingClass.name}.' : ''}$name)'; |
| 93 } | 95 } |
| 94 | 96 |
| 95 abstract class KFunction extends KMember | 97 abstract class KFunction extends KMember |
| 96 implements FunctionEntity, IndexedFunction { | 98 implements FunctionEntity, IndexedFunction { |
| 97 final ParameterStructure parameterStructure; | 99 final ParameterStructure parameterStructure; |
| 98 final bool isExternal; | 100 final bool isExternal; |
| 99 final AsyncMarker asyncMarker; | 101 final AsyncMarker asyncMarker; |
| 100 | 102 |
| 101 KFunction(int memberIndex, KLibrary library, KClass enclosingClass, Name name, | 103 KFunction(int memberIndex, KLibrary library, KClass enclosingClass, Name name, |
| 102 this.parameterStructure, this.asyncMarker, | 104 this.parameterStructure, this.asyncMarker, |
| (...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 226 String get _kind => 'field'; | 228 String get _kind => 'field'; |
| 227 } | 229 } |
| 228 | 230 |
| 229 class KTypeVariable implements TypeVariableEntity { | 231 class KTypeVariable implements TypeVariableEntity { |
| 230 final Entity typeDeclaration; | 232 final Entity typeDeclaration; |
| 231 final String name; | 233 final String name; |
| 232 final int index; | 234 final int index; |
| 233 | 235 |
| 234 KTypeVariable(this.typeDeclaration, this.name, this.index); | 236 KTypeVariable(this.typeDeclaration, this.name, this.index); |
| 235 | 237 |
| 236 String toString() => 'type_variable(${typeDeclaration.name}.$name)'; | 238 String toString() => |
| 239 '${kElementPrefix}type_variable(${typeDeclaration.name}.$name)'; |
| 237 } | 240 } |
| 238 | 241 |
| 239 class KLocalFunction implements Local { | 242 class KLocalFunction implements Local { |
| 240 final String name; | 243 final String name; |
| 241 final MemberEntity memberContext; | 244 final MemberEntity memberContext; |
| 242 final Entity executableContext; | 245 final Entity executableContext; |
| 243 final FunctionType functionType; | 246 final FunctionType functionType; |
| 244 | 247 |
| 245 KLocalFunction( | 248 KLocalFunction( |
| 246 this.name, this.memberContext, this.executableContext, this.functionType); | 249 this.name, this.memberContext, this.executableContext, this.functionType); |
| 247 | 250 |
| 248 String toString() => | 251 String toString() => |
| 249 'local_function(${memberContext.name}.${name ?? '<anonymous>'})'; | 252 '${kElementPrefix}local_function(${memberContext.name}.${name ?? '<anonymo
us>'})'; |
| 250 } | 253 } |
| OLD | NEW |