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 123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
134 scanToken(); | 134 scanToken(); |
135 String name = this.tokenText; | 135 String name = this.tokenText; |
136 if (name == '_') return const BottomType(); | 136 if (name == '_') return const BottomType(); |
137 if (name == 'void') return const VoidType(); | 137 if (name == 'void') return const VoidType(); |
138 if (name == 'dynamic') return const DynamicType(); | 138 if (name == 'dynamic') return const DynamicType(); |
139 var target = lookupType(name); | 139 var target = lookupType(name); |
140 if (target == null) { | 140 if (target == null) { |
141 return fail('Unresolved type $name'); | 141 return fail('Unresolved type $name'); |
142 } else if (target is Class) { | 142 } else if (target is Class) { |
143 return new InterfaceType(target, parseOptionalTypeArgumentList()); | 143 return new InterfaceType(target, parseOptionalTypeArgumentList()); |
| 144 } else if (target is Typedef) { |
| 145 return new TypedefType(target, parseOptionalTypeArgumentList()); |
144 } else if (target is TypeParameter) { | 146 } else if (target is TypeParameter) { |
145 if (peekToken() == Token.LeftAngle) { | 147 if (peekToken() == Token.LeftAngle) { |
146 return fail('Attempt to apply type arguments to a type variable'); | 148 return fail('Attempt to apply type arguments to a type variable'); |
147 } | 149 } |
148 return new TypeParameterType(target); | 150 return new TypeParameterType(target); |
149 } | 151 } |
150 return fail("Unexpected lookup result for $name: $target"); | 152 return fail("Unexpected lookup result for $name: $target"); |
151 | 153 |
152 case Token.LeftParen: | 154 case Token.LeftParen: |
153 List<DartType> parameters = <DartType>[]; | 155 List<DartType> parameters = <DartType>[]; |
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
320 void main(List<String> args) { | 322 void main(List<String> args) { |
321 if (args.length != 1) { | 323 if (args.length != 1) { |
322 print('Usage: type_parser TYPE'); | 324 print('Usage: type_parser TYPE'); |
323 } | 325 } |
324 var environment = new LazyTypeEnvironment(); | 326 var environment = new LazyTypeEnvironment(); |
325 var type = parseDartType(args[0], environment.lookup); | 327 var type = parseDartType(args[0], environment.lookup); |
326 var buffer = new StringBuffer(); | 328 var buffer = new StringBuffer(); |
327 new Printer(buffer).writeType(type); | 329 new Printer(buffer).writeType(type); |
328 print(buffer); | 330 print(buffer); |
329 } | 331 } |
OLD | NEW |