dart-sdk/pkg/front_end
Paul Berry 96a346fc5e Front end: move anonymous mixin sealed/final inference to checkSupertypes phase.
Previously this step happened during `buildOutlineNodes`, but since
`buildOutlineNodes` happens in source order, this means that anonymous
mixins would only get their sealed and final attributes properly
inferred if they appeared *after* their immediate supertypes in source
order.  By moving this step to `checkSupertypes`, we ensure that the
computation is correct regardless of source order, because
`checkSupertypes` happens in class hierarchy order.

Fixes #52048.

Bug: https://github.com/dart-lang/sdk/issues/52048
Change-Id: Ib9f1f3dafded88681a26f09e4d21dfd44e70dfd3
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/297901
Commit-Queue: Paul Berry <paulberry@google.com>
Reviewed-by: Chloe Stefantsova <cstefantsova@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
2023-04-25 12:26:38 +00:00
..
benchmarks
lib Front end: move anonymous mixin sealed/final inference to checkSupertypes phase. 2023-04-25 12:26:38 +00:00
outline_extraction_testcases [flip-modifiers] Make tests and outline extraction tests mixins. 2023-03-08 16:11:30 +00:00
parser_testcases [cfe] Put patterns in the scopes of their declared variables 2023-04-24 07:30:00 +00:00
test [CFE] Add instrumenter that can produce flame graph output 2023-04-25 08:34:01 +00:00
testcases Front end: move anonymous mixin sealed/final inference to checkSupertypes phase. 2023-04-25 12:26:38 +00:00
tool [CFE] Allow counting method calls when instrumenting 2023-04-25 10:11:30 +00:00
analysis_options.yaml
analysis_options_no_lints.yaml
error_recovery.yaml
LICENSE
messages.status [js] Restrict imports in strict mode. 2023-04-18 17:21:27 +00:00
messages.yaml [analyzer/cfe] Update abstract sealed error message. 2023-04-20 19:54:30 +00:00
OWNERS
PRESUBMIT.py
pubspec.yaml Add dependency overrides for pkg/front_end 2023-04-18 12:01:51 +00:00
README.md
testing.json
testing_with_lints.json

Front end for Dart

This package provides a low-level API for use by compiler back ends that wish to implement the Dart language. It is intended for eventual use by dev_compiler, dart2js, and the Dart VM. In addition, it will share implementation details with the analyzer package--this will be accomplished by having the analyzer package import (and re-export) parts of this package's private implementation.

End-users should use the dart analyze command-line tool to analyze their Dart code.

Integrators that want to write tools that analyze Dart code should use the analyzer package.

Note: A previous version of this package was published on pub.dev. It has now been marked DISCONTINUED as it is not intended for direct consumption, as per the notes above.