diff --git a/pkg/analyzer/lib/file_system/physical_file_system.dart b/pkg/analyzer/lib/file_system/physical_file_system.dart index 93d2351263f..e62141cd0e9 100644 --- a/pkg/analyzer/lib/file_system/physical_file_system.dart +++ b/pkg/analyzer/lib/file_system/physical_file_system.dart @@ -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 env = io.Platform.environment; + Map 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; diff --git a/pkg/analyzer/lib/src/dart/analysis/context_locator.dart b/pkg/analyzer/lib/src/dart/analysis/context_locator.dart index 710b988451e..0afb18a61b7 100644 --- a/pkg/analyzer/lib/src/dart/analysis/context_locator.dart +++ b/pkg/analyzer/lib/src/dart/analysis/context_locator.dart @@ -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] ??= diff --git a/pkg/analyzer/lib/src/lint/pub.dart b/pkg/analyzer/lib/src/lint/pub.dart index 696fe072b4c..25f9bdde8ef 100644 --- a/pkg/analyzer/lib/src/lint/pub.dart +++ b/pkg/analyzer/lib/src/lint/pub.dart @@ -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; diff --git a/pkg/analyzer/lib/src/workspace/pub.dart b/pkg/analyzer/lib/src/workspace/pub.dart index 4b6c479d04d..82de7b21652 100644 --- a/pkg/analyzer/lib/src/workspace/pub.dart +++ b/pkg/analyzer/lib/src/workspace/pub.dart @@ -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, diff --git a/pkg/analyzer/test/src/lint/pub_test.dart b/pkg/analyzer/test/src/lint/pub_test.dart index 15409a5b7a0..929311cd8f9 100644 --- a/pkg/analyzer/test/src/lint/pub_test.dart +++ b/pkg/analyzer/test/src/lint/pub_test.dart @@ -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', () { diff --git a/pkg/linter/tool/test_linter.dart b/pkg/linter/tool/test_linter.dart index af4b22ddd67..25ce0c3a692 100644 --- a/pkg/linter/tool/test_linter.dart +++ b/pkg/linter/tool/test_linter.dart @@ -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;