51003df5c3
Centralize diagnostics for illegal constructor/method bodies in
ErrorVerifier instead of reporting them from the AST builder and Fasta
error conversion.
This consolidates several overlapping checks and fixes inconsistent
error locations (for example, reporting at `external`/`const` instead of
at `{`/`=>`).
Key changes:
- Remove constructor-body validation from AstBuilder (const bodies, const
factories) and stop converting the corresponding Fasta codes to analyzer
diagnostics to avoid duplicate reporting.
- Add a single verifier entry point that validates whether a body is allowed
based on:
- factory vs generative
- const vs non-const
- external vs non-external
- redirecting vs non-redirecting
- Reuse the same validation for both regular constructors and primary
constructors, and report at the body token for stable source ranges.
- Add a shared check for `external` functions/methods with block or expression
bodies, and apply it consistently to top-level functions and class members.
- Align expectation files to the new, body-based error ranges and remove
formatter-crash classification where the new reporting no longer triggers it.
Change-Id: Ie91ea08a7b5505d3e6443b12317c45359bac1c2d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/477780
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Paul Berry <paulberry@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
This directory contains tests of the language and core library implementations. For more information, see https://github.com/dart-lang/sdk/tree/main/docs/Testing.md.