blob: 5f4d622d345b38bfc40598a357d41a98667dd816 [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 'package:package_config/package_config.dart';
import 'package:path/path.dart' as p;
import '../util/detaching_future.dart';
import '../util/package_config.dart';
/// A comment which forces the language version to be that of the current
/// packages default.
///
/// If the cwd is not a package, this returns an empty string which ends up
/// defaulting to the current sdk version.
Future<String> get rootPackageLanguageVersionComment =>
_rootPackageLanguageVersionComment.asFuture;
final _rootPackageLanguageVersionComment = DetachingFuture(() async {
var packageConfig = await loadPackageConfigUri(await packageConfigUri);
var rootPackage = packageConfig.packageOf(Uri.file(p.absolute('foo.dart')));
if (rootPackage == null) return '';
return '// @dart=${rootPackage.languageVersion}';
}());