-
Notifications
You must be signed in to change notification settings - Fork 28
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Exhaustiveness uses extension type erasure #2420
Labels
type-enhancement
A request for a change that isn't a bug
Comments
No, we don't. I'll add them, thank you! |
sgrekhov
added a commit
to sgrekhov/co19
that referenced
this issue
Dec 11, 2023
eernstg
pushed a commit
that referenced
this issue
Dec 11, 2023
sgrekhov
added a commit
to sgrekhov/co19
that referenced
this issue
Dec 12, 2023
eernstg
pushed a commit
that referenced
this issue
Dec 12, 2023
…#2423) Add extension types exhaustiveness tests. Enums, trivial cases
sgrekhov
added a commit
to sgrekhov/co19
that referenced
this issue
Dec 12, 2023
sgrekhov
added a commit
to sgrekhov/co19
that referenced
this issue
Dec 13, 2023
eernstg
pushed a commit
that referenced
this issue
Dec 14, 2023
Add extension type exhaustiveness tests for lists
sgrekhov
added a commit
to sgrekhov/co19
that referenced
this issue
Dec 14, 2023
eernstg
pushed a commit
that referenced
this issue
Dec 14, 2023
Add extension type exhaustiveness tests about map patterns.
eernstg
pushed a commit
that referenced
this issue
Dec 18, 2023
Add extension type exhaustiveness tests about variable patterns.
copybara-service bot
pushed a commit
to dart-lang/sdk
that referenced
this issue
Dec 19, 2023
2023-12-19 [email protected] Fixes dart-lang/co19#2441. Fix roll failures (dart-lang/co19#2443) 2023-12-18 [email protected] Fixes dart-lang/co19#2435. Fix roll failures (dart-lang/co19#2437) 2023-12-18 [email protected] dart-lang/co19#2420. Add extension types exhaustiveness tests. Variables (dart-lang/co19#2431) 2023-12-15 [email protected] Fixes dart-lang/co19#2430. Update expected errors positions for CFE (dart-lang/co19#2433) 2023-12-15 [email protected] Fixes dart-lang/co19#2432. Remove excessive expected error for CFE (dart-lang/co19#2434) 2023-12-14 [email protected] dart-lang/co19#2420. Add extension types exhaustiveness tests. Maps (dart-lang/co19#2426) 2023-12-14 [email protected] dart-lang/co19#2420. Add extension types exhaustiveness tests. Lists (dart-lang/co19#2424) 2023-12-14 [email protected] dart-lang/co19#2139. Fix wrong failure of Language/Functions/element_type_A02_t06 (dart-lang/co19#2429) 2023-12-13 [email protected] dart-lang/co19#2350. Add more factory constructors tests (dart-lang/co19#2427) 2023-12-13 [email protected] Fixes dart-lang/co19#2415. Update `StreamController.broadcast()` test according to the changed documentation (dart-lang/co19#2425) 2023-12-13 [email protected] dart-lang/co19#2350. Add/update factory constructor tests. Part 4 (dart-lang/co19#2367) 2023-12-12 [email protected] dart-lang/co19#2420. Add extension types exhaustiveness tests. Enums, trivial cases (dart-lang/co19#2423) 2023-12-11 [email protected] dart-lang/co19#2420. Add extension types exhaustiveness tests. Enums (dart-lang/co19#2422) 2023-12-11 [email protected] dart-lang/co19#2386. Rename well-bounded tests. Update descriptions (dart-lang/co19#2405) 2023-12-08 [email protected] dart-lang/co19#2415. Change expectations for Stream.asyncMap() according to the current behavior (dart-lang/co19#2421) Change-Id: I777eba4f1615c8477a5d2044f295696dfc210b1d Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/342582 Commit-Queue: Erik Ernst <[email protected]> Reviewed-by: Alexander Thomas <[email protected]> Reviewed-by: Erik Ernst <[email protected]>
sgrekhov
added a commit
to sgrekhov/co19
that referenced
this issue
Dec 22, 2023
sgrekhov
added a commit
to sgrekhov/co19
that referenced
this issue
Dec 25, 2023
sgrekhov
added a commit
to sgrekhov/co19
that referenced
this issue
Dec 26, 2023
sgrekhov
added a commit
to sgrekhov/co19
that referenced
this issue
Dec 29, 2023
eernstg
pushed a commit
that referenced
this issue
Dec 29, 2023
#2452) Add switch statement check to the existing exhaustiveness tests
sgrekhov
added a commit
to sgrekhov/co19
that referenced
this issue
Jan 2, 2024
eernstg
pushed a commit
that referenced
this issue
Jan 2, 2024
Add more dynamic semantics extension type tests. Co-authored-by: Erik Ernst <[email protected]> (fixed a couple of typos).
sgrekhov
added a commit
to sgrekhov/co19
that referenced
this issue
Jan 3, 2024
eernstg
pushed a commit
that referenced
this issue
Jan 3, 2024
sgrekhov
added a commit
to sgrekhov/co19
that referenced
this issue
Jan 4, 2024
eernstg
pushed a commit
that referenced
this issue
Jan 4, 2024
eernstg
pushed a commit
that referenced
this issue
Jan 4, 2024
sgrekhov
added a commit
to sgrekhov/co19
that referenced
this issue
Jan 5, 2024
copybara-service bot
pushed a commit
to dart-lang/sdk
that referenced
this issue
Jan 5, 2024
2024-01-05 [email protected] Fixes dart-lang/co19#2465. Fix roll failures (dart-lang/co19#2466) 2024-01-04 [email protected] dart-lang/co19#2420. Add object-pattern exhaustiveness tests (dart-lang/co19#2454) 2024-01-04 [email protected] dart-lang/co19#2420. Add relational pattern exhaustiveness tests (dart-lang/co19#2463) 2024-01-03 [email protected] dart-lang/co19#2420. Add missed experimental flags (dart-lang/co19#2462) 2024-01-03 [email protected] Fixes dart-lang/co19#2436. Add test for external constructors with initializers (dart-lang/co19#2461) 2024-01-02 [email protected] dart-lang/co19#2420. Add more dynamic semantics extension type tests (dart-lang/co19#2459) 2024-01-02 [email protected] Fixes dart-lang/co19#2436. Add tests for external and redirecting constructors with initializing formals (dart-lang/co19#2460) 2023-12-29 [email protected] dart-lang/co19#1400. Add object pattern tests for extension types (dart-lang/co19#2456) 2023-12-29 [email protected] dart-lang/co19#1400. Add type inference tests for extension types (dart-lang/co19#2455) 2023-12-29 [email protected] dart-lang/co19#2420. Add switch statement check to the existing exhaustiveness tests (dart-lang/co19#2452) Change-Id: Iee0668f14a35bb3c47aa67b35b1e5c6d8abe8021 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/345040 Reviewed-by: William Hesse <[email protected]> Commit-Queue: Erik Ernst <[email protected]> Reviewed-by: Erik Ernst <[email protected]>
eernstg
pushed a commit
that referenced
this issue
Jan 5, 2024
sgrekhov
added a commit
to sgrekhov/co19
that referenced
this issue
Jan 8, 2024
sgrekhov
added a commit
to sgrekhov/co19
that referenced
this issue
Jan 8, 2024
sgrekhov
added a commit
to sgrekhov/co19
that referenced
this issue
Jan 8, 2024
eernstg
pushed a commit
that referenced
this issue
Jan 8, 2024
eernstg
pushed a commit
that referenced
this issue
Jan 8, 2024
Add constant pattern exhaustiveness tests.
eernstg
pushed a commit
that referenced
this issue
Jan 9, 2024
Add another variable pattern exhaustiveness test
sgrekhov
added a commit
to sgrekhov/co19
that referenced
this issue
Jan 10, 2024
eernstg
pushed a commit
that referenced
this issue
Jan 10, 2024
copybara-service bot
pushed a commit
to dart-lang/sdk
that referenced
this issue
Jan 12, 2024
2024-01-12 [email protected] Fixes dart-lang/co19#2480. Fix typos, add issue numbers (dart-lang/co19#2481) 2024-01-10 [email protected] dart-lang/co19#2477. Rename and reorder existing constants tests for match operators before adding new ones (dart-lang/co19#2478) 2024-01-10 [email protected] dart-lang/co19#2420. Add null-check-pattern tests for extension types (dart-lang/co19#2475) 2024-01-10 [email protected] dart-lang/co19#2119. Add missing experimental flags (dart-lang/co19#2474) 2024-01-10 [email protected] dart-lang/co19#2119. Fix typo and improve error messages in Timer tests (dart-lang/co19#2473) 2024-01-09 [email protected] Fixes dart-lang/co19#2471. Fix timer constructor tests. Add check for microtasks (dart-lang/co19#2472) 2024-01-09 [email protected] Fixes dart-lang/co19#2428. Add `call` member tests for extension types (dart-lang/co19#2438) 2024-01-09 [email protected] Fixes dart-lang/co19#2449. Update positions of analyzer expected errors (dart-lang/co19#2450) 2024-01-09 [email protected] Fixes dart-lang/co19#2440. Add asyncStart/End() to Stream interface tests (dart-lang/co19#2457) 2024-01-09 [email protected] dart-lang/co19#2420. Add another variable pattern exhaustiveness test (dart-lang/co19#2469) 2024-01-08 [email protected] dart-lang/co19#2420. Add constant pattern exhaustiveness tests (dart-lang/co19#2467) 2024-01-08 [email protected] dart-lang/co19#2436. Add expected constant evaluation error for CFE (dart-lang/co19#2470) 2024-01-08 [email protected] dart-lang/co19#2420. Add null-assert pattern exhaustiveness tests (dart-lang/co19#2468) 2024-01-05 [email protected] dart-lang/co19#2420. Add parenthesized pattern exhaustiveness tests (dart-lang/co19#2464) Change-Id: I86862732cca7c042120bf312403279c2cc10c135 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/345960 Reviewed-by: Alexander Thomas <[email protected]> Commit-Queue: Erik Ernst <[email protected]> Reviewed-by: Erik Ernst <[email protected]>
sgrekhov
added a commit
to sgrekhov/co19
that referenced
this issue
Jan 19, 2024
eernstg
pushed a commit
that referenced
this issue
Jan 25, 2024
Exhaustiveness variable tests. Add switch statement check
copybara-service bot
pushed a commit
to dart-lang/sdk
that referenced
this issue
Jan 26, 2024
2024-01-26 [email protected] dart-lang/co19#2485. Add constant evaluation tests for `Set` (dart-lang/co19#2509) 2024-01-26 [email protected] Fixes dart-lang/co19#2507. Fix roll failures (dart-lang/co19#2508) 2024-01-26 [email protected] dart-lang/co19#2485. Add is T constant evaluation tests (dart-lang/co19#2501) 2024-01-26 [email protected] dart-lang/co19#2485. Add `is! T` constant evaluation tests (dart-lang/co19#2504) 2024-01-25 [email protected] Fixes dart-lang/co19#2503. Update exhaustiveness_map_A02_t02.dart according to the flow analysis change (dart-lang/co19#2503) 2024-01-25 [email protected] dart-lang/co19#2420. Exhaustiveness variable tests. Add switch statement check (dart-lang/co19#2453) 2024-01-22 [email protected] dart-lang/co19#2485. Add more constant evaluation tests for record types (dart-lang/co19#2499) 2024-01-22 [email protected] dart-lang/co19#2420. Add more exhaustiveness tests (dart-lang/co19#2498) Change-Id: If4af6cc1df4d44ad01e3578b8524748f67e7bac4 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/348660 Commit-Queue: Erik Ernst <[email protected]> Reviewed-by: Alexander Thomas <[email protected]> Commit-Queue: Alexander Thomas <[email protected]> Reviewed-by: Erik Ernst <[email protected]>
eernstg
pushed a commit
that referenced
this issue
Jan 29, 2024
Add cast-pattern tests for extension types.
sgrekhov
added a commit
to sgrekhov/co19
that referenced
this issue
Jan 30, 2024
copybara-service bot
pushed a commit
to dart-lang/sdk
that referenced
this issue
Feb 5, 2024
2024-02-02 [email protected] Fix dart-lang/co19#2517. Fix wrong test, add experimental flags (dart-lang/co19#2518) 2024-02-02 [email protected] Fix dart-lang/co19#2490. Update incompatible with await tests according to the changed rule (dart-lang/co19#2516) 2024-02-01 [email protected] dart-lang/co19#2420. Add more exhaustiveness tests (dart-lang/co19#2513) 2024-01-31 [email protected] dart-lang/co19#2446. Add additional test for cast pattern (dart-lang/co19#2514) 2024-01-30 [email protected] dart-lang/co19#1399. Add more tests for records (dart-lang/co19#2511) 2024-01-30 [email protected] dart-lang/co19#2485. Update map and list constant literals tests. Add parenthesized for records (dart-lang/co19#2512) 2024-01-29 [email protected] Fixes dart-lang/co19#2490. Add more await tests for extension types (dart-lang/co19#2500) 2024-01-29 [email protected] dart-lang/co19#2119. Fix typo in Subtyping tests description (dart-lang/co19#2510) 2024-01-29 [email protected] Fixes dart-lang/co19#2505. Add more tests for `call` member (dart-lang/co19#2506) 2024-01-29 [email protected] dart-lang/co19#2420. Add cast-pattern tests for extension types (dart-lang/co19#2458) Change-Id: I631705a013f9a77910ae0f0be5a9fea01e7c719f Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/350240 Reviewed-by: Erik Ernst <[email protected]> Commit-Queue: Erik Ernst <[email protected]> Reviewed-by: William Hesse <[email protected]>
sgrekhov
added a commit
to sgrekhov/co19
that referenced
this issue
Feb 15, 2024
Add more exhaustiveness tests
sgrekhov
added a commit
to sgrekhov/co19
that referenced
this issue
Feb 15, 2024
…heck (dart-lang#2453) Exhaustiveness variable tests. Add switch statement check
sgrekhov
added a commit
to sgrekhov/co19
that referenced
this issue
Feb 15, 2024
…#2458) Add cast-pattern tests for extension types.
sgrekhov
added a commit
to sgrekhov/co19
that referenced
this issue
Feb 15, 2024
Add more exhaustiveness tests
sgrekhov
added a commit
to sgrekhov/co19
that referenced
this issue
Feb 15, 2024
Add more exhaustiveness tests
sgrekhov
added a commit
to sgrekhov/co19
that referenced
this issue
Feb 15, 2024
…heck (dart-lang#2453) Exhaustiveness variable tests. Add switch statement check
sgrekhov
added a commit
to sgrekhov/co19
that referenced
this issue
Feb 15, 2024
…#2458) Add cast-pattern tests for extension types.
sgrekhov
added a commit
to sgrekhov/co19
that referenced
this issue
Feb 15, 2024
Add more exhaustiveness tests
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
@sgrekhov, do we have coverage for the following kind of situation?
In a situation where we wish to determine whether or not a given switch (expression or statement) is exhaustive, we should use the extension type erasure of every extension type that we encounter (as an object pattern in a case, as the type of the matched value, in a cast pattern, whatever).
It is important that we consider the extension type erasure and not just the declared superinterface relationships of the extension types, because the actual exhaustiveness property is determined by the run-time types of the objects that we're working with, and that is again approximated at compile time by the extension type erasure (and not in a useful way by the extension type itself).
I don't remember seeing any tests of this nature, but I might have forgotten. It would be great if you could take a look, and put it on the TODO list if we don't have anything.
The text was updated successfully, but these errors were encountered: