-
Notifications
You must be signed in to change notification settings - Fork 1.7k
Closed
Labels
P1A high priority bug; for example, a single project is unusable or has many test failuresA high priority bug; for example, a single project is unusable or has many test failuresarea-languageDart language related items (some items might be better tracked at github.com/dart-lang/language).Dart language related items (some items might be better tracked at github.com/dart-lang/language).implementationTrack the implementation of a specific feature (use on area-meta issue, not issues for each tool)Track the implementation of a specific feature (use on area-meta issue, not issues for each tool)
Milestone
Description
A number of situations that are defined to be compile-time errors by the spec were not adequately checked in Dart 2.0. Most known cases have been, or will be, implemented for Dart 2.1. Any such newly implemented compile-time error that was detected by neither the analyzer nor the CFE in 2.0 is a breaking bug-fix.
This issue aims to track our overall process of integrating and rolling out the known breaking bug-fixes.
Some breaking bug-fixes (e.g. #33022) have already been re-classified as warnings, as specified in #34349. Our known breaking bug-fixes which have not been re-classified are:
- Interface checks and mixin overrides (Fasta allows unsound abstract override #32014 and Fasta: Missing override checks for mixins #34235). These checks are necessary for soundness, so they can probably not be re-classified. At the same time, the risk of existing code breaking because of these checks is high, as these override relationships can sometimes be quite subtle. A violation has already been found (and fixed) in
dartdoc
. - Relaxed generic interface conflict check (Fasta accepts conflicting interface type arguments when contravariant #34574). This was a work-around for existing super mixin code in Flutter. The flutter code has been fixed. This change is probably safe.
- Type arguments after named constructor with implicit new (Analyzer/Frontend inconsistency - type arguments after named constructor #34403). Making this a warning would be sound (as it is just unsupported syntax), but doing so will hinder future implementation of the feature, as discussed in the issue.
- Redirection from
const
to non-const
constructor (CFE should not allow redirection from const to non-const constructor #34161). Unlikely to occur in existing code, as such a situation would probably fail either in the back-end or at runtime. FutureOr
in animplements
clause (Fasta: FutureOr in a class header can be an error #33744). Very unlikely to occur in existing code.- Setter with the same name as the enclosing class (It is an error to have a setter with the same name as the enclosing class #34225). Unlikely, but also harmless to re-classify.
- Import prefix hidden by class member (CFE fails to report error for import prefix hidden by class member (when used to name a type) #34498).
Action items:
- Decide which (if any) of these errors should be re-classified as warnings, and add them to the list in Change errors to warnings #34349.
- Decide how to go about rolling these changes (in particular the first in the list) into internal code. Maybe we want to test it before landing the change (compiling all the code should suffice). Maybe we want to land the checks as warnings first, then up them to errors after fixing existing code.
- Fix all existing internal code.
- Assess impact on external code.
- Land the remaining fixes.
- Describe all of these changes in the release notes for 2.1.
- Mail flutter-dev, dart-misc, and dart-announce with breaking fix announcement.
Metadata
Metadata
Assignees
Labels
P1A high priority bug; for example, a single project is unusable or has many test failuresA high priority bug; for example, a single project is unusable or has many test failuresarea-languageDart language related items (some items might be better tracked at github.com/dart-lang/language).Dart language related items (some items might be better tracked at github.com/dart-lang/language).implementationTrack the implementation of a specific feature (use on area-meta issue, not issues for each tool)Track the implementation of a specific feature (use on area-meta issue, not issues for each tool)