blob: 77ee581284c5fe6fa36cec0bcfa4b8da92155153 [file] [log] [blame]
// Copyright (c) 2021, 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.
/// @assertion In the case that the type of the initializer is a promoted type
/// variable X & T, the inferred type of the variable shall be X, but X & T shall
/// be considered as a type of interest and the initialization treated as an
/// assignment for the purposes of promotion. Consequently, such a variable shall
/// be treated as immediately promoted to X & T
///
/// @description Checks that if the type of initializer is X&T then the variable
/// is treated as X & T
///
/// @author sgrekhov@unipro.ru
// Requirements=nnbd-strong
test<T extends num>(T t) {
if (t is int) {
var x = t;
x.isEven;
}
if (t is double) {
var x = t;
x.round();
}
}
main() {
test<int>(42);
}