Add DartSdk.languageVersion
Bug: https://github.com/dart-lang/build/issues/2763#issuecomment-666707445 Change-Id: I8232bd395abc9efea0e5c27716450d6a5442b3bb Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/156489 Commit-Queue: Konstantin Shcheglov <scheglov@google.com> Reviewed-by: William Hesse <whesse@google.com> Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
This commit is contained in:
committed by
commit-bot@chromium.org
parent
a99edb8ac5
commit
ebd5b622ba
@@ -470,13 +470,14 @@ class Driver implements ServerStarter {
|
||||
MulticastInstrumentationService(allInstrumentationServices);
|
||||
|
||||
instrumentationService.logVersion(
|
||||
results[TRAIN_USING] != null
|
||||
? 'training-0'
|
||||
: _readUuid(instrumentationService),
|
||||
analysisServerOptions.clientId,
|
||||
analysisServerOptions.clientVersion,
|
||||
PROTOCOL_VERSION,
|
||||
defaultSdk.sdkVersion);
|
||||
results[TRAIN_USING] != null
|
||||
? 'training-0'
|
||||
: _readUuid(instrumentationService),
|
||||
analysisServerOptions.clientId,
|
||||
analysisServerOptions.clientVersion,
|
||||
PROTOCOL_VERSION,
|
||||
defaultSdk.languageVersion.toString(),
|
||||
);
|
||||
AnalysisEngine.instance.instrumentationService = instrumentationService;
|
||||
|
||||
int diagnosticServerPort;
|
||||
|
||||
@@ -1591,7 +1591,7 @@ abstract class ContextManagerTest with ResourceProviderMixin {
|
||||
resourceProvider.newFolder(projPath);
|
||||
// Create an SDK in the mock file system.
|
||||
MockSdk(resourceProvider: resourceProvider);
|
||||
var sdkManager = DartSdkManager(convertPath('/sdk'));
|
||||
var sdkManager = DartSdkManager(convertPath(sdkRoot));
|
||||
manager = ContextManagerImpl(
|
||||
resourceProvider,
|
||||
sdkManager,
|
||||
|
||||
@@ -29,6 +29,8 @@ class AnalysisDomainGetErrorsTest
|
||||
Directory(path.join(sdkPath, 'lib', 'async')).createSync(recursive: true);
|
||||
Directory(path.join(sdkPath, 'lib', 'fake')).createSync(recursive: true);
|
||||
|
||||
File(path.join(sdkPath, 'version')).writeAsStringSync('2.10.0');
|
||||
|
||||
File(path.join(sdkPath, 'lib', 'core', 'core.dart')).writeAsStringSync(r'''
|
||||
library dart.core;
|
||||
import 'dart:async';
|
||||
|
||||
@@ -22,6 +22,7 @@ import 'package:analyzer/src/summary2/link.dart';
|
||||
import 'package:analyzer/src/summary2/linked_element_factory.dart';
|
||||
import 'package:analyzer/src/summary2/reference.dart';
|
||||
import 'package:meta/meta.dart';
|
||||
import 'package:pub_semver/pub_semver.dart';
|
||||
import 'package:yaml/yaml.dart';
|
||||
|
||||
/// Build summary for SDK at the given [sdkPath].
|
||||
@@ -44,7 +45,11 @@ Uint8List buildSdkSummary({
|
||||
var file = resourceProvider.getFile(embedderYamlPath);
|
||||
var content = file.readAsStringSync();
|
||||
var map = loadYaml(content) as YamlMap;
|
||||
var embedderSdk = EmbedderSdk(resourceProvider, {file.parent: map});
|
||||
var embedderSdk = EmbedderSdk(
|
||||
resourceProvider,
|
||||
{file.parent: map},
|
||||
languageVersion: sdk.languageVersion,
|
||||
);
|
||||
for (var library in embedderSdk.sdkLibraries) {
|
||||
var uriStr = library.shortName;
|
||||
if (sdk.libraryMap.getLibrary(uriStr) == null) {
|
||||
@@ -60,6 +65,7 @@ Uint8List buildSdkSummary({
|
||||
return _Builder(
|
||||
sdk.context,
|
||||
sdk.allowedExperimentsJson,
|
||||
sdk.languageVersion,
|
||||
librarySources,
|
||||
).build();
|
||||
}
|
||||
@@ -73,11 +79,13 @@ class _Builder {
|
||||
final List<LinkInputLibrary> inputLibraries = [];
|
||||
|
||||
AllowedExperiments allowedExperiments;
|
||||
Version languageVersion;
|
||||
final PackageBundleAssembler bundleAssembler = PackageBundleAssembler();
|
||||
|
||||
_Builder(
|
||||
this.context,
|
||||
this.allowedExperimentsJson,
|
||||
this.languageVersion,
|
||||
this.librarySources,
|
||||
) {
|
||||
allowedExperiments = _parseAllowedExperiments(allowedExperimentsJson);
|
||||
@@ -100,6 +108,10 @@ class _Builder {
|
||||
bundle2: linkResult.bundle,
|
||||
sdk: PackageBundleSdkBuilder(
|
||||
allowedExperimentsJson: allowedExperimentsJson,
|
||||
languageVersion: LinkedLanguageVersionBuilder(
|
||||
major: languageVersion.major,
|
||||
minor: languageVersion.minor,
|
||||
),
|
||||
),
|
||||
).toBuffer();
|
||||
|
||||
|
||||
@@ -18,6 +18,7 @@ import 'package:analyzer/src/generated/sdk_io.dart';
|
||||
import 'package:analyzer/src/generated/source.dart';
|
||||
import 'package:analyzer/src/generated/source_io.dart' show FileBasedSource;
|
||||
import 'package:analyzer/src/summary/idl.dart' show PackageBundle;
|
||||
import 'package:pub_semver/src/version.dart';
|
||||
import 'package:yaml/yaml.dart';
|
||||
|
||||
export 'package:analyzer/src/context/builder.dart' show EmbedderYamlLocator;
|
||||
@@ -38,12 +39,14 @@ class EmbedderSdk extends AbstractDartSdk {
|
||||
embedderYamls?.forEach(_processEmbedderYaml);
|
||||
}
|
||||
|
||||
// TODO(danrubel) Determine SDK version
|
||||
@override
|
||||
String get allowedExperimentsJson {
|
||||
return null;
|
||||
}
|
||||
|
||||
@override
|
||||
Version get languageVersion => throw UnimplementedError();
|
||||
|
||||
@override
|
||||
String get sdkVersion => '0';
|
||||
|
||||
|
||||
@@ -225,6 +225,20 @@ class ContextBuilder {
|
||||
resourceProvider: resourceProvider);
|
||||
}
|
||||
|
||||
DartSdk folderSdk;
|
||||
{
|
||||
String sdkPath = sdkManager.defaultSdkDirectory;
|
||||
SdkDescription description = SdkDescription(sdkPath);
|
||||
folderSdk = sdkManager.getSdk(description, () {
|
||||
var sdk = FolderBasedDartSdk(
|
||||
resourceProvider,
|
||||
resourceProvider.getFolder(sdkPath),
|
||||
);
|
||||
sdk.analysisOptions = analysisOptions;
|
||||
return sdk;
|
||||
});
|
||||
}
|
||||
|
||||
if (workspace != null) {
|
||||
var partialSourceFactory = workspace.createSourceFactory(null, null);
|
||||
var embedderYamlSource = partialSourceFactory.forUri(
|
||||
@@ -237,22 +251,17 @@ class ContextBuilder {
|
||||
EmbedderYamlLocator.forLibFolder(libFolder);
|
||||
Map<Folder, YamlMap> embedderMap = locator.embedderYamls;
|
||||
if (embedderMap.isNotEmpty) {
|
||||
EmbedderSdk embedderSdk = EmbedderSdk(resourceProvider, embedderMap);
|
||||
EmbedderSdk embedderSdk = EmbedderSdk(
|
||||
resourceProvider,
|
||||
embedderMap,
|
||||
languageVersion: folderSdk.languageVersion,
|
||||
);
|
||||
return embedderSdk;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
String sdkPath = sdkManager.defaultSdkDirectory;
|
||||
SdkDescription description = SdkDescription(sdkPath);
|
||||
return sdkManager.getSdk(description, () {
|
||||
var sdk = FolderBasedDartSdk(
|
||||
resourceProvider,
|
||||
resourceProvider.getFolder(sdkPath),
|
||||
);
|
||||
sdk.analysisOptions = analysisOptions;
|
||||
return sdk;
|
||||
});
|
||||
return folderSdk;
|
||||
}
|
||||
|
||||
/// Return the analysis options that should be used to analyze code in the
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
// BSD-style license that can be found in the LICENSE file.
|
||||
|
||||
import 'dart:collection';
|
||||
import 'dart:io' as io;
|
||||
|
||||
import 'package:analyzer/dart/analysis/features.dart';
|
||||
import 'package:analyzer/dart/analysis/utilities.dart';
|
||||
@@ -14,8 +15,16 @@ import 'package:analyzer/src/generated/engine.dart';
|
||||
import 'package:analyzer/src/generated/java_engine_io.dart';
|
||||
import 'package:analyzer/src/generated/sdk.dart';
|
||||
import 'package:analyzer/src/generated/source_io.dart';
|
||||
import 'package:pub_semver/pub_semver.dart';
|
||||
import 'package:yaml/yaml.dart';
|
||||
|
||||
Version languageVersionFromSdkVersion(String sdkVersionStr) {
|
||||
var sdkVersionParts = sdkVersionStr.split('.');
|
||||
var sdkVersionMajor = int.parse(sdkVersionParts[0]);
|
||||
var sdkVersionMinor = int.parse(sdkVersionParts[1]);
|
||||
return Version(sdkVersionMajor, sdkVersionMinor, 0);
|
||||
}
|
||||
|
||||
/// An abstract implementation of a Dart SDK in which the available libraries
|
||||
/// are stored in a library map. Subclasses are responsible for populating the
|
||||
/// library map.
|
||||
@@ -197,11 +206,21 @@ class EmbedderSdk extends AbstractDartSdk {
|
||||
static const String _DART_COLON_PREFIX = 'dart:';
|
||||
|
||||
static const String _EMBEDDED_LIB_MAP_KEY = 'embedded_libs';
|
||||
|
||||
Version _languageVersion;
|
||||
|
||||
final Map<String, String> _urlMappings = HashMap<String, String>();
|
||||
|
||||
/// TODO(scheglov) Make [languageVersion] required.
|
||||
/// https://github.com/dart-lang/sdk/issues/42890
|
||||
EmbedderSdk(
|
||||
ResourceProvider resourceProvider, Map<Folder, YamlMap> embedderYamls) {
|
||||
ResourceProvider resourceProvider,
|
||||
Map<Folder, YamlMap> embedderYamls, {
|
||||
Version languageVersion,
|
||||
}) {
|
||||
this.resourceProvider = resourceProvider;
|
||||
this._languageVersion =
|
||||
languageVersion ?? languageVersionFromSdkVersion(io.Platform.version);
|
||||
embedderYamls?.forEach(_processEmbedderYaml);
|
||||
}
|
||||
|
||||
@@ -221,6 +240,9 @@ class EmbedderSdk extends AbstractDartSdk {
|
||||
return null;
|
||||
}
|
||||
|
||||
@override
|
||||
Version get languageVersion => _languageVersion;
|
||||
|
||||
@override
|
||||
// TODO(danrubel) Determine SDK version
|
||||
String get sdkVersion => '0';
|
||||
@@ -364,6 +386,9 @@ class FolderBasedDartSdk extends AbstractDartSdk {
|
||||
/// discovered.
|
||||
String _sdkVersion;
|
||||
|
||||
/// The cached language version of this SDK.
|
||||
Version _languageVersion;
|
||||
|
||||
/// The file containing the pub executable.
|
||||
File _pubExecutable;
|
||||
|
||||
@@ -395,6 +420,18 @@ class FolderBasedDartSdk extends AbstractDartSdk {
|
||||
Folder get docDirectory =>
|
||||
_sdkDirectory.getChildAssumingFolder(_DOCS_DIRECTORY_NAME);
|
||||
|
||||
@override
|
||||
Version get languageVersion {
|
||||
if (_languageVersion == null) {
|
||||
var sdkVersionStr = _sdkDirectory
|
||||
.getChildAssumingFile(_VERSION_FILE_NAME)
|
||||
.readAsStringSync();
|
||||
_languageVersion = languageVersionFromSdkVersion(sdkVersionStr);
|
||||
}
|
||||
|
||||
return _languageVersion;
|
||||
}
|
||||
|
||||
/// Return the directory within the SDK directory that contains the libraries.
|
||||
Folder get libraryDirectory {
|
||||
return _libraryDirectory ??=
|
||||
|
||||
@@ -8,6 +8,7 @@ import 'package:analyzer/dart/ast/ast.dart';
|
||||
import 'package:analyzer/dart/ast/visitor.dart';
|
||||
import 'package:analyzer/src/generated/engine.dart' show AnalysisContext;
|
||||
import 'package:analyzer/src/generated/source.dart' show Source;
|
||||
import 'package:pub_semver/pub_semver.dart';
|
||||
|
||||
/// A Dart SDK installed in a specified location.
|
||||
abstract class DartSdk {
|
||||
@@ -34,6 +35,12 @@ abstract class DartSdk {
|
||||
/// Return the analysis context used for all of the sources in this [DartSdk].
|
||||
AnalysisContext get context;
|
||||
|
||||
/// Return the language version of this SDK, or throws an exception.
|
||||
///
|
||||
/// The language version has only major/minor components, the patch number
|
||||
/// is always zero, because the patch number does not change the language.
|
||||
Version get languageVersion;
|
||||
|
||||
/// Return a list containing all of the libraries defined in this SDK.
|
||||
List<SdkLibrary> get sdkLibraries;
|
||||
|
||||
|
||||
@@ -17792,6 +17792,7 @@ class PackageBundleSdkBuilder extends Object
|
||||
with _PackageBundleSdkMixin
|
||||
implements idl.PackageBundleSdk {
|
||||
String _allowedExperimentsJson;
|
||||
LinkedLanguageVersionBuilder _languageVersion;
|
||||
|
||||
@override
|
||||
String get allowedExperimentsJson => _allowedExperimentsJson ??= '';
|
||||
@@ -17801,27 +17802,49 @@ class PackageBundleSdkBuilder extends Object
|
||||
this._allowedExperimentsJson = value;
|
||||
}
|
||||
|
||||
PackageBundleSdkBuilder({String allowedExperimentsJson})
|
||||
: _allowedExperimentsJson = allowedExperimentsJson;
|
||||
@override
|
||||
LinkedLanguageVersionBuilder get languageVersion => _languageVersion;
|
||||
|
||||
/// The language version of the SDK.
|
||||
set languageVersion(LinkedLanguageVersionBuilder value) {
|
||||
this._languageVersion = value;
|
||||
}
|
||||
|
||||
PackageBundleSdkBuilder(
|
||||
{String allowedExperimentsJson,
|
||||
LinkedLanguageVersionBuilder languageVersion})
|
||||
: _allowedExperimentsJson = allowedExperimentsJson,
|
||||
_languageVersion = languageVersion;
|
||||
|
||||
/// Flush [informative] data recursively.
|
||||
void flushInformative() {}
|
||||
void flushInformative() {
|
||||
_languageVersion?.flushInformative();
|
||||
}
|
||||
|
||||
/// Accumulate non-[informative] data into [signature].
|
||||
void collectApiSignature(api_sig.ApiSignature signature) {
|
||||
signature.addString(this._allowedExperimentsJson ?? '');
|
||||
signature.addBool(this._languageVersion != null);
|
||||
this._languageVersion?.collectApiSignature(signature);
|
||||
}
|
||||
|
||||
fb.Offset finish(fb.Builder fbBuilder) {
|
||||
fb.Offset offset_allowedExperimentsJson;
|
||||
fb.Offset offset_languageVersion;
|
||||
if (_allowedExperimentsJson != null) {
|
||||
offset_allowedExperimentsJson =
|
||||
fbBuilder.writeString(_allowedExperimentsJson);
|
||||
}
|
||||
if (_languageVersion != null) {
|
||||
offset_languageVersion = _languageVersion.finish(fbBuilder);
|
||||
}
|
||||
fbBuilder.startTable();
|
||||
if (offset_allowedExperimentsJson != null) {
|
||||
fbBuilder.addOffset(0, offset_allowedExperimentsJson);
|
||||
}
|
||||
if (offset_languageVersion != null) {
|
||||
fbBuilder.addOffset(1, offset_languageVersion);
|
||||
}
|
||||
return fbBuilder.endTable();
|
||||
}
|
||||
}
|
||||
@@ -17843,6 +17866,7 @@ class _PackageBundleSdkImpl extends Object
|
||||
_PackageBundleSdkImpl(this._bc, this._bcOffset);
|
||||
|
||||
String _allowedExperimentsJson;
|
||||
idl.LinkedLanguageVersion _languageVersion;
|
||||
|
||||
@override
|
||||
String get allowedExperimentsJson {
|
||||
@@ -17850,6 +17874,13 @@ class _PackageBundleSdkImpl extends Object
|
||||
const fb.StringReader().vTableGet(_bc, _bcOffset, 0, '');
|
||||
return _allowedExperimentsJson;
|
||||
}
|
||||
|
||||
@override
|
||||
idl.LinkedLanguageVersion get languageVersion {
|
||||
_languageVersion ??=
|
||||
const _LinkedLanguageVersionReader().vTableGet(_bc, _bcOffset, 1, null);
|
||||
return _languageVersion;
|
||||
}
|
||||
}
|
||||
|
||||
abstract class _PackageBundleSdkMixin implements idl.PackageBundleSdk {
|
||||
@@ -17859,12 +17890,16 @@ abstract class _PackageBundleSdkMixin implements idl.PackageBundleSdk {
|
||||
if (allowedExperimentsJson != '') {
|
||||
_result["allowedExperimentsJson"] = allowedExperimentsJson;
|
||||
}
|
||||
if (languageVersion != null) {
|
||||
_result["languageVersion"] = languageVersion.toJson();
|
||||
}
|
||||
return _result;
|
||||
}
|
||||
|
||||
@override
|
||||
Map<String, Object> toMap() => {
|
||||
"allowedExperimentsJson": allowedExperimentsJson,
|
||||
"languageVersion": languageVersion,
|
||||
};
|
||||
|
||||
@override
|
||||
|
||||
@@ -1274,6 +1274,9 @@ table PackageBundle {
|
||||
table PackageBundleSdk {
|
||||
/// The content of the `allowed_experiments.json` from SDK.
|
||||
allowedExperimentsJson:string (id: 0);
|
||||
|
||||
/// The language version of the SDK.
|
||||
languageVersion:LinkedLanguageVersion (id: 1);
|
||||
}
|
||||
|
||||
/// Summary information about a top-level type inference error.
|
||||
|
||||
@@ -1912,6 +1912,10 @@ abstract class PackageBundleSdk extends base.SummaryClass {
|
||||
/// The content of the `allowed_experiments.json` from SDK.
|
||||
@Id(0)
|
||||
String get allowedExperimentsJson;
|
||||
|
||||
/// The language version of the SDK.
|
||||
@Id(1)
|
||||
LinkedLanguageVersion get languageVersion;
|
||||
}
|
||||
|
||||
/// Summary information about a top-level type inference error.
|
||||
|
||||
@@ -10,11 +10,12 @@ import 'package:analyzer/src/generated/source.dart'
|
||||
show DartUriResolver, Source, SourceFactory;
|
||||
import 'package:analyzer/src/summary/idl.dart';
|
||||
import 'package:analyzer/src/summary/package_bundle_reader.dart';
|
||||
import 'package:pub_semver/pub_semver.dart';
|
||||
|
||||
/// An implementation of [DartSdk] which provides analysis results for `dart:`
|
||||
/// libraries from the given summary file. This implementation is limited and
|
||||
/// suitable only for command-line tools, but not for IDEs - it does not
|
||||
/// implement [sdkLibraries], [sdkVersion], [uris] and [fromFileUri].
|
||||
/// implement [sdkLibraries], [uris] and [fromFileUri].
|
||||
class SummaryBasedDartSdk implements DartSdk {
|
||||
SummaryDataStore _dataStore;
|
||||
InSummaryUriResolver _uriResolver;
|
||||
@@ -41,7 +42,7 @@ class SummaryBasedDartSdk implements DartSdk {
|
||||
|
||||
@override
|
||||
String get allowedExperimentsJson {
|
||||
return _bundle.sdk?.allowedExperimentsJson;
|
||||
return _bundle.sdk.allowedExperimentsJson;
|
||||
}
|
||||
|
||||
/// Return the [PackageBundle] for this SDK, not `null`.
|
||||
@@ -57,6 +58,12 @@ class SummaryBasedDartSdk implements DartSdk {
|
||||
return _analysisContext;
|
||||
}
|
||||
|
||||
@override
|
||||
Version get languageVersion {
|
||||
var version = _bundle.sdk.languageVersion;
|
||||
return Version(version.major, version.minor, 0);
|
||||
}
|
||||
|
||||
@override
|
||||
List<SdkLibrary> get sdkLibraries {
|
||||
throw UnimplementedError();
|
||||
|
||||
@@ -5,10 +5,12 @@
|
||||
import 'package:analyzer/file_system/file_system.dart';
|
||||
import 'package:analyzer/file_system/memory_file_system.dart';
|
||||
import 'package:analyzer/src/context/context.dart';
|
||||
import 'package:analyzer/src/dart/sdk/sdk.dart';
|
||||
import 'package:analyzer/src/generated/engine.dart';
|
||||
import 'package:analyzer/src/generated/sdk.dart';
|
||||
import 'package:analyzer/src/generated/source.dart';
|
||||
import 'package:meta/meta.dart';
|
||||
import 'package:pub_semver/src/version.dart';
|
||||
|
||||
const String sdkRoot = '/sdk';
|
||||
|
||||
@@ -1084,6 +1086,8 @@ class MockSdk implements DartSdk {
|
||||
@override
|
||||
final List<SdkLibrary> sdkLibraries = [];
|
||||
|
||||
File _versionFile;
|
||||
|
||||
/// Optional [additionalLibraries] should have unique URIs, and paths in
|
||||
/// their units are relative (will be put into `sdkRoot/lib`).
|
||||
MockSdk({
|
||||
@@ -1091,6 +1095,11 @@ class MockSdk implements DartSdk {
|
||||
AnalysisOptionsImpl analysisOptions,
|
||||
List<MockSdkLibrary> additionalLibraries = const [],
|
||||
}) : _analysisOptions = analysisOptions ?? AnalysisOptionsImpl() {
|
||||
_versionFile = resourceProvider
|
||||
.getFolder(resourceProvider.convertPath(sdkRoot))
|
||||
.getChildAssumingFile('version');
|
||||
_versionFile.writeAsStringSync('2.10.0');
|
||||
|
||||
for (MockSdkLibrary library in _LIBRARIES) {
|
||||
var convertedLibrary = library._toProvider(resourceProvider);
|
||||
sdkLibraries.add(convertedLibrary);
|
||||
@@ -1179,6 +1188,12 @@ class MockSdk implements DartSdk {
|
||||
return _analysisContext;
|
||||
}
|
||||
|
||||
@override
|
||||
Version get languageVersion {
|
||||
var sdkVersionStr = _versionFile.readAsStringSync();
|
||||
return languageVersionFromSdkVersion(sdkVersionStr);
|
||||
}
|
||||
|
||||
@override
|
||||
String get sdkVersion => throw UnimplementedError();
|
||||
|
||||
|
||||
@@ -67,19 +67,9 @@ class ContextBuilderTest with ResourceProviderMixin {
|
||||
windows: resourceProvider.pathContext.style == path.windows.style);
|
||||
}
|
||||
|
||||
void createDefaultSdk(Folder sdkDir) {
|
||||
defaultSdkPath = join(sdkDir.path, 'default', 'sdk');
|
||||
String librariesFilePath = join(defaultSdkPath, 'lib', '_internal',
|
||||
'sdk_library_metadata', 'lib', 'libraries.dart');
|
||||
newFile(librariesFilePath, content: r'''
|
||||
const Map<String, LibraryInfo> libraries = const {
|
||||
"async": const LibraryInfo("async/async.dart"),
|
||||
"core": const LibraryInfo("core/core.dart"),
|
||||
};
|
||||
''');
|
||||
sdkManager = DartSdkManager(defaultSdkPath);
|
||||
builder = ContextBuilder(resourceProvider, sdkManager, contentCache,
|
||||
options: builderOptions);
|
||||
void createDefaultSdk() {
|
||||
defaultSdkPath = convertPath(sdkRoot);
|
||||
MockSdk(resourceProvider: resourceProvider);
|
||||
}
|
||||
|
||||
void setUp() {
|
||||
@@ -347,8 +337,7 @@ bar:${toUriStr('/pkg/bar')}
|
||||
|
||||
void test_createSourceFactory_noProvider_packages_embedder_noExtensions() {
|
||||
String rootPath = convertPath('/root');
|
||||
Folder rootFolder = getFolder(rootPath);
|
||||
createDefaultSdk(rootFolder);
|
||||
createDefaultSdk();
|
||||
String projectPath = join(rootPath, 'project');
|
||||
String packageFilePath = join(projectPath, '.packages');
|
||||
|
||||
@@ -387,8 +376,7 @@ b:${resourceProvider.pathContext.toUri(packageB)}
|
||||
|
||||
void test_createSourceFactory_noProvider_packages_noEmbedder_noExtensions() {
|
||||
String rootPath = convertPath('/root');
|
||||
Folder rootFolder = getFolder(rootPath);
|
||||
createDefaultSdk(rootFolder);
|
||||
createDefaultSdk();
|
||||
String projectPath = join(rootPath, 'project');
|
||||
String packageFilePath = join(projectPath, '.packages');
|
||||
String packageA = join(rootPath, 'pkgs', 'a');
|
||||
|
||||
@@ -10,6 +10,7 @@ import 'package:analyzer/src/generated/java_engine_io.dart';
|
||||
import 'package:analyzer/src/generated/sdk.dart';
|
||||
import 'package:analyzer/src/generated/source.dart';
|
||||
import 'package:analyzer/src/test_utilities/resource_provider_mixin.dart';
|
||||
import 'package:pub_semver/pub_semver.dart';
|
||||
import 'package:test/test.dart';
|
||||
import 'package:test_reflective_loader/test_reflective_loader.dart';
|
||||
|
||||
@@ -30,7 +31,11 @@ class EmbedderSdkTest extends EmbedderRelatedTest {
|
||||
EmbedderYamlLocator locator = EmbedderYamlLocator({
|
||||
'fox': <Folder>[pathTranslator.getResource(foxLib)]
|
||||
});
|
||||
EmbedderSdk sdk = EmbedderSdk(resourceProvider, locator.embedderYamls);
|
||||
EmbedderSdk sdk = EmbedderSdk(
|
||||
resourceProvider,
|
||||
locator.embedderYamls,
|
||||
languageVersion: Version.parse('2.10.0'),
|
||||
);
|
||||
|
||||
expect(sdk.allowedExperimentsJson, isNull);
|
||||
|
||||
@@ -45,7 +50,11 @@ class EmbedderSdkTest extends EmbedderRelatedTest {
|
||||
EmbedderYamlLocator locator = EmbedderYamlLocator({
|
||||
'fox': <Folder>[pathTranslator.getResource(foxLib)]
|
||||
});
|
||||
EmbedderSdk sdk = EmbedderSdk(resourceProvider, locator.embedderYamls);
|
||||
EmbedderSdk sdk = EmbedderSdk(
|
||||
resourceProvider,
|
||||
locator.embedderYamls,
|
||||
languageVersion: Version.parse('2.10.0'),
|
||||
);
|
||||
|
||||
expect(sdk.urlMappings, hasLength(5));
|
||||
}
|
||||
@@ -54,7 +63,11 @@ class EmbedderSdkTest extends EmbedderRelatedTest {
|
||||
EmbedderYamlLocator locator = EmbedderYamlLocator({
|
||||
'fox': <Folder>[pathTranslator.getResource(foxLib)]
|
||||
});
|
||||
EmbedderSdk sdk = EmbedderSdk(resourceProvider, locator.embedderYamls);
|
||||
EmbedderSdk sdk = EmbedderSdk(
|
||||
resourceProvider,
|
||||
locator.embedderYamls,
|
||||
languageVersion: Version.parse('2.10.0'),
|
||||
);
|
||||
|
||||
expectSource(String posixPath, String dartUri) {
|
||||
Uri uri = Uri.parse(posixToOSFileUri(posixPath));
|
||||
@@ -73,7 +86,11 @@ class EmbedderSdkTest extends EmbedderRelatedTest {
|
||||
EmbedderYamlLocator locator = EmbedderYamlLocator({
|
||||
'fox': <Folder>[pathTranslator.getResource(foxLib)]
|
||||
});
|
||||
EmbedderSdk sdk = EmbedderSdk(resourceProvider, locator.embedderYamls);
|
||||
EmbedderSdk sdk = EmbedderSdk(
|
||||
resourceProvider,
|
||||
locator.embedderYamls,
|
||||
languageVersion: Version.parse('2.10.0'),
|
||||
);
|
||||
|
||||
SdkLibrary lib = sdk.getSdkLibrary('dart:fox');
|
||||
expect(lib, isNotNull);
|
||||
@@ -85,7 +102,11 @@ class EmbedderSdkTest extends EmbedderRelatedTest {
|
||||
EmbedderYamlLocator locator = EmbedderYamlLocator({
|
||||
'fox': <Folder>[pathTranslator.getResource(foxLib)]
|
||||
});
|
||||
EmbedderSdk sdk = EmbedderSdk(resourceProvider, locator.embedderYamls);
|
||||
EmbedderSdk sdk = EmbedderSdk(
|
||||
resourceProvider,
|
||||
locator.embedderYamls,
|
||||
languageVersion: Version.parse('2.10.0'),
|
||||
);
|
||||
|
||||
void expectSource(String dartUri, String posixPath) {
|
||||
Source source = sdk.mapDartUri(dartUri);
|
||||
|
||||
@@ -441,7 +441,11 @@ class Driver with HasContextMixin implements CommandLineStarter {
|
||||
|
||||
// Setup embedding.
|
||||
if (includeSdkResolver) {
|
||||
var embedderSdk = EmbedderSdk(resourceProvider, embedderMap);
|
||||
var embedderSdk = EmbedderSdk(
|
||||
resourceProvider,
|
||||
embedderMap,
|
||||
languageVersion: sdk.languageVersion,
|
||||
);
|
||||
if (embedderSdk.libraryMap.size() == 0) {
|
||||
// The embedder uri resolver has no mappings. Use the default Dart SDK
|
||||
// uri resolver.
|
||||
|
||||
@@ -40,7 +40,7 @@ void main(List<String> argv) {
|
||||
var outDir = resolveInputUri(outPath.endsWith('/') ? outPath : '$outPath/');
|
||||
var outLibRoot = outDir.resolve('lib/');
|
||||
|
||||
var inputVersion = Platform.script.resolve('../../../tools/VERSION');
|
||||
var inputVersion = Uri.file(Platform.executable).resolve('../version');
|
||||
var outVersion = outDir.resolve('version');
|
||||
|
||||
var specification = LibrariesSpecification.parse(
|
||||
|
||||
@@ -218,7 +218,7 @@ Future<Null> analyzeUris(
|
||||
List<String> arguments = <String>[
|
||||
"--packages=${toFilePath(packages)}",
|
||||
"--format=machine",
|
||||
"--dart-sdk=${Uri.base.resolve('sdk/').toFilePath()}",
|
||||
"--dart-sdk=${_findSdkPath()}",
|
||||
];
|
||||
if (analysisOptions != null) {
|
||||
arguments.add("--options=${toFilePath(analysisOptions)}");
|
||||
@@ -274,6 +274,18 @@ Future<Null> analyzeUris(
|
||||
}
|
||||
}
|
||||
|
||||
String _findSdkPath() {
|
||||
var executableUri = Uri.file(Platform.executable);
|
||||
if (File.fromUri(executableUri.resolve('../version')).existsSync()) {
|
||||
return executableUri.resolve('..').toFilePath();
|
||||
} else if (File.fromUri(executableUri.resolve('dart-sdk/version'))
|
||||
.existsSync()) {
|
||||
return executableUri.resolve('dart-sdk').toFilePath();
|
||||
} else {
|
||||
throw StateError('Cannot find dart-sdk for $executableUri');
|
||||
}
|
||||
}
|
||||
|
||||
Future<String> git(String command, Iterable<String> arguments,
|
||||
{String workingDirectory}) async {
|
||||
ProcessResult result = await Process.run(
|
||||
|
||||
@@ -179,7 +179,6 @@ EOF
|
||||
out/ReleaseIA32/dart pkg/front_end/tool/perf.dart scan hello.dart
|
||||
out/ReleaseIA32/dart pkg/front_end/tool/fasta_perf.dart kernel_gen_e2e hello.dart
|
||||
out/ReleaseIA32/dart pkg/front_end/tool/fasta_perf.dart scan hello.dart
|
||||
out/ReleaseIA32/dart-sdk/bin/dart --print_metrics pkg/analyzer_cli/bin/analyzer.dart --dart-sdk=sdk hello.dart
|
||||
out/ReleaseIA32/run_vm_tests --dfe=out/ReleaseIA32/kernel-service.dart.snapshot InitialRSS
|
||||
out/ReleaseIA32/run_vm_tests --dfe=out/ReleaseIA32/kernel-service.dart.snapshot --sound-null-safety --enable-experiment=non-nullable InitialRSS
|
||||
out/ReleaseIA32/run_vm_tests --dfe=out/ReleaseIA32/kernel-service.dart.snapshot GenKernelKernelLoadKernel
|
||||
@@ -355,7 +354,6 @@ EOF
|
||||
out/ReleaseX64/dart pkg/front_end/tool/fasta_perf.dart kernel_gen_e2e hello.dart
|
||||
out/ReleaseX64/dart pkg/front_end/tool/fasta_perf.dart scan hello.dart
|
||||
out/ReleaseX64/dart-sdk/bin/dart pkg/analysis_server/benchmark/benchmarks.dart run --quick --repeat 1 analysis-server-cold
|
||||
out/ReleaseX64/dart-sdk/bin/dart --print_metrics pkg/analyzer_cli/bin/analyzer.dart --dart-sdk=sdk hello.dart
|
||||
echo '[{"name":"foo","edits":[["pkg/compiler/lib/src/dart2js.dart","2016","2017"],["pkg/compiler/lib/src/options.dart","2016","2017"]]}]' > appjit_train_edits.json
|
||||
out/ReleaseX64/dart --background-compilation=false --snapshot-kind=app-jit --snapshot=pkg/front_end/tool/incremental_perf.dart.appjit pkg/front_end/tool/incremental_perf.dart --target=vm --sdk-summary=out/ReleaseX64/vm_platform_strong.dill --sdk-library-specification=sdk/lib/libraries.json pkg/compiler/lib/src/dart2js.dart appjit_train_edits.json
|
||||
out/ReleaseX64/dart --background-compilation=false pkg/front_end/tool/incremental_perf.dart.appjit --target=vm --sdk-summary=out/ReleaseX64/vm_platform_strong.dill --sdk-library-specification=sdk/lib/libraries.json pkg/front_end/benchmarks/ikg/hello.dart pkg/front_end/benchmarks/ikg/hello.edits.json
|
||||
|
||||
Reference in New Issue
Block a user