Tweaks to avoid failling back to PhysicalResourceProvider when not necessary.
Also use PlatformInfo in PhysicalResourceProvider.INSTANCE for consistency. Change-Id: If9bb4a764f290dfa76aa30b43c52f4cf2692dffa Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/484142 Reviewed-by: Konstantin Shcheglov <scheglov@google.com> Reviewed-by: Phil Quitslund <pquitslund@google.com> Auto-Submit: Jonas Jensen <jonasfj@google.com> Commit-Queue: Phil Quitslund <pquitslund@google.com>
This commit is contained in:
committed by
Commit Queue
parent
ac38046718
commit
bfa47ebf74
@@ -7,6 +7,7 @@ import 'dart:io' as io;
|
||||
import 'dart:typed_data';
|
||||
|
||||
import 'package:analyzer/file_system/file_system.dart';
|
||||
import 'package:analyzer/src/util/platform_info.dart';
|
||||
import 'package:path/path.dart';
|
||||
import 'package:watcher/watcher.dart';
|
||||
|
||||
@@ -20,12 +21,12 @@ const String _serverDir = ".dartServer";
|
||||
/// ANALYZER_STATE_LOCATION_OVERRIDE environment variable, in which case this
|
||||
/// method will return the contents of that environment variable.
|
||||
String? _getStandardStateLocation() {
|
||||
Map<String, String> env = io.Platform.environment;
|
||||
Map<String, String> env = platform.environment;
|
||||
if (env.containsKey('ANALYZER_STATE_LOCATION_OVERRIDE')) {
|
||||
return env['ANALYZER_STATE_LOCATION_OVERRIDE'];
|
||||
}
|
||||
|
||||
var home = io.Platform.isWindows ? env['LOCALAPPDATA'] : env['HOME'];
|
||||
var home = platform.isWindows ? env['LOCALAPPDATA'] : env['HOME'];
|
||||
return home != null && io.FileSystemEntity.isDirectorySync(home)
|
||||
? join(home, _serverDir)
|
||||
: null;
|
||||
|
||||
@@ -763,7 +763,10 @@ class ContextLocatorImpl {
|
||||
file_paths.pubspecYaml,
|
||||
);
|
||||
if (rootPubspecFile.exists) {
|
||||
var rootPubspec = Pubspec.parse(rootPubspecFile.readAsStringSync());
|
||||
var rootPubspec = Pubspec.parse(
|
||||
rootPubspecFile.readAsStringSync(),
|
||||
resourceProvider: resourceProvider,
|
||||
);
|
||||
var workspace = rootPubspec.workspace;
|
||||
if (workspace != null) {
|
||||
for (var entry in workspace) {
|
||||
@@ -837,7 +840,10 @@ class ContextLocatorImpl {
|
||||
} else {
|
||||
var pubspecFile = folder.getChildAssumingFile(file_paths.pubspecYaml);
|
||||
if (pubspecFile.exists) {
|
||||
var pubspec = Pubspec.parse(pubspecFile.readAsStringSync());
|
||||
var pubspec = Pubspec.parse(
|
||||
pubspecFile.readAsStringSync(),
|
||||
resourceProvider: resourceProvider,
|
||||
);
|
||||
var resolution = pubspec.resolution;
|
||||
if (resolution != null && resolution.value.text == 'workspace') {
|
||||
var known = rootWorkspaceSpecification[location.workspace.root] ??=
|
||||
|
||||
@@ -4,7 +4,6 @@
|
||||
|
||||
import 'package:analyzer/analysis_rule/pubspec.dart';
|
||||
import 'package:analyzer/file_system/file_system.dart';
|
||||
import 'package:analyzer/file_system/physical_file_system.dart';
|
||||
import 'package:analyzer/source/file_source.dart';
|
||||
import 'package:analyzer/source/source.dart';
|
||||
import 'package:source_span/source_span.dart';
|
||||
@@ -13,7 +12,7 @@ import 'package:yaml/yaml.dart';
|
||||
PubspecEntry? _findEntry(
|
||||
YamlMap map,
|
||||
String key,
|
||||
ResourceProvider? resourceProvider,
|
||||
ResourceProvider resourceProvider,
|
||||
) {
|
||||
PubspecEntry? entry;
|
||||
map.nodes.forEach((k, v) {
|
||||
@@ -27,7 +26,7 @@ PubspecEntry? _findEntry(
|
||||
PubspecDependencyList? _processDependencies(
|
||||
YamlScalar key,
|
||||
YamlNode value,
|
||||
ResourceProvider? resourceProvider,
|
||||
ResourceProvider resourceProvider,
|
||||
) {
|
||||
if (value is! YamlMap) {
|
||||
return null;
|
||||
@@ -45,7 +44,7 @@ PubspecDependencyList? _processDependencies(
|
||||
PubspecEnvironment? _processEnvironment(
|
||||
YamlScalar key,
|
||||
YamlNode value,
|
||||
ResourceProvider? resourceProvider,
|
||||
ResourceProvider resourceProvider,
|
||||
) {
|
||||
if (value is! YamlMap) {
|
||||
return null;
|
||||
@@ -61,7 +60,7 @@ PubspecEnvironment? _processEnvironment(
|
||||
PubspecGitRepo? _processGitRepo(
|
||||
YamlScalar key,
|
||||
YamlNode value,
|
||||
ResourceProvider? resourceProvider,
|
||||
ResourceProvider resourceProvider,
|
||||
) {
|
||||
if (value is YamlScalar) {
|
||||
var token = PubspecNodeImpl(key, resourceProvider);
|
||||
@@ -86,7 +85,7 @@ PubspecGitRepo? _processGitRepo(
|
||||
PubspecHost? _processHost(
|
||||
YamlScalar key,
|
||||
YamlNode value,
|
||||
ResourceProvider? resourceProvider,
|
||||
ResourceProvider resourceProvider,
|
||||
) {
|
||||
if (value is YamlScalar) {
|
||||
// dependencies:
|
||||
@@ -115,7 +114,7 @@ PubspecHost? _processHost(
|
||||
PubspecEntry? _processScalar(
|
||||
YamlScalar key,
|
||||
YamlNode value,
|
||||
ResourceProvider? resourceProvider,
|
||||
ResourceProvider resourceProvider,
|
||||
) {
|
||||
if (value is! YamlScalar) {
|
||||
return null;
|
||||
@@ -130,7 +129,7 @@ PubspecEntry? _processScalar(
|
||||
PubspecNodeList? _processScalarList(
|
||||
YamlScalar key,
|
||||
YamlNode value,
|
||||
ResourceProvider? resourceProvider,
|
||||
ResourceProvider resourceProvider,
|
||||
) {
|
||||
if (value is! YamlList) {
|
||||
return null;
|
||||
@@ -147,7 +146,7 @@ abstract class Pubspec {
|
||||
factory Pubspec.parse(
|
||||
String pubspec, {
|
||||
Uri? sourceUrl,
|
||||
ResourceProvider? resourceProvider,
|
||||
required ResourceProvider resourceProvider,
|
||||
}) {
|
||||
try {
|
||||
var yaml = loadYamlNode(pubspec, sourceUrl: sourceUrl);
|
||||
@@ -159,7 +158,7 @@ abstract class Pubspec {
|
||||
|
||||
factory Pubspec.parseYaml(
|
||||
YamlNode yaml, {
|
||||
ResourceProvider? resourceProvider,
|
||||
required ResourceProvider resourceProvider,
|
||||
}) {
|
||||
return _Pubspec.parse(yaml, resourceProvider: resourceProvider);
|
||||
}
|
||||
@@ -206,10 +205,9 @@ class PubspecNodeImpl implements PubspecNode {
|
||||
|
||||
final ResourceProvider _resourceProvider;
|
||||
|
||||
PubspecNodeImpl(YamlScalar node, ResourceProvider? resourceProvider)
|
||||
PubspecNodeImpl(YamlScalar node, this._resourceProvider)
|
||||
: text = node.value?.toString(),
|
||||
span = node.span,
|
||||
_resourceProvider = resourceProvider ?? PhysicalResourceProvider.INSTANCE;
|
||||
span = node.span;
|
||||
|
||||
/// The [Source] information of the pubspec file in which this node is located.
|
||||
Source get source {
|
||||
@@ -269,7 +267,10 @@ class _Pubspec implements Pubspec {
|
||||
@override
|
||||
final PubspecDependencyList? dependencyOverrides;
|
||||
|
||||
factory _Pubspec.parse(YamlNode yaml, {ResourceProvider? resourceProvider}) {
|
||||
factory _Pubspec.parse(
|
||||
YamlNode yaml, {
|
||||
required ResourceProvider resourceProvider,
|
||||
}) {
|
||||
if (yaml is! YamlMap) {
|
||||
return _Pubspec._();
|
||||
}
|
||||
@@ -449,7 +450,7 @@ class _PubspecDependency extends PubspecDependency {
|
||||
factory _PubspecDependency(
|
||||
YamlScalar key,
|
||||
YamlNode value,
|
||||
ResourceProvider? resourceProvider,
|
||||
ResourceProvider resourceProvider,
|
||||
) {
|
||||
var name = PubspecNodeImpl(key, resourceProvider);
|
||||
PubspecEntry? path;
|
||||
|
||||
@@ -216,7 +216,10 @@ class PackageConfigWorkspace extends SimpleWorkspace {
|
||||
.getFolder(root)
|
||||
.getChildAssumingFile(file_paths.pubspecYaml);
|
||||
if (pubspecFile.exists) {
|
||||
var pubspec = Pubspec.parse(pubspecFile.readAsStringSync());
|
||||
var pubspec = Pubspec.parse(
|
||||
pubspecFile.readAsStringSync(),
|
||||
resourceProvider: provider,
|
||||
);
|
||||
if (pubspec.workspace != null) {
|
||||
_isPubWorkspace = true;
|
||||
}
|
||||
@@ -448,7 +451,10 @@ class PubPackage extends WorkspacePackageImpl {
|
||||
File pubspecFile,
|
||||
) {
|
||||
var pubspecContent = pubspecFile.readAsStringSync();
|
||||
var pubspec = Pubspec.parse(pubspecContent);
|
||||
var pubspec = Pubspec.parse(
|
||||
pubspecContent,
|
||||
resourceProvider: pubspecFile.provider,
|
||||
);
|
||||
var packageName = pubspec.name?.value.text;
|
||||
return PubPackage._(
|
||||
root,
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
// BSD-style license that can be found in the LICENSE file.
|
||||
|
||||
import 'package:analyzer/analysis_rule/pubspec.dart';
|
||||
import 'package:analyzer/file_system/physical_file_system.dart'
|
||||
show PhysicalResourceProvider;
|
||||
import 'package:analyzer/src/lint/pub.dart';
|
||||
import 'package:source_span/source_span.dart';
|
||||
import 'package:test/test.dart';
|
||||
@@ -59,7 +61,10 @@ repository: https://github.com/dart-lang/linter
|
||||
issue_tracker: https://github.com/dart-lang/linter/issues
|
||||
""";
|
||||
|
||||
Pubspec ps = Pubspec.parse(src);
|
||||
Pubspec ps = Pubspec.parse(
|
||||
src,
|
||||
resourceProvider: PhysicalResourceProvider.INSTANCE,
|
||||
);
|
||||
|
||||
group('pubspec', () {
|
||||
group('basic', () {
|
||||
|
||||
@@ -86,7 +86,11 @@ class TestLinter implements DiagnosticListener {
|
||||
|
||||
void _lintPubspecSource({required String contents, String? sourcePath}) {
|
||||
var sourceUrl = sourcePath == null ? null : path.toUri(sourcePath);
|
||||
var spec = Pubspec.parse(contents, sourceUrl: sourceUrl);
|
||||
var spec = Pubspec.parse(
|
||||
contents,
|
||||
sourceUrl: sourceUrl,
|
||||
resourceProvider: _resourceProvider,
|
||||
);
|
||||
|
||||
for (var rule in _rules) {
|
||||
var visitor = rule.pubspecVisitor;
|
||||
|
||||
Reference in New Issue
Block a user