| // 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 A list literal <E>[elem_1 ... elem_n] is evaluated as follows: |
| /// |
| /// 2. For each entry in the map literal: |
| /// i. If entry is a spread element: |
| /// a. Evaluate the entry's expression to a value value. |
| /// b. If entry is null-aware and value is [null], continue to the next |
| /// entry in the literal. |
| /// c. Evaluate [value.entries.iterator] to a value iterator. |
| /// d. Loop: |
| /// a. If [iterator.moveNext()] returns [false], exit the loop. |
| /// b. Evaluate [iterator.current] to a value [newEntry]. |
| /// c. Call map[newEntry.key] = newEntry.value. |
| /// ii. Else, entry has form [e1: e2]: |
| /// a. Evaluate [e1] to a value key. |
| /// b. Evaluate [e2] to a value value. |
| /// c. Call map[key] = value. |
| /// @description Checks that final map is correct if two its elements have |
| /// duplicated keys |
| /// @author iarkh@unipro.ru |
| |
| |
| import "dart:collection"; |
| import "../../Utils/expect.dart"; |
| |
| Map map1 = {1: 1, 2: 2, 3: 3, 4: 4, 5: 5}; |
| Map map2 = {4: 7, 2: 12}; |
| Map verylongmap = {1: "test", 2: 248, 14: 10, -7: "-7", 100: 218, 13: -24.11, |
| 24: 14, 8: -8, 174: "13", 149: null, "12345": 12345, 27: 37, 222: null, |
| -100: "-", 147: "", "": "", 100000: -100, 12456: -11, 23: 23, 25: 25, 17: 27, |
| 349: 2222222, -12345: "12345", 123: 123, 122: 122, 121: 121, 120: 249, |
| "a": "a", "b": "b", "c": "c", "d": "d", "e": "e", "y": "y", -1000: -1000}; |
| |
| main() { |
| Expect.mapEquals( |
| {8: 4, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, -6: 6}, |
| {8: 4, 5: 112, 1: 14, ...map1, -6: 6}); |
| |
| Expect.mapEquals( |
| {-1: 1, 4: 7, 22: 22, 2: 10}, |
| {-1: 1, ...map2, 22: 22, 2: 10}); |
| |
| Expect.mapEquals( |
| {8: 4, 1: 1, 3: 3, 4: 4, -6: 6, 2: 20, 14: 241, 5: 7}, |
| {8: 4, 3: 112, 1: 10, ...map1, -6: 6, 2: 20, 14: 241, 5: 7}); |
| |
| Expect.mapEquals( |
| {"p": "p", 3: 112, 146:149, 1: "test", 2: 248, 100: 218, |
| 13: -24.11, 24: 14, 8: -8, 174: "13", 149: null, "12345": 12345, 27: 37, |
| 222: null, -100: "-", 147: "", "": "", 100000: -100, 12456: -11, 23: 23, |
| 25: 25, 17: 27, 349: 2222222, -12345: "12345", 123: 123, 122: 122, |
| 120: 249, "a": "a", "c": "c", "d": "d", "e": "e", "y": "y", -6: 6, |
| 14: 20, -1000: 241, 5: 7, 121: 14, "b": "c", -7: -7}, |
| {"c": "d", 2: -2, "y": 14, "p": "p", 3: 112, 1: 10, 146:149, |
| ...verylongmap, -6: 6, 14: 20, -1000: 241, 5: 7, 121: 14, "b": "c", |
| -7: -7}); |
| |
| Expect.mapEquals( |
| {8: 4, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, -6: 6}, |
| {8: 4, 5: 112, 1: 14, ...?map1, -6: 6}); |
| // ^^^^ |
| // [analyzer] STATIC_WARNING.INVALID_NULL_AWARE_OPERATOR |
| // ^ |
| // [cfe] Operand of null-aware operation '...?' has type 'Map<dynamic, dynamic>' which excludes null. |
| |
| Expect.mapEquals( |
| {-1: 1, 4: 7, 22: 22, 2: 10}, |
| {-1: 1, ...?map2, 22: 22, 2: 10}); |
| // ^^^^ |
| // [analyzer] STATIC_WARNING.INVALID_NULL_AWARE_OPERATOR |
| // ^ |
| // [cfe] Operand of null-aware operation '...?' has type 'Map<dynamic, dynamic>' which excludes null. |
| |
| Expect.mapEquals( |
| {8: 4, 1: 1, 3: 3, 4: 4, -6: 6, 2: 20, 14: 241, 5: 7}, |
| {8: 4, 3: 112, 1: 10, ...?map1, -6: 6, 2: 20, 14: 241, 5: 7}); |
| // ^^^^ |
| // [analyzer] STATIC_WARNING.INVALID_NULL_AWARE_OPERATOR |
| // ^ |
| // [cfe] Operand of null-aware operation '...?' has type 'Map<dynamic, dynamic>' which excludes null. |
| |
| Expect.mapEquals( |
| {"p": "p", 3: 112, 146:149, 1: "test", 2: 248, 100: 218, |
| 13: -24.11, 24: 14, 8: -8, 174: "13", 149: null, "12345": 12345, 27: 37, |
| 222: null, -100: "-", 147: "", "": "", 100000: -100, 12456: -11, 23: 23, |
| 25: 25, 17: 27, 349: 2222222, -12345: "12345", 123: 123, 122: 122, |
| 120: 249, "a": "a", "c": "c", "d": "d", "e": "e", "y": "y", -6: 6, |
| 14: 20, -1000: 241, 5: 7, 121: 14, "b": "c", -7: -7}, |
| {"c": "d", 2: -2, "y": 14, "p": "p", 3: 112, 1: 10, 146:149, |
| ...?verylongmap, -6: 6, 14: 20, -1000: 241, 5: 7, 121: 14, "b": "c", |
| // ^^^^ |
| // [analyzer] STATIC_WARNING.INVALID_NULL_AWARE_OPERATOR |
| // ^ |
| // [cfe] Operand of null-aware operation '...?' has type 'Map<dynamic, dynamic>' which excludes null. |
| -7: -7}); |
| } |