Skip to content

Commit 837d112

Browse files
authored
Put late before final in feature sorting, and do not show late fields as 'read/write' (#2608)
1 parent 5b36489 commit 837d112

File tree

3 files changed

+7
-2
lines changed

3 files changed

+7
-2
lines changed

lib/src/model/feature.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ class Feature implements Privacy {
4747
// TODO(jcollins-g): consider [Comparable]?
4848
final int sortGroup;
4949

50+
static const lateFeature = Feature('late', 1);
5051
static const readOnly = Feature('read-only', 1);
5152
static const finalFeature = Feature('final', 2);
5253
static const writeOnly = Feature('write-only', 2);
@@ -56,7 +57,6 @@ class Feature implements Privacy {
5657
static const inherited = Feature('inherited', 3);
5758
static const inheritedGetter = Feature('inherited-getter', 3);
5859
static const inheritedSetter = Feature('inherited-setter', 3);
59-
static const lateFeature = Feature('late', 3);
6060
static const overrideFeature = Feature('override', 3);
6161
static const overrideGetter = Feature('override-getter', 3);
6262
static const overrideSetter = Feature('override-setter', 3);

lib/src/model/getter_setter_combo.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ mixin GetterSetterCombo on ModelElement {
4242
if (hasExplicitSetter && hasPublicSetter) ...setter.features,
4343
if (readOnly && !isFinal && !isConst) Feature.readOnly,
4444
if (writeOnly) Feature.writeOnly,
45-
if (readWrite) Feature.readWrite,
45+
if (readWrite && !isLate) Feature.readWrite,
4646
};
4747

4848
@override

test/end2end/model_test.dart

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -219,18 +219,22 @@ void main() {
219219
expect(a.modelType.name, equals('dynamic'));
220220
expect(a.isLate, isTrue);
221221
expect(a.features, contains(Feature.lateFeature));
222+
expect(a.features, isNot(contains(Feature.readWrite)));
222223

223224
expect(b.modelType.name, equals('int'));
224225
expect(b.isLate, isTrue);
225226
expect(b.features, contains(Feature.lateFeature));
227+
expect(b.features, isNot(contains(Feature.readWrite)));
226228

227229
expect(cField.modelType.name, equals('dynamic'));
228230
expect(cField.isLate, isTrue);
229231
expect(cField.features, contains(Feature.lateFeature));
232+
expect(cField.features, isNot(contains(Feature.readWrite)));
230233

231234
expect(dField.modelType.name, equals('double'));
232235
expect(dField.isLate, isTrue);
233236
expect(dField.features, contains(Feature.lateFeature));
237+
expect(dField.features, isNot(contains(Feature.readWrite)));
234238
});
235239

236240
test('Late final top level variables', () {
@@ -239,6 +243,7 @@ void main() {
239243
expect(initializeMe.modelType.name, equals('String'));
240244
expect(initializeMe.isLate, isTrue);
241245
expect(initializeMe.features, contains(Feature.lateFeature));
246+
expect(initializeMe.features, isNot(contains(Feature.readWrite)));
242247
});
243248

244249
test('Opt out of Null safety', () {

0 commit comments

Comments
 (0)