Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(345)

Side by Side Diff: pkg/front_end/lib/src/fasta/kernel/kernel_enum_builder.dart

Issue 2756443004: Share operator names (Closed)
Patch Set: Share operator names Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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 }
OLDNEW
« no previous file with comments | « pkg/front_end/lib/src/fasta/kernel/frontend_accessors.dart ('k') | pkg/front_end/lib/src/fasta/names.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698