Chromium Code Reviews| 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 test.src.task.dart_test; | 5 library test.src.task.dart_test; |
| 6 | 6 |
| 7 import 'package:analyzer/src/context/cache.dart'; | 7 import 'package:analyzer/src/context/cache.dart'; |
| 8 import 'package:analyzer/src/generated/ast.dart'; | 8 import 'package:analyzer/src/generated/ast.dart'; |
| 9 import 'package:analyzer/src/generated/constant.dart'; | 9 import 'package:analyzer/src/generated/constant.dart'; |
| 10 import 'package:analyzer/src/generated/element.dart'; | 10 import 'package:analyzer/src/generated/element.dart'; |
| 11 import 'package:analyzer/src/generated/engine.dart' | 11 import 'package:analyzer/src/generated/engine.dart' |
| 12 show AnalysisOptionsImpl, CacheState; | 12 show AnalysisOptionsImpl, CacheState; |
| 13 import 'package:analyzer/src/generated/error.dart'; | 13 import 'package:analyzer/src/generated/error.dart'; |
| 14 import 'package:analyzer/src/generated/resolver.dart'; | 14 import 'package:analyzer/src/generated/resolver.dart'; |
| 15 import 'package:analyzer/src/generated/scanner.dart'; | 15 import 'package:analyzer/src/generated/scanner.dart'; |
| 16 import 'package:analyzer/src/generated/sdk.dart'; | 16 import 'package:analyzer/src/generated/sdk.dart'; |
| 17 import 'package:analyzer/src/generated/source.dart'; | 17 import 'package:analyzer/src/generated/source.dart'; |
| 18 import 'package:analyzer/src/task/dart.dart'; | 18 import 'package:analyzer/src/task/dart.dart'; |
| 19 import 'package:analyzer/src/task/html.dart'; | 19 import 'package:analyzer/src/task/html.dart'; |
| 20 import 'package:analyzer/task/dart.dart'; | 20 import 'package:analyzer/task/dart.dart'; |
| 21 import 'package:analyzer/task/general.dart'; | 21 import 'package:analyzer/task/general.dart'; |
| 22 import 'package:analyzer/task/model.dart'; | 22 import 'package:analyzer/task/model.dart'; |
| 23 import 'package:unittest/unittest.dart'; | 23 import 'package:unittest/unittest.dart'; |
| 24 | 24 |
| 25 import '../../generated/resolver_test.dart'; | |
| 25 import '../../generated/test_support.dart'; | 26 import '../../generated/test_support.dart'; |
| 26 import '../../reflective_tests.dart'; | 27 import '../../reflective_tests.dart'; |
| 27 import '../../utils.dart'; | 28 import '../../utils.dart'; |
| 28 import '../context/abstract_context.dart'; | 29 import '../context/abstract_context.dart'; |
| 29 | 30 |
| 30 main() { | 31 main() { |
| 31 initializeTestEnvironment(); | 32 initializeTestEnvironment(); |
| 32 runReflectiveTests(BuildCompilationUnitElementTaskTest); | 33 runReflectiveTests(BuildCompilationUnitElementTaskTest); |
| 33 runReflectiveTests(BuildDirectiveElementsTaskTest); | 34 runReflectiveTests(BuildDirectiveElementsTaskTest); |
| 34 runReflectiveTests(BuildEnumMemberElementsTaskTest); | 35 runReflectiveTests(BuildEnumMemberElementsTaskTest); |
| (...skipping 12 matching lines...) Expand all Loading... | |
| 47 runReflectiveTests(GatherUsedImportedElementsTaskTest); | 48 runReflectiveTests(GatherUsedImportedElementsTaskTest); |
| 48 runReflectiveTests(GatherUsedLocalElementsTaskTest); | 49 runReflectiveTests(GatherUsedLocalElementsTaskTest); |
| 49 runReflectiveTests(GenerateHintsTaskTest); | 50 runReflectiveTests(GenerateHintsTaskTest); |
| 50 runReflectiveTests(InferInstanceMembersInUnitTaskTest); | 51 runReflectiveTests(InferInstanceMembersInUnitTaskTest); |
| 51 runReflectiveTests(InferStaticVariableTypesInUnitTaskTest); | 52 runReflectiveTests(InferStaticVariableTypesInUnitTaskTest); |
| 52 runReflectiveTests(InferStaticVariableTypeTaskTest); | 53 runReflectiveTests(InferStaticVariableTypeTaskTest); |
| 53 runReflectiveTests(LibraryErrorsReadyTaskTest); | 54 runReflectiveTests(LibraryErrorsReadyTaskTest); |
| 54 runReflectiveTests(LibraryUnitErrorsTaskTest); | 55 runReflectiveTests(LibraryUnitErrorsTaskTest); |
| 55 runReflectiveTests(ParseDartTaskTest); | 56 runReflectiveTests(ParseDartTaskTest); |
| 56 runReflectiveTests(PartiallyResolveUnitReferencesTaskTest); | 57 runReflectiveTests(PartiallyResolveUnitReferencesTaskTest); |
| 58 runReflectiveTests(ResolveFunctionBodiesInUnitTaskTest); | |
| 57 runReflectiveTests(ResolveLibraryTypeNamesTaskTest); | 59 runReflectiveTests(ResolveLibraryTypeNamesTaskTest); |
| 58 runReflectiveTests(ResolveUnitReferencesTaskTest); | 60 // runReflectiveTests(ResolveUnitReferencesTaskTest); |
|
Paul Berry
2015/09/02 17:10:08
I'd prefer to delete this as well (and delete the
| |
| 59 runReflectiveTests(ResolveUnitTypeNamesTaskTest); | 61 runReflectiveTests(ResolveUnitTypeNamesTaskTest); |
| 60 runReflectiveTests(ResolveVariableReferencesTaskTest); | 62 runReflectiveTests(ResolveVariableReferencesTaskTest); |
| 61 runReflectiveTests(ScanDartTaskTest); | 63 runReflectiveTests(ScanDartTaskTest); |
| 62 runReflectiveTests(VerifyUnitTaskTest); | 64 runReflectiveTests(VerifyUnitTaskTest); |
| 63 } | 65 } |
| 64 | 66 |
| 65 isInstanceOf isBuildCompilationUnitElementTask = | 67 isInstanceOf isBuildCompilationUnitElementTask = |
| 66 new isInstanceOf<BuildCompilationUnitElementTask>(); | 68 new isInstanceOf<BuildCompilationUnitElementTask>(); |
| 67 isInstanceOf isBuildDirectiveElementsTask = | 69 isInstanceOf isBuildDirectiveElementsTask = |
| 68 new isInstanceOf<BuildDirectiveElementsTask>(); | 70 new isInstanceOf<BuildDirectiveElementsTask>(); |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 102 new isInstanceOf<InferStaticVariableTypesInUnitTask>(); | 104 new isInstanceOf<InferStaticVariableTypesInUnitTask>(); |
| 103 isInstanceOf isInferStaticVariableTypeTask = | 105 isInstanceOf isInferStaticVariableTypeTask = |
| 104 new isInstanceOf<InferStaticVariableTypeTask>(); | 106 new isInstanceOf<InferStaticVariableTypeTask>(); |
| 105 isInstanceOf isLibraryErrorsReadyTask = | 107 isInstanceOf isLibraryErrorsReadyTask = |
| 106 new isInstanceOf<LibraryErrorsReadyTask>(); | 108 new isInstanceOf<LibraryErrorsReadyTask>(); |
| 107 isInstanceOf isLibraryUnitErrorsTask = | 109 isInstanceOf isLibraryUnitErrorsTask = |
| 108 new isInstanceOf<LibraryUnitErrorsTask>(); | 110 new isInstanceOf<LibraryUnitErrorsTask>(); |
| 109 isInstanceOf isParseDartTask = new isInstanceOf<ParseDartTask>(); | 111 isInstanceOf isParseDartTask = new isInstanceOf<ParseDartTask>(); |
| 110 isInstanceOf isPartiallyResolveUnitReferencesTask = | 112 isInstanceOf isPartiallyResolveUnitReferencesTask = |
| 111 new isInstanceOf<PartiallyResolveUnitReferencesTask>(); | 113 new isInstanceOf<PartiallyResolveUnitReferencesTask>(); |
| 114 isInstanceOf isResolveFunctionBodiesInUnitTask = | |
| 115 new isInstanceOf<ResolveFunctionBodiesInUnitTask>(); | |
| 112 isInstanceOf isResolveLibraryTypeNamesTask = | 116 isInstanceOf isResolveLibraryTypeNamesTask = |
| 113 new isInstanceOf<ResolveLibraryTypeNamesTask>(); | 117 new isInstanceOf<ResolveLibraryTypeNamesTask>(); |
| 114 isInstanceOf isResolveUnitReferencesTask = | 118 isInstanceOf isResolveUnitReferencesTask = |
| 115 new isInstanceOf<ResolveUnitReferencesTask>(); | 119 new isInstanceOf<ResolveUnitReferencesTask>(); |
| 116 isInstanceOf isResolveUnitTypeNamesTask = | 120 isInstanceOf isResolveUnitTypeNamesTask = |
| 117 new isInstanceOf<ResolveUnitTypeNamesTask>(); | 121 new isInstanceOf<ResolveUnitTypeNamesTask>(); |
| 118 isInstanceOf isResolveVariableReferencesTask = | 122 isInstanceOf isResolveVariableReferencesTask = |
| 119 new isInstanceOf<ResolveVariableReferencesTask>(); | 123 new isInstanceOf<ResolveVariableReferencesTask>(); |
| 120 isInstanceOf isScanDartTask = new isInstanceOf<ScanDartTask>(); | 124 isInstanceOf isScanDartTask = new isInstanceOf<ScanDartTask>(); |
| 121 isInstanceOf isVerifyUnitTask = new isInstanceOf<VerifyUnitTask>(); | 125 isInstanceOf isVerifyUnitTask = new isInstanceOf<VerifyUnitTask>(); |
| (...skipping 2075 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2197 VariableElement topLevel = | 2201 VariableElement topLevel = |
| 2198 getTopLevelVariable(unit, 'topLevel').name.staticElement; | 2202 getTopLevelVariable(unit, 'topLevel').name.staticElement; |
| 2199 VariableElement field = | 2203 VariableElement field = |
| 2200 getFieldInClass(unit, 'C', 'field').name.staticElement; | 2204 getFieldInClass(unit, 'C', 'field').name.staticElement; |
| 2201 | 2205 |
| 2202 computeResult(field, INFERRED_STATIC_VARIABLE, | 2206 computeResult(field, INFERRED_STATIC_VARIABLE, |
| 2203 matcher: isInferStaticVariableTypeTask); | 2207 matcher: isInferStaticVariableTypeTask); |
| 2204 InterfaceType stringType = context.typeProvider.stringType; | 2208 InterfaceType stringType = context.typeProvider.stringType; |
| 2205 expect(topLevel.type, stringType); | 2209 expect(topLevel.type, stringType); |
| 2206 expect(field.type, stringType); | 2210 expect(field.type, stringType); |
| 2211 expect(outputs[INFER_STATIC_VARIABLE_ERRORS], hasLength(0)); | |
| 2207 } | 2212 } |
| 2208 | 2213 |
| 2209 void test_perform_cycle() { | 2214 void test_perform_cycle() { |
| 2210 AnalysisTarget source = newSource( | 2215 AnalysisTarget source = newSource( |
| 2211 '/test.dart', | 2216 '/test.dart', |
| 2212 ''' | 2217 ''' |
| 2213 var piFirst = true; | 2218 var piFirst = true; |
| 2214 var pi = piFirst ? 3.14 : tau / 2; | 2219 var pi = piFirst ? 3.14 : tau / 2; |
| 2215 var tau = piFirst ? pi * 2 : 6.28; | 2220 var tau = piFirst ? pi * 2 : 6.28; |
| 2216 '''); | 2221 '''); |
| 2217 computeResult(new LibrarySpecificUnit(source, source), RESOLVED_UNIT5); | 2222 computeResult(new LibrarySpecificUnit(source, source), RESOLVED_UNIT5); |
| 2218 CompilationUnit unit = outputs[RESOLVED_UNIT5]; | 2223 CompilationUnit unit = outputs[RESOLVED_UNIT5]; |
| 2219 VariableElement piFirst = | 2224 VariableElement piFirst = |
| 2220 getTopLevelVariable(unit, 'piFirst').name.staticElement; | 2225 getTopLevelVariable(unit, 'piFirst').name.staticElement; |
| 2221 VariableElement pi = getTopLevelVariable(unit, 'pi').name.staticElement; | 2226 VariableElement pi = getTopLevelVariable(unit, 'pi').name.staticElement; |
| 2222 VariableElement tau = getTopLevelVariable(unit, 'tau').name.staticElement; | 2227 VariableElement tau = getTopLevelVariable(unit, 'tau').name.staticElement; |
| 2223 | 2228 |
| 2224 computeResult(piFirst, INFERRED_STATIC_VARIABLE, | 2229 computeResult(piFirst, INFERRED_STATIC_VARIABLE, |
| 2225 matcher: isInferStaticVariableTypeTask); | 2230 matcher: isInferStaticVariableTypeTask); |
| 2226 expect(piFirst.type, context.typeProvider.boolType); | 2231 expect(piFirst.type, context.typeProvider.boolType); |
| 2227 expect(pi.type.isDynamic, isTrue); | 2232 expect(pi.type.isDynamic, isTrue); |
| 2228 expect(tau.type.isDynamic, isTrue); | 2233 expect(tau.type.isDynamic, isTrue); |
| 2234 expect(outputs[INFER_STATIC_VARIABLE_ERRORS], hasLength(0)); | |
| 2235 } | |
| 2236 | |
| 2237 void test_perform_error() { | |
| 2238 AnalysisTarget source = newSource( | |
| 2239 '/test.dart', | |
| 2240 ''' | |
| 2241 var a = '' / null; | |
| 2242 '''); | |
| 2243 computeResult(new LibrarySpecificUnit(source, source), RESOLVED_UNIT5); | |
| 2244 CompilationUnit unit = outputs[RESOLVED_UNIT5]; | |
| 2245 VariableElement a = getTopLevelVariable(unit, 'a').name.staticElement; | |
| 2246 | |
| 2247 computeResult(a, INFERRED_STATIC_VARIABLE, | |
| 2248 matcher: isInferStaticVariableTypeTask); | |
| 2249 expect(a.type.isDynamic, isTrue); | |
| 2250 expect(outputs[INFER_STATIC_VARIABLE_ERRORS], hasLength(1)); | |
| 2229 } | 2251 } |
| 2230 | 2252 |
| 2231 void test_perform_null() { | 2253 void test_perform_null() { |
| 2232 AnalysisTarget source = newSource( | 2254 AnalysisTarget source = newSource( |
| 2233 '/test.dart', | 2255 '/test.dart', |
| 2234 ''' | 2256 ''' |
| 2235 var a = null; | 2257 var a = null; |
| 2236 '''); | 2258 '''); |
| 2237 computeResult(new LibrarySpecificUnit(source, source), RESOLVED_UNIT5); | 2259 computeResult(new LibrarySpecificUnit(source, source), RESOLVED_UNIT5); |
| 2238 CompilationUnit unit = outputs[RESOLVED_UNIT5]; | 2260 CompilationUnit unit = outputs[RESOLVED_UNIT5]; |
| 2239 VariableElement a = getTopLevelVariable(unit, 'a').name.staticElement; | 2261 VariableElement a = getTopLevelVariable(unit, 'a').name.staticElement; |
| 2240 | 2262 |
| 2241 computeResult(a, INFERRED_STATIC_VARIABLE, | 2263 computeResult(a, INFERRED_STATIC_VARIABLE, |
| 2242 matcher: isInferStaticVariableTypeTask); | 2264 matcher: isInferStaticVariableTypeTask); |
| 2243 expect(a.type.isDynamic, isTrue); | 2265 expect(a.type.isDynamic, isTrue); |
| 2266 expect(outputs[INFER_STATIC_VARIABLE_ERRORS], hasLength(0)); | |
| 2244 } | 2267 } |
| 2245 } | 2268 } |
| 2246 | 2269 |
| 2247 @reflectiveTest | 2270 @reflectiveTest |
| 2248 class LibraryErrorsReadyTaskTest extends _AbstractDartTaskTest { | 2271 class LibraryErrorsReadyTaskTest extends _AbstractDartTaskTest { |
| 2249 test_perform() { | 2272 test_perform() { |
| 2250 Source library = newSource( | 2273 Source library = newSource( |
| 2251 '/lib.dart', | 2274 '/lib.dart', |
| 2252 r''' | 2275 r''' |
| 2253 library lib; | 2276 library lib; |
| (...skipping 19 matching lines...) Expand all Loading... | |
| 2273 bool ready = outputs[LIBRARY_ERRORS_READY]; | 2296 bool ready = outputs[LIBRARY_ERRORS_READY]; |
| 2274 expect(ready, isTrue); | 2297 expect(ready, isTrue); |
| 2275 expect(context.getErrors(library).errors, hasLength(1)); | 2298 expect(context.getErrors(library).errors, hasLength(1)); |
| 2276 expect(context.getErrors(part1).errors, hasLength(1)); | 2299 expect(context.getErrors(part1).errors, hasLength(1)); |
| 2277 expect(context.getErrors(part2).errors, hasLength(1)); | 2300 expect(context.getErrors(part2).errors, hasLength(1)); |
| 2278 } | 2301 } |
| 2279 } | 2302 } |
| 2280 | 2303 |
| 2281 @reflectiveTest | 2304 @reflectiveTest |
| 2282 class LibraryUnitErrorsTaskTest extends _AbstractDartTaskTest { | 2305 class LibraryUnitErrorsTaskTest extends _AbstractDartTaskTest { |
| 2283 test_buildInputs() { | |
| 2284 Map<String, TaskInput> inputs = LibraryUnitErrorsTask | |
| 2285 .buildInputs(new LibrarySpecificUnit(emptySource, emptySource)); | |
| 2286 expect(inputs, isNotNull); | |
| 2287 expect( | |
| 2288 inputs.keys, | |
| 2289 unorderedEquals([ | |
| 2290 LibraryUnitErrorsTask.HINTS_INPUT, | |
| 2291 LibraryUnitErrorsTask.RESOLVE_REFERENCES_ERRORS_INPUT, | |
| 2292 LibraryUnitErrorsTask.RESOLVE_TYPE_NAMES_ERRORS_INPUT, | |
| 2293 LibraryUnitErrorsTask.VARIABLE_REFERENCE_ERRORS_INPUT, | |
| 2294 LibraryUnitErrorsTask.VERIFY_ERRORS_INPUT | |
| 2295 ])); | |
| 2296 } | |
| 2297 | |
| 2298 test_constructor() { | 2306 test_constructor() { |
| 2299 LibraryUnitErrorsTask task = | 2307 LibraryUnitErrorsTask task = |
| 2300 new LibraryUnitErrorsTask(context, emptySource); | 2308 new LibraryUnitErrorsTask(context, emptySource); |
| 2301 expect(task, isNotNull); | 2309 expect(task, isNotNull); |
| 2302 expect(task.context, context); | 2310 expect(task.context, context); |
| 2303 expect(task.target, emptySource); | 2311 expect(task.target, emptySource); |
| 2304 } | 2312 } |
| 2305 | 2313 |
| 2306 test_createTask() { | 2314 test_createTask() { |
| 2307 LibraryUnitErrorsTask task = | 2315 LibraryUnitErrorsTask task = |
| (...skipping 270 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2578 ExpressionStatement statement = statements[0]; | 2586 ExpressionStatement statement = statements[0]; |
| 2579 MethodInvocation invocation = statement.expression; | 2587 MethodInvocation invocation = statement.expression; |
| 2580 MethodElement methodElement = invocation.methodName.staticElement; | 2588 MethodElement methodElement = invocation.methodName.staticElement; |
| 2581 expect(methodElement, isNotNull); | 2589 expect(methodElement, isNotNull); |
| 2582 expect(methodElement.type, isNotNull); | 2590 expect(methodElement.type, isNotNull); |
| 2583 expect(methodElement.returnType.toString(), 'int'); | 2591 expect(methodElement.returnType.toString(), 'int'); |
| 2584 } | 2592 } |
| 2585 } | 2593 } |
| 2586 | 2594 |
| 2587 @reflectiveTest | 2595 @reflectiveTest |
| 2596 class ResolveFunctionBodiesInUnitTaskTest extends _AbstractDartTaskTest { | |
| 2597 void test_perform() { | |
| 2598 AnalysisTarget source = newSource( | |
| 2599 '/test.dart', | |
| 2600 ''' | |
| 2601 void f() { | |
| 2602 var c = new C(); | |
| 2603 c.m(); | |
| 2604 } | |
| 2605 class C { | |
| 2606 void m() { | |
| 2607 f(); | |
| 2608 } | |
| 2609 } | |
| 2610 '''); | |
| 2611 computeResult(new LibrarySpecificUnit(source, source), RESOLVED_UNIT8, | |
| 2612 matcher: isResolveFunctionBodiesInUnitTask); | |
| 2613 CompilationUnit unit = outputs[RESOLVED_UNIT8]; | |
| 2614 | |
| 2615 FunctionDeclaration f = unit.declarations[0]; | |
| 2616 _assertResolved(f.functionExpression.body); | |
| 2617 | |
| 2618 MethodDeclaration m = (unit.declarations[1] as ClassDeclaration).members[0]; | |
| 2619 _assertResolved(m.body); | |
| 2620 | |
| 2621 expect(outputs[RESOLVE_FUNCTION_BODIES_ERRORS], hasLength(0)); | |
| 2622 } | |
| 2623 | |
| 2624 void _assertResolved(FunctionBody body) { | |
| 2625 ResolutionVerifier verifier = new ResolutionVerifier(); | |
| 2626 body.accept(verifier); | |
| 2627 verifier.assertResolved(); | |
| 2628 } | |
| 2629 } | |
| 2630 | |
| 2631 @reflectiveTest | |
| 2588 class ResolveLibraryTypeNamesTaskTest extends _AbstractDartTaskTest { | 2632 class ResolveLibraryTypeNamesTaskTest extends _AbstractDartTaskTest { |
| 2589 test_perform() { | 2633 test_perform() { |
| 2590 Source sourceLib = newSource( | 2634 Source sourceLib = newSource( |
| 2591 '/my_lib.dart', | 2635 '/my_lib.dart', |
| 2592 ''' | 2636 ''' |
| 2593 library my_lib; | 2637 library my_lib; |
| 2594 part 'my_part.dart'; | 2638 part 'my_part.dart'; |
| 2595 class A {} | 2639 class A {} |
| 2596 class B extends A {} | 2640 class B extends A {} |
| 2597 '''); | 2641 '''); |
| (...skipping 569 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 3167 /** | 3211 /** |
| 3168 * Fill [errorListener] with [result] errors in the current [task]. | 3212 * Fill [errorListener] with [result] errors in the current [task]. |
| 3169 */ | 3213 */ |
| 3170 void _fillErrorListener(ResultDescriptor<List<AnalysisError>> result) { | 3214 void _fillErrorListener(ResultDescriptor<List<AnalysisError>> result) { |
| 3171 List<AnalysisError> errors = task.outputs[result]; | 3215 List<AnalysisError> errors = task.outputs[result]; |
| 3172 expect(errors, isNotNull, reason: result.name); | 3216 expect(errors, isNotNull, reason: result.name); |
| 3173 errorListener = new GatheringErrorListener(); | 3217 errorListener = new GatheringErrorListener(); |
| 3174 errorListener.addAll(errors); | 3218 errorListener.addAll(errors); |
| 3175 } | 3219 } |
| 3176 } | 3220 } |
| OLD | NEW |