| /* |
| * Copyright (c) 2019, 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 To infer the type of element: |
| * ... |
| * If element is a mapEntry ek: ev: |
| * ... |
| * If P is Map<Pk, Pv> then the inferred key type of element is the inferred |
| * type of ek in context Pk and the inferred value type of element is the |
| * inferred type of ev in context Pv. |
| * |
| * @description Checks that if P is Map<Pk, Pv> then the inferred key type of |
| * element is the inferred type of ek in context Pk and the inferred value type |
| * of element is the inferred type of ev in context Pv. |
| * |
| * See Issue 43139 evaluation: With null safety, doing 1 + x in a double context |
| * will figure out that the only way int + something is going to be a double is |
| * if the something is a double, so it will give x a context type of double. |
| * Then double x = 1 + 1; will convert the latter 1 to a double literal, and the |
| * result becomes a double. So, there is not compile error here with nnbd, and |
| * it's a compile error without nnbd. |
| * @Issue 43139 |
| * @author sgrekhov@unipro.ru |
| */ |
| main() { |
| Map<double, double> x1 = {1 + 1: 1.0}; |
| Map<double, double> x2 = {1.0: 1 + 1}; |
| } |