mirror of
https://github.com/dart-lang/sdk
synced 2024-09-05 16:41:07 +00:00
![Konstantin Shcheglov](/assets/img/avatar_default.png)
They are all errors now. Change-Id: If48d38e38e845fd5b5a950dd5514bf1cbbce03d8 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/155880 Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
37 lines
1.1 KiB
Dart
37 lines
1.1 KiB
Dart
// Copyright (c) 2020, 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 "dart:collection";
|
|
import 'cast_helper.dart';
|
|
|
|
void main() {
|
|
testSetDowncast();
|
|
testMapDowncast();
|
|
}
|
|
|
|
void testSetDowncast() {
|
|
var setEls = new Set<C?>.from(elements);
|
|
var dSet = Set.castFrom<C?, D?>(setEls);
|
|
|
|
var newC = new C();
|
|
dSet.add(newC);
|
|
// ^^^^
|
|
// [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
|
|
// [cfe] The argument type 'C' can't be assigned to the parameter type 'D?'.
|
|
}
|
|
|
|
void testMapDowncast() {
|
|
var map = new Map.fromIterables(elements, elements);
|
|
var dMap = Map.castFrom<C?, C?, D?, D?>(map);
|
|
|
|
dMap[c] = d;
|
|
// ^
|
|
// [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
|
|
// [cfe] A value of type 'C' can't be assigned to a variable of type 'D?'.
|
|
dMap[d] = c;
|
|
// ^
|
|
// [analyzer] COMPILE_TIME_ERROR.INVALID_ASSIGNMENT
|
|
// [cfe] A value of type 'C' can't be assigned to a variable of type 'D?'.
|
|
}
|