OLD | NEW |
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, 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 analyzer.src.dart.ast.utilities; | 5 library analyzer.src.dart.ast.utilities; |
6 | 6 |
7 import 'dart:collection'; | 7 import 'dart:collection'; |
8 | 8 |
9 import 'package:analyzer/dart/ast/ast.dart'; | 9 import 'package:analyzer/dart/ast/ast.dart'; |
10 import 'package:analyzer/dart/ast/standard_ast_factory.dart'; | 10 import 'package:analyzer/dart/ast/standard_ast_factory.dart'; |
(...skipping 3959 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3970 Object visitNode(AstNode node) { | 3970 Object visitNode(AstNode node) { |
3971 // Don't visit a new tree if the result has been already found. | 3971 // Don't visit a new tree if the result has been already found. |
3972 if (_foundNode != null) { | 3972 if (_foundNode != null) { |
3973 return null; | 3973 return null; |
3974 } | 3974 } |
3975 // Check whether the current node covers the selection. | 3975 // Check whether the current node covers the selection. |
3976 Token beginToken = node.beginToken; | 3976 Token beginToken = node.beginToken; |
3977 Token endToken = node.endToken; | 3977 Token endToken = node.endToken; |
3978 // Don't include synthetic tokens. | 3978 // Don't include synthetic tokens. |
3979 while (endToken != beginToken) { | 3979 while (endToken != beginToken) { |
3980 if (endToken.type == TokenType.EOF || !endToken.isSynthetic) { | 3980 // Fasta scanner reports unterminated string literal errors |
| 3981 // and generates a synthetic string token with non-zero length. |
| 3982 // Because of this, check for length > 0 rather than !isSynthetic. |
| 3983 if (endToken.type == TokenType.EOF || endToken.length > 0) { |
3981 break; | 3984 break; |
3982 } | 3985 } |
3983 endToken = endToken.previous; | 3986 endToken = endToken.previous; |
3984 } | 3987 } |
3985 int end = endToken.end; | 3988 int end = endToken.end; |
3986 int start = node.offset; | 3989 int start = node.offset; |
3987 if (end < _startOffset) { | 3990 if (end < _startOffset) { |
3988 return null; | 3991 return null; |
3989 } | 3992 } |
3990 if (start > _endOffset) { | 3993 if (start > _endOffset) { |
(...skipping 5388 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
9379 if (node.star != null) { | 9382 if (node.star != null) { |
9380 sink.write("yield* "); | 9383 sink.write("yield* "); |
9381 } else { | 9384 } else { |
9382 sink.write("yield "); | 9385 sink.write("yield "); |
9383 } | 9386 } |
9384 safelyVisitNode(node.expression); | 9387 safelyVisitNode(node.expression); |
9385 sink.write(";"); | 9388 sink.write(";"); |
9386 return null; | 9389 return null; |
9387 } | 9390 } |
9388 } | 9391 } |
OLD | NEW |