| OLD | NEW |
| 1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2016, 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 fasta.kernel_class_builder; | 5 library fasta.kernel_class_builder; |
| 6 | 6 |
| 7 import 'package:kernel/ast.dart' | 7 import 'package:kernel/ast.dart' |
| 8 show | 8 show |
| 9 Class, | 9 Class, |
| 10 Constructor, | 10 Constructor, |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 46 KernelProcedureBuilder, | 46 KernelProcedureBuilder, |
| 47 KernelTypeBuilder, | 47 KernelTypeBuilder, |
| 48 LibraryBuilder, | 48 LibraryBuilder, |
| 49 MemberBuilder, | 49 MemberBuilder, |
| 50 MetadataBuilder, | 50 MetadataBuilder, |
| 51 ProcedureBuilder, | 51 ProcedureBuilder, |
| 52 Scope, | 52 Scope, |
| 53 TypeVariableBuilder, | 53 TypeVariableBuilder, |
| 54 computeDefaultTypeArguments; | 54 computeDefaultTypeArguments; |
| 55 | 55 |
| 56 import 'kernel_shadow_ast.dart' show KernelMember; | 56 import 'kernel_shadow_ast.dart' show ShadowMember; |
| 57 | 57 |
| 58 import 'redirecting_factory_body.dart' show RedirectingFactoryBody; | 58 import 'redirecting_factory_body.dart' show RedirectingFactoryBody; |
| 59 | 59 |
| 60 abstract class KernelClassBuilder | 60 abstract class KernelClassBuilder |
| 61 extends ClassBuilder<KernelTypeBuilder, InterfaceType> { | 61 extends ClassBuilder<KernelTypeBuilder, InterfaceType> { |
| 62 KernelClassBuilder( | 62 KernelClassBuilder( |
| 63 List<MetadataBuilder> metadata, | 63 List<MetadataBuilder> metadata, |
| 64 int modifiers, | 64 int modifiers, |
| 65 String name, | 65 String name, |
| 66 List<TypeVariableBuilder> typeVariables, | 66 List<TypeVariableBuilder> typeVariables, |
| (...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 203 if (declaredMember.kind == ProcedureKind.Method && | 203 if (declaredMember.kind == ProcedureKind.Method && |
| 204 interfaceMember.kind == ProcedureKind.Method) { | 204 interfaceMember.kind == ProcedureKind.Method) { |
| 205 checkMethodOverride(declaredMember, interfaceMember); | 205 checkMethodOverride(declaredMember, interfaceMember); |
| 206 } | 206 } |
| 207 } | 207 } |
| 208 // TODO(ahe): Handle other cases: accessors, operators, and fields. | 208 // TODO(ahe): Handle other cases: accessors, operators, and fields. |
| 209 | 209 |
| 210 // Also record any cases where a field or getter/setter overrides something | 210 // Also record any cases where a field or getter/setter overrides something |
| 211 // in a superclass, since this information will be needed for type | 211 // in a superclass, since this information will be needed for type |
| 212 // inference. | 212 // inference. |
| 213 if (declaredMember is KernelMember && | 213 if (declaredMember is ShadowMember && |
| 214 identical(declaredMember.enclosingClass, cls)) { | 214 identical(declaredMember.enclosingClass, cls)) { |
| 215 KernelMember.recordOverride(declaredMember, interfaceMember); | 215 ShadowMember.recordOverride(declaredMember, interfaceMember); |
| 216 } | 216 } |
| 217 } | 217 } |
| 218 | 218 |
| 219 void handleCrossOverride( | 219 void handleCrossOverride( |
| 220 Member declaredMember, Member interfaceMember, bool isSetter) { | 220 Member declaredMember, Member interfaceMember, bool isSetter) { |
| 221 // Record any cases where a field or getter/setter has a corresponding (but | 221 // Record any cases where a field or getter/setter has a corresponding (but |
| 222 // opposite) getter/setter in a superclass, since this information will be | 222 // opposite) getter/setter in a superclass, since this information will be |
| 223 // needed for type inference. | 223 // needed for type inference. |
| 224 if (declaredMember is KernelMember && | 224 if (declaredMember is ShadowMember && |
| 225 identical(declaredMember.enclosingClass, cls)) { | 225 identical(declaredMember.enclosingClass, cls)) { |
| 226 KernelMember.recordCrossOverride(declaredMember, interfaceMember); | 226 ShadowMember.recordCrossOverride(declaredMember, interfaceMember); |
| 227 } | 227 } |
| 228 } | 228 } |
| 229 | 229 |
| 230 void checkMethodOverride( | 230 void checkMethodOverride( |
| 231 Procedure declaredMember, Procedure interfaceMember) { | 231 Procedure declaredMember, Procedure interfaceMember) { |
| 232 if (declaredMember.enclosingClass != cls) { | 232 if (declaredMember.enclosingClass != cls) { |
| 233 // TODO(ahe): Include these checks as well, but the message needs to | 233 // TODO(ahe): Include these checks as well, but the message needs to |
| 234 // explain that [declaredMember] is inherited. | 234 // explain that [declaredMember] is inherited. |
| 235 return; | 235 return; |
| 236 } | 236 } |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 302 } | 302 } |
| 303 } | 303 } |
| 304 } | 304 } |
| 305 | 305 |
| 306 String get fullNameForErrors { | 306 String get fullNameForErrors { |
| 307 return isMixinApplication | 307 return isMixinApplication |
| 308 ? "${supertype.fullNameForErrors} with ${mixedInType.fullNameForErrors}" | 308 ? "${supertype.fullNameForErrors} with ${mixedInType.fullNameForErrors}" |
| 309 : name; | 309 : name; |
| 310 } | 310 } |
| 311 } | 311 } |
| OLD | NEW |