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]);