dart-sdk/tests
Paul Berry 3713c0e264 Patterns parser: prohibit variable/identifier patterns named when/as.
In https://dart-review.googlesource.com/c/sdk/+/299400, the parser was
adjusted so that it no longer accepts `when` and `as` as the names for
variable patterns in cases where there is a possible ambiguity
(e.g. `int when` is not accepted as a pattern because `int` is a
legitimate pattern, therefore `when` could introduce a guard
clause). This change further prohibits `when` and `as` from being the
names of variable patterns or identifier patterns even in the case
where there is no ambiguity. This is in line with the discussion at
https://github.com/dart-lang/sdk/issues/52199#issuecomment-1526297771,
and the spec change at
https://github.com/dart-lang/language/pull/3033.

Three new error codes are introduced, to cover the three circumstances
in which `when` or `as` might be used illegally: in a declared
variable pattern, in an assigned variable pattern, or in an identifier
pattern. I've also added analyzer tests to ensure that the parser
recovers from these errors nicely. Unfortunately, nice error recovery
is only feasible in the non-ambiguous cases.

I've also updated the language test expectations in
`tests/language/patterns/version_2_32_changes_error_test.dart` to
reflect the new error messages, and added a few more examples of uses
of `when` and `as` that are still permitted.

Fixes #52260.

Bug: https://github.com/dart-lang/sdk/issues/52260
Change-Id: I229f627aa639659c30b83c74895759207da279f7
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/301482
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Jens Johansen <jensj@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2023-05-08 19:06:02 +00:00
..
co19
co19_2
corelib [vm/regex] Pick a fix for unicode negated range RegExp. 2023-04-26 19:46:06 +00:00
corelib_2 [vm/regex] Pick a fix for unicode negated range RegExp. 2023-04-26 19:46:06 +00:00
dartdevc [ddc] Add DDC specific NSM error test cases 2023-05-01 18:39:35 +00:00
dartdevc_2 [ddc] Add DDC specific NSM error test cases 2023-05-01 18:39:35 +00:00
ffi [analyzer/ffi] Fix spurious FFI errors 2023-05-08 15:16:05 +00:00
ffi_2 Reland "[vm] Expose Dart_{CurrentIsolate,ExitIsolate,EnterIsolate}" 2023-04-13 09:20:17 +00:00
language Patterns parser: prohibit variable/identifier patterns named when/as. 2023-05-08 19:06:02 +00:00
language_2 [ddc] Add regression test for type test issue 2023-05-05 21:13:40 +00:00
lib Reland "Fix bug in Completer.complete." 2023-05-02 19:33:57 +00:00
lib_2 Reland "Fix bug in Completer.complete." 2023-05-02 19:33:57 +00:00
modular
standalone [infra] Prevent VM AOT tests from poluting SDK source. 2023-05-03 13:24:39 +00:00
standalone_2 [gardening] Fix dwarf_stack_trace_invisible_functions_test 2023-05-03 23:01:48 +00:00
web [dart2js] fix crash with records and null-assertions. 2023-05-05 17:20:13 +00:00
web_2 Reland "[pkg:js/dart:js_interop] Move annotations to dart:_js_annotations" 2023-05-02 15:24:18 +00:00
legacy_status_dart2js.csv
OWNERS
README.md

This directory contains tests of the language and core library implementations. For more information, see https://github.com/dart-lang/sdk/wiki/Testing.