covariant_templates_test.dart 508 Bytes
Newer Older
Ian Hickson's avatar
Ian Hickson committed
1
// Copyright 2014 The Flutter Authors. All rights reserved.
Adam Barth's avatar
Adam Barth committed
2 3 4
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

5
import 'package:flutter_test/flutter_test.dart';
Adam Barth's avatar
Adam Barth committed
6

7
class X { }
Adam Barth's avatar
Adam Barth committed
8

9
class Y extends X { }
Adam Barth's avatar
Adam Barth committed
10 11

class A<U extends X> {
12
  U? u;
Adam Barth's avatar
Adam Barth committed
13 14 15 16
}

void main() {
  test('Assignment through a covariant template throws exception', () {
17
    final A<Y> ay = A<Y>();
18
    final A<X> ayAsAx = ay;
Adam Barth's avatar
Adam Barth committed
19
    expect(() {
20
      ayAsAx.u = X();
21
    }, throwsA(isA<TypeError>()));
Adam Barth's avatar
Adam Barth committed
22 23
  });
}