Fix for resynthesizing FutureOr in not strong mode.

R=brianwilkerson@google.com, paulberry@google.com

Bug:
Change-Id: I239bb013cb04c6e1ab07d644e3cca16119885321
Reviewed-on: https://dart-review.googlesource.com/6743
Reviewed-by: Paul Berry <paulberry@google.com>
This commit is contained in:
Konstantin Shcheglov
2017-09-18 20:26:38 +00:00
parent 942963fa2e
commit f2ff362c71
3 changed files with 17 additions and 14 deletions
+12 -2
View File
@@ -41,6 +41,11 @@ class KernelResynthesizer implements ElementResynthesizer {
*/
DartType get typeType => getLibrary('dart:core').getType('Type').type;
/**
* Return `true` if strong mode analysis should be used.
*/
bool get strongMode => _analysisContext.analysisOptions.strongMode;
@override
Element getElement(ElementLocation location) {
List<String> components = location.components;
@@ -810,8 +815,13 @@ class _KernelUnitResynthesizerContextImpl
if (kernelType is kernel.VoidType) return VoidTypeImpl.instance;
if (kernelType is kernel.InterfaceType) {
return _getInterfaceType(context, kernelType.className.canonicalName,
kernelType.typeArguments);
var name = kernelType.className.canonicalName;
if (!libraryContext.resynthesizer.strongMode &&
name.name == 'FutureOr' &&
name.parent.name == 'dart:async') {
return DynamicTypeImpl.instance;
}
return _getInterfaceType(context, name, kernelType.typeArguments);
}
if (kernelType is kernel.TypeParameterType) {
@@ -18,18 +18,6 @@ class NonErrorResolverTest_Kernel extends NonErrorResolverTest_Driver {
@override
bool get enableKernelDriver => true;
@override
@failingTest
test_async_flattened() async {
return super.test_async_flattened();
}
@override
@failingTest
test_async_future_int_with_return_future_int() async {
return super.test_async_future_int_with_return_future_int();
}
@override
@failingTest
test_commentReference_beforeMethod() async {
@@ -9,6 +9,7 @@ import 'dart:async';
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/generated/engine.dart';
import 'package:analyzer/src/generated/source.dart';
import 'package:analyzer/src/kernel/resynthesize.dart';
import 'package:front_end/byte_store.dart';
@@ -117,6 +118,10 @@ class ResynthesizeKernelStrongTest extends ResynthesizeTest {
return resynthesizer.getLibrary(testUriStr);
}
@override
AnalysisOptionsImpl createOptions() =>
super.createOptions()..strongMode = true;
@failingTest
@fastaProblem
test_class_constructor_field_formal_multiple_matching_fields() async {