blob: e9266011a03fcac539985ab8228a966ccaaf8649 [file] [log] [blame]
/*
* 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};
}