| 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_library_builder; | 5 library fasta.kernel_library_builder; |
| 6 | 6 |
| 7 import 'package:kernel/ast.dart'; | 7 import 'package:kernel/ast.dart'; |
| 8 | 8 |
| 9 import 'package:kernel/clone.dart' show | 9 import 'package:kernel/clone.dart' show |
| 10 CloneVisitor; | 10 CloneVisitor; |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 88 | 88 |
| 89 KernelTypeBuilder addVoidType() { | 89 KernelTypeBuilder addVoidType() { |
| 90 return new KernelInterfaceTypeBuilder("void", null); | 90 return new KernelInterfaceTypeBuilder("void", null); |
| 91 } | 91 } |
| 92 | 92 |
| 93 ClassBuilder addClass(List<MetadataBuilder> metadata, | 93 ClassBuilder addClass(List<MetadataBuilder> metadata, |
| 94 int modifiers, String className, | 94 int modifiers, String className, |
| 95 List<TypeVariableBuilder> typeVariables, KernelTypeBuilder supertype, | 95 List<TypeVariableBuilder> typeVariables, KernelTypeBuilder supertype, |
| 96 List<KernelTypeBuilder> interfaces) { | 96 List<KernelTypeBuilder> interfaces) { |
| 97 ClassBuilder cls = new SourceClassBuilder(metadata, modifiers, className, | 97 ClassBuilder cls = new SourceClassBuilder(metadata, modifiers, className, |
| 98 typeVariables, supertype, interfaces, classMembers, classTypes, this, | 98 typeVariables, supertype, interfaces, classMembers, declarationTypes, |
| 99 this, |
| 99 new List<ConstructorReferenceBuilder>.from(constructorReferences)); | 100 new List<ConstructorReferenceBuilder>.from(constructorReferences)); |
| 100 constructorReferences.clear(); | 101 constructorReferences.clear(); |
| 101 classMembers.forEach((String name, MemberBuilder builder) { | 102 classMembers.forEach((String name, MemberBuilder builder) { |
| 102 while (builder != null) { | 103 while (builder != null) { |
| 103 builder.parent = cls; | 104 builder.parent = cls; |
| 104 builder = builder.next; | 105 builder = builder.next; |
| 105 } | 106 } |
| 106 }); | 107 }); |
| 107 // Nested scope began in `OutlineBuilder.beginClassDeclaration`. | 108 // Nested scope began in `OutlineBuilder.beginClassDeclaration`. |
| 108 endNestedScope(); | 109 endNestedScope(); |
| 109 return addBuilder(className, cls); | 110 return addBuilder(className, cls); |
| 110 } | 111 } |
| 111 | 112 |
| 112 NamedMixinApplicationBuilder addNamedMixinApplication( | 113 NamedMixinApplicationBuilder addNamedMixinApplication( |
| 113 List<MetadataBuilder> metadata, String name, | 114 List<MetadataBuilder> metadata, String name, |
| 114 List<TypeVariableBuilder> typeVariables, int modifiers, | 115 List<TypeVariableBuilder> typeVariables, int modifiers, |
| 115 KernelTypeBuilder mixinApplication, List<KernelTypeBuilder> interfaces) { | 116 KernelTypeBuilder mixinApplication, List<KernelTypeBuilder> interfaces) { |
| 116 NamedMixinApplicationBuilder builder = | 117 NamedMixinApplicationBuilder builder = |
| 117 new KernelNamedMixinApplicationBuilder(metadata, name, typeVariables, | 118 new KernelNamedMixinApplicationBuilder(metadata, name, typeVariables, |
| 118 modifiers, mixinApplication, interfaces, classTypes, this); | 119 modifiers, mixinApplication, interfaces, declarationTypes, this); |
| 119 // Nested scope began in `OutlineBuilder.beginNamedMixinApplication`. | 120 // Nested scope began in `OutlineBuilder.beginNamedMixinApplication`. |
| 120 endNestedScope(); | 121 endNestedScope(); |
| 121 return addBuilder(name, builder); | 122 return addBuilder(name, builder); |
| 122 } | 123 } |
| 123 | 124 |
| 124 FieldBuilder addField(List<MetadataBuilder> metadata, | 125 FieldBuilder addField(List<MetadataBuilder> metadata, |
| 125 int modifiers, KernelTypeBuilder type, String name) { | 126 int modifiers, KernelTypeBuilder type, String name) { |
| 126 return addBuilder(name, | 127 return addBuilder(name, |
| 127 new KernelFieldBuilder(metadata, type, name, modifiers)); | 128 new KernelFieldBuilder(metadata, type, name, modifiers)); |
| 128 } | 129 } |
| 129 | 130 |
| 130 ProcedureBuilder addProcedure(List<MetadataBuilder> metadata, | 131 ProcedureBuilder addProcedure(List<MetadataBuilder> metadata, |
| 131 int modifiers, KernelTypeBuilder returnType, String name, | 132 int modifiers, KernelTypeBuilder returnType, String name, |
| 132 List<TypeVariableBuilder> typeVariables, | 133 List<TypeVariableBuilder> typeVariables, |
| 133 List<FormalParameterBuilder> formals, AsyncMarker asyncModifier, | 134 List<FormalParameterBuilder> formals, AsyncMarker asyncModifier, |
| 134 ProcedureKind kind) { | 135 ProcedureKind kind) { |
| 136 // Nested scope began in `OutlineBuilder.beginMethod` or |
| 137 // `OutlineBuilder.beginTopLevelMethod`. |
| 138 endNestedScope().resolveTypes(typeVariables); |
| 135 return addBuilder(name, | 139 return addBuilder(name, |
| 136 new KernelProcedureBuilder(metadata, modifiers, returnType, name, | 140 new KernelProcedureBuilder(metadata, modifiers, returnType, name, |
| 137 typeVariables, formals, asyncModifier, kind)); | 141 typeVariables, formals, asyncModifier, kind)); |
| 138 } | 142 } |
| 139 | 143 |
| 140 void addFactoryMethod(List<MetadataBuilder> metadata, | 144 void addFactoryMethod(List<MetadataBuilder> metadata, |
| 141 ConstructorReferenceBuilder constructorName, | 145 ConstructorReferenceBuilder constructorName, |
| 142 List<FormalParameterBuilder> formals, AsyncMarker asyncModifier, | 146 List<FormalParameterBuilder> formals, AsyncMarker asyncModifier, |
| 143 ConstructorReferenceBuilder redirectionTarget) { | 147 ConstructorReferenceBuilder redirectionTarget) { |
| 144 String name = constructorName.name; | 148 String name = constructorName.name; |
| 145 assert(constructorName.suffix == null); | 149 assert(constructorName.suffix == null); |
| 146 addBuilder(name, | 150 addBuilder(name, |
| 147 new KernelProcedureBuilder(metadata, staticMask, null, name, null, | 151 new KernelProcedureBuilder(metadata, staticMask, null, name, null, |
| 148 formals, asyncModifier, ProcedureKind.Factory, redirectionTarget)); | 152 formals, asyncModifier, ProcedureKind.Factory, redirectionTarget)); |
| 149 } | 153 } |
| 150 | 154 |
| 151 EnumBuilder addEnum(List<MetadataBuilder> metadata, String name, | 155 EnumBuilder addEnum(List<MetadataBuilder> metadata, String name, |
| 152 List<String> constants) { | 156 List<String> constants) { |
| 153 return addBuilder(name, | 157 return addBuilder(name, |
| 154 new KernelEnumBuilder(metadata, name, constants, this)); | 158 new KernelEnumBuilder(metadata, name, constants, this)); |
| 155 } | 159 } |
| 156 | 160 |
| 157 FunctionTypeAliasBuilder addFunctionTypeAlias(List<MetadataBuilder> metadata, | 161 FunctionTypeAliasBuilder addFunctionTypeAlias(List<MetadataBuilder> metadata, |
| 158 KernelTypeBuilder returnType, String name, | 162 KernelTypeBuilder returnType, String name, |
| 159 List<TypeVariableBuilder> typeVariables, | 163 List<TypeVariableBuilder> typeVariables, |
| 160 List<FormalParameterBuilder> formals) { | 164 List<FormalParameterBuilder> formals) { |
| 161 FunctionTypeAliasBuilder typedef = new KernelFunctionTypeAliasBuilder( | 165 FunctionTypeAliasBuilder typedef = new KernelFunctionTypeAliasBuilder( |
| 162 metadata, returnType, name, typeVariables, formals, classTypes, this); | 166 metadata, returnType, name, typeVariables, formals, declarationTypes, |
| 167 this); |
| 163 // Nested scope began in `OutlineBuilder.beginFunctionTypeAlias`. | 168 // Nested scope began in `OutlineBuilder.beginFunctionTypeAlias`. |
| 164 endNestedScope(); | 169 endNestedScope(); |
| 165 return addBuilder(name, typedef); | 170 return addBuilder(name, typedef); |
| 166 } | 171 } |
| 167 | 172 |
| 168 KernelFormalParameterBuilder addFormalParameter( | 173 KernelFormalParameterBuilder addFormalParameter( |
| 169 List<MetadataBuilder> metadata, int modifiers, | 174 List<MetadataBuilder> metadata, int modifiers, |
| 170 KernelTypeBuilder type, String name, bool hasThis) { | 175 KernelTypeBuilder type, String name, bool hasThis) { |
| 171 return new KernelFormalParameterBuilder( | 176 return new KernelFormalParameterBuilder( |
| 172 metadata, modifiers, type, name, hasThis); | 177 metadata, modifiers, type, name, hasThis); |
| (...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 270 } | 275 } |
| 271 expression.value = | 276 expression.value = |
| 272 defaultArgumentFrom(names[expression.name].initializer) | 277 defaultArgumentFrom(names[expression.name].initializer) |
| 273 ..parent = expression; | 278 ..parent = expression; |
| 274 } | 279 } |
| 275 } | 280 } |
| 276 } | 281 } |
| 277 return argumentsWithMissingDefaultValues.length; | 282 return argumentsWithMissingDefaultValues.length; |
| 278 } | 283 } |
| 279 } | 284 } |
| OLD | NEW |