| /* |
| * 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); |
| } |