OLD | NEW |
1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2017, 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.summary.resynthesize_kernel_test; | 5 library analyzer.test.src.summary.resynthesize_kernel_test; |
6 | 6 |
7 import 'dart:async'; | 7 import 'dart:async'; |
8 | 8 |
| 9 import 'package:analyzer/dart/ast/ast.dart'; |
| 10 import 'package:analyzer/dart/ast/standard_ast_factory.dart'; |
9 import 'package:analyzer/dart/element/type.dart'; | 11 import 'package:analyzer/dart/element/type.dart'; |
10 import 'package:analyzer/file_system/file_system.dart'; | 12 import 'package:analyzer/file_system/file_system.dart'; |
11 import 'package:analyzer/file_system/memory_file_system.dart'; | 13 import 'package:analyzer/file_system/memory_file_system.dart'; |
12 import 'package:analyzer/src/dart/element/element.dart'; | 14 import 'package:analyzer/src/dart/element/element.dart'; |
13 import 'package:analyzer/src/dart/element/type.dart'; | 15 import 'package:analyzer/src/dart/element/type.dart'; |
14 import 'package:analyzer/src/generated/engine.dart' show AnalysisContext; | 16 import 'package:analyzer/src/generated/engine.dart' show AnalysisContext; |
15 import 'package:analyzer/src/generated/source.dart'; | 17 import 'package:analyzer/src/generated/source.dart'; |
| 18 import 'package:analyzer/src/generated/testing/ast_test_factory.dart'; |
16 import 'package:analyzer/src/summary/resynthesize.dart'; | 19 import 'package:analyzer/src/summary/resynthesize.dart'; |
17 import 'package:front_end/file_system.dart'; | 20 import 'package:front_end/file_system.dart'; |
18 import 'package:front_end/src/base/performace_logger.dart'; | 21 import 'package:front_end/src/base/performace_logger.dart'; |
19 import 'package:front_end/src/fasta/uri_translator_impl.dart'; | 22 import 'package:front_end/src/fasta/uri_translator_impl.dart'; |
20 import 'package:front_end/src/incremental/byte_store.dart'; | 23 import 'package:front_end/src/incremental/byte_store.dart'; |
21 import 'package:front_end/src/incremental/kernel_driver.dart'; | 24 import 'package:front_end/src/incremental/kernel_driver.dart'; |
22 import 'package:kernel/kernel.dart' as kernel; | 25 import 'package:kernel/kernel.dart' as kernel; |
23 import 'package:kernel/target/targets.dart'; | 26 import 'package:kernel/target/targets.dart'; |
24 import 'package:package_config/packages.dart'; | 27 import 'package:package_config/packages.dart'; |
25 import 'package:path/path.dart' as pathos; | 28 import 'package:path/path.dart' as pathos; |
(...skipping 637 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
663 test_const_topLevel_identical() async { | 666 test_const_topLevel_identical() async { |
664 await super.test_const_topLevel_identical(); | 667 await super.test_const_topLevel_identical(); |
665 } | 668 } |
666 | 669 |
667 @failingTest | 670 @failingTest |
668 test_const_topLevel_ifNull() async { | 671 test_const_topLevel_ifNull() async { |
669 await super.test_const_topLevel_ifNull(); | 672 await super.test_const_topLevel_ifNull(); |
670 } | 673 } |
671 | 674 |
672 @failingTest | 675 @failingTest |
673 test_const_topLevel_literal() async { | |
674 await super.test_const_topLevel_literal(); | |
675 } | |
676 | |
677 @failingTest | |
678 test_const_topLevel_prefix() async { | 676 test_const_topLevel_prefix() async { |
679 await super.test_const_topLevel_prefix(); | 677 await super.test_const_topLevel_prefix(); |
680 } | 678 } |
681 | 679 |
682 @failingTest | 680 @failingTest |
683 test_const_topLevel_super() async { | 681 test_const_topLevel_super() async { |
684 await super.test_const_topLevel_super(); | 682 await super.test_const_topLevel_super(); |
685 } | 683 } |
686 | 684 |
687 @failingTest | 685 @failingTest |
(...skipping 1072 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1760 test_metadata_simpleFormalParameter_withDefault() async { | 1758 test_metadata_simpleFormalParameter_withDefault() async { |
1761 await super.test_metadata_simpleFormalParameter_withDefault(); | 1759 await super.test_metadata_simpleFormalParameter_withDefault(); |
1762 } | 1760 } |
1763 | 1761 |
1764 @failingTest | 1762 @failingTest |
1765 test_metadata_topLevelVariableDeclaration() async { | 1763 test_metadata_topLevelVariableDeclaration() async { |
1766 await super.test_metadata_topLevelVariableDeclaration(); | 1764 await super.test_metadata_topLevelVariableDeclaration(); |
1767 } | 1765 } |
1768 | 1766 |
1769 @failingTest | 1767 @failingTest |
1770 test_metadata_typeParameter_ofClass() async { | |
1771 await super.test_metadata_typeParameter_ofClass(); | |
1772 } | |
1773 | |
1774 @failingTest | |
1775 test_metadata_typeParameter_ofClassTypeAlias() async { | 1768 test_metadata_typeParameter_ofClassTypeAlias() async { |
1776 await super.test_metadata_typeParameter_ofClassTypeAlias(); | 1769 await super.test_metadata_typeParameter_ofClassTypeAlias(); |
1777 } | 1770 } |
1778 | 1771 |
1779 @failingTest | 1772 @failingTest |
1780 test_metadata_typeParameter_ofFunction() async { | 1773 test_metadata_typeParameter_ofFunction() async { |
1781 await super.test_metadata_typeParameter_ofFunction(); | 1774 await super.test_metadata_typeParameter_ofFunction(); |
1782 } | 1775 } |
1783 | 1776 |
1784 @failingTest | 1777 @failingTest |
(...skipping 487 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2272 test_unresolved_part() async { | 2265 test_unresolved_part() async { |
2273 await super.test_unresolved_part(); | 2266 await super.test_unresolved_part(); |
2274 } | 2267 } |
2275 | 2268 |
2276 @failingTest | 2269 @failingTest |
2277 test_unused_type_parameter() async { | 2270 test_unused_type_parameter() async { |
2278 await super.test_unused_type_parameter(); | 2271 await super.test_unused_type_parameter(); |
2279 } | 2272 } |
2280 | 2273 |
2281 @failingTest | 2274 @failingTest |
2282 test_variable_const() async { | |
2283 await super.test_variable_const(); | |
2284 } | |
2285 | |
2286 @failingTest | |
2287 test_variable_documented() async { | 2275 test_variable_documented() async { |
2288 await super.test_variable_documented(); | 2276 await super.test_variable_documented(); |
2289 } | 2277 } |
2290 | 2278 |
2291 @failingTest | 2279 @failingTest |
2292 test_variable_getterInLib_setterInPart() async { | 2280 test_variable_getterInLib_setterInPart() async { |
2293 await super.test_variable_getterInLib_setterInPart(); | 2281 await super.test_variable_getterInLib_setterInPart(); |
2294 } | 2282 } |
2295 | 2283 |
2296 @failingTest | 2284 @failingTest |
2297 test_variable_getterInPart_setterInLib() async { | 2285 test_variable_getterInPart_setterInLib() async { |
2298 await super.test_variable_getterInPart_setterInLib(); | 2286 await super.test_variable_getterInPart_setterInLib(); |
2299 } | 2287 } |
2300 | 2288 |
2301 @failingTest | 2289 @failingTest |
2302 test_variable_getterInPart_setterInPart() async { | 2290 test_variable_getterInPart_setterInPart() async { |
2303 await super.test_variable_getterInPart_setterInPart(); | 2291 await super.test_variable_getterInPart_setterInPart(); |
2304 } | 2292 } |
2305 | 2293 |
2306 @failingTest | 2294 @failingTest |
2307 test_variable_propagatedType_const_noDep() async { | |
2308 await super.test_variable_propagatedType_const_noDep(); | |
2309 } | |
2310 | |
2311 @failingTest | |
2312 test_variable_propagatedType_final_dep_inLib() async { | 2295 test_variable_propagatedType_final_dep_inLib() async { |
2313 await super.test_variable_propagatedType_final_dep_inLib(); | 2296 await super.test_variable_propagatedType_final_dep_inLib(); |
2314 } | 2297 } |
2315 | 2298 |
2316 @failingTest | 2299 @failingTest |
2317 test_variable_propagatedType_final_dep_inPart() async { | 2300 test_variable_propagatedType_final_dep_inPart() async { |
2318 await super.test_variable_propagatedType_final_dep_inPart(); | 2301 await super.test_variable_propagatedType_final_dep_inPart(); |
2319 } | 2302 } |
2320 | 2303 |
2321 @failingTest | 2304 @failingTest |
2322 test_variable_propagatedType_implicit_dep() async { | 2305 test_variable_propagatedType_implicit_dep() async { |
2323 await super.test_variable_propagatedType_implicit_dep(); | 2306 await super.test_variable_propagatedType_implicit_dep(); |
2324 } | 2307 } |
2325 | 2308 |
2326 @failingTest | 2309 @failingTest |
2327 test_variable_setterInPart_getterInPart() async { | 2310 test_variable_setterInPart_getterInPart() async { |
2328 await super.test_variable_setterInPart_getterInPart(); | 2311 await super.test_variable_setterInPart_getterInPart(); |
2329 } | 2312 } |
2330 } | 2313 } |
2331 | 2314 |
| 2315 /** |
| 2316 * Builder of [Expression]s from [kernel.Expression]s. |
| 2317 */ |
| 2318 class _ExprBuilder { |
| 2319 Expression build(kernel.Expression expr) { |
| 2320 if (expr is kernel.NullLiteral) { |
| 2321 return AstTestFactory.nullLiteral(); |
| 2322 } |
| 2323 if (expr is kernel.BoolLiteral) { |
| 2324 return AstTestFactory.booleanLiteral(expr.value); |
| 2325 } |
| 2326 if (expr is kernel.IntLiteral) { |
| 2327 return AstTestFactory.integer(expr.value); |
| 2328 } |
| 2329 if (expr is kernel.DoubleLiteral) { |
| 2330 return AstTestFactory.doubleLiteral(expr.value); |
| 2331 } |
| 2332 if (expr is kernel.StringLiteral) { |
| 2333 return AstTestFactory.string2(expr.value); |
| 2334 } |
| 2335 if (expr is kernel.StringConcatenation) { |
| 2336 List<InterpolationElement> elements = expr.expressions |
| 2337 .map(build) |
| 2338 .map(_newInterpolationElement) |
| 2339 .toList(growable: false); |
| 2340 return AstTestFactory.string(elements); |
| 2341 } |
| 2342 if (expr is kernel.SymbolLiteral) { |
| 2343 List<String> components = expr.value.split('.').toList(); |
| 2344 return AstTestFactory.symbolLiteral(components); |
| 2345 } |
| 2346 // TODO(scheglov): complete getExpression |
| 2347 throw new UnimplementedError('kernel: $expr'); |
| 2348 } |
| 2349 |
| 2350 InterpolationElement _newInterpolationElement(Expression expr) { |
| 2351 if (expr is SimpleStringLiteral) { |
| 2352 return astFactory.interpolationString(expr.literal, expr.value); |
| 2353 } else { |
| 2354 return AstTestFactory.interpolationExpression(expr); |
| 2355 } |
| 2356 } |
| 2357 } |
| 2358 |
2332 class _FileSystemAdaptor implements FileSystem { | 2359 class _FileSystemAdaptor implements FileSystem { |
2333 final ResourceProvider provider; | 2360 final ResourceProvider provider; |
2334 | 2361 |
2335 _FileSystemAdaptor(this.provider); | 2362 _FileSystemAdaptor(this.provider); |
2336 | 2363 |
2337 @override | 2364 @override |
2338 FileSystemEntity entityForUri(Uri uri) { | 2365 FileSystemEntity entityForUri(Uri uri) { |
2339 if (uri.isScheme('file')) { | 2366 if (uri.isScheme('file')) { |
2340 var file = provider.getFile(uri.path); | 2367 var file = provider.getFile(uri.path); |
2341 return new _FileSystemEntityAdaptor(uri, file); | 2368 return new _FileSystemEntityAdaptor(uri, file); |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2377 class _KernelLibraryResynthesizerContextImpl | 2404 class _KernelLibraryResynthesizerContextImpl |
2378 implements KernelLibraryResynthesizerContext { | 2405 implements KernelLibraryResynthesizerContext { |
2379 final _KernelResynthesizer _resynthesizer; | 2406 final _KernelResynthesizer _resynthesizer; |
2380 | 2407 |
2381 @override | 2408 @override |
2382 final kernel.Library library; | 2409 final kernel.Library library; |
2383 | 2410 |
2384 _KernelLibraryResynthesizerContextImpl(this._resynthesizer, this.library); | 2411 _KernelLibraryResynthesizerContextImpl(this._resynthesizer, this.library); |
2385 | 2412 |
2386 @override | 2413 @override |
| 2414 Expression getExpression(kernel.Expression expression) { |
| 2415 return new _ExprBuilder().build(expression); |
| 2416 } |
| 2417 |
| 2418 @override |
2387 InterfaceType getInterfaceType( | 2419 InterfaceType getInterfaceType( |
2388 ElementImpl context, kernel.Supertype kernelType) { | 2420 ElementImpl context, kernel.Supertype kernelType) { |
2389 return _getInterfaceType( | 2421 return _getInterfaceType( |
2390 kernelType.className.canonicalName, kernelType.typeArguments); | 2422 kernelType.className.canonicalName, kernelType.typeArguments); |
2391 } | 2423 } |
2392 | 2424 |
2393 DartType getType(ElementImpl context, kernel.DartType kernelType) { | 2425 DartType getType(ElementImpl context, kernel.DartType kernelType) { |
2394 if (kernelType is kernel.DynamicType) return DynamicTypeImpl.instance; | 2426 if (kernelType is kernel.DynamicType) return DynamicTypeImpl.instance; |
2395 if (kernelType is kernel.InterfaceType) { | 2427 if (kernelType is kernel.InterfaceType) { |
2396 return _getInterfaceType( | 2428 return _getInterfaceType( |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2431 LibraryElementImpl getLibrary(String uriStr) { | 2463 LibraryElementImpl getLibrary(String uriStr) { |
2432 return _libraryMap.putIfAbsent(uriStr, () { | 2464 return _libraryMap.putIfAbsent(uriStr, () { |
2433 var kernel = _kernelMap[uriStr]; | 2465 var kernel = _kernelMap[uriStr]; |
2434 if (kernel == null) return null; | 2466 if (kernel == null) return null; |
2435 var libraryContext = | 2467 var libraryContext = |
2436 new _KernelLibraryResynthesizerContextImpl(this, kernel); | 2468 new _KernelLibraryResynthesizerContextImpl(this, kernel); |
2437 return new LibraryElementImpl.forKernel(_analysisContext, libraryContext); | 2469 return new LibraryElementImpl.forKernel(_analysisContext, libraryContext); |
2438 }); | 2470 }); |
2439 } | 2471 } |
2440 } | 2472 } |
OLD | NEW |