| 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' show | 7 import 'package:kernel/ast.dart' show |
| 8 Class, | 8 Class, |
| 9 DartType, | 9 DartType, |
| 10 ExpressionStatement, | 10 ExpressionStatement, |
| (...skipping 14 matching lines...) Expand all Loading... |
| 25 ClassBuilder, | 25 ClassBuilder, |
| 26 ConstructorReferenceBuilder, | 26 ConstructorReferenceBuilder, |
| 27 KernelProcedureBuilder, | 27 KernelProcedureBuilder, |
| 28 KernelTypeBuilder, | 28 KernelTypeBuilder, |
| 29 LibraryBuilder, | 29 LibraryBuilder, |
| 30 MetadataBuilder, | 30 MetadataBuilder, |
| 31 ProcedureBuilder, | 31 ProcedureBuilder, |
| 32 TypeVariableBuilder, | 32 TypeVariableBuilder, |
| 33 computeDefaultTypeArguments; | 33 computeDefaultTypeArguments; |
| 34 | 34 |
| 35 import '../dill/dill_member_builder.dart' show |
| 36 DillMemberBuilder; |
| 37 |
| 35 import 'redirecting_factory_body.dart' show | 38 import 'redirecting_factory_body.dart' show |
| 36 RedirectingFactoryBody; | 39 RedirectingFactoryBody; |
| 37 | 40 |
| 38 abstract class KernelClassBuilder | 41 abstract class KernelClassBuilder |
| 39 extends ClassBuilder<KernelTypeBuilder, InterfaceType> { | 42 extends ClassBuilder<KernelTypeBuilder, InterfaceType> { |
| 40 KernelClassBuilder( | 43 KernelClassBuilder( |
| 41 List<MetadataBuilder> metadata, int modifiers, | 44 List<MetadataBuilder> metadata, int modifiers, |
| 42 String name, List<TypeVariableBuilder> typeVariables, | 45 String name, List<TypeVariableBuilder> typeVariables, |
| 43 KernelTypeBuilder supertype, List<KernelTypeBuilder> interfaces, | 46 KernelTypeBuilder supertype, List<KernelTypeBuilder> interfaces, |
| 44 Map<String, Builder> members, LibraryBuilder parent, int charOffset) | 47 Map<String, Builder> members, LibraryBuilder parent, int charOffset) |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 98 if (builder is KernelProcedureBuilder && builder.isFactory) { | 101 if (builder is KernelProcedureBuilder && builder.isFactory) { |
| 99 // Compute the immediate redirection target, not the effective. | 102 // Compute the immediate redirection target, not the effective. |
| 100 ConstructorReferenceBuilder redirectionTarget = | 103 ConstructorReferenceBuilder redirectionTarget = |
| 101 builder.redirectionTarget; | 104 builder.redirectionTarget; |
| 102 if (redirectionTarget != null) { | 105 if (redirectionTarget != null) { |
| 103 assert(builder.actualBody == null); | 106 assert(builder.actualBody == null); |
| 104 Builder targetBuilder = redirectionTarget.target; | 107 Builder targetBuilder = redirectionTarget.target; |
| 105 if (targetBuilder is ProcedureBuilder) { | 108 if (targetBuilder is ProcedureBuilder) { |
| 106 Member target = targetBuilder.target; | 109 Member target = targetBuilder.target; |
| 107 builder.body = new RedirectingFactoryBody(target); | 110 builder.body = new RedirectingFactoryBody(target); |
| 111 } else if (targetBuilder is DillMemberBuilder) { |
| 112 builder.body = new RedirectingFactoryBody(targetBuilder.member); |
| 108 } else { | 113 } else { |
| 109 // TODO(ahe): Throw NSM error. This requires access to core | 114 // TODO(ahe): Throw NSM error. This requires access to core |
| 110 // types. | 115 // types. |
| 111 String message = "Redirection constructor target not found: " | 116 String message = "Redirection constructor target not found: " |
| 112 "${redirectionTarget.fullNameForErrors}"; | 117 "${redirectionTarget.fullNameForErrors}"; |
| 113 warning(library.fileUri, -1, message); | 118 warning(library.fileUri, -1, message); |
| 114 builder.body = new ExpressionStatement( | 119 builder.body = new ExpressionStatement( |
| 115 new Throw(new StringLiteral(message))); | 120 new Throw(new StringLiteral(message))); |
| 116 } | 121 } |
| 117 } | 122 } |
| 118 } | 123 } |
| 119 }); | 124 }); |
| 120 } | 125 } |
| 121 return count; | 126 return count; |
| 122 } | 127 } |
| 123 } | 128 } |
| OLD | NEW |