OLD | NEW |
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, 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 /** | 5 /** |
6 * A simple code analyzer for Dart. | 6 * A simple code analyzer for Dart. |
7 * | 7 * |
8 * Currently used to ensure all concrete generic types are visited. | 8 * Currently used to ensure all concrete generic types are visited. |
9 * Also performs all static type checks - so these don't need to be | 9 * Also performs all static type checks - so these don't need to be |
10 * done in later phases. | 10 * done in later phases. |
(...skipping 583 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
594 constructorName = names.removeLast().name; | 594 constructorName = names.removeLast().name; |
595 if (names.length == 0) names = null; | 595 if (names.length == 0) names = null; |
596 | 596 |
597 typeRef = new NameTypeReference( | 597 typeRef = new NameTypeReference( |
598 typeRef.isFinal, typeRef.name, names, typeRef.span); | 598 typeRef.isFinal, typeRef.name, names, typeRef.span); |
599 } | 599 } |
600 | 600 |
601 var type = resolveType(typeRef, true, true); | 601 var type = resolveType(typeRef, true, true); |
602 if (type.isTop) { | 602 if (type.isTop) { |
603 type = type.library.findTypeByName(constructorName); | 603 type = type.library.findTypeByName(constructorName); |
| 604 if (type == null) { |
| 605 world.error('cannot resolve type $constructorName', node.span); |
| 606 } |
604 constructorName = ''; | 607 constructorName = ''; |
605 } | 608 } |
606 | 609 |
607 if (type is ParameterType) { | 610 if (type is ParameterType) { |
608 world.error('cannot instantiate a type parameter', node.span); | 611 world.error('cannot instantiate a type parameter', node.span); |
609 return _frame._makeValue(world.varType, node); | 612 return _frame._makeValue(world.varType, node); |
610 } | 613 } |
611 | 614 |
612 var m = type.getConstructor(constructorName); | 615 var m = type.getConstructor(constructorName); |
613 if (m == null) { | 616 if (m == null) { |
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
783 for (var item in node.pieces) { | 786 for (var item in node.pieces) { |
784 var val = visitValue(item); | 787 var val = visitValue(item); |
785 var sval = val.invoke(_frame, 'toString', item, Arguments.EMPTY); | 788 var sval = val.invoke(_frame, 'toString', item, Arguments.EMPTY); |
786 ret = ret.binop(TokenKind.ADD, sval, _frame, item); | 789 ret = ret.binop(TokenKind.ADD, sval, _frame, item); |
787 } | 790 } |
788 return _frame._makeValue(world.stringType, node); //???ret; | 791 return _frame._makeValue(world.stringType, node); //???ret; |
789 */ | 792 */ |
790 } | 793 } |
791 } | 794 } |
792 | 795 |
OLD | NEW |