blob: eedc274f92f1554c4bf6d5b2c575b90921bbbef2 [file] [log] [blame]
// Copyright (c) 2016, 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.
import "package:expect/expect.dart";
class View {
addChild(View v) {}
transform(View fn(View v)) {}
}
class MyView extends View {
addChild(covariant MyView v) {}
transform(covariant MyView fn(Object v)) {}
}
main() {
dynamic mv = new MyView();
dynamic v = new View();
mv.addChild(mv);
Expect.throws(() => mv.addChild(v));
mv.transform((_) => new MyView());
// TODO(jmesserly): these *should* be cast failures, but DDC is currently
// ignoring function type failures w/ a warning at the console...
// * -> * not a subtype of Object -> MyView
Expect.throws(() => mv.transform((_) => mv));
// View -> View not a subtype of Object -> MyView
Expect.throws(() => mv.transform((View x) => x));
}