| 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:front_end/src/fasta/kernel/kernel_shadow_ast.dart' | |
| 8 show KernelMember; | |
| 9 | |
| 10 import 'package:kernel/ast.dart' | 7 import 'package:kernel/ast.dart' |
| 11 show | 8 show |
| 12 Class, | 9 Class, |
| 13 Constructor, | 10 Constructor, |
| 14 DartType, | 11 DartType, |
| 15 Expression, | 12 Expression, |
| 16 Field, | 13 Field, |
| 17 FunctionNode, | 14 FunctionNode, |
| 18 InterfaceType, | 15 InterfaceType, |
| 19 ListLiteral, | 16 ListLiteral, |
| 20 Member, | 17 Member, |
| 21 Name, | 18 Name, |
| 22 Procedure, | 19 Procedure, |
| 23 ProcedureKind, | 20 ProcedureKind, |
| 24 StaticGet, | 21 StaticGet, |
| 25 Supertype, | 22 Supertype, |
| 26 VariableDeclaration; | 23 VariableDeclaration; |
| 27 | 24 |
| 28 import 'package:kernel/class_hierarchy.dart' show ClassHierarchy; | 25 import 'package:kernel/class_hierarchy.dart' show ClassHierarchy; |
| 29 | 26 |
| 30 import '../deprecated_problems.dart' show deprecated_internalProblem; | 27 import '../dill/dill_member_builder.dart' show DillMemberBuilder; |
| 31 | 28 |
| 32 import '../fasta_codes.dart' show templateRedirectionTargetNotFound; | 29 import '../fasta_codes.dart' show templateRedirectionTargetNotFound; |
| 33 | 30 |
| 34 import '../dill/dill_member_builder.dart' show DillMemberBuilder; | 31 import '../problems.dart' show unhandled, unimplemented; |
| 35 | 32 |
| 36 import 'kernel_builder.dart' | 33 import 'kernel_builder.dart' |
| 37 show | 34 show |
| 38 Builder, | 35 Builder, |
| 39 ClassBuilder, | 36 ClassBuilder, |
| 40 ConstructorReferenceBuilder, | 37 ConstructorReferenceBuilder, |
| 41 KernelLibraryBuilder, | 38 KernelLibraryBuilder, |
| 42 KernelProcedureBuilder, | 39 KernelProcedureBuilder, |
| 43 KernelTypeBuilder, | 40 KernelTypeBuilder, |
| 44 LibraryBuilder, | 41 LibraryBuilder, |
| 45 MemberBuilder, | 42 MemberBuilder, |
| 46 MetadataBuilder, | 43 MetadataBuilder, |
| 47 ProcedureBuilder, | 44 ProcedureBuilder, |
| 48 Scope, | 45 Scope, |
| 49 TypeVariableBuilder, | 46 TypeVariableBuilder, |
| 50 computeDefaultTypeArguments; | 47 computeDefaultTypeArguments; |
| 51 | 48 |
| 49 import 'kernel_shadow_ast.dart' show KernelMember; |
| 50 |
| 52 import 'redirecting_factory_body.dart' show RedirectingFactoryBody; | 51 import 'redirecting_factory_body.dart' show RedirectingFactoryBody; |
| 53 | 52 |
| 54 abstract class KernelClassBuilder | 53 abstract class KernelClassBuilder |
| 55 extends ClassBuilder<KernelTypeBuilder, InterfaceType> { | 54 extends ClassBuilder<KernelTypeBuilder, InterfaceType> { |
| 56 KernelClassBuilder( | 55 KernelClassBuilder( |
| 57 List<MetadataBuilder> metadata, | 56 List<MetadataBuilder> metadata, |
| 58 int modifiers, | 57 int modifiers, |
| 59 String name, | 58 String name, |
| 60 List<TypeVariableBuilder> typeVariables, | 59 List<TypeVariableBuilder> typeVariables, |
| 61 KernelTypeBuilder supertype, | 60 KernelTypeBuilder supertype, |
| (...skipping 15 matching lines...) Expand all Loading... |
| 77 assert(arguments == null || cls.typeParameters.length == arguments.length); | 76 assert(arguments == null || cls.typeParameters.length == arguments.length); |
| 78 return arguments == null ? cls.rawType : new InterfaceType(cls, arguments); | 77 return arguments == null ? cls.rawType : new InterfaceType(cls, arguments); |
| 79 } | 78 } |
| 80 | 79 |
| 81 List<DartType> buildTypeArguments( | 80 List<DartType> buildTypeArguments( |
| 82 LibraryBuilder library, List<KernelTypeBuilder> arguments) { | 81 LibraryBuilder library, List<KernelTypeBuilder> arguments) { |
| 83 List<DartType> typeArguments = <DartType>[]; | 82 List<DartType> typeArguments = <DartType>[]; |
| 84 for (KernelTypeBuilder builder in arguments) { | 83 for (KernelTypeBuilder builder in arguments) { |
| 85 DartType type = builder.build(library); | 84 DartType type = builder.build(library); |
| 86 if (type == null) { | 85 if (type == null) { |
| 87 deprecated_internalProblem("Bad type: ${builder.runtimeType}"); | 86 unhandled("${builder.runtimeType}", "buildTypeArguments", -1, null); |
| 88 } | 87 } |
| 89 typeArguments.add(type); | 88 typeArguments.add(type); |
| 90 } | 89 } |
| 91 return computeDefaultTypeArguments( | 90 return computeDefaultTypeArguments( |
| 92 library, cls.typeParameters, typeArguments); | 91 library, cls.typeParameters, typeArguments); |
| 93 } | 92 } |
| 94 | 93 |
| 95 InterfaceType buildType( | 94 InterfaceType buildType( |
| 96 LibraryBuilder library, List<KernelTypeBuilder> arguments) { | 95 LibraryBuilder library, List<KernelTypeBuilder> arguments) { |
| 97 List<DartType> typeArguments; | 96 List<DartType> typeArguments; |
| (...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 183 } | 182 } |
| 184 | 183 |
| 185 void checkOverrides(ClassHierarchy hierarchy) { | 184 void checkOverrides(ClassHierarchy hierarchy) { |
| 186 hierarchy.forEachOverridePair(cls, checkOverride); | 185 hierarchy.forEachOverridePair(cls, checkOverride); |
| 187 hierarchy.forEachCrossOverridePair(cls, handleCrossOverride); | 186 hierarchy.forEachCrossOverridePair(cls, handleCrossOverride); |
| 188 } | 187 } |
| 189 | 188 |
| 190 void checkOverride( | 189 void checkOverride( |
| 191 Member declaredMember, Member interfaceMember, bool isSetter) { | 190 Member declaredMember, Member interfaceMember, bool isSetter) { |
| 192 if (declaredMember is Constructor || interfaceMember is Constructor) { | 191 if (declaredMember is Constructor || interfaceMember is Constructor) { |
| 193 deprecated_internalProblem( | 192 unimplemented( |
| 194 "Constructor in override check.", fileUri, declaredMember.fileOffset); | 193 "Constructor in override check.", declaredMember.fileOffset, fileUri); |
| 195 } | 194 } |
| 196 if (declaredMember is Procedure && interfaceMember is Procedure) { | 195 if (declaredMember is Procedure && interfaceMember is Procedure) { |
| 197 if (declaredMember.kind == ProcedureKind.Method && | 196 if (declaredMember.kind == ProcedureKind.Method && |
| 198 interfaceMember.kind == ProcedureKind.Method) { | 197 interfaceMember.kind == ProcedureKind.Method) { |
| 199 checkMethodOverride(declaredMember, interfaceMember); | 198 checkMethodOverride(declaredMember, interfaceMember); |
| 200 } | 199 } |
| 201 } | 200 } |
| 202 // TODO(ahe): Handle other cases: accessors, operators, and fields. | 201 // TODO(ahe): Handle other cases: accessors, operators, and fields. |
| 203 | 202 |
| 204 // Also record any cases where a field or getter/setter overrides something | 203 // Also record any cases where a field or getter/setter overrides something |
| (...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 295 } | 294 } |
| 296 } | 295 } |
| 297 } | 296 } |
| 298 | 297 |
| 299 String get fullNameForErrors { | 298 String get fullNameForErrors { |
| 300 return isMixinApplication | 299 return isMixinApplication |
| 301 ? "${supertype.fullNameForErrors} with ${mixedInType.fullNameForErrors}" | 300 ? "${supertype.fullNameForErrors} with ${mixedInType.fullNameForErrors}" |
| 302 : name; | 301 : name; |
| 303 } | 302 } |
| 304 } | 303 } |
| OLD | NEW |