blob: 50b83b2c03a73f564caba1a0e55f3a5e80f8bb2a [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 an expressionElement with expression e1:
/// ...
/// If P is Set<Ps> then the inferred set element type of element is the inferred
/// type of the expression e1 in context Ps.
///
/// @description Checks that if P is Set<Ps> then the inferred set element type
/// of element is the inferred type of the expression e1 in context Ps.
///
/// 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() {
Set<double> x = {1 + 1};
}