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 | 4 |
5 library analyzer.test.generated.resolver_test_case; | 5 library analyzer.test.generated.resolver_test_case; |
6 | 6 |
7 import 'package:analyzer/dart/ast/ast.dart'; | 7 import 'package:analyzer/dart/ast/ast.dart'; |
| 8 import 'package:analyzer/dart/ast/resolution_accessors.dart'; |
8 import 'package:analyzer/dart/ast/visitor.dart'; | 9 import 'package:analyzer/dart/ast/visitor.dart'; |
9 import 'package:analyzer/dart/element/element.dart'; | 10 import 'package:analyzer/dart/element/element.dart'; |
10 import 'package:analyzer/dart/element/type.dart'; | 11 import 'package:analyzer/dart/element/type.dart'; |
11 import 'package:analyzer/error/error.dart'; | 12 import 'package:analyzer/error/error.dart'; |
12 import 'package:analyzer/file_system/memory_file_system.dart'; | 13 import 'package:analyzer/file_system/memory_file_system.dart'; |
13 import 'package:analyzer/src/dart/element/element.dart'; | 14 import 'package:analyzer/src/dart/element/element.dart'; |
14 import 'package:analyzer/src/dart/element/type.dart'; | 15 import 'package:analyzer/src/dart/element/type.dart'; |
15 import 'package:analyzer/src/error/codes.dart'; | 16 import 'package:analyzer/src/error/codes.dart'; |
16 import 'package:analyzer/src/generated/engine.dart'; | 17 import 'package:analyzer/src/generated/engine.dart'; |
17 import 'package:analyzer/src/generated/java_engine.dart'; | 18 import 'package:analyzer/src/generated/java_engine.dart'; |
(...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
225 return null; | 226 return null; |
226 } | 227 } |
227 return node.propertyName.accept(this); | 228 return node.propertyName.accept(this); |
228 } | 229 } |
229 | 230 |
230 @override | 231 @override |
231 Object visitSimpleIdentifier(SimpleIdentifier node) { | 232 Object visitSimpleIdentifier(SimpleIdentifier node) { |
232 if (node.name == "void") { | 233 if (node.name == "void") { |
233 return null; | 234 return null; |
234 } | 235 } |
235 if (node.staticType != null && | 236 if (staticTypeForExpression(node) != null && |
236 node.staticType.isDynamic && | 237 staticTypeForExpression(node).isDynamic && |
237 node.staticElement == null) { | 238 node.staticElement == null) { |
238 return null; | 239 return null; |
239 } | 240 } |
240 AstNode parent = node.parent; | 241 AstNode parent = node.parent; |
241 if (parent is MethodInvocation) { | 242 if (parent is MethodInvocation) { |
242 MethodInvocation invocation = parent; | 243 MethodInvocation invocation = parent; |
243 if (identical(invocation.methodName, node)) { | 244 if (identical(invocation.methodName, node)) { |
244 Expression target = invocation.realTarget; | 245 Expression target = invocation.realTarget; |
245 DartType targetType = target == null ? null : target.staticType; | 246 DartType targetType = target == null ? null : target.staticType; |
246 if (targetType == null || targetType.isDynamic) { | 247 if (targetType == null || targetType.isDynamic) { |
(...skipping 19 matching lines...) Expand all Loading... |
266 } | 267 } |
267 | 268 |
268 String _getFileName(AstNode node) { | 269 String _getFileName(AstNode node) { |
269 // TODO (jwren) there are two copies of this method, one here and one in | 270 // TODO (jwren) there are two copies of this method, one here and one in |
270 // StaticTypeVerifier, they should be resolved into a single method | 271 // StaticTypeVerifier, they should be resolved into a single method |
271 if (node != null) { | 272 if (node != null) { |
272 AstNode root = node.root; | 273 AstNode root = node.root; |
273 if (root is CompilationUnit) { | 274 if (root is CompilationUnit) { |
274 CompilationUnit rootCU = root; | 275 CompilationUnit rootCU = root; |
275 if (rootCU.element != null) { | 276 if (rootCU.element != null) { |
276 return rootCU.element.source.fullName; | 277 return elementForCompilationUnit(rootCU).source.fullName; |
277 } else { | 278 } else { |
278 return "<unknown file- CompilationUnit.getElement() returned null>"; | 279 return "<unknown file- CompilationUnit.getElement() returned null>"; |
279 } | 280 } |
280 } else { | 281 } else { |
281 return "<unknown file- CompilationUnit.getRoot() is not a CompilationUni
t>"; | 282 return "<unknown file- CompilationUnit.getRoot() is not a CompilationUni
t>"; |
282 } | 283 } |
283 } | 284 } |
284 return "<unknown file- ASTNode is null>"; | 285 return "<unknown file- ASTNode is null>"; |
285 } | 286 } |
286 | 287 |
(...skipping 376 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
663 LibraryElement library = analysisContext.computeLibraryElement(source); | 664 LibraryElement library = analysisContext.computeLibraryElement(source); |
664 return analysisContext.resolveCompilationUnit(source, library); | 665 return analysisContext.resolveCompilationUnit(source, library); |
665 } | 666 } |
666 | 667 |
667 Source resolveSources(List<String> sourceTexts) { | 668 Source resolveSources(List<String> sourceTexts) { |
668 for (int i = 0; i < sourceTexts.length; i++) { | 669 for (int i = 0; i < sourceTexts.length; i++) { |
669 CompilationUnit unit = | 670 CompilationUnit unit = |
670 resolveSource2("/lib${i + 1}.dart", sourceTexts[i]); | 671 resolveSource2("/lib${i + 1}.dart", sourceTexts[i]); |
671 // reference the source if this is the last source | 672 // reference the source if this is the last source |
672 if (i + 1 == sourceTexts.length) { | 673 if (i + 1 == sourceTexts.length) { |
673 return unit.element.source; | 674 return elementForCompilationUnit(unit).source; |
674 } | 675 } |
675 } | 676 } |
676 return null; | 677 return null; |
677 } | 678 } |
678 | 679 |
679 void resolveWithAndWithoutExperimental( | 680 void resolveWithAndWithoutExperimental( |
680 List<String> strSources, | 681 List<String> strSources, |
681 List<ErrorCode> codesWithoutExperimental, | 682 List<ErrorCode> codesWithoutExperimental, |
682 List<ErrorCode> codesWithExperimental) { | 683 List<ErrorCode> codesWithExperimental) { |
683 // Setup analysis context as non-experimental | 684 // Setup analysis context as non-experimental |
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
835 * text. Otherwise, [expected] is used directly a [Matcher] to match the type. | 836 * text. Otherwise, [expected] is used directly a [Matcher] to match the type. |
836 */ | 837 */ |
837 _expectType(DartType type, expected) { | 838 _expectType(DartType type, expected) { |
838 if (expected is String) { | 839 if (expected is String) { |
839 expect(type.toString(), expected); | 840 expect(type.toString(), expected); |
840 } else { | 841 } else { |
841 expect(type, expected); | 842 expect(type, expected); |
842 } | 843 } |
843 } | 844 } |
844 } | 845 } |
OLD | NEW |