| Index: pkg/analyzer/test/src/summary/resynthesize_kernel_test.dart
|
| diff --git a/pkg/analyzer/test/src/summary/resynthesize_kernel_test.dart b/pkg/analyzer/test/src/summary/resynthesize_kernel_test.dart
|
| index 4c14a27f500526fbb6a93ed148fbec4b41a97f22..e9b1092afea403b46a7a99758d8c1f17b8a7e585 100644
|
| --- a/pkg/analyzer/test/src/summary/resynthesize_kernel_test.dart
|
| +++ b/pkg/analyzer/test/src/summary/resynthesize_kernel_test.dart
|
| @@ -6,9 +6,12 @@ library analyzer.test.src.summary.resynthesize_kernel_test;
|
|
|
| import 'dart:async';
|
|
|
| +import 'package:analyzer/dart/element/type.dart';
|
| import 'package:analyzer/file_system/file_system.dart';
|
| import 'package:analyzer/file_system/memory_file_system.dart';
|
| import 'package:analyzer/src/dart/element/element.dart';
|
| +import 'package:analyzer/src/dart/element/type.dart';
|
| +import 'package:analyzer/src/generated/engine.dart' show AnalysisContext;
|
| import 'package:analyzer/src/generated/source.dart';
|
| import 'package:analyzer/src/summary/resynthesize.dart';
|
| import 'package:front_end/file_system.dart';
|
| @@ -19,7 +22,6 @@ import 'package:front_end/src/incremental/kernel_driver.dart';
|
| import 'package:kernel/kernel.dart' as kernel;
|
| import 'package:kernel/target/targets.dart';
|
| import 'package:path/path.dart' as pathos;
|
| -import 'package:test/test.dart';
|
| import 'package:test_reflective_loader/test_reflective_loader.dart';
|
|
|
| import '../context/mock_sdk.dart';
|
| @@ -84,11 +86,8 @@ class ResynthesizeKernelStrongTest extends ResynthesizeTest {
|
| }
|
| }
|
|
|
| - kernel.Library kernelLibrary = libraryMap[testUriStr];
|
| - expect(kernelLibrary, isNotNull);
|
| -
|
| - return new LibraryElementImpl.forKernel(context,
|
| - new _KernelLibraryResynthesizerContextImpl(libraryMap, kernelLibrary));
|
| + var resynthesizer = new _KernelResynthesizer(context, libraryMap);
|
| + return resynthesizer.getLibrary(testUriStr);
|
| }
|
|
|
| @override
|
| @@ -135,11 +134,6 @@ class ResynthesizeKernelStrongTest extends ResynthesizeTest {
|
| }
|
|
|
| @failingTest
|
| - test_class_constructor_explicit_type_params() async {
|
| - await super.test_class_constructor_explicit_type_params();
|
| - }
|
| -
|
| - @failingTest
|
| test_class_constructor_factory() async {
|
| await super.test_class_constructor_factory();
|
| }
|
| @@ -220,11 +214,6 @@ class ResynthesizeKernelStrongTest extends ResynthesizeTest {
|
| }
|
|
|
| @failingTest
|
| - test_class_constructor_implicit_type_params() async {
|
| - await super.test_class_constructor_implicit_type_params();
|
| - }
|
| -
|
| - @failingTest
|
| test_class_constructor_params() async {
|
| await super.test_class_constructor_params();
|
| }
|
| @@ -385,16 +374,6 @@ class ResynthesizeKernelStrongTest extends ResynthesizeTest {
|
| }
|
|
|
| @failingTest
|
| - test_class_supertype() async {
|
| - await super.test_class_supertype();
|
| - }
|
| -
|
| - @failingTest
|
| - test_class_type_parameters() async {
|
| - await super.test_class_type_parameters();
|
| - }
|
| -
|
| - @failingTest
|
| test_class_type_parameters_bound() async {
|
| await super.test_class_type_parameters_bound();
|
| }
|
| @@ -2667,11 +2646,63 @@ class _FileSystemEntityAdaptor implements FileSystemEntity {
|
|
|
| class _KernelLibraryResynthesizerContextImpl
|
| implements KernelLibraryResynthesizerContext {
|
| - /// TODO(scheglov) we don't use this yet, make it private later
|
| - final Map<String, kernel.Library> libraryMap;
|
| + final _KernelResynthesizer _resynthesizer;
|
|
|
| @override
|
| final kernel.Library library;
|
|
|
| - _KernelLibraryResynthesizerContextImpl(this.libraryMap, this.library);
|
| + _KernelLibraryResynthesizerContextImpl(this._resynthesizer, this.library);
|
| +
|
| + @override
|
| + InterfaceType getInterfaceType(
|
| + ElementImpl context, kernel.Supertype kernelType) {
|
| + return _getInterfaceType(
|
| + kernelType.className.canonicalName, kernelType.typeArguments);
|
| + }
|
| +
|
| + DartType getType(ElementImpl context, kernel.DartType kernelType) {
|
| + if (kernelType is kernel.InterfaceType) {
|
| + return _getInterfaceType(
|
| + kernelType.className.canonicalName, kernelType.typeArguments);
|
| + }
|
| + // TODO(scheglov) Support other kernel types.
|
| + return null;
|
| + }
|
| +
|
| + InterfaceType _getInterfaceType(
|
| + kernel.CanonicalName className, List<kernel.DartType> kernelArguments) {
|
| + var libraryName = className.parent;
|
| + var libraryElement = _resynthesizer.getLibrary(libraryName.name);
|
| + ClassElementImpl classElement = libraryElement.getType(className.name);
|
| +
|
| + if (kernelArguments.isEmpty) {
|
| + return classElement.type;
|
| + }
|
| +
|
| + return new InterfaceTypeImpl.elementWithNameAndArgs(
|
| + classElement, classElement.name, () {
|
| + List<DartType> arguments = kernelArguments
|
| + .map((kernel.DartType k) => getType(classElement, k))
|
| + .toList(growable: false);
|
| + return arguments;
|
| + });
|
| + }
|
| +}
|
| +
|
| +class _KernelResynthesizer {
|
| + final AnalysisContext _analysisContext;
|
| + final Map<String, kernel.Library> _kernelMap;
|
| + final Map<String, LibraryElementImpl> _libraryMap = {};
|
| +
|
| + _KernelResynthesizer(this._analysisContext, this._kernelMap);
|
| +
|
| + LibraryElementImpl getLibrary(String uriStr) {
|
| + return _libraryMap.putIfAbsent(uriStr, () {
|
| + var kernel = _kernelMap[uriStr];
|
| + if (kernel == null) return null;
|
| + var libraryContext =
|
| + new _KernelLibraryResynthesizerContextImpl(this, kernel);
|
| + return new LibraryElementImpl.forKernel(_analysisContext, libraryContext);
|
| + });
|
| + }
|
| }
|
|
|