Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(190)

Side by Side Diff: pkg/analyzer/test/src/summary/resynthesize_kernel_test.dart

Issue 2978113002: Resynthesize literal expressions from Kernel. (Closed)
Patch Set: Created 3 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « pkg/analyzer/lib/src/dart/element/element.dart ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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
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
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 }
OLDNEW
« no previous file with comments | « pkg/analyzer/lib/src/dart/element/element.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698