48b1656690
According to our typing rules a Set<Apple> is a Set<Fruit>. However, before this change, we couldn't use it as a Set<Fruit>:
===
bool foo(Set<Fruit> fruits) {
// Would yield a type-error since we actually got a Set<Apple>.
return fruits.contains(new Banana());
}
foo(new Set<Apple>());
===
R=ajohnsen@google.com, blois@google.com, lrn@google.com
Review URL: https://codereview.chromium.org//14246008
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@24326 260f80e4-7a28-3924-810f-c04153c831b5
29 lines
965 B
Dart
29 lines
965 B
Dart
// Copyright (c) 2011, 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.
|
|
|
|
library stream_controller_async_test;
|
|
|
|
import "package:expect/expect.dart";
|
|
import 'dart:async';
|
|
import 'dart:isolate';
|
|
import '../../../pkg/unittest/lib/unittest.dart';
|
|
import 'event_helper.dart';
|
|
import 'stream_state_helper.dart';
|
|
|
|
class A { const A(); }
|
|
class B extends A { const B(); }
|
|
|
|
main() {
|
|
Events sentEvents = new Events()..close();
|
|
|
|
// Make sure that firstWhere allows to return instances of types that are
|
|
// different than the generic type of the stream.
|
|
test("firstWhere with super class", () {
|
|
StreamController c = new StreamController<B>();
|
|
Future f = c.stream.firstWhere((x) => false, defaultValue: () => const A());
|
|
f.then(expectAsync1((v) { Expect.equals(const A(), v); }));
|
|
sentEvents.replay(c);
|
|
});
|
|
}
|