| 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_enum_builder; | 5 library fasta.kernel_enum_builder; |
| 6 | 6 |
| 7 import 'package:kernel/ast.dart' | 7 import 'package:kernel/ast.dart' |
| 8 show | 8 show |
| 9 Arguments, | 9 Arguments, |
| 10 AsyncMarker, | 10 AsyncMarker, |
| 11 Class, | 11 Class, |
| 12 Constructor, | 12 Constructor, |
| 13 ConstructorInvocation, | 13 ConstructorInvocation, |
| 14 DirectPropertyGet, | 14 DirectPropertyGet, |
| 15 Expression, | 15 Expression, |
| 16 Field, | 16 Field, |
| 17 FieldInitializer, | 17 FieldInitializer, |
| 18 IntLiteral, | 18 IntLiteral, |
| 19 InterfaceType, | 19 InterfaceType, |
| 20 ListLiteral, | 20 ListLiteral, |
| 21 MapEntry, | 21 MapEntry, |
| 22 MapLiteral, | 22 MapLiteral, |
| 23 MethodInvocation, | 23 MethodInvocation, |
| 24 Name, | |
| 25 ProcedureKind, | 24 ProcedureKind, |
| 26 ReturnStatement, | 25 ReturnStatement, |
| 27 StaticGet, | 26 StaticGet, |
| 28 StringLiteral, | 27 StringLiteral, |
| 29 ThisExpression, | 28 ThisExpression, |
| 30 VariableGet; | 29 VariableGet; |
| 31 | 30 |
| 32 import '../errors.dart' show inputError; | 31 import '../errors.dart' show inputError; |
| 33 | 32 |
| 34 import '../modifier.dart' show constMask, finalMask, staticMask; | 33 import '../modifier.dart' show constMask, finalMask, staticMask; |
| 35 | 34 |
| 36 import "../source/source_class_builder.dart" show SourceClassBuilder; | 35 import "../source/source_class_builder.dart" show SourceClassBuilder; |
| 37 | 36 |
| 38 import 'kernel_builder.dart' | 37 import 'kernel_builder.dart' |
| 39 show | 38 show |
| 40 Builder, | 39 Builder, |
| 41 EnumBuilder, | 40 EnumBuilder, |
| 42 FormalParameterBuilder, | 41 FormalParameterBuilder, |
| 43 KernelConstructorBuilder, | 42 KernelConstructorBuilder, |
| 44 KernelFieldBuilder, | 43 KernelFieldBuilder, |
| 45 KernelFormalParameterBuilder, | 44 KernelFormalParameterBuilder, |
| 46 KernelLibraryBuilder, | 45 KernelLibraryBuilder, |
| 47 KernelNamedTypeBuilder, | 46 KernelNamedTypeBuilder, |
| 48 KernelProcedureBuilder, | 47 KernelProcedureBuilder, |
| 49 KernelTypeBuilder, | 48 KernelTypeBuilder, |
| 50 LibraryBuilder, | 49 LibraryBuilder, |
| 51 MemberBuilder, | 50 MemberBuilder, |
| 52 MetadataBuilder; | 51 MetadataBuilder; |
| 53 | 52 |
| 53 import '../names.dart' show indexGetName; |
| 54 |
| 54 class KernelEnumBuilder extends SourceClassBuilder | 55 class KernelEnumBuilder extends SourceClassBuilder |
| 55 implements EnumBuilder<KernelTypeBuilder, InterfaceType> { | 56 implements EnumBuilder<KernelTypeBuilder, InterfaceType> { |
| 56 final List<String> constants; | 57 final List<String> constants; |
| 57 | 58 |
| 58 final MapLiteral toStringMap; | 59 final MapLiteral toStringMap; |
| 59 | 60 |
| 60 final KernelTypeBuilder intType; | 61 final KernelTypeBuilder intType; |
| 61 | 62 |
| 62 final KernelTypeBuilder stringType; | 63 final KernelTypeBuilder stringType; |
| 63 | 64 |
| (...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 193 libraryBuilder.addCompileTimeError( | 194 libraryBuilder.addCompileTimeError( |
| 194 -1, "An enum declaration can't be empty."); | 195 -1, "An enum declaration can't be empty."); |
| 195 } | 196 } |
| 196 toStringMap.keyType = intType.build(libraryBuilder); | 197 toStringMap.keyType = intType.build(libraryBuilder); |
| 197 toStringMap.valueType = stringType.build(libraryBuilder); | 198 toStringMap.valueType = stringType.build(libraryBuilder); |
| 198 KernelFieldBuilder indexFieldBuilder = members["index"]; | 199 KernelFieldBuilder indexFieldBuilder = members["index"]; |
| 199 Field indexField = indexFieldBuilder.build(libraryBuilder); | 200 Field indexField = indexFieldBuilder.build(libraryBuilder); |
| 200 KernelProcedureBuilder toStringBuilder = members["toString"]; | 201 KernelProcedureBuilder toStringBuilder = members["toString"]; |
| 201 toStringBuilder.body = new ReturnStatement(new MethodInvocation( | 202 toStringBuilder.body = new ReturnStatement(new MethodInvocation( |
| 202 toStringMap, | 203 toStringMap, |
| 203 new Name("[]"), | 204 indexGetName, |
| 204 new Arguments(<Expression>[ | 205 new Arguments(<Expression>[ |
| 205 new DirectPropertyGet(new ThisExpression(), indexField) | 206 new DirectPropertyGet(new ThisExpression(), indexField) |
| 206 ]))); | 207 ]))); |
| 207 List<Expression> values = <Expression>[]; | 208 List<Expression> values = <Expression>[]; |
| 208 for (String name in constants) { | 209 for (String name in constants) { |
| 209 KernelFieldBuilder builder = members[name]; | 210 KernelFieldBuilder builder = members[name]; |
| 210 values.add(new StaticGet(builder.build(libraryBuilder))); | 211 values.add(new StaticGet(builder.build(libraryBuilder))); |
| 211 } | 212 } |
| 212 KernelFieldBuilder valuesBuilder = members["values"]; | 213 KernelFieldBuilder valuesBuilder = members["values"]; |
| 213 valuesBuilder.build(libraryBuilder); | 214 valuesBuilder.build(libraryBuilder); |
| (...skipping 13 matching lines...) Expand all Loading... |
| 227 Arguments arguments = | 228 Arguments arguments = |
| 228 new Arguments(<Expression>[new IntLiteral(index++)]); | 229 new Arguments(<Expression>[new IntLiteral(index++)]); |
| 229 field.initializer = | 230 field.initializer = |
| 230 new ConstructorInvocation(constructor, arguments, isConst: true); | 231 new ConstructorInvocation(constructor, arguments, isConst: true); |
| 231 } | 232 } |
| 232 return super.build(libraryBuilder); | 233 return super.build(libraryBuilder); |
| 233 } | 234 } |
| 234 | 235 |
| 235 Builder findConstructorOrFactory(String name) => null; | 236 Builder findConstructorOrFactory(String name) => null; |
| 236 } | 237 } |
| OLD | NEW |