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 library dart2js.typechecker; | 5 library dart2js.typechecker; |
6 | 6 |
7 import 'common/names.dart' show | 7 import 'common/names.dart' show |
8 Identifiers; | 8 Identifiers; |
9 import 'common/tasks.dart' show | 9 import 'common/tasks.dart' show |
10 CompilerTask; | 10 CompilerTask; |
(...skipping 596 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
607 void pushCascadeType(DartType type) { | 607 void pushCascadeType(DartType type) { |
608 cascadeTypes = cascadeTypes.prepend(type); | 608 cascadeTypes = cascadeTypes.prepend(type); |
609 } | 609 } |
610 | 610 |
611 DartType popCascadeType() { | 611 DartType popCascadeType() { |
612 DartType type = cascadeTypes.head; | 612 DartType type = cascadeTypes.head; |
613 cascadeTypes = cascadeTypes.tail; | 613 cascadeTypes = cascadeTypes.tail; |
614 return type; | 614 return type; |
615 } | 615 } |
616 | 616 |
| 617 DartType visitAssert(Assert node) { |
| 618 analyze(node.condition); |
| 619 if (node.hasMessage) analyze(node.message); |
| 620 return const StatementType(); |
| 621 } |
| 622 |
617 DartType visitBlock(Block node) { | 623 DartType visitBlock(Block node) { |
618 return analyze(node.statements); | 624 return analyze(node.statements); |
619 } | 625 } |
620 | 626 |
621 DartType visitCascade(Cascade node) { | 627 DartType visitCascade(Cascade node) { |
622 analyze(node.expression); | 628 analyze(node.expression); |
623 return popCascadeType(); | 629 return popCascadeType(); |
624 } | 630 } |
625 | 631 |
626 DartType visitCascadeReceiver(CascadeReceiver node) { | 632 DartType visitCascadeReceiver(CascadeReceiver node) { |
(...skipping 531 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1158 // This should be the case but we double-check. | 1164 // This should be the case but we double-check. |
1159 // TODO(johnniwinther): Ensure that we don't suggest malbounded types. | 1165 // TODO(johnniwinther): Ensure that we don't suggest malbounded types. |
1160 return shownTypeGeneric; | 1166 return shownTypeGeneric; |
1161 } | 1167 } |
1162 } | 1168 } |
1163 return null; | 1169 return null; |
1164 | 1170 |
1165 } | 1171 } |
1166 | 1172 |
1167 DartType visitSend(Send node) { | 1173 DartType visitSend(Send node) { |
1168 if (elements.isAssert(node)) { | |
1169 return analyzeInvocation(node, const AssertAccess()); | |
1170 } | |
1171 | |
1172 Element element = elements[node]; | 1174 Element element = elements[node]; |
1173 | 1175 |
1174 if (element != null && element.isConstructor) { | 1176 if (element != null && element.isConstructor) { |
1175 DartType receiverType; | 1177 DartType receiverType; |
1176 if (node.receiver != null) { | 1178 if (node.receiver != null) { |
1177 receiverType = analyze(node.receiver); | 1179 receiverType = analyze(node.receiver); |
1178 } else if (node.selector.isSuper()) { | 1180 } else if (node.selector.isSuper()) { |
1179 // TODO(johnniwinther): Lookup super-member in class members. | 1181 // TODO(johnniwinther): Lookup super-member in class members. |
1180 receiverType = superType; | 1182 receiverType = superType; |
1181 } else { | 1183 } else { |
(...skipping 792 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1974 | 1976 |
1975 visitTypedef(Typedef node) { | 1977 visitTypedef(Typedef node) { |
1976 // Do not typecheck [Typedef] nodes. | 1978 // Do not typecheck [Typedef] nodes. |
1977 } | 1979 } |
1978 | 1980 |
1979 visitNode(Node node) { | 1981 visitNode(Node node) { |
1980 compiler.internalError(node, | 1982 compiler.internalError(node, |
1981 'Unexpected node ${node.getObjectDescription()} in the type checker.'); | 1983 'Unexpected node ${node.getObjectDescription()} in the type checker.'); |
1982 } | 1984 } |
1983 } | 1985 } |
OLD | NEW |