Skip to content

Front end: Implementation of new static analysis for return statements #41800

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

Closed
eernstg opened this issue May 7, 2020 · 0 comments
Closed
Labels
legacy-area-front-end Legacy: Use area-dart-model instead. NNBD Issues related to NNBD Release

Comments

@eernstg
Copy link
Member

eernstg commented May 7, 2020

The null-safety specification updates in dart-lang/language#941 and dart-lang/language#948 have been unfolded as part of the migration of tests/language/invalid_returns. This issue is concerned with updating the CFE correspondingly.

The following tests have a missing compile-time error:

language/invalid_returns/async_invalid_return_00_test
language/invalid_returns/async_invalid_return_01_test
language/invalid_returns/async_invalid_return_02_test
language/invalid_returns/async_invalid_return_03_test
language/invalid_returns/async_invalid_return_04_test
language/invalid_returns/async_invalid_return_05_test
language/invalid_returns/async_invalid_return_08_test
language/invalid_returns/async_invalid_return_11_test
language/invalid_returns/async_invalid_return_14_test
language/invalid_returns/async_invalid_return_17_test
language/invalid_returns/async_invalid_return_20_test
language/invalid_returns/async_invalid_return_23_test
language/invalid_returns/async_invalid_return_24_test
language/invalid_returns/async_invalid_return_25_test
language/invalid_returns/async_invalid_return_32_test
language/invalid_returns/async_invalid_return_33_test
language/invalid_returns/async_invalid_return_34_test
language/invalid_returns/async_invalid_return_35_test
language/invalid_returns/async_invalid_return_36_test
language/invalid_returns/async_invalid_return_37_test
language/invalid_returns/async_invalid_return_41_test
language/invalid_returns/async_invalid_return_45_test
language/invalid_returns/async_invalid_return_47_test
language/invalid_returns/async_invalid_return_52_test
language/invalid_returns/async_invalid_return_53_test
language/invalid_returns/async_invalid_return_54_test
language/invalid_returns/async_invalid_return_55_test
language/invalid_returns/async_invalid_return_56_test
language/invalid_returns/async_invalid_return_57_test
language/invalid_returns/async_invalid_return_58_test
language/invalid_returns/async_invalid_return_59_test
language/invalid_returns/sync_invalid_return_00_test
language/invalid_returns/sync_invalid_return_01_test
language/invalid_returns/sync_invalid_return_02_test
language/invalid_returns/sync_invalid_return_03_test
language/invalid_returns/sync_invalid_return_04_test
language/invalid_returns/sync_invalid_return_05_test

The main reasons for the above is that the rules about return; are now more strict, and a void expression can no longer be returned in an async function with return type Future<Null> (and several similar types).

The following test incurs some compile-time errors that shouldn't be there:

language/invalid_returns/async_valid_returns_test

The reason for this is that the old rules required Future<flatten(S)> to be assignable to the return type where S is the type of the returned expression, and the new rules require S to be assignable to the future value type of the function, or flatten(S) to be a subtype thereof.

@eernstg eernstg added legacy-area-analyzer Use area-devexp instead. NNBD Issues related to NNBD Release legacy-area-front-end Legacy: Use area-dart-model instead. and removed legacy-area-analyzer Use area-devexp instead. labels May 7, 2020
@eernstg eernstg changed the title Analyzer: Implementation of new static analysis for return statements Front end: Implementation of new static analysis for return statements May 7, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
legacy-area-front-end Legacy: Use area-dart-model instead. NNBD Issues related to NNBD Release
Projects
None yet
Development

No branches or pull requests

1 participant