Skip to content

Commit 7b578ca

Browse files
stereotype441Commit Bot
authored and
Commit Bot
committed
Add experimental flag inference-update-2.
This is initially intended to support type promotion of fields (dart-lang/language#2020). However, if time allows, we may roll other type inference improvements into it. Change-Id: Ie4548ceafe671a9a328a11ad950a4e70f4d3ca41 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/244766 Reviewed-by: Devon Carew <[email protected]> Reviewed-by: Konstantin Shcheglov <[email protected]> Commit-Queue: Paul Berry <[email protected]>
1 parent 5729605 commit 7b578ca

File tree

4 files changed

+60
-12
lines changed

4 files changed

+60
-12
lines changed

pkg/analyzer/lib/src/dart/analysis/driver.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ import 'package:meta/meta.dart';
8484
/// TODO(scheglov) Clean up the list of implicitly analyzed files.
8585
class AnalysisDriver implements AnalysisDriverGeneric {
8686
/// The version of data format, should be incremented on every format change.
87-
static const int DATA_VERSION = 218;
87+
static const int DATA_VERSION = 219;
8888

8989
/// The number of exception contexts allowed to write. Once this field is
9090
/// zero, we stop writing any new exception contexts in this process.

pkg/analyzer/lib/src/dart/analysis/experiments.g.dart

Lines changed: 35 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ final _knownFeatures = <String, ExperimentalFeature>{
2222
EnableString.extension_types: ExperimentalFeatures.extension_types,
2323
EnableString.generic_metadata: ExperimentalFeatures.generic_metadata,
2424
EnableString.inference_update_1: ExperimentalFeatures.inference_update_1,
25+
EnableString.inference_update_2: ExperimentalFeatures.inference_update_2,
2526
EnableString.macros: ExperimentalFeatures.macros,
2627
EnableString.named_arguments_anywhere:
2728
ExperimentalFeatures.named_arguments_anywhere,
@@ -67,6 +68,9 @@ class EnableString {
6768
/// String to enable the experiment "inference-update-1"
6869
static const String inference_update_1 = 'inference-update-1';
6970

71+
/// String to enable the experiment "inference-update-2"
72+
static const String inference_update_2 = 'inference-update-2';
73+
7074
/// String to enable the experiment "macros"
7175
static const String macros = 'macros';
7276

@@ -196,8 +200,18 @@ class ExperimentalFeatures {
196200
releaseVersion: null,
197201
);
198202

199-
static final macros = ExperimentalFeature(
203+
static final inference_update_2 = ExperimentalFeature(
200204
index: 9,
205+
enableString: EnableString.inference_update_2,
206+
isEnabledByDefault: IsEnabledByDefault.inference_update_2,
207+
isExpired: IsExpired.inference_update_2,
208+
documentation: 'Type promotion for fields',
209+
experimentalReleaseVersion: null,
210+
releaseVersion: null,
211+
);
212+
213+
static final macros = ExperimentalFeature(
214+
index: 10,
201215
enableString: EnableString.macros,
202216
isEnabledByDefault: IsEnabledByDefault.macros,
203217
isExpired: IsExpired.macros,
@@ -207,7 +221,7 @@ class ExperimentalFeatures {
207221
);
208222

209223
static final named_arguments_anywhere = ExperimentalFeature(
210-
index: 10,
224+
index: 11,
211225
enableString: EnableString.named_arguments_anywhere,
212226
isEnabledByDefault: IsEnabledByDefault.named_arguments_anywhere,
213227
isExpired: IsExpired.named_arguments_anywhere,
@@ -217,7 +231,7 @@ class ExperimentalFeatures {
217231
);
218232

219233
static final non_nullable = ExperimentalFeature(
220-
index: 11,
234+
index: 12,
221235
enableString: EnableString.non_nullable,
222236
isEnabledByDefault: IsEnabledByDefault.non_nullable,
223237
isExpired: IsExpired.non_nullable,
@@ -227,7 +241,7 @@ class ExperimentalFeatures {
227241
);
228242

229243
static final nonfunction_type_aliases = ExperimentalFeature(
230-
index: 12,
244+
index: 13,
231245
enableString: EnableString.nonfunction_type_aliases,
232246
isEnabledByDefault: IsEnabledByDefault.nonfunction_type_aliases,
233247
isExpired: IsExpired.nonfunction_type_aliases,
@@ -237,7 +251,7 @@ class ExperimentalFeatures {
237251
);
238252

239253
static final set_literals = ExperimentalFeature(
240-
index: 13,
254+
index: 14,
241255
enableString: EnableString.set_literals,
242256
isEnabledByDefault: IsEnabledByDefault.set_literals,
243257
isExpired: IsExpired.set_literals,
@@ -247,7 +261,7 @@ class ExperimentalFeatures {
247261
);
248262

249263
static final spread_collections = ExperimentalFeature(
250-
index: 14,
264+
index: 15,
251265
enableString: EnableString.spread_collections,
252266
isEnabledByDefault: IsEnabledByDefault.spread_collections,
253267
isExpired: IsExpired.spread_collections,
@@ -257,7 +271,7 @@ class ExperimentalFeatures {
257271
);
258272

259273
static final super_parameters = ExperimentalFeature(
260-
index: 15,
274+
index: 16,
261275
enableString: EnableString.super_parameters,
262276
isEnabledByDefault: IsEnabledByDefault.super_parameters,
263277
isExpired: IsExpired.super_parameters,
@@ -267,7 +281,7 @@ class ExperimentalFeatures {
267281
);
268282

269283
static final test_experiment = ExperimentalFeature(
270-
index: 16,
284+
index: 17,
271285
enableString: EnableString.test_experiment,
272286
isEnabledByDefault: IsEnabledByDefault.test_experiment,
273287
isExpired: IsExpired.test_experiment,
@@ -278,7 +292,7 @@ class ExperimentalFeatures {
278292
);
279293

280294
static final triple_shift = ExperimentalFeature(
281-
index: 17,
295+
index: 18,
282296
enableString: EnableString.triple_shift,
283297
isEnabledByDefault: IsEnabledByDefault.triple_shift,
284298
isExpired: IsExpired.triple_shift,
@@ -288,7 +302,7 @@ class ExperimentalFeatures {
288302
);
289303

290304
static final value_class = ExperimentalFeature(
291-
index: 18,
305+
index: 19,
292306
enableString: EnableString.value_class,
293307
isEnabledByDefault: IsEnabledByDefault.value_class,
294308
isExpired: IsExpired.value_class,
@@ -298,7 +312,7 @@ class ExperimentalFeatures {
298312
);
299313

300314
static final variance = ExperimentalFeature(
301-
index: 19,
315+
index: 20,
302316
enableString: EnableString.variance,
303317
isEnabledByDefault: IsEnabledByDefault.variance,
304318
isExpired: IsExpired.variance,
@@ -338,6 +352,9 @@ class IsEnabledByDefault {
338352
/// Default state of the experiment "inference-update-1"
339353
static const bool inference_update_1 = false;
340354

355+
/// Default state of the experiment "inference-update-2"
356+
static const bool inference_update_2 = false;
357+
341358
/// Default state of the experiment "macros"
342359
static const bool macros = false;
343360

@@ -403,6 +420,9 @@ class IsExpired {
403420
/// Expiration status of the experiment "inference-update-1"
404421
static const bool inference_update_1 = false;
405422

423+
/// Expiration status of the experiment "inference-update-2"
424+
static const bool inference_update_2 = false;
425+
406426
/// Expiration status of the experiment "macros"
407427
static const bool macros = false;
408428

@@ -470,6 +490,10 @@ mixin _CurrentState {
470490
bool get inference_update_1 =>
471491
isEnabled(ExperimentalFeatures.inference_update_1);
472492

493+
/// Current state for the flag "inference-update-2"
494+
bool get inference_update_2 =>
495+
isEnabled(ExperimentalFeatures.inference_update_2);
496+
473497
/// Current state for the flag "macros"
474498
bool get macros => isEnabled(ExperimentalFeatures.macros);
475499

pkg/front_end/lib/src/api_prototype/experimental_flags_generated.dart

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,14 @@ class ExperimentalFlag {
131131
experimentEnabledVersion: const Version(2, 18),
132132
experimentReleasedVersion: const Version(2, 18));
133133

134+
static const ExperimentalFlag inferenceUpdate2 = const ExperimentalFlag(
135+
name: 'inference-update-2',
136+
isEnabledByDefault: false,
137+
isExpired: false,
138+
enabledVersion: const Version(2, 18),
139+
experimentEnabledVersion: const Version(2, 18),
140+
experimentReleasedVersion: const Version(2, 18));
141+
134142
static const ExperimentalFlag macros = const ExperimentalFlag(
135143
name: 'macros',
136144
isEnabledByDefault: false,
@@ -306,6 +314,10 @@ class GlobalFeatures {
306314
GlobalFeature get inferenceUpdate1 => _inferenceUpdate1 ??=
307315
_computeGlobalFeature(ExperimentalFlag.inferenceUpdate1);
308316

317+
GlobalFeature? _inferenceUpdate2;
318+
GlobalFeature get inferenceUpdate2 => _inferenceUpdate2 ??=
319+
_computeGlobalFeature(ExperimentalFlag.inferenceUpdate2);
320+
309321
GlobalFeature? _macros;
310322
GlobalFeature get macros =>
311323
_macros ??= _computeGlobalFeature(ExperimentalFlag.macros);
@@ -415,6 +427,11 @@ class LibraryFeatures {
415427
_inferenceUpdate1 ??= globalFeatures._computeLibraryFeature(
416428
ExperimentalFlag.inferenceUpdate1, canonicalUri, libraryVersion);
417429

430+
LibraryFeature? _inferenceUpdate2;
431+
LibraryFeature get inferenceUpdate2 =>
432+
_inferenceUpdate2 ??= globalFeatures._computeLibraryFeature(
433+
ExperimentalFlag.inferenceUpdate2, canonicalUri, libraryVersion);
434+
418435
LibraryFeature? _macros;
419436
LibraryFeature get macros =>
420437
_macros ??= globalFeatures._computeLibraryFeature(
@@ -497,6 +514,8 @@ ExperimentalFlag? parseExperimentalFlag(String flag) {
497514
return ExperimentalFlag.genericMetadata;
498515
case "inference-update-1":
499516
return ExperimentalFlag.inferenceUpdate1;
517+
case "inference-update-2":
518+
return ExperimentalFlag.inferenceUpdate2;
500519
case "macros":
501520
return ExperimentalFlag.macros;
502521
case "named-arguments-anywhere":
@@ -544,6 +563,8 @@ final Map<ExperimentalFlag, bool> defaultExperimentalFlags = {
544563
ExperimentalFlag.genericMetadata.isEnabledByDefault,
545564
ExperimentalFlag.inferenceUpdate1:
546565
ExperimentalFlag.inferenceUpdate1.isEnabledByDefault,
566+
ExperimentalFlag.inferenceUpdate2:
567+
ExperimentalFlag.inferenceUpdate2.isEnabledByDefault,
547568
ExperimentalFlag.macros: ExperimentalFlag.macros.isEnabledByDefault,
548569
ExperimentalFlag.namedArgumentsAnywhere:
549570
ExperimentalFlag.namedArgumentsAnywhere.isEnabledByDefault,

tools/experimental_features.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,9 @@ features:
128128
inference-update-1:
129129
help: "Horizontal type inference for function expressions passed to generic invocations."
130130

131+
inference-update-2:
132+
help: "Type promotion for fields"
133+
131134
# Experiment flag only used for testing.
132135
test-experiment:
133136
help: >-

0 commit comments

Comments
 (0)