From abd32d5449d4f2a2081c681887c46c154e1f0e42 Mon Sep 17 00:00:00 2001 From: Jens Johansen Date: Wed, 10 Jun 2026 01:08:18 -0700 Subject: [PATCH] [analyzer] Fix _OverlayFile.writeAsBytesSync Change-Id: I3b4d7ad2b7a781c49abebef307a44dd9b3381b37 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/510361 Reviewed-by: Johnni Winther Commit-Queue: Jens Johansen --- pkg/analyzer/lib/file_system/overlay_file_system.dart | 5 ++++- .../test/file_system/overlay_file_system_test.dart | 9 +++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/pkg/analyzer/lib/file_system/overlay_file_system.dart b/pkg/analyzer/lib/file_system/overlay_file_system.dart index c1602b91f16..6cc3bb62022 100644 --- a/pkg/analyzer/lib/file_system/overlay_file_system.dart +++ b/pkg/analyzer/lib/file_system/overlay_file_system.dart @@ -205,7 +205,10 @@ class _OverlayFile extends _OverlayResource implements File { @override void writeAsBytesSync(List bytes) { - writeAsStringSync(String.fromCharCodes(bytes)); + if (provider.hasOverlay(path)) { + throw FileSystemException(path, 'Cannot write a file with an overlay'); + } + _file.writeAsBytesSync(bytes); } @override diff --git a/pkg/analyzer/test/file_system/overlay_file_system_test.dart b/pkg/analyzer/test/file_system/overlay_file_system_test.dart index a5f03e545f6..30895236cfa 100644 --- a/pkg/analyzer/test/file_system/overlay_file_system_test.dart +++ b/pkg/analyzer/test/file_system/overlay_file_system_test.dart @@ -354,6 +354,15 @@ class FileTest extends OverlayTestSupport { expect(file.toUri(), Uri.file(file.path)); } + test_write_read_bytes_can_be_read_as_string() { + var expectedContent = "æble"; + File file = _file(exists: true, content: expectedContent); + expect(file.readAsStringSync(), expectedContent); + var byteContent = file.readAsBytesSync(); + file.writeAsBytesSync(byteContent); + expect(file.readAsStringSync(), expectedContent); + } + test_writeAsBytesSync_withoutOverlay() { File file = _file(exists: true); var bytes = Uint8List.fromList([99, 99]);