Skip to content

Commit d79b9d8

Browse files
stereotype441Commit Queue
authored and
Commit Queue
committed
Add experiment flag inference-update-3.
I plan to use this to guard my work on dart-lang/language#3471. Bug: dart-lang/language#3471 Change-Id: I49afae7260c14b8c6b646ccc0ee39efae3891c34 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/338649 Reviewed-by: Michael Thomsen <[email protected]> Reviewed-by: Konstantin Shcheglov <[email protected]> Commit-Queue: Paul Berry <[email protected]> Reviewed-by: Johnni Winther <[email protected]>
1 parent 9c0b1e0 commit d79b9d8

File tree

6 files changed

+80
-18
lines changed

6 files changed

+80
-18
lines changed

pkg/_fe_analyzer_shared/lib/src/experiments/flags.dart

+7
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,13 @@ enum ExperimentalFlag {
8080
experimentEnabledVersion: const Version(3, 2),
8181
experimentReleasedVersion: const Version(3, 2)),
8282

83+
inferenceUpdate3(
84+
name: 'inference-update-3',
85+
isEnabledByDefault: false,
86+
isExpired: false,
87+
experimentEnabledVersion: defaultLanguageVersion,
88+
experimentReleasedVersion: defaultLanguageVersion),
89+
8390
inlineClass(
8491
name: 'inline-class',
8592
isEnabledByDefault: true,

pkg/analyzer/lib/dart/analysis/features.dart

+3
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,9 @@ abstract class Feature {
4040
/// Feature information for inference-update-2.
4141
static final inference_update_2 = ExperimentalFeatures.inference_update_2;
4242

43+
/// Feature information for inference-update-3.
44+
static final inference_update_3 = ExperimentalFeatures.inference_update_3;
45+
4346
/// Feature information for inline classes.
4447
static final inline_class = ExperimentalFeatures.inline_class;
4548

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ import 'package:analyzer/src/utilities/uri_cache.dart';
8888
// TODO(scheglov): Clean up the list of implicitly analyzed files.
8989
class AnalysisDriver implements AnalysisDriverGeneric {
9090
/// The version of data format, should be incremented on every format change.
91-
static const int DATA_VERSION = 322;
91+
static const int DATA_VERSION = 323;
9292

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

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

+42-17
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ final _knownFeatures = <String, ExperimentalFeature>{
2727
EnableString.generic_metadata: ExperimentalFeatures.generic_metadata,
2828
EnableString.inference_update_1: ExperimentalFeatures.inference_update_1,
2929
EnableString.inference_update_2: ExperimentalFeatures.inference_update_2,
30+
EnableString.inference_update_3: ExperimentalFeatures.inference_update_3,
3031
EnableString.inline_class: ExperimentalFeatures.inline_class,
3132
EnableString.macros: ExperimentalFeatures.macros,
3233
EnableString.named_arguments_anywhere:
@@ -81,6 +82,9 @@ class EnableString {
8182
/// String to enable the experiment "inference-update-2"
8283
static const String inference_update_2 = 'inference-update-2';
8384

85+
/// String to enable the experiment "inference-update-3"
86+
static const String inference_update_3 = 'inference-update-3';
87+
8488
/// String to enable the experiment "inline-class"
8589
static const String inline_class = 'inline-class';
8690

@@ -238,8 +242,19 @@ class ExperimentalFeatures {
238242
releaseVersion: Version.parse('3.2.0'),
239243
);
240244

241-
static final inline_class = ExperimentalFeature(
245+
static final inference_update_3 = ExperimentalFeature(
242246
index: 10,
247+
enableString: EnableString.inference_update_3,
248+
isEnabledByDefault: IsEnabledByDefault.inference_update_3,
249+
isExpired: IsExpired.inference_update_3,
250+
documentation:
251+
'Better handling of coercions, conditional expressions, and switch expressions.',
252+
experimentalReleaseVersion: null,
253+
releaseVersion: null,
254+
);
255+
256+
static final inline_class = ExperimentalFeature(
257+
index: 11,
243258
enableString: EnableString.inline_class,
244259
isEnabledByDefault: IsEnabledByDefault.inline_class,
245260
isExpired: IsExpired.inline_class,
@@ -249,7 +264,7 @@ class ExperimentalFeatures {
249264
);
250265

251266
static final macros = ExperimentalFeature(
252-
index: 11,
267+
index: 12,
253268
enableString: EnableString.macros,
254269
isEnabledByDefault: IsEnabledByDefault.macros,
255270
isExpired: IsExpired.macros,
@@ -259,7 +274,7 @@ class ExperimentalFeatures {
259274
);
260275

261276
static final named_arguments_anywhere = ExperimentalFeature(
262-
index: 12,
277+
index: 13,
263278
enableString: EnableString.named_arguments_anywhere,
264279
isEnabledByDefault: IsEnabledByDefault.named_arguments_anywhere,
265280
isExpired: IsExpired.named_arguments_anywhere,
@@ -269,7 +284,7 @@ class ExperimentalFeatures {
269284
);
270285

271286
static final native_assets = ExperimentalFeature(
272-
index: 13,
287+
index: 14,
273288
enableString: EnableString.native_assets,
274289
isEnabledByDefault: IsEnabledByDefault.native_assets,
275290
isExpired: IsExpired.native_assets,
@@ -279,7 +294,7 @@ class ExperimentalFeatures {
279294
);
280295

281296
static final non_nullable = ExperimentalFeature(
282-
index: 14,
297+
index: 15,
283298
enableString: EnableString.non_nullable,
284299
isEnabledByDefault: IsEnabledByDefault.non_nullable,
285300
isExpired: IsExpired.non_nullable,
@@ -289,7 +304,7 @@ class ExperimentalFeatures {
289304
);
290305

291306
static final nonfunction_type_aliases = ExperimentalFeature(
292-
index: 15,
307+
index: 16,
293308
enableString: EnableString.nonfunction_type_aliases,
294309
isEnabledByDefault: IsEnabledByDefault.nonfunction_type_aliases,
295310
isExpired: IsExpired.nonfunction_type_aliases,
@@ -299,7 +314,7 @@ class ExperimentalFeatures {
299314
);
300315

301316
static final patterns = ExperimentalFeature(
302-
index: 16,
317+
index: 17,
303318
enableString: EnableString.patterns,
304319
isEnabledByDefault: IsEnabledByDefault.patterns,
305320
isExpired: IsExpired.patterns,
@@ -309,7 +324,7 @@ class ExperimentalFeatures {
309324
);
310325

311326
static final records = ExperimentalFeature(
312-
index: 17,
327+
index: 18,
313328
enableString: EnableString.records,
314329
isEnabledByDefault: IsEnabledByDefault.records,
315330
isExpired: IsExpired.records,
@@ -319,7 +334,7 @@ class ExperimentalFeatures {
319334
);
320335

321336
static final resource_identifiers = ExperimentalFeature(
322-
index: 18,
337+
index: 19,
323338
enableString: EnableString.resource_identifiers,
324339
isEnabledByDefault: IsEnabledByDefault.resource_identifiers,
325340
isExpired: IsExpired.resource_identifiers,
@@ -329,7 +344,7 @@ class ExperimentalFeatures {
329344
);
330345

331346
static final sealed_class = ExperimentalFeature(
332-
index: 19,
347+
index: 20,
333348
enableString: EnableString.sealed_class,
334349
isEnabledByDefault: IsEnabledByDefault.sealed_class,
335350
isExpired: IsExpired.sealed_class,
@@ -339,7 +354,7 @@ class ExperimentalFeatures {
339354
);
340355

341356
static final set_literals = ExperimentalFeature(
342-
index: 20,
357+
index: 21,
343358
enableString: EnableString.set_literals,
344359
isEnabledByDefault: IsEnabledByDefault.set_literals,
345360
isExpired: IsExpired.set_literals,
@@ -349,7 +364,7 @@ class ExperimentalFeatures {
349364
);
350365

351366
static final spread_collections = ExperimentalFeature(
352-
index: 21,
367+
index: 22,
353368
enableString: EnableString.spread_collections,
354369
isEnabledByDefault: IsEnabledByDefault.spread_collections,
355370
isExpired: IsExpired.spread_collections,
@@ -359,7 +374,7 @@ class ExperimentalFeatures {
359374
);
360375

361376
static final super_parameters = ExperimentalFeature(
362-
index: 22,
377+
index: 23,
363378
enableString: EnableString.super_parameters,
364379
isEnabledByDefault: IsEnabledByDefault.super_parameters,
365380
isExpired: IsExpired.super_parameters,
@@ -369,7 +384,7 @@ class ExperimentalFeatures {
369384
);
370385

371386
static final test_experiment = ExperimentalFeature(
372-
index: 23,
387+
index: 24,
373388
enableString: EnableString.test_experiment,
374389
isEnabledByDefault: IsEnabledByDefault.test_experiment,
375390
isExpired: IsExpired.test_experiment,
@@ -380,7 +395,7 @@ class ExperimentalFeatures {
380395
);
381396

382397
static final triple_shift = ExperimentalFeature(
383-
index: 24,
398+
index: 25,
384399
enableString: EnableString.triple_shift,
385400
isEnabledByDefault: IsEnabledByDefault.triple_shift,
386401
isExpired: IsExpired.triple_shift,
@@ -390,7 +405,7 @@ class ExperimentalFeatures {
390405
);
391406

392407
static final unnamed_libraries = ExperimentalFeature(
393-
index: 25,
408+
index: 26,
394409
enableString: EnableString.unnamed_libraries,
395410
isEnabledByDefault: IsEnabledByDefault.unnamed_libraries,
396411
isExpired: IsExpired.unnamed_libraries,
@@ -400,7 +415,7 @@ class ExperimentalFeatures {
400415
);
401416

402417
static final variance = ExperimentalFeature(
403-
index: 26,
418+
index: 27,
404419
enableString: EnableString.variance,
405420
isEnabledByDefault: IsEnabledByDefault.variance,
406421
isExpired: IsExpired.variance,
@@ -443,6 +458,9 @@ class IsEnabledByDefault {
443458
/// Default state of the experiment "inference-update-2"
444459
static const bool inference_update_2 = true;
445460

461+
/// Default state of the experiment "inference-update-3"
462+
static const bool inference_update_3 = false;
463+
446464
/// Default state of the experiment "inline-class"
447465
static const bool inline_class = true;
448466

@@ -529,6 +547,9 @@ class IsExpired {
529547
/// Expiration status of the experiment "inference-update-2"
530548
static const bool inference_update_2 = false;
531549

550+
/// Expiration status of the experiment "inference-update-3"
551+
static const bool inference_update_3 = false;
552+
532553
/// Expiration status of the experiment "inline-class"
533554
static const bool inline_class = false;
534555

@@ -618,6 +639,10 @@ mixin _CurrentState {
618639
bool get inference_update_2 =>
619640
isEnabled(ExperimentalFeatures.inference_update_2);
620641

642+
/// Current state for the flag "inference-update-3"
643+
bool get inference_update_3 =>
644+
isEnabled(ExperimentalFeatures.inference_update_3);
645+
621646
/// Current state for the flag "inline-class"
622647
bool get inline_class => isEnabled(ExperimentalFeatures.inline_class);
623648

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

+24
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,14 @@ class ExperimentalFlag {
139139
experimentEnabledVersion: const Version(3, 2),
140140
experimentReleasedVersion: const Version(3, 2));
141141

142+
static const ExperimentalFlag inferenceUpdate3 = const ExperimentalFlag(
143+
name: 'inference-update-3',
144+
isEnabledByDefault: false,
145+
isExpired: false,
146+
enabledVersion: defaultLanguageVersion,
147+
experimentEnabledVersion: defaultLanguageVersion,
148+
experimentReleasedVersion: defaultLanguageVersion);
149+
142150
static const ExperimentalFlag inlineClass = const ExperimentalFlag(
143151
name: 'inline-class',
144152
isEnabledByDefault: true,
@@ -366,6 +374,10 @@ class GlobalFeatures {
366374
GlobalFeature get inferenceUpdate2 => _inferenceUpdate2 ??=
367375
_computeGlobalFeature(ExperimentalFlag.inferenceUpdate2);
368376

377+
GlobalFeature? _inferenceUpdate3;
378+
GlobalFeature get inferenceUpdate3 => _inferenceUpdate3 ??=
379+
_computeGlobalFeature(ExperimentalFlag.inferenceUpdate3);
380+
369381
GlobalFeature? _inlineClass;
370382
GlobalFeature get inlineClass =>
371383
_inlineClass ??= _computeGlobalFeature(ExperimentalFlag.inlineClass);
@@ -504,6 +516,11 @@ class LibraryFeatures {
504516
_inferenceUpdate2 ??= globalFeatures._computeLibraryFeature(
505517
ExperimentalFlag.inferenceUpdate2, canonicalUri, libraryVersion);
506518

519+
LibraryFeature? _inferenceUpdate3;
520+
LibraryFeature get inferenceUpdate3 =>
521+
_inferenceUpdate3 ??= globalFeatures._computeLibraryFeature(
522+
ExperimentalFlag.inferenceUpdate3, canonicalUri, libraryVersion);
523+
507524
LibraryFeature? _inlineClass;
508525
LibraryFeature get inlineClass =>
509526
_inlineClass ??= globalFeatures._computeLibraryFeature(
@@ -617,6 +634,8 @@ class LibraryFeatures {
617634
return inferenceUpdate1;
618635
case shared.ExperimentalFlag.inferenceUpdate2:
619636
return inferenceUpdate2;
637+
case shared.ExperimentalFlag.inferenceUpdate3:
638+
return inferenceUpdate3;
620639
case shared.ExperimentalFlag.inlineClass:
621640
return inlineClass;
622641
case shared.ExperimentalFlag.macros:
@@ -682,6 +701,8 @@ ExperimentalFlag? parseExperimentalFlag(String flag) {
682701
return ExperimentalFlag.inferenceUpdate1;
683702
case "inference-update-2":
684703
return ExperimentalFlag.inferenceUpdate2;
704+
case "inference-update-3":
705+
return ExperimentalFlag.inferenceUpdate3;
685706
case "inline-class":
686707
return ExperimentalFlag.inlineClass;
687708
case "macros":
@@ -743,6 +764,8 @@ final Map<ExperimentalFlag, bool> defaultExperimentalFlags = {
743764
ExperimentalFlag.inferenceUpdate1.isEnabledByDefault,
744765
ExperimentalFlag.inferenceUpdate2:
745766
ExperimentalFlag.inferenceUpdate2.isEnabledByDefault,
767+
ExperimentalFlag.inferenceUpdate3:
768+
ExperimentalFlag.inferenceUpdate3.isEnabledByDefault,
746769
ExperimentalFlag.inlineClass: ExperimentalFlag.inlineClass.isEnabledByDefault,
747770
ExperimentalFlag.macros: ExperimentalFlag.macros.isEnabledByDefault,
748771
ExperimentalFlag.namedArgumentsAnywhere:
@@ -796,6 +819,7 @@ const Map<shared.ExperimentalFlag, ExperimentalFlag> sharedExperimentalFlags = {
796819
shared.ExperimentalFlag.genericMetadata: ExperimentalFlag.genericMetadata,
797820
shared.ExperimentalFlag.inferenceUpdate1: ExperimentalFlag.inferenceUpdate1,
798821
shared.ExperimentalFlag.inferenceUpdate2: ExperimentalFlag.inferenceUpdate2,
822+
shared.ExperimentalFlag.inferenceUpdate3: ExperimentalFlag.inferenceUpdate3,
799823
shared.ExperimentalFlag.inlineClass: ExperimentalFlag.inlineClass,
800824
shared.ExperimentalFlag.macros: ExperimentalFlag.macros,
801825
shared.ExperimentalFlag.namedArgumentsAnywhere:

tools/experimental_features.yaml

+3
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,9 @@ features:
128128
resource-identifiers:
129129
help: "Output arguments used by static functions."
130130

131+
inference-update-3:
132+
help: "Better handling of coercions, conditional expressions, and switch expressions."
133+
131134
# Experiment flag only used for testing.
132135
test-experiment:
133136
help: >-

0 commit comments

Comments
 (0)