blob: aed5702977130e1abe86d51daa685565f7b73d8b [file]
// Copyright (c) 2023, 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.
test1(dynamic x) => {1: 1, if (x case int y) 2: y, 3: 3};
test2(dynamic x) => {1: 1, if (x case String y) 2: y else 2: null, 3: 3};
test3(dynamic x) => {1: 1, if (x case bool b when b) 2: b, 3: 3};
main() {
expectEquals(mapToString(test1(0)), mapToString({1: 1, 2: 0, 3: 3}));
expectEquals(mapToString(test1("foo")), mapToString({1: 1, 3: 3}));
expectEquals(mapToString(test2("foo")), mapToString({1: 1, 2: "foo", 3: 3}));
expectEquals(mapToString(test2(false)), mapToString({1: 1, 2: null, 3: 3}));
expectEquals(mapToString(test3(true)), mapToString({1: 1, 2: true, 3: 3}));
expectEquals(mapToString(test3(false)), mapToString({1: 1, 3: 3}));
}
expectEquals(x, y) {
if (x != y) {
throw "Expected '${x}' to be equal to '${y}'.";
}
}
mapToString(Map<dynamic, dynamic> map) {
List<String> entryStrings = [
for (var entry in map.entries) "${entry.key}:${entry.value}",
];
entryStrings.sort();
return "{${entryStrings.join(',')}}";
}