blob: 6d321761034f5e04bad982ad6bc2ed33b81aeb04 [file] [log] [blame]
// Copyright (c) 2024, 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.
// SharedOptions=--enable-experiment=null-aware-elements
import 'package:expect/expect.dart';
String log = "";
T sideEffect<T>(T t) {
log = "${log}:${t}";
return t;
}
main() {
log = "";
var map1 = {sideEffect<String>("one"): ?sideEffect<String?>("two")};
Expect.equals(log, ":one:two");
log = "";
var map2 = {
sideEffect<int>(0): sideEffect<int>(1),
sideEffect<int>(2): ?sideEffect<int?>(3),
?sideEffect<int?>(4): sideEffect<int>(5),
?sideEffect<int?>(6): ?sideEffect<int?>(7),
};
Expect.equals(log, ":0:1:2:3:4:5:6:7");
log = "";
var map3 = {
sideEffect<int>(0): sideEffect<int>(1),
sideEffect<int>(2): ?sideEffect<int?>(3),
?sideEffect<int?>(null): sideEffect<int>(5),
?sideEffect<int?>(null): ?sideEffect<int?>(7),
};
Expect.equals(log, ":0:1:2:3:null:null");
log = "";
var list1 = [sideEffect<String>("one"), ?sideEffect<String?>("two")];
Expect.equals(log, ":one:two");
log = "";
var list2 = [
sideEffect<int>(0), sideEffect<int>(1),
sideEffect<int>(2), ?sideEffect<int?>(3),
?sideEffect<int?>(4), sideEffect<int>(5),
?sideEffect<int?>(6), ?sideEffect<int?>(7),
];
Expect.equals(log, ":0:1:2:3:4:5:6:7");
log = "";
var list3 = [
sideEffect<int>(0), sideEffect<int>(1),
sideEffect<int>(2), ?sideEffect<int?>(3),
?sideEffect<int?>(null), sideEffect<int>(5),
?sideEffect<int?>(null), ?sideEffect<int?>(7),
];
Expect.equals(log, ":0:1:2:3:null:5:null:7");
log = "";
var set1 = {sideEffect<String>("one"), ?sideEffect<String?>("two")};
Expect.equals(log, ":one:two");
log = "";
var set2 = {
sideEffect<int>(0), sideEffect<int>(1),
sideEffect<int>(2), ?sideEffect<int?>(3),
?sideEffect<int?>(4), sideEffect<int>(5),
?sideEffect<int?>(6), ?sideEffect<int?>(7),
};
Expect.equals(log, ":0:1:2:3:4:5:6:7");
log = "";
var set3 = {
sideEffect<int>(0), sideEffect<int>(1),
sideEffect<int>(2), ?sideEffect<int?>(3),
?sideEffect<int?>(null), sideEffect<int>(5),
?sideEffect<int?>(null), ?sideEffect<int?>(7),
};
Expect.equals(log, ":0:1:2:3:null:5:null:7");
}