| OLD | NEW |
| 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2015, 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 dev_compiler.src.checker.checker; | 5 library dev_compiler.src.checker.checker; |
| 6 | 6 |
| 7 import 'package:analyzer/analyzer.dart'; | 7 import 'package:analyzer/analyzer.dart'; |
| 8 import 'package:analyzer/src/generated/ast.dart'; | 8 import 'package:analyzer/src/generated/ast.dart'; |
| 9 import 'package:analyzer/src/generated/element.dart'; | 9 import 'package:analyzer/src/generated/element.dart'; |
| 10 import 'package:analyzer/src/generated/scanner.dart' show Token, TokenType; | 10 import 'package:analyzer/src/generated/scanner.dart' show Token, TokenType; |
| (...skipping 652 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 663 node.visitChildren(this); | 663 node.visitChildren(this); |
| 664 } | 664 } |
| 665 | 665 |
| 666 @override | 666 @override |
| 667 void visitYieldStatement(YieldStatement node) { | 667 void visitYieldStatement(YieldStatement node) { |
| 668 _checkReturnOrYield(node.expression, node, node.star != null); | 668 _checkReturnOrYield(node.expression, node, node.star != null); |
| 669 node.visitChildren(this); | 669 node.visitChildren(this); |
| 670 } | 670 } |
| 671 | 671 |
| 672 @override | 672 @override |
| 673 void visitAwaitExpression(AwaitExpression node) { | |
| 674 checkAssignment(node.expression, rules.provider.futureDynamicType); | |
| 675 node.visitChildren(this); | |
| 676 } | |
| 677 | |
| 678 @override | |
| 679 void visitPropertyAccess(PropertyAccess node) { | 673 void visitPropertyAccess(PropertyAccess node) { |
| 680 var target = node.realTarget; | 674 var target = node.realTarget; |
| 681 if (rules.isDynamicTarget(target)) { | 675 if (rules.isDynamicTarget(target)) { |
| 682 _recordDynamicInvoke(node, target); | 676 _recordDynamicInvoke(node, target); |
| 683 } | 677 } |
| 684 node.visitChildren(this); | 678 node.visitChildren(this); |
| 685 } | 679 } |
| 686 | 680 |
| 687 @override | 681 @override |
| 688 void visitPrefixedIdentifier(PrefixedIdentifier node) { | 682 void visitPrefixedIdentifier(PrefixedIdentifier node) { |
| (...skipping 314 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1003 if (info is CoercionInfo) { | 997 if (info is CoercionInfo) { |
| 1004 // TODO(jmesserly): if we're run again on the same AST, we'll produce the | 998 // TODO(jmesserly): if we're run again on the same AST, we'll produce the |
| 1005 // same annotations. This should be harmless. This might go away once | 999 // same annotations. This should be harmless. This might go away once |
| 1006 // CodeChecker is integrated better with analyzer, as it will know that | 1000 // CodeChecker is integrated better with analyzer, as it will know that |
| 1007 // checking has already been performed. | 1001 // checking has already been performed. |
| 1008 // assert(CoercionInfo.get(info.node) == null); | 1002 // assert(CoercionInfo.get(info.node) == null); |
| 1009 CoercionInfo.set(info.node, info); | 1003 CoercionInfo.set(info.node, info); |
| 1010 } | 1004 } |
| 1011 } | 1005 } |
| 1012 } | 1006 } |
| OLD | NEW |