| 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 14 matching lines...) Expand all Loading... |
| 25 SourceClassBuilder; | 25 SourceClassBuilder; |
| 26 | 26 |
| 27 import '../util/relativize.dart' show | 27 import '../util/relativize.dart' show |
| 28 relativizeUri; | 28 relativizeUri; |
| 29 | 29 |
| 30 import 'kernel_builder.dart' show | 30 import 'kernel_builder.dart' show |
| 31 Builder, | 31 Builder, |
| 32 ClassBuilder, | 32 ClassBuilder, |
| 33 ConstructorReferenceBuilder, | 33 ConstructorReferenceBuilder, |
| 34 DynamicTypeBuilder, | 34 DynamicTypeBuilder, |
| 35 EnumBuilder, | |
| 36 FieldBuilder, | |
| 37 FormalParameterBuilder, | 35 FormalParameterBuilder, |
| 38 FunctionTypeAliasBuilder, | 36 FunctionTypeAliasBuilder, |
| 39 KernelEnumBuilder, | 37 KernelEnumBuilder, |
| 40 KernelFieldBuilder, | 38 KernelFieldBuilder, |
| 41 KernelFormalParameterBuilder, | 39 KernelFormalParameterBuilder, |
| 42 KernelFunctionTypeAliasBuilder, | 40 KernelFunctionTypeAliasBuilder, |
| 43 KernelInvalidTypeBuilder, | 41 KernelInvalidTypeBuilder, |
| 44 KernelMixinApplicationBuilder, | 42 KernelMixinApplicationBuilder, |
| 45 KernelNamedMixinApplicationBuilder, | 43 KernelNamedMixinApplicationBuilder, |
| 46 KernelNamedTypeBuilder, | 44 KernelNamedTypeBuilder, |
| 47 KernelProcedureBuilder, | 45 KernelProcedureBuilder, |
| 48 KernelTypeBuilder, | 46 KernelTypeBuilder, |
| 49 KernelTypeVariableBuilder, | 47 KernelTypeVariableBuilder, |
| 50 MemberBuilder, | 48 MemberBuilder, |
| 51 MetadataBuilder, | 49 MetadataBuilder, |
| 52 MixedAccessor, | 50 MixedAccessor, |
| 53 NamedMixinApplicationBuilder, | 51 NamedMixinApplicationBuilder, |
| 54 PrefixBuilder, | 52 PrefixBuilder, |
| 55 ProcedureBuilder, | |
| 56 TypeVariableBuilder; | 53 TypeVariableBuilder; |
| 57 | 54 |
| 58 class KernelLibraryBuilder | 55 class KernelLibraryBuilder |
| 59 extends SourceLibraryBuilder<KernelTypeBuilder, Library> { | 56 extends SourceLibraryBuilder<KernelTypeBuilder, Library> { |
| 60 final Library library; | 57 final Library library; |
| 61 | 58 |
| 62 final List<Class> mixinApplicationClasses = <Class>[]; | 59 final List<Class> mixinApplicationClasses = <Class>[]; |
| 63 | 60 |
| 64 final List<List> argumentsWithMissingDefaultValues = <List>[]; | 61 final List<List> argumentsWithMissingDefaultValues = <List>[]; |
| 65 | 62 |
| (...skipping 20 matching lines...) Expand all Loading... |
| 86 List<KernelTypeBuilder> mixins, int charOffset) { | 83 List<KernelTypeBuilder> mixins, int charOffset) { |
| 87 KernelTypeBuilder type = new KernelMixinApplicationBuilder( | 84 KernelTypeBuilder type = new KernelMixinApplicationBuilder( |
| 88 supertype, mixins, charOffset, fileUri); | 85 supertype, mixins, charOffset, fileUri); |
| 89 return addType(type); | 86 return addType(type); |
| 90 } | 87 } |
| 91 | 88 |
| 92 KernelTypeBuilder addVoidType(int charOffset) { | 89 KernelTypeBuilder addVoidType(int charOffset) { |
| 93 return new KernelNamedTypeBuilder("void", null, charOffset, fileUri); | 90 return new KernelNamedTypeBuilder("void", null, charOffset, fileUri); |
| 94 } | 91 } |
| 95 | 92 |
| 96 ClassBuilder addClass(List<MetadataBuilder> metadata, | 93 void addClass(List<MetadataBuilder> metadata, |
| 97 int modifiers, String className, | 94 int modifiers, String className, |
| 98 List<TypeVariableBuilder> typeVariables, KernelTypeBuilder supertype, | 95 List<TypeVariableBuilder> typeVariables, KernelTypeBuilder supertype, |
| 99 List<KernelTypeBuilder> interfaces, int charOffset) { | 96 List<KernelTypeBuilder> interfaces, int charOffset) { |
| 100 ClassBuilder cls = new SourceClassBuilder(metadata, modifiers, className, | 97 ClassBuilder cls = new SourceClassBuilder(metadata, modifiers, className, |
| 101 typeVariables, supertype, interfaces, classMembers, declarationTypes, | 98 typeVariables, supertype, interfaces, classMembers, declarationTypes, |
| 102 this, | 99 this, |
| 103 new List<ConstructorReferenceBuilder>.from(constructorReferences), | 100 new List<ConstructorReferenceBuilder>.from(constructorReferences), |
| 104 charOffset); | 101 charOffset); |
| 105 constructorReferences.clear(); | 102 constructorReferences.clear(); |
| 106 classMembers.forEach((String name, MemberBuilder builder) { | 103 classMembers.forEach((String name, MemberBuilder builder) { |
| 107 while (builder != null) { | 104 while (builder != null) { |
| 108 builder.parent = cls; | 105 builder.parent = cls; |
| 109 builder = builder.next; | 106 builder = builder.next; |
| 110 } | 107 } |
| 111 }); | 108 }); |
| 112 // Nested declaration began in `OutlineBuilder.beginClassDeclaration`. | 109 // Nested declaration began in `OutlineBuilder.beginClassDeclaration`. |
| 113 endNestedDeclaration(); | 110 endNestedDeclaration(); |
| 114 return addBuilder(className, cls); | 111 addBuilder(className, cls); |
| 115 } | 112 } |
| 116 | 113 |
| 117 NamedMixinApplicationBuilder addNamedMixinApplication( | 114 void addNamedMixinApplication( |
| 118 List<MetadataBuilder> metadata, String name, | 115 List<MetadataBuilder> metadata, String name, |
| 119 List<TypeVariableBuilder> typeVariables, int modifiers, | 116 List<TypeVariableBuilder> typeVariables, int modifiers, |
| 120 KernelTypeBuilder mixinApplication, List<KernelTypeBuilder> interfaces, | 117 KernelTypeBuilder mixinApplication, List<KernelTypeBuilder> interfaces, |
| 121 int charOffset) { | 118 int charOffset) { |
| 122 NamedMixinApplicationBuilder builder = | 119 NamedMixinApplicationBuilder builder = |
| 123 new KernelNamedMixinApplicationBuilder(metadata, name, typeVariables, | 120 new KernelNamedMixinApplicationBuilder(metadata, name, typeVariables, |
| 124 modifiers, mixinApplication, interfaces, declarationTypes, this, | 121 modifiers, mixinApplication, interfaces, declarationTypes, this, |
| 125 charOffset); | 122 charOffset); |
| 126 // Nested declaration began in `OutlineBuilder.beginNamedMixinApplication`. | 123 // Nested declaration began in `OutlineBuilder.beginNamedMixinApplication`. |
| 127 endNestedDeclaration(); | 124 endNestedDeclaration(); |
| 128 return addBuilder(name, builder); | 125 addBuilder(name, builder); |
| 129 } | 126 } |
| 130 | 127 |
| 131 FieldBuilder addField(List<MetadataBuilder> metadata, | 128 void addField(List<MetadataBuilder> metadata, |
| 132 int modifiers, KernelTypeBuilder type, String name, int charOffset) { | 129 int modifiers, KernelTypeBuilder type, String name, int charOffset) { |
| 133 return addBuilder(name, new KernelFieldBuilder( | 130 addBuilder(name, new KernelFieldBuilder( |
| 134 metadata, type, name, modifiers, this, charOffset)); | 131 metadata, type, name, modifiers, this, charOffset)); |
| 135 } | 132 } |
| 136 | 133 |
| 137 ProcedureBuilder addProcedure(List<MetadataBuilder> metadata, | 134 void addProcedure(List<MetadataBuilder> metadata, |
| 138 int modifiers, KernelTypeBuilder returnType, String name, | 135 int modifiers, KernelTypeBuilder returnType, String name, |
| 139 List<TypeVariableBuilder> typeVariables, | 136 List<TypeVariableBuilder> typeVariables, |
| 140 List<FormalParameterBuilder> formals, AsyncMarker asyncModifier, | 137 List<FormalParameterBuilder> formals, AsyncMarker asyncModifier, |
| 141 ProcedureKind kind, int charOffset) { | 138 ProcedureKind kind, int charOffset) { |
| 142 // Nested declaration began in `OutlineBuilder.beginMethod` or | 139 // Nested declaration began in `OutlineBuilder.beginMethod` or |
| 143 // `OutlineBuilder.beginTopLevelMethod`. | 140 // `OutlineBuilder.beginTopLevelMethod`. |
| 144 endNestedDeclaration().resolveTypes(typeVariables); | 141 endNestedDeclaration().resolveTypes(typeVariables); |
| 145 return addBuilder(name, | 142 addBuilder(name, |
| 146 new KernelProcedureBuilder(metadata, modifiers, returnType, name, | 143 new KernelProcedureBuilder(metadata, modifiers, returnType, name, |
| 147 typeVariables, formals, asyncModifier, kind, this, charOffset)); | 144 typeVariables, formals, asyncModifier, kind, this, charOffset)); |
| 148 } | 145 } |
| 149 | 146 |
| 150 void addFactoryMethod(List<MetadataBuilder> metadata, | 147 void addFactoryMethod(List<MetadataBuilder> metadata, |
| 151 ConstructorReferenceBuilder constructorName, | 148 ConstructorReferenceBuilder constructorName, |
| 152 List<FormalParameterBuilder> formals, AsyncMarker asyncModifier, | 149 List<FormalParameterBuilder> formals, AsyncMarker asyncModifier, |
| 153 ConstructorReferenceBuilder redirectionTarget, int charOffset) { | 150 ConstructorReferenceBuilder redirectionTarget, int charOffset) { |
| 154 String name = constructorName.name; | 151 String name = constructorName.name; |
| 155 assert(constructorName.suffix == null); | 152 assert(constructorName.suffix == null); |
| 156 addBuilder(name, | 153 addBuilder(name, |
| 157 new KernelProcedureBuilder(metadata, staticMask, null, name, null, | 154 new KernelProcedureBuilder(metadata, staticMask, null, name, null, |
| 158 formals, asyncModifier, ProcedureKind.Factory, this, charOffset, | 155 formals, asyncModifier, ProcedureKind.Factory, this, charOffset, |
| 159 redirectionTarget)); | 156 redirectionTarget)); |
| 160 } | 157 } |
| 161 | 158 |
| 162 EnumBuilder addEnum(List<MetadataBuilder> metadata, String name, | 159 void addEnum(List<MetadataBuilder> metadata, String name, |
| 163 List<String> constants, int charOffset) { | 160 List<String> constants, int charOffset) { |
| 164 return addBuilder(name, | 161 addBuilder(name, |
| 165 new KernelEnumBuilder(metadata, name, constants, this, charOffset)); | 162 new KernelEnumBuilder(metadata, name, constants, this, charOffset)); |
| 166 } | 163 } |
| 167 | 164 |
| 168 FunctionTypeAliasBuilder addFunctionTypeAlias(List<MetadataBuilder> metadata, | 165 void addFunctionTypeAlias(List<MetadataBuilder> metadata, |
| 169 KernelTypeBuilder returnType, String name, | 166 KernelTypeBuilder returnType, String name, |
| 170 List<TypeVariableBuilder> typeVariables, | 167 List<TypeVariableBuilder> typeVariables, |
| 171 List<FormalParameterBuilder> formals, int charOffset) { | 168 List<FormalParameterBuilder> formals, int charOffset) { |
| 172 FunctionTypeAliasBuilder typedef = new KernelFunctionTypeAliasBuilder( | 169 FunctionTypeAliasBuilder typedef = new KernelFunctionTypeAliasBuilder( |
| 173 metadata, returnType, name, typeVariables, formals, declarationTypes, | 170 metadata, returnType, name, typeVariables, formals, declarationTypes, |
| 174 this, charOffset); | 171 this, charOffset); |
| 175 // Nested declaration began in `OutlineBuilder.beginFunctionTypeAlias`. | 172 // Nested declaration began in `OutlineBuilder.beginFunctionTypeAlias`. |
| 176 endNestedDeclaration(); | 173 endNestedDeclaration(); |
| 177 return addBuilder(name, typedef); | 174 addBuilder(name, typedef); |
| 178 } | 175 } |
| 179 | 176 |
| 180 KernelFormalParameterBuilder addFormalParameter( | 177 KernelFormalParameterBuilder addFormalParameter( |
| 181 List<MetadataBuilder> metadata, int modifiers, | 178 List<MetadataBuilder> metadata, int modifiers, |
| 182 KernelTypeBuilder type, String name, bool hasThis, int charOffset) { | 179 KernelTypeBuilder type, String name, bool hasThis, int charOffset) { |
| 183 return new KernelFormalParameterBuilder( | 180 return new KernelFormalParameterBuilder( |
| 184 metadata, modifiers, type, name, hasThis, this, charOffset); | 181 metadata, modifiers, type, name, hasThis, this, charOffset); |
| 185 } | 182 } |
| 186 | 183 |
| 187 KernelTypeVariableBuilder addTypeVariable(String name, | 184 KernelTypeVariableBuilder addTypeVariable(String name, |
| (...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 282 } | 279 } |
| 283 expression.value = | 280 expression.value = |
| 284 defaultArgumentFrom(names[expression.name].initializer) | 281 defaultArgumentFrom(names[expression.name].initializer) |
| 285 ..parent = expression; | 282 ..parent = expression; |
| 286 } | 283 } |
| 287 } | 284 } |
| 288 } | 285 } |
| 289 return argumentsWithMissingDefaultValues.length; | 286 return argumentsWithMissingDefaultValues.length; |
| 290 } | 287 } |
| 291 } | 288 } |
| OLD | NEW |