dart-sdk/tests/language_2/issue10204_test.dart
Ben Konyi 192579020c Migrated test block 121 to Dart 2.0.
Bug:
Change-Id: I194436597ba39b2e2b872fb58b77314ab925b3aa
Reviewed-on: https://dart-review.googlesource.com/7080
Commit-Queue: Ben Konyi <bkonyi@google.com>
Reviewed-by: Bob Nystrom <rnystrom@google.com>
2017-09-19 23:36:24 +00:00

39 lines
960 B
Dart

// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
// Regression test for dart2js that used to miscompile
// [A.visitInvokeDynamicMethod].
import "package:expect/expect.dart";
var a = 2;
class Tupe {
const Tupe();
get instructionType => a == 2 ? this : new A();
refine(a, b) => '$a$b';
}
class Node {
final selector = null;
var inputs = {"a": const Tupe(), "b": const Tupe()};
bool isCallOnInterceptor = false;
getDartReceiver() {
return isCallOnInterceptor ? inputs["a"] : inputs["b"];
}
}
class A {
visitInvokeDynamicMethod(node) {
var receiverType = node.getDartReceiver().instructionType;
return receiverType.refine(node.selector, node.selector);
}
}
main() {
Expect.equals(
'nullnull', [new A()].last.visitInvokeDynamicMethod(new Node()));
}