| 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.test.src.context.context_test; | 5 library analyzer.test.src.context.context_test; |
| 6 | 6 |
| 7 import 'dart:async'; | 7 import 'dart:async'; |
| 8 import 'dart:collection'; | 8 import 'dart:collection'; |
| 9 | 9 |
| 10 import 'package:analyzer/dart/ast/ast.dart'; | 10 import 'package:analyzer/dart/ast/ast.dart'; |
| 11 import 'package:analyzer/dart/element/element.dart'; | 11 import 'package:analyzer/dart/element/element.dart'; |
| 12 import 'package:analyzer/dart/element/type.dart'; | 12 import 'package:analyzer/dart/element/type.dart'; |
| 13 import 'package:analyzer/dart/element/visitor.dart'; | 13 import 'package:analyzer/dart/element/visitor.dart'; |
| 14 import 'package:analyzer/file_system/memory_file_system.dart'; | 14 import 'package:analyzer/file_system/memory_file_system.dart'; |
| 15 import 'package:analyzer/source/package_map_resolver.dart'; | 15 import 'package:analyzer/source/package_map_resolver.dart'; |
| 16 import 'package:analyzer/src/cancelable_future.dart'; | 16 import 'package:analyzer/src/cancelable_future.dart'; |
| 17 import 'package:analyzer/src/context/cache.dart'; | 17 import 'package:analyzer/src/context/cache.dart'; |
| 18 import 'package:analyzer/src/context/context.dart'; | 18 import 'package:analyzer/src/context/context.dart'; |
| 19 import 'package:analyzer/src/dart/element/element.dart'; |
| 19 import 'package:analyzer/src/dart/scanner/scanner.dart'; | 20 import 'package:analyzer/src/dart/scanner/scanner.dart'; |
| 20 import 'package:analyzer/src/generated/engine.dart'; | 21 import 'package:analyzer/src/generated/engine.dart'; |
| 21 import 'package:analyzer/src/generated/error.dart'; | 22 import 'package:analyzer/src/generated/error.dart'; |
| 22 import 'package:analyzer/src/generated/java_engine.dart'; | 23 import 'package:analyzer/src/generated/java_engine.dart'; |
| 23 import 'package:analyzer/src/generated/resolver.dart'; | 24 import 'package:analyzer/src/generated/resolver.dart'; |
| 24 import 'package:analyzer/src/generated/source.dart'; | 25 import 'package:analyzer/src/generated/source.dart'; |
| 25 import 'package:analyzer/src/generated/utilities_collection.dart'; | 26 import 'package:analyzer/src/generated/utilities_collection.dart'; |
| 26 import 'package:analyzer/src/task/dart.dart'; | 27 import 'package:analyzer/src/task/dart.dart'; |
| 27 import 'package:analyzer/src/task/html.dart'; | 28 import 'package:analyzer/src/task/html.dart'; |
| 28 import 'package:analyzer/task/dart.dart'; | 29 import 'package:analyzer/task/dart.dart'; |
| (...skipping 3354 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3383 expect(analysisCache.getValue(target, RESOLVED_UNIT1), same(unitA)); | 3384 expect(analysisCache.getValue(target, RESOLVED_UNIT1), same(unitA)); |
| 3384 expect(unitA.element, same(unitElementA)); | 3385 expect(unitA.element, same(unitElementA)); |
| 3385 expect(unitElementA.library, same(libraryElementA)); | 3386 expect(unitElementA.library, same(libraryElementA)); |
| 3386 } | 3387 } |
| 3387 // Analyze. | 3388 // Analyze. |
| 3388 _performPendingAnalysisTasks(); | 3389 _performPendingAnalysisTasks(); |
| 3389 expect(context.getErrors(a).errors, hasLength(0)); | 3390 expect(context.getErrors(a).errors, hasLength(0)); |
| 3390 expect(context.getErrors(b).errors, hasLength(0)); | 3391 expect(context.getErrors(b).errors, hasLength(0)); |
| 3391 } | 3392 } |
| 3392 | 3393 |
| 3394 void test_sequence_unitConstants() { |
| 3395 Source a = addSource( |
| 3396 '/a.dart', |
| 3397 r''' |
| 3398 const A = 1; |
| 3399 const B = 2; |
| 3400 const C = 3; |
| 3401 '''); |
| 3402 _performPendingAnalysisTasks(); |
| 3403 LibrarySpecificUnit unitA = new LibrarySpecificUnit(a, a); |
| 3404 expect(context.getResult(unitA, COMPILATION_UNIT_CONSTANTS), hasLength(3)); |
| 3405 // Update and |
| 3406 context.setContents( |
| 3407 a, |
| 3408 r''' |
| 3409 const A = 1; |
| 3410 const B = 2; |
| 3411 const D = 4; |
| 3412 main() { |
| 3413 const V = 42; |
| 3414 } |
| 3415 '''); |
| 3416 List<ConstantEvaluationTarget> constants = |
| 3417 context.getResult(unitA, COMPILATION_UNIT_CONSTANTS); |
| 3418 expect(constants, hasLength(4)); |
| 3419 // Perform analysis, compute constant values. |
| 3420 _performPendingAnalysisTasks(); |
| 3421 // Validate const variable values. |
| 3422 Map<String, ConstVariableElement> constVariables = |
| 3423 <String, ConstVariableElement>{}; |
| 3424 constants.forEach((c) { |
| 3425 if (c is ConstVariableElement) { |
| 3426 constVariables[c.name] = c; |
| 3427 } |
| 3428 }); |
| 3429 expect(constVariables['A'].evaluationResult.value.toIntValue(), 1); |
| 3430 expect(constVariables['B'].evaluationResult.value.toIntValue(), 2); |
| 3431 expect(constVariables['D'].evaluationResult.value.toIntValue(), 4); |
| 3432 expect(constVariables['V'].evaluationResult.value.toIntValue(), 42); |
| 3433 } |
| 3434 |
| 3393 void test_sequence_useAnyResolvedUnit() { | 3435 void test_sequence_useAnyResolvedUnit() { |
| 3394 Source a = addSource( | 3436 Source a = addSource( |
| 3395 '/a.dart', | 3437 '/a.dart', |
| 3396 r''' | 3438 r''' |
| 3397 class A {} | 3439 class A {} |
| 3398 class B {} | 3440 class B {} |
| 3399 '''); | 3441 '''); |
| 3400 Source b = addSource( | 3442 Source b = addSource( |
| 3401 '/b.dart', | 3443 '/b.dart', |
| 3402 r''' | 3444 r''' |
| (...skipping 572 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3975 * Initialize the visitor. | 4017 * Initialize the visitor. |
| 3976 */ | 4018 */ |
| 3977 _ElementGatherer(); | 4019 _ElementGatherer(); |
| 3978 | 4020 |
| 3979 @override | 4021 @override |
| 3980 void visitElement(Element element) { | 4022 void visitElement(Element element) { |
| 3981 elements[element] = element; | 4023 elements[element] = element; |
| 3982 super.visitElement(element); | 4024 super.visitElement(element); |
| 3983 } | 4025 } |
| 3984 } | 4026 } |
| OLD | NEW |