1c571a12fa
Fixes https://github.com/dart-lang/sdk/issues/47964 TEST=CQ Change-Id: I4ee57bc5739835824b0052bd9470a0d52ccf161b Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/229948 Reviewed-by: Devon Carew <devoncarew@google.com> Commit-Queue: Ben Konyi <bkonyi@google.com>
46 lines
1.4 KiB
Dart
46 lines
1.4 KiB
Dart
// Copyright (c) 2021, the Dart project authors. Please see the AUTHORS file
|
|
// for details. All rights reserved. Use of this source code is governed by a
|
|
// BSD-style license that can be found in the LICENSE file.
|
|
|
|
import 'dart:io';
|
|
import 'dart:isolate';
|
|
|
|
import 'package:pub_semver/pub_semver.dart';
|
|
import 'package:yaml/yaml.dart' as yaml;
|
|
|
|
/// The unexpired experiments from `experimental_features.yaml` that have an
|
|
/// associated `validation` program.
|
|
Future<List<Experiment>> experimentsWithValidation() async {
|
|
final url = (await Isolate.resolvePackageUri(
|
|
Uri.parse('package:dartdev/dartdev.dart')))!
|
|
.resolve('../../../tools/experimental_features.yaml');
|
|
final experiments =
|
|
yaml.loadYaml(File.fromUri(url).readAsStringSync(), sourceUrl: url);
|
|
return [
|
|
for (final e in experiments['features'].entries)
|
|
if (e.value['expired'] != true && e.value['validation'] != null)
|
|
Experiment(
|
|
e.key,
|
|
e.value['validation'],
|
|
tryParseVersion(e.value['enabledIn']),
|
|
tryParseVersion(e.value['experimentalReleaseVersion']),
|
|
)
|
|
];
|
|
}
|
|
|
|
Version? tryParseVersion(String? version) =>
|
|
version == null ? null : Version.parse(version);
|
|
|
|
class Experiment {
|
|
final String name;
|
|
final String validation;
|
|
final Version? enabledIn;
|
|
final Version? experimentalReleaseVersion;
|
|
Experiment(
|
|
this.name,
|
|
this.validation,
|
|
this.enabledIn,
|
|
this.experimentalReleaseVersion,
|
|
);
|
|
}
|