blob: 19437e507c0cae47d15185c1fbefc0e25ec48814 [file] [log] [blame]
 // Copyright (c) 2018, 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 The token following a question mark dictates whether it's part of /// a null-aware operation or the beginning of a new expression. /// /// @description Checks usage of a null-aware expression when a set literal is /// declared. /// @author sgrekhov@unipro.ru import "../../Utils/expect.dart"; class C { var n1 = 1 as int?; static var n2 = 2 as int?; int? x = null; } main() { C? cn = null; var v1 = {cn?.x ?? 3, C?.n2, cn?.n1}; Expect.isTrue(v1 is Set); Expect.iterableEquals({3, 2, null}, v1); var c = C() as C?; var v2 = {c?.x ?? 3, C?.n2, c?.n1}; Expect.isTrue(v2 is Set); Expect.iterableEquals({3, 2, 1}, v2); var v3 = {c?.x ?? 3, C?.n2, c?.n1}; Expect.isTrue(v3 is Set); Expect.iterableEquals({3, 2, 1}, v3); var v4 = {c?.n1 ??= (c as C).x, c?.x ??= 4, C?.n2, c?.x ?? 3}; Expect.isTrue(v4 is Set); Expect.iterableEquals({1, 4, 2}, v4); }