| 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 Class, | 10 Class, |
| (...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 118 /// From Dart Programming Language Specification 4th Edition/December 2015: | 118 /// From Dart Programming Language Specification 4th Edition/December 2015: |
| 119 /// metadata class E { | 119 /// metadata class E { |
| 120 /// final int index; | 120 /// final int index; |
| 121 /// const E(this.index); | 121 /// const E(this.index); |
| 122 /// static const E id0 = const E(0); | 122 /// static const E id0 = const E(0); |
| 123 /// ... | 123 /// ... |
| 124 /// static const E idn-1 = const E(n - 1); | 124 /// static const E idn-1 = const E(n - 1); |
| 125 /// static const List<E> values = const <E>[id0, ..., idn-1]; | 125 /// static const List<E> values = const <E>[id0, ..., idn-1]; |
| 126 /// String toString() => { 0: ‘E.id0’, . . ., n-1: ‘E.idn-1’}[index] | 126 /// String toString() => { 0: ‘E.id0’, . . ., n-1: ‘E.idn-1’}[index] |
| 127 /// } | 127 /// } |
| 128 members["index"] = new KernelFieldBuilder(null, null, intType, "index", | 128 members["index"] = new KernelFieldBuilder( |
| 129 finalMask, parent, charOffset, null, true); | 129 null, intType, "index", finalMask, parent, charOffset, null, true); |
| 130 KernelConstructorBuilder constructorBuilder = new KernelConstructorBuilder( | 130 KernelConstructorBuilder constructorBuilder = new KernelConstructorBuilder( |
| 131 null, | 131 null, |
| 132 null, | |
| 133 constMask, | 132 constMask, |
| 134 null, | 133 null, |
| 135 "", | 134 "", |
| 136 null, | 135 null, |
| 137 <FormalParameterBuilder>[ | 136 <FormalParameterBuilder>[ |
| 138 new KernelFormalParameterBuilder( | 137 new KernelFormalParameterBuilder( |
| 139 null, 0, intType, "index", true, parent, charOffset) | 138 null, 0, intType, "index", true, parent, charOffset) |
| 140 ], | 139 ], |
| 141 parent, | 140 parent, |
| 142 charOffset, | 141 charOffset, |
| 143 charOffset, | 142 charOffset, |
| 144 charEndOffset); | 143 charEndOffset); |
| 145 constructors[""] = constructorBuilder; | 144 constructors[""] = constructorBuilder; |
| 146 int index = 0; | 145 int index = 0; |
| 147 List<MapEntry> toStringEntries = <MapEntry>[]; | 146 List<MapEntry> toStringEntries = <MapEntry>[]; |
| 148 KernelFieldBuilder valuesBuilder = new KernelFieldBuilder( | 147 KernelFieldBuilder valuesBuilder = new KernelFieldBuilder(null, listType, |
| 149 null, | 148 "values", constMask | staticMask, parent, charOffset, null, true); |
| 150 null, | |
| 151 listType, | |
| 152 "values", | |
| 153 constMask | staticMask, | |
| 154 parent, | |
| 155 charOffset, | |
| 156 null, | |
| 157 true); | |
| 158 members["values"] = valuesBuilder; | 149 members["values"] = valuesBuilder; |
| 159 KernelProcedureBuilder toStringBuilder = new KernelProcedureBuilder( | 150 KernelProcedureBuilder toStringBuilder = new KernelProcedureBuilder( |
| 160 null, | 151 null, |
| 161 null, | |
| 162 0, | 152 0, |
| 163 stringType, | 153 stringType, |
| 164 "toString", | 154 "toString", |
| 165 null, | 155 null, |
| 166 null, | 156 null, |
| 167 ProcedureKind.Method, | 157 ProcedureKind.Method, |
| 168 parent, | 158 parent, |
| 169 charOffset, | 159 charOffset, |
| 170 charOffset, | 160 charOffset, |
| 171 charEndOffset); | 161 charEndOffset); |
| 172 members["toString"] = toStringBuilder; | 162 members["toString"] = toStringBuilder; |
| 173 String className = name; | 163 String className = name; |
| 174 for (int i = 0; i < constantNamesAndOffsets.length; i += 2) { | 164 for (int i = 0; i < constantNamesAndOffsets.length; i += 2) { |
| 175 String name = constantNamesAndOffsets[i]; | 165 String name = constantNamesAndOffsets[i]; |
| 176 int charOffset = constantNamesAndOffsets[i + 1]; | 166 int charOffset = constantNamesAndOffsets[i + 1]; |
| 177 if (members.containsKey(name)) { | 167 if (members.containsKey(name)) { |
| 178 parent.addCompileTimeError(templateDuplicatedName.withArguments(name), | 168 parent.addCompileTimeError(templateDuplicatedName.withArguments(name), |
| 179 charOffset, parent.fileUri); | 169 charOffset, parent.fileUri); |
| 180 constantNamesAndOffsets[i] = null; | 170 constantNamesAndOffsets[i] = null; |
| 181 continue; | 171 continue; |
| 182 } | 172 } |
| 183 if (name == className) { | 173 if (name == className) { |
| 184 parent.addCompileTimeError( | 174 parent.addCompileTimeError( |
| 185 templateEnumConstantSameNameAsEnclosing.withArguments(name), | 175 templateEnumConstantSameNameAsEnclosing.withArguments(name), |
| 186 charOffset, | 176 charOffset, |
| 187 parent.fileUri); | 177 parent.fileUri); |
| 188 constantNamesAndOffsets[i] = null; | 178 constantNamesAndOffsets[i] = null; |
| 189 continue; | 179 continue; |
| 190 } | 180 } |
| 191 KernelFieldBuilder fieldBuilder = new KernelFieldBuilder( | 181 KernelFieldBuilder fieldBuilder = new KernelFieldBuilder(null, selfType, |
| 192 null, | 182 name, constMask | staticMask, parent, charOffset, null, true); |
| 193 null, | |
| 194 selfType, | |
| 195 name, | |
| 196 constMask | staticMask, | |
| 197 parent, | |
| 198 charOffset, | |
| 199 null, | |
| 200 true); | |
| 201 members[name] = fieldBuilder; | 183 members[name] = fieldBuilder; |
| 202 toStringEntries.add(new MapEntry( | 184 toStringEntries.add(new MapEntry( |
| 203 new IntLiteral(index), new StringLiteral("$className.$name"))); | 185 new IntLiteral(index), new StringLiteral("$className.$name"))); |
| 204 index++; | 186 index++; |
| 205 } | 187 } |
| 206 MapLiteral toStringMap = new MapLiteral(toStringEntries, isConst: true); | 188 MapLiteral toStringMap = new MapLiteral(toStringEntries, isConst: true); |
| 207 KernelEnumBuilder enumBuilder = new KernelEnumBuilder.internal( | 189 KernelEnumBuilder enumBuilder = new KernelEnumBuilder.internal( |
| 208 null, | 190 null, |
| 209 metadata, | 191 metadata, |
| 210 name, | 192 name, |
| (...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 306 } | 288 } |
| 307 return super.build(libraryBuilder, coreLibrary); | 289 return super.build(libraryBuilder, coreLibrary); |
| 308 } | 290 } |
| 309 | 291 |
| 310 @override | 292 @override |
| 311 Builder findConstructorOrFactory( | 293 Builder findConstructorOrFactory( |
| 312 String name, int charOffset, Uri uri, LibraryBuilder library) { | 294 String name, int charOffset, Uri uri, LibraryBuilder library) { |
| 313 return null; | 295 return null; |
| 314 } | 296 } |
| 315 } | 297 } |
| OLD | NEW |