De-duplicate Posix path access implementation.
Change-Id: Ie97dd395c3f760881b38a9045be167b9d21eff0d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/335905
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Phil Quitslund <pquitslund@google.com>
diff --git a/pkg/analysis_server/test/abstract_context.dart b/pkg/analysis_server/test/abstract_context.dart
index 41f0e19..ff51a37 100644
--- a/pkg/analysis_server/test/abstract_context.dart
+++ b/pkg/analysis_server/test/abstract_context.dart
@@ -17,10 +17,10 @@
import 'package:analyzer/src/test_utilities/package_config_file_builder.dart';
import 'package:analyzer/src/test_utilities/resource_provider_mixin.dart';
import 'package:analyzer/src/util/file_paths.dart' as file_paths;
+import 'package:analyzer/src/utilities/extensions/file_system.dart';
import 'package:analyzer/src/utilities/legacy.dart';
import 'package:linter/src/rules.dart';
import 'package:meta/meta.dart';
-import 'package:path/path.dart';
import 'package:test/test.dart';
import 'src/utilities/mock_packages.dart';
@@ -333,26 +333,13 @@
verifyCreatedCollection();
}
- /// If the path style is `Windows`, returns the corresponding Posix path.
- /// Otherwise the path is already a Posix path, and it is returned as is.
- /// TODO(scheglov) This is duplicate.
- String _posixPath(File file) {
- final pathContext = resourceProvider.pathContext;
- if (pathContext.style == Style.windows) {
- final components = pathContext.split(file.path);
- return '/${components.skip(1).join('/')}';
- } else {
- return file.path;
- }
- }
-
void _writeSourceChangeToBuffer({
required StringBuffer buffer,
required SourceChange sourceChange,
}) {
for (final fileEdit in sourceChange.edits) {
final file = getFile(fileEdit.file);
- buffer.writeln('>>>>>>>>>> ${_posixPath(file)}');
+ buffer.writeln('>>>>>>>>>> ${file.posixPath}');
final current = file.readAsStringSync();
final updated = SourceEdit.applySequence(current, fileEdit.edits);
buffer.write(updated);
diff --git a/pkg/analysis_server/test/services/refactoring/agnostic/change_method_signature_test.dart b/pkg/analysis_server/test/services/refactoring/agnostic/change_method_signature_test.dart
index 75fecb9..5c0114f 100644
--- a/pkg/analysis_server/test/services/refactoring/agnostic/change_method_signature_test.dart
+++ b/pkg/analysis_server/test/services/refactoring/agnostic/change_method_signature_test.dart
@@ -18,9 +18,9 @@
import 'package:analyzer/src/summary2/reference.dart';
import 'package:analyzer/src/test_utilities/package_config_file_builder.dart';
import 'package:analyzer/src/test_utilities/test_code_format.dart';
+import 'package:analyzer/src/utilities/extensions/file_system.dart';
import 'package:analyzer_plugin/utilities/change_builder/change_builder_core.dart';
import 'package:collection/collection.dart';
-import 'package:path/path.dart';
import 'package:test/test.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
@@ -3285,19 +3285,6 @@
_assertTextExpectation(buffer.toString(), expected);
}
- /// If the path style is `Windows`, returns the corresponding Posix path.
- /// Otherwise the path is already a Posix path, and it is returned as is.
- /// TODO(scheglov) This is duplicate.
- String _posixPath(File file) {
- final pathContext = resourceProvider.pathContext;
- if (pathContext.style == Style.windows) {
- final components = pathContext.split(file.path);
- return '/${components.skip(1).join('/')}';
- } else {
- return file.path;
- }
- }
-
void _writeSourceChangeToBuffer({
required StringBuffer buffer,
required SourceChange sourceChange,
@@ -3305,7 +3292,7 @@
final fileEdits = sourceChange.edits.sortedBy((e) => e.file);
for (final fileEdit in fileEdits) {
final file = getFile(fileEdit.file);
- buffer.writeln('>>>>>>> ${_posixPath(file)}');
+ buffer.writeln('>>>>>>> ${file.posixPath}');
final current = file.readAsStringSync();
final updated = SourceEdit.applySequence(current, fileEdit.edits);
buffer.write(updated);
diff --git a/pkg/analyzer/lib/src/utilities/extensions/file_system.dart b/pkg/analyzer/lib/src/utilities/extensions/file_system.dart
index 154ac72..f63b41c 100644
--- a/pkg/analyzer/lib/src/utilities/extensions/file_system.dart
+++ b/pkg/analyzer/lib/src/utilities/extensions/file_system.dart
@@ -31,16 +31,16 @@
}
}
-extension ResourceProviderExtension on ResourceProvider {
+extension ResourceExtension on Resource {
/// If the path style is `Windows`, returns the corresponding Posix path.
/// Otherwise the path is already a Posix path, and it is returned as is.
- /// TODO(scheglov) This is duplicate.
- String posixPath(File file) {
+ String get posixPath {
+ final pathContext = provider.pathContext;
if (pathContext.style == Style.windows) {
- final components = pathContext.split(file.path);
+ final components = pathContext.split(path);
return '/${components.skip(1).join('/')}';
} else {
- return file.path;
+ return path;
}
}
}
diff --git a/pkg/analyzer/test/src/dart/analysis/analyzer_state_printer.dart b/pkg/analyzer/test/src/dart/analysis/analyzer_state_printer.dart
index a66b08c..9636426 100644
--- a/pkg/analyzer/test/src/dart/analysis/analyzer_state_printer.dart
+++ b/pkg/analyzer/test/src/dart/analysis/analyzer_state_printer.dart
@@ -10,8 +10,8 @@
import 'package:analyzer/src/dart/analysis/library_graph.dart';
import 'package:analyzer/src/dart/analysis/unlinked_unit_store.dart';
import 'package:analyzer/src/dart/micro/resolve_file.dart';
+import 'package:analyzer/src/utilities/extensions/file_system.dart';
import 'package:collection/collection.dart';
-import 'package:path/path.dart';
import 'package:test/test.dart';
class AnalyzerStatePrinter {
@@ -59,18 +59,6 @@
_writeByteStore();
}
- /// If the path style is `Windows`, returns the corresponding Posix path.
- /// Otherwise the path is already a Posix path, and it is returned as is.
- String _posixPath(File file) {
- final pathContext = resourceProvider.pathContext;
- if (pathContext.style == Style.windows) {
- final components = pathContext.split(file.path);
- return '/${components.skip(1).join('/')}';
- } else {
- return file.path;
- }
- }
-
String _stringOfLibraryCycle(LibraryCycle cycle) {
if (configuration.omitSdkFiles) {
final isSdkLibrary = cycle.libraries.any((library) {
@@ -390,7 +378,7 @@
continue;
}
final file = fileData.file;
- _writelnWithIndent(_posixPath(file));
+ _writelnWithIndent(file.posixPath);
_withIndent(() {
_writelnWithIndent('uri: ${fileData.uri}');
@@ -430,7 +418,7 @@
}
cyclesToPrint.add(
_LibraryCycleToPrint(
- entry.key.map((e) => _posixPath(e.file)).join(' '),
+ entry.key.map((e) => e.file.posixPath).join(' '),
entry.value,
),
);
@@ -440,7 +428,7 @@
final loadedBundlesMap = Map.fromEntries(
libraryContext.loadedBundles.map((cycle) {
final pathListStr = cycle.libraries
- .map((library) => _posixPath(library.file.resource))
+ .map((library) => library.file.resource.posixPath)
.sorted()
.join(' ');
return MapEntry(pathListStr, cycle);
diff --git a/pkg/analyzer/test/src/dart/analysis/session_test.dart b/pkg/analyzer/test/src/dart/analysis/session_test.dart
index 3f46b76..ec4f9c5 100644
--- a/pkg/analyzer/test/src/dart/analysis/session_test.dart
+++ b/pkg/analyzer/test/src/dart/analysis/session_test.dart
@@ -961,8 +961,7 @@
expect(result.session, contextFor(testFile).currentSession);
final file = result.file;
- final posixPath = resourceProvider.posixPath(file);
- sink.writelnWithIndent('path: $posixPath');
+ sink.writelnWithIndent('path: ${file.posixPath}');
sink.writelnWithIndent('uri: ${result.uri}');