Last active
March 11, 2021 03:12
-
-
Save aam/cb0eed24c58d0c0f107be9a89b9e93f3 to your computer and use it in GitHub Desktop.
mock up of file contents in CompilerOutput
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/packages/flutter_tools/lib/src/compile.dart b/packages/flutter_tools/lib/src/compile.dart | |
index 49e224c802..ff79346b68 100644 | |
--- a/packages/flutter_tools/lib/src/compile.dart | |
+++ b/packages/flutter_tools/lib/src/compile.dart | |
@@ -3,6 +3,7 @@ | |
// found in the LICENSE file. | |
import 'dart:async'; | |
+import 'dart:typed_data'; | |
import 'package:meta/meta.dart'; | |
import 'package:package_config/package_config.dart'; | |
@@ -61,9 +62,10 @@ class TargetModel { | |
} | |
class CompilerOutput { | |
- const CompilerOutput(this.outputFilename, this.errorCount, this.sources); | |
+ const CompilerOutput(this.outputFilename, this.errorCount, this.sources, {this.fileContents}); | |
final String outputFilename; | |
+ final Uint8List fileContents; | |
final int errorCount; | |
final List<Uri> sources; | |
} | |
@@ -78,6 +80,7 @@ class StdoutHandler { | |
reset(); | |
} | |
+ final FileSystem _fileSystem; | |
final Logger _logger; | |
String boundaryKey; | |
@@ -87,8 +90,10 @@ class StdoutHandler { | |
bool _suppressCompilerMessages; | |
bool _expectSources; | |
+ bool _requestFileContents; | |
void handler(String message) { | |
const String kResultPrefix = 'result '; | |
if (boundaryKey == null && message.startsWith(kResultPrefix)) { | |
boundaryKey = message.substring(kResultPrefix.length); | |
@@ -106,6 +111,15 @@ class StdoutHandler { | |
return; | |
} | |
final int spaceDelimiter = message.lastIndexOf(' '); | |
+ if (_requestFileContents) { | |
+ compilerOutput.complete( | |
+ CompilerOutput( | |
+ message.substring(boundaryKey.length + 1, spaceDelimiter), | |
+ int.parse(message.substring(spaceDelimiter + 1).trim()), | |
+ sources, | |
+ fileContents: _fileSystem.file(message.substring(boundaryKey.length + 1, spaceDelimiter)).readAsBytesSync() | |
+ )); | |
+ return; | |
+ } | |
compilerOutput.complete( | |
CompilerOutput( | |
message.substring(boundaryKey.length + 1, spaceDelimiter), | |
@@ -136,11 +150,12 @@ class StdoutHandler { | |
// This is needed to get ready to process next compilation result output, | |
// with its own boundary key and new completer. | |
- void reset({ bool suppressCompilerMessages = false, bool expectSources = true }) { | |
+ void reset({ bool suppressCompilerMessages = false, bool expectSources = true, bool requestFileContents = true }) { | |
boundaryKey = null; | |
compilerOutput = Completer<CompilerOutput>(); | |
_suppressCompilerMessages = suppressCompilerMessages; | |
_expectSources = expectSources; | |
+ _requestFileContents = requestFileContents; | |
state = StdoutState.CollectDiagnostic; | |
} | |
} | |
@@ -750,7 +766,7 @@ class DefaultResidentCompiler implements ResidentCompiler { | |
} | |
Future<CompilerOutput> _compileExpression(_CompileExpressionRequest request) async { | |
- _stdoutHandler.reset(suppressCompilerMessages: true, expectSources: false); | |
+ _stdoutHandler.reset(suppressCompilerMessages: true, expectSources: false, requestFileContents: true); | |
// 'compile-expression' should be invoked after compiler has been started, | |
// program was compiled. | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment