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:
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user