blob: 018eb417c1df21ed91376b157a9fc62c72fab0c8 [file] [log] [blame]
// Copyright (c) 2020, 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:async';
const Symbol _enabledExperimentsKey = #dartLanguageEnabledExperiments;
/// The list of enabled Dart language experiments for the current [Zone].
///
/// This can be overridden for a new [Zone] by using [withEnabledExperiments].
List<String> get enabledExperiments =>
Zone.current[_enabledExperimentsKey] as List<String>? ?? const [];
/// Runs [fn] in a [Zone], setting [enabledExperiments] for all code running
/// in that [Zone].
T withEnabledExperiments<T>(T Function() fn, List<String> enabledExperiments) =>
runZoned(fn, zoneValues: {_enabledExperimentsKey: enabledExperiments});