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 // A very simple parser for a subset of DartTypes for use in testing type | 4 // A very simple parser for a subset of DartTypes for use in testing type |
5 // algebra. | 5 // algebra. |
6 library kernel.test.type_parser; | 6 library kernel.test.type_parser; |
7 | 7 |
8 import 'package:kernel/kernel.dart'; | 8 import 'package:kernel/kernel.dart'; |
9 import 'package:kernel/text/ast_to_text.dart'; | 9 import 'package:kernel/text/ast_to_text.dart'; |
10 | 10 |
(...skipping 256 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
267 } | 267 } |
268 | 268 |
269 dynamic fail(String message) { | 269 dynamic fail(String message) { |
270 throw '$message at index $index'; | 270 throw '$message at index $index'; |
271 } | 271 } |
272 } | 272 } |
273 | 273 |
274 class LazyTypeEnvironment { | 274 class LazyTypeEnvironment { |
275 final Map<String, Class> classes = <String, Class>{}; | 275 final Map<String, Class> classes = <String, Class>{}; |
276 final Map<String, TypeParameter> typeParameters = <String, TypeParameter>{}; | 276 final Map<String, TypeParameter> typeParameters = <String, TypeParameter>{}; |
277 final Library dummyLibrary = | 277 Library dummyLibrary; |
278 new Library(new Uri(path: 'dummy.dart'), name: 'lib'); | 278 final Program program = new Program(); |
| 279 |
| 280 LazyTypeEnvironment() { |
| 281 dummyLibrary = new Library(Uri.parse('file://dummy.dart')); |
| 282 program.libraries.add(dummyLibrary..parent = program); |
| 283 dummyLibrary.name = 'lib'; |
| 284 } |
279 | 285 |
280 TreeNode lookup(String name) { | 286 TreeNode lookup(String name) { |
281 return name.length == 1 | 287 return name.length == 1 |
282 ? typeParameters.putIfAbsent(name, () => new TypeParameter(name)) | 288 ? typeParameters.putIfAbsent(name, () => new TypeParameter(name)) |
283 : classes.putIfAbsent(name, () => makeClass(name)); | 289 : classes.putIfAbsent(name, () => makeClass(name)); |
284 } | 290 } |
285 | 291 |
286 Class makeClass(String name) { | 292 Class makeClass(String name) { |
287 var class_ = new Class(name: name); | 293 var class_ = new Class(name: name); |
288 dummyLibrary.addClass(class_); | 294 dummyLibrary.addClass(class_); |
(...skipping 25 matching lines...) Expand all Loading... |
314 void main(List<String> args) { | 320 void main(List<String> args) { |
315 if (args.length != 1) { | 321 if (args.length != 1) { |
316 print('Usage: type_parser TYPE'); | 322 print('Usage: type_parser TYPE'); |
317 } | 323 } |
318 var environment = new LazyTypeEnvironment(); | 324 var environment = new LazyTypeEnvironment(); |
319 var type = parseDartType(args[0], environment.lookup); | 325 var type = parseDartType(args[0], environment.lookup); |
320 var buffer = new StringBuffer(); | 326 var buffer = new StringBuffer(); |
321 new Printer(buffer).writeType(type); | 327 new Printer(buffer).writeType(type); |
322 print(buffer); | 328 print(buffer); |
323 } | 329 } |
OLD | NEW |