| OLD | NEW |
| 1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 library fasta.source_loader; | 5 library fasta.source_loader; |
| 6 | 6 |
| 7 import 'dart:async' show Future; | 7 import 'dart:async' show Future; |
| 8 | 8 |
| 9 import 'dart:io'; | |
| 10 import 'dart:typed_data' show Uint8List; | 9 import 'dart:typed_data' show Uint8List; |
| 11 | 10 |
| 12 import 'package:front_end/file_system.dart'; | 11 import 'package:front_end/file_system.dart'; |
| 13 import 'package:front_end/src/base/instrumentation.dart' show Instrumentation; | 12 import 'package:front_end/src/base/instrumentation.dart' show Instrumentation; |
| 14 | 13 |
| 15 import 'package:front_end/src/fasta/builder/ast_factory.dart' show AstFactory; | 14 import 'package:front_end/src/fasta/builder/ast_factory.dart' show AstFactory; |
| 16 | 15 |
| 17 import 'package:front_end/src/fasta/kernel/kernel_ast_factory.dart' | 16 import 'package:front_end/src/fasta/kernel/kernel_ast_factory.dart' |
| 18 show KernelAstFactory; | 17 show KernelAstFactory; |
| 19 | 18 |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 85 // Get the library text from the cache, or read from the file system. | 84 // Get the library text from the cache, or read from the file system. |
| 86 List<int> bytes = sourceBytes[uri]; | 85 List<int> bytes = sourceBytes[uri]; |
| 87 if (bytes == null) { | 86 if (bytes == null) { |
| 88 try { | 87 try { |
| 89 List<int> rawBytes = await fileSystem.entityForUri(uri).readAsBytes(); | 88 List<int> rawBytes = await fileSystem.entityForUri(uri).readAsBytes(); |
| 90 Uint8List zeroTerminatedBytes = new Uint8List(rawBytes.length + 1); | 89 Uint8List zeroTerminatedBytes = new Uint8List(rawBytes.length + 1); |
| 91 zeroTerminatedBytes.setRange(0, rawBytes.length, rawBytes); | 90 zeroTerminatedBytes.setRange(0, rawBytes.length, rawBytes); |
| 92 bytes = zeroTerminatedBytes; | 91 bytes = zeroTerminatedBytes; |
| 93 sourceBytes[uri] = bytes; | 92 sourceBytes[uri] = bytes; |
| 94 } on FileSystemException catch (e) { | 93 } on FileSystemException catch (e) { |
| 95 // TODO(scheglov) Throw and catch abstract file-system exceptions. | 94 return inputError(uri, -1, e.message); |
| 96 String message = e.message; | |
| 97 String osMessage = e.osError?.message; | |
| 98 if (osMessage != null && osMessage.isNotEmpty) { | |
| 99 message = osMessage; | |
| 100 } | |
| 101 return inputError(uri, -1, message); | |
| 102 } | 95 } |
| 103 } | 96 } |
| 104 | 97 |
| 105 byteCount += bytes.length - 1; | 98 byteCount += bytes.length - 1; |
| 106 ScannerResult result = scan(bytes); | 99 ScannerResult result = scan(bytes); |
| 107 Token token = result.tokens; | 100 Token token = result.tokens; |
| 108 if (!suppressLexicalErrors) { | 101 if (!suppressLexicalErrors) { |
| 109 List<int> source = getSource(bytes); | 102 List<int> source = getSource(bytes); |
| 110 target.addSourceInformation(library.fileUri, result.lineStarts, source); | 103 target.addSourceInformation(library.fileUri, result.lineStarts, source); |
| 111 } | 104 } |
| (...skipping 308 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 420 /// Performs the second phase of top level initializer inference, which is to | 413 /// Performs the second phase of top level initializer inference, which is to |
| 421 /// visit fields and top level variables in topologically-sorted order and | 414 /// visit fields and top level variables in topologically-sorted order and |
| 422 /// assign their types. | 415 /// assign their types. |
| 423 void performInitializerInference() { | 416 void performInitializerInference() { |
| 424 typeInferenceEngine.finishTopLevel(); | 417 typeInferenceEngine.finishTopLevel(); |
| 425 ticker.logMs("Performed initializer inference"); | 418 ticker.logMs("Performed initializer inference"); |
| 426 } | 419 } |
| 427 | 420 |
| 428 List<Uri> getDependencies() => sourceBytes.keys.toList(); | 421 List<Uri> getDependencies() => sourceBytes.keys.toList(); |
| 429 } | 422 } |
| OLD | NEW |