| // 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. |
| |
| // This test captures the changes introduced in 2.29 of the patterns proposal. |
| |
| import "package:expect/expect.dart"; |
| |
| main() { |
| var map = {'a': 1, 'b': 2}; |
| |
| // It's an error to have "..." in a map pattern. |
| switch (map) { |
| case {...}: |
| // ^^^ |
| // [analyzer] unspecified |
| // [cfe] unspecified |
| case {'a': _, ...}: |
| // ^^^ |
| // [analyzer] unspecified |
| // [cfe] unspecified |
| } |
| |
| // It's an error to have an empty map pattern. |
| switch (map) { |
| case {}: |
| // ^^ |
| // [analyzer] COMPILE_TIME_ERROR.EMPTY_MAP_PATTERN |
| // ^^^^ |
| // [cfe] unspecified |
| } |
| |
| // Later cases may be unreachable because map patterns ignore extra keys. |
| switch (map) { |
| case {'a': _}: |
| print('a'); |
| case {'b': _}: |
| print('b'); |
| case {'a': _, 'b': _}: |
| // ^^^^ |
| // [analyzer] HINT.UNREACHABLE_SWITCH_CASE |
| print('a b'); |
| } |
| } |