Fix ForwardingConstructorElementZ.computeEffectiveTargetType

BUG=
R=sigmund@google.com

Review URL: https://codereview.chromium.org/1981313002 .
This commit is contained in:
Johnni Winther 2016-05-20 11:20:23 +02:00
parent 0fce71d5e8
commit bfb8a077e2
3 changed files with 18 additions and 3 deletions

View file

@ -1256,7 +1256,7 @@ class ForwardingConstructorElementZ extends ElementZ
@override
InterfaceType computeEffectiveTargetType(InterfaceType newType) {
return enclosingClass.thisType;
return enclosingClass.thisType.substByContext(newType);
}
@override

View file

@ -572,6 +572,11 @@ class ElementPropertyEquivalence extends BaseElementVisitor<dynamic, Element> {
element1.computeEffectiveTargetType(element1.enclosingClass.thisType),
element2.computeEffectiveTargetType(element2.enclosingClass.thisType),
areTypesEquivalent);
check(
element1, element2, 'effectiveTargetType.raw',
element1.computeEffectiveTargetType(element1.enclosingClass.rawType),
element2.computeEffectiveTargetType(element2.enclosingClass.rawType),
areTypesEquivalent);
checkElementIdentities(element1, element2, 'immediateRedirectionTarget',
element1.immediateRedirectionTarget,
element2.immediateRedirectionTarget);

View file

@ -14,6 +14,8 @@ import 'package:compiler/src/compiler.dart';
import '../memory_compiler.dart';
import 'test_data.dart';
const String DEFAULT_DATA_FILE_NAME = 'out.data';
class Arguments {
final String filename;
final int start;
@ -29,7 +31,7 @@ class Arguments {
this.end,
this.loadSerializedData: false,
this.saveSerializedData: false,
this.serializedDataFileName: 'out.data',
this.serializedDataFileName: DEFAULT_DATA_FILE_NAME,
this.verbose: false});
factory Arguments.from(List<String> arguments) {
@ -38,7 +40,7 @@ class Arguments {
int end;
for (String arg in arguments) {
if (!arg.startsWith('-')) {
int index = int.parse(arg);
int index = int.parse(arg, onError: (_) => null);
if (index == null) {
filename = arg;
} else if (start == null) {
@ -51,6 +53,14 @@ class Arguments {
bool verbose = arguments.contains('-v');
bool loadSerializedData = arguments.contains('-l');
bool saveSerializedData = arguments.contains('-s');
if (arguments.contains('--auto')) {
File file = new File(DEFAULT_DATA_FILE_NAME);
if (file.existsSync()) {
loadSerializedData = true;
} else {
saveSerializedData = true;
}
}
return new Arguments(
filename: filename,
start: start,