Add a toString() method for FeatureSet
Change-Id: Ie15939d50410c7a9a4490a29e332be7d9bd5f0af
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/101073
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
diff --git a/pkg/analyzer/lib/src/dart/analysis/experiments.dart b/pkg/analyzer/lib/src/dart/analysis/experiments.dart
index 53b4c7d..2cfdf21 100644
--- a/pkg/analyzer/lib/src/dart/analysis/experiments.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/experiments.dart
@@ -231,6 +231,9 @@
FeatureSet restrictToVersion(Version version) =>
ExperimentStatus._(restrictEnableFlagsToVersion(_enableFlags, version));
+ @override
+ String toString() => experimentStatusToString(_enableFlags);
+
/// Returns a list of strings suitable for passing to
/// [ExperimentStatus.fromStrings].
List<String> toStringList() => experimentStatusToStringList(this);
diff --git a/pkg/analyzer/lib/src/dart/analysis/experiments_impl.dart b/pkg/analyzer/lib/src/dart/analysis/experiments_impl.dart
index ebf565c..81a437b 100644
--- a/pkg/analyzer/lib/src/dart/analysis/experiments_impl.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/experiments_impl.dart
@@ -46,6 +46,17 @@
return flags;
}
+/// Pretty-prints the given set of enable flags as a set of feature names.
+String experimentStatusToString(List<bool> enableFlags) {
+ var featuresInSet = <String>[];
+ for (var feature in _knownFeatures.values) {
+ if (enableFlags[feature.index]) {
+ featuresInSet.add(feature.enableString);
+ }
+ }
+ return 'FeatureSet{${featuresInSet.join(', ')}}';
+}
+
/// Converts the flags in [status] to a list of strings suitable for
/// passing to [_decodeFlags].
List<String> experimentStatusToStringList(ExperimentStatus status) {
@@ -264,7 +275,8 @@
assert(index != null),
assert(isEnabledByDefault
? firstSupportedVersion != null
- : firstSupportedVersion == null);
+ : firstSupportedVersion == null),
+ assert(enableString != null);
/// The string to disable the feature.
String get disableString => 'no-$enableString';