Skip to content

Commit 0427342

Browse files
stereotype441commit-bot@chromium.org
authored andcommitted
Add flag for generic metadata
See implementation plan PR: dart-lang/language#1417 Change-Id: Ib75026d7008d313f3dad94d9ccf47e341f945dc9 Bug: dart-lang/language#1297 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/182301 Reviewed-by: Lasse R.H. Nielsen <[email protected]> Reviewed-by: Konstantin Shcheglov <[email protected]> Reviewed-by: Johnni Winther <[email protected]> Commit-Queue: Paul Berry <[email protected]>
1 parent 4b0c228 commit 0427342

File tree

4 files changed

+46
-7
lines changed

4 files changed

+46
-7
lines changed

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,9 @@ abstract class Feature {
2323
/// Feature information for extension methods.
2424
static final extension_methods = ExperimentalFeatures.extension_methods;
2525

26+
/// Feature information for generic metadata.
27+
static final generic_metadata = ExperimentalFeatures.generic_metadata;
28+
2629
/// Feature information for spread collections.
2730
static final spread_collections = ExperimentalFeatures.spread_collections;
2831

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

Lines changed: 31 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ final _knownFeatures = <String, ExperimentalFeature>{
1616
EnableString.control_flow_collections:
1717
ExperimentalFeatures.control_flow_collections,
1818
EnableString.extension_methods: ExperimentalFeatures.extension_methods,
19+
EnableString.generic_metadata: ExperimentalFeatures.generic_metadata,
1920
EnableString.non_nullable: ExperimentalFeatures.non_nullable,
2021
EnableString.nonfunction_type_aliases:
2122
ExperimentalFeatures.nonfunction_type_aliases,
@@ -38,6 +39,9 @@ class EnableString {
3839
/// String to enable the experiment "extension-methods"
3940
static const String extension_methods = 'extension-methods';
4041

42+
/// String to enable the experiment "generic-metadata"
43+
static const String generic_metadata = 'generic-metadata';
44+
4145
/// String to enable the experiment "non-nullable"
4246
static const String non_nullable = 'non-nullable';
4347

@@ -91,8 +95,19 @@ class ExperimentalFeatures {
9195
releaseVersion: Version.parse('2.6.0'),
9296
);
9397

94-
static final non_nullable = ExperimentalFeature(
98+
static final generic_metadata = ExperimentalFeature(
9599
index: 3,
100+
enableString: EnableString.generic_metadata,
101+
isEnabledByDefault: IsEnabledByDefault.generic_metadata,
102+
isExpired: IsExpired.generic_metadata,
103+
documentation:
104+
'Allow annotations to accept type arguments; also allow generic function types as type arguments',
105+
experimentalReleaseVersion: null,
106+
releaseVersion: null,
107+
);
108+
109+
static final non_nullable = ExperimentalFeature(
110+
index: 4,
96111
enableString: EnableString.non_nullable,
97112
isEnabledByDefault: IsEnabledByDefault.non_nullable,
98113
isExpired: IsExpired.non_nullable,
@@ -102,7 +117,7 @@ class ExperimentalFeatures {
102117
);
103118

104119
static final nonfunction_type_aliases = ExperimentalFeature(
105-
index: 4,
120+
index: 5,
106121
enableString: EnableString.nonfunction_type_aliases,
107122
isEnabledByDefault: IsEnabledByDefault.nonfunction_type_aliases,
108123
isExpired: IsExpired.nonfunction_type_aliases,
@@ -112,7 +127,7 @@ class ExperimentalFeatures {
112127
);
113128

114129
static final set_literals = ExperimentalFeature(
115-
index: 5,
130+
index: 6,
116131
enableString: EnableString.set_literals,
117132
isEnabledByDefault: IsEnabledByDefault.set_literals,
118133
isExpired: IsExpired.set_literals,
@@ -122,7 +137,7 @@ class ExperimentalFeatures {
122137
);
123138

124139
static final spread_collections = ExperimentalFeature(
125-
index: 6,
140+
index: 7,
126141
enableString: EnableString.spread_collections,
127142
isEnabledByDefault: IsEnabledByDefault.spread_collections,
128143
isExpired: IsExpired.spread_collections,
@@ -132,7 +147,7 @@ class ExperimentalFeatures {
132147
);
133148

134149
static final triple_shift = ExperimentalFeature(
135-
index: 7,
150+
index: 8,
136151
enableString: EnableString.triple_shift,
137152
isEnabledByDefault: IsEnabledByDefault.triple_shift,
138153
isExpired: IsExpired.triple_shift,
@@ -142,7 +157,7 @@ class ExperimentalFeatures {
142157
);
143158

144159
static final value_class = ExperimentalFeature(
145-
index: 8,
160+
index: 9,
146161
enableString: EnableString.value_class,
147162
isEnabledByDefault: IsEnabledByDefault.value_class,
148163
isExpired: IsExpired.value_class,
@@ -152,7 +167,7 @@ class ExperimentalFeatures {
152167
);
153168

154169
static final variance = ExperimentalFeature(
155-
index: 9,
170+
index: 10,
156171
enableString: EnableString.variance,
157172
isEnabledByDefault: IsEnabledByDefault.variance,
158173
isExpired: IsExpired.variance,
@@ -174,6 +189,9 @@ class IsEnabledByDefault {
174189
/// Default state of the experiment "extension-methods"
175190
static const bool extension_methods = true;
176191

192+
/// Default state of the experiment "generic-metadata"
193+
static const bool generic_metadata = false;
194+
177195
/// Default state of the experiment "non-nullable"
178196
static const bool non_nullable = true;
179197

@@ -209,6 +227,9 @@ class IsExpired {
209227
/// Expiration status of the experiment "extension-methods"
210228
static const bool extension_methods = false;
211229

230+
/// Expiration status of the experiment "generic-metadata"
231+
static const bool generic_metadata = false;
232+
212233
/// Expiration status of the experiment "non-nullable"
213234
static const bool non_nullable = false;
214235

@@ -244,6 +265,9 @@ mixin _CurrentState {
244265
bool get extension_methods =>
245266
isEnabled(ExperimentalFeatures.extension_methods);
246267

268+
/// Current state for the flag "generic-metadata"
269+
bool get generic_metadata => isEnabled(ExperimentalFeatures.generic_metadata);
270+
247271
/// Current state for the flag "non-nullable"
248272
bool get non_nullable => isEnabled(ExperimentalFeatures.non_nullable);
249273

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ enum ExperimentalFlag {
1616
constantUpdate2018,
1717
controlFlowCollections,
1818
extensionMethods,
19+
genericMetadata,
1920
nonNullable,
2021
nonfunctionTypeAliases,
2122
setLiterals,
@@ -30,6 +31,7 @@ const Version enableAlternativeInvalidationStrategyVersion =
3031
const Version enableConstantUpdate2018Version = const Version(2, 0);
3132
const Version enableControlFlowCollectionsVersion = const Version(2, 0);
3233
const Version enableExtensionMethodsVersion = const Version(2, 6);
34+
const Version enableGenericMetadataVersion = const Version(2, 12);
3335
const Version enableNonNullableVersion = const Version(2, 12);
3436
const Version enableNonfunctionTypeAliasesVersion = const Version(2, 12);
3537
const Version enableSetLiteralsVersion = const Version(2, 0);
@@ -48,6 +50,8 @@ ExperimentalFlag parseExperimentalFlag(String flag) {
4850
return ExperimentalFlag.controlFlowCollections;
4951
case "extension-methods":
5052
return ExperimentalFlag.extensionMethods;
53+
case "generic-metadata":
54+
return ExperimentalFlag.genericMetadata;
5155
case "non-nullable":
5256
return ExperimentalFlag.nonNullable;
5357
case "nonfunction-type-aliases":
@@ -71,6 +75,7 @@ const Map<ExperimentalFlag, bool> defaultExperimentalFlags = {
7175
ExperimentalFlag.constantUpdate2018: true,
7276
ExperimentalFlag.controlFlowCollections: true,
7377
ExperimentalFlag.extensionMethods: true,
78+
ExperimentalFlag.genericMetadata: false,
7479
ExperimentalFlag.nonNullable: true,
7580
ExperimentalFlag.nonfunctionTypeAliases: false,
7681
ExperimentalFlag.setLiterals: true,
@@ -85,6 +90,7 @@ const Map<ExperimentalFlag, bool> expiredExperimentalFlags = {
8590
ExperimentalFlag.constantUpdate2018: true,
8691
ExperimentalFlag.controlFlowCollections: true,
8792
ExperimentalFlag.extensionMethods: false,
93+
ExperimentalFlag.genericMetadata: false,
8894
ExperimentalFlag.nonNullable: false,
8995
ExperimentalFlag.nonfunctionTypeAliases: false,
9096
ExperimentalFlag.setLiterals: true,
@@ -99,6 +105,7 @@ const Map<ExperimentalFlag, Version> experimentEnabledVersion = {
99105
ExperimentalFlag.constantUpdate2018: const Version(2, 0),
100106
ExperimentalFlag.controlFlowCollections: const Version(2, 0),
101107
ExperimentalFlag.extensionMethods: const Version(2, 6),
108+
ExperimentalFlag.genericMetadata: const Version(2, 12),
102109
ExperimentalFlag.nonNullable: const Version(2, 12),
103110
ExperimentalFlag.nonfunctionTypeAliases: const Version(2, 12),
104111
ExperimentalFlag.setLiterals: const Version(2, 0),
@@ -113,6 +120,7 @@ const Map<ExperimentalFlag, Version> experimentReleasedVersion = {
113120
ExperimentalFlag.constantUpdate2018: const Version(2, 0),
114121
ExperimentalFlag.controlFlowCollections: const Version(2, 0),
115122
ExperimentalFlag.extensionMethods: const Version(2, 6),
123+
ExperimentalFlag.genericMetadata: const Version(2, 12),
116124
ExperimentalFlag.nonNullable: const Version(2, 10),
117125
ExperimentalFlag.nonfunctionTypeAliases: const Version(2, 12),
118126
ExperimentalFlag.setLiterals: const Version(2, 0),

tools/experimental_features.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,10 @@ features:
115115

116116
value-class:
117117
help: "Value class"
118+
119+
generic-metadata:
120+
help: "Allow annotations to accept type arguments; also allow generic function types as type arguments"
121+
118122
#
119123
# Flags below this line are shipped, retired, or rejected, cannot be specified
120124
# on the command line, and will eventually be removed.

0 commit comments

Comments
 (0)