Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1184)

Side by Side Diff: pkg/front_end/lib/src/fasta/source/source_loader.dart

Issue 2977133002: Add documentationComment for Class to Kernel. Parse it. Resynthesize in Analyzer. (Closed)
Patch Set: Created 3 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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:typed_data' show Uint8List; 9 import 'dart:typed_data' show Uint8List;
10 10
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
68 import 'outline_builder.dart' show OutlineBuilder; 68 import 'outline_builder.dart' show OutlineBuilder;
69 69
70 import 'source_class_builder.dart' show SourceClassBuilder; 70 import 'source_class_builder.dart' show SourceClassBuilder;
71 71
72 import 'source_library_builder.dart' show SourceLibraryBuilder; 72 import 'source_library_builder.dart' show SourceLibraryBuilder;
73 73
74 class SourceLoader<L> extends Loader<L> { 74 class SourceLoader<L> extends Loader<L> {
75 /// The [FileSystem] which should be used to access files. 75 /// The [FileSystem] which should be used to access files.
76 final FileSystem fileSystem; 76 final FileSystem fileSystem;
77 77
78 /// Whether comments should be scanned and parsed.
79 final bool includeComments;
80
78 final Map<Uri, List<int>> sourceBytes = <Uri, List<int>>{}; 81 final Map<Uri, List<int>> sourceBytes = <Uri, List<int>>{};
79 82
80 final bool excludeSource = CompilerContext.current.options.excludeSource; 83 final bool excludeSource = CompilerContext.current.options.excludeSource;
81 84
82 // Used when building directly to kernel. 85 // Used when building directly to kernel.
83 ClassHierarchy hierarchy; 86 ClassHierarchy hierarchy;
84 CoreTypes coreTypes; 87 CoreTypes coreTypes;
85 88
86 TypeInferenceEngine typeInferenceEngine; 89 TypeInferenceEngine typeInferenceEngine;
87 90
88 Instrumentation instrumentation; 91 Instrumentation instrumentation;
89 92
90 SourceLoader(this.fileSystem, KernelTarget target) : super(target); 93 SourceLoader(this.fileSystem, this.includeComments, KernelTarget target)
94 : super(target);
91 95
92 Future<Token> tokenize(SourceLibraryBuilder library, 96 Future<Token> tokenize(SourceLibraryBuilder library,
93 {bool suppressLexicalErrors: false}) async { 97 {bool suppressLexicalErrors: false}) async {
94 Uri uri = library.fileUri; 98 Uri uri = library.fileUri;
95 // TODO(sigmund): source-loader shouldn't check schemes, but defer to the 99 // TODO(sigmund): source-loader shouldn't check schemes, but defer to the
96 // underlying file system to decide whether it is supported. 100 // underlying file system to decide whether it is supported.
97 if (uri == null || uri.scheme != "file" && uri.scheme != "multi-root") { 101 if (uri == null || uri.scheme != "file" && uri.scheme != "multi-root") {
98 return deprecated_inputError( 102 return deprecated_inputError(
99 library.uri, -1, "Not found: ${library.uri}."); 103 library.uri, -1, "Not found: ${library.uri}.");
100 } 104 }
101 105
102 // Get the library text from the cache, or read from the file system. 106 // Get the library text from the cache, or read from the file system.
103 List<int> bytes = sourceBytes[uri]; 107 List<int> bytes = sourceBytes[uri];
104 if (bytes == null) { 108 if (bytes == null) {
105 try { 109 try {
106 List<int> rawBytes = await fileSystem.entityForUri(uri).readAsBytes(); 110 List<int> rawBytes = await fileSystem.entityForUri(uri).readAsBytes();
107 Uint8List zeroTerminatedBytes = new Uint8List(rawBytes.length + 1); 111 Uint8List zeroTerminatedBytes = new Uint8List(rawBytes.length + 1);
108 zeroTerminatedBytes.setRange(0, rawBytes.length, rawBytes); 112 zeroTerminatedBytes.setRange(0, rawBytes.length, rawBytes);
109 bytes = zeroTerminatedBytes; 113 bytes = zeroTerminatedBytes;
110 sourceBytes[uri] = bytes; 114 sourceBytes[uri] = bytes;
111 } on FileSystemException catch (e) { 115 } on FileSystemException catch (e) {
112 return deprecated_inputError(uri, -1, e.message); 116 return deprecated_inputError(uri, -1, e.message);
113 } 117 }
114 } 118 }
115 119
116 byteCount += bytes.length - 1; 120 byteCount += bytes.length - 1;
117 ScannerResult result = scan(bytes); 121 ScannerResult result = scan(bytes, includeComments: includeComments);
118 Token token = result.tokens; 122 Token token = result.tokens;
119 if (!suppressLexicalErrors) { 123 if (!suppressLexicalErrors) {
120 List<int> source = getSource(bytes); 124 List<int> source = getSource(bytes);
121 target.addSourceInformation(library.fileUri, result.lineStarts, source); 125 target.addSourceInformation(library.fileUri, result.lineStarts, source);
122 } 126 }
123 while (token is ErrorToken) { 127 while (token is ErrorToken) {
124 if (!suppressLexicalErrors) { 128 if (!suppressLexicalErrors) {
125 ErrorToken error = token; 129 ErrorToken error = token;
126 library.addCompileTimeError( 130 library.addCompileTimeError(
127 templateUnspecified.withArguments(error.assertionMessage), 131 templateUnspecified.withArguments(error.assertionMessage),
(...skipping 401 matching lines...) Expand 10 before | Expand all | Expand 10 after
529 Expression throwCompileConstantError(Expression error) { 533 Expression throwCompileConstantError(Expression error) {
530 return target.backendTarget.throwCompileConstantError(coreTypes, error); 534 return target.backendTarget.throwCompileConstantError(coreTypes, error);
531 } 535 }
532 536
533 Expression buildCompileTimeError(Message message, int offset, Uri uri) { 537 Expression buildCompileTimeError(Message message, int offset, Uri uri) {
534 String text = target.context 538 String text = target.context
535 .format(message.withLocation(uri, offset), Severity.error); 539 .format(message.withLocation(uri, offset), Severity.error);
536 return target.backendTarget.buildCompileTimeError(coreTypes, text, offset); 540 return target.backendTarget.buildCompileTimeError(coreTypes, text, offset);
537 } 541 }
538 } 542 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698