| // 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 |
| |
| |
| test<T extends num>(T t) { |
| if (t is double) { |
| var x = t; |
| x.isEven; |
| // ^^^^^^ |
| // [analyzer] unspecified |
| // [cfe] unspecified |
| } |
| } |
| |
| main() { |
| test<int>(42); |
| } |