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

Unified Diff: pkg/analyzer/lib/src/summary/format.dart

Issue 2455573003: Put fully resolved analysis results (just errors now) into the byte cache. (Closed)
Patch Set: tweaks Created 4 years, 2 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 side-by-side diff with in-line comments
Download patch
Index: pkg/analyzer/lib/src/summary/format.dart
diff --git a/pkg/analyzer/lib/src/summary/format.dart b/pkg/analyzer/lib/src/summary/format.dart
index d24aa70ebeb135f55d9ab6f67784ff98ce6a3660..85ac30ae6aebe9367a67cdc5228d1823df31aa92 100644
--- a/pkg/analyzer/lib/src/summary/format.dart
+++ b/pkg/analyzer/lib/src/summary/format.dart
@@ -129,6 +129,296 @@ class _UnlinkedParamKindReader extends fb.Reader<idl.UnlinkedParamKind> {
}
}
+class AnalysisDriverResolvedUnitBuilder extends Object with _AnalysisDriverResolvedUnitMixin implements idl.AnalysisDriverResolvedUnit {
+ List<AnalysisDriverUnitErrorBuilder> _errors;
+
+ @override
+ List<AnalysisDriverUnitErrorBuilder> get errors => _errors ??= <AnalysisDriverUnitErrorBuilder>[];
+
+ /**
+ * The full list of analysis errors, both syntactic and semantic.
+ */
+ void set errors(List<AnalysisDriverUnitErrorBuilder> value) {
+ this._errors = value;
+ }
+
+ AnalysisDriverResolvedUnitBuilder({List<AnalysisDriverUnitErrorBuilder> errors})
+ : _errors = errors;
+
+ /**
+ * Flush [informative] data recursively.
+ */
+ void flushInformative() {
+ _errors?.forEach((b) => b.flushInformative());
+ }
+
+ /**
+ * Accumulate non-[informative] data into [signature].
+ */
+ void collectApiSignature(api_sig.ApiSignature signature) {
+ if (this._errors == null) {
+ signature.addInt(0);
+ } else {
+ signature.addInt(this._errors.length);
+ for (var x in this._errors) {
+ x?.collectApiSignature(signature);
+ }
+ }
+ }
+
+ List<int> toBuffer() {
+ fb.Builder fbBuilder = new fb.Builder();
+ return fbBuilder.finish(finish(fbBuilder), "ADRU");
+ }
+
+ fb.Offset finish(fb.Builder fbBuilder) {
+ fb.Offset offset_errors;
+ if (!(_errors == null || _errors.isEmpty)) {
+ offset_errors = fbBuilder.writeList(_errors.map((b) => b.finish(fbBuilder)).toList());
+ }
+ fbBuilder.startTable();
+ if (offset_errors != null) {
+ fbBuilder.addOffset(0, offset_errors);
+ }
+ return fbBuilder.endTable();
+ }
+}
+
+idl.AnalysisDriverResolvedUnit readAnalysisDriverResolvedUnit(List<int> buffer) {
+ fb.BufferContext rootRef = new fb.BufferContext.fromBytes(buffer);
+ return const _AnalysisDriverResolvedUnitReader().read(rootRef, 0);
+}
+
+class _AnalysisDriverResolvedUnitReader extends fb.TableReader<_AnalysisDriverResolvedUnitImpl> {
+ const _AnalysisDriverResolvedUnitReader();
+
+ @override
+ _AnalysisDriverResolvedUnitImpl createObject(fb.BufferContext bc, int offset) => new _AnalysisDriverResolvedUnitImpl(bc, offset);
+}
+
+class _AnalysisDriverResolvedUnitImpl extends Object with _AnalysisDriverResolvedUnitMixin implements idl.AnalysisDriverResolvedUnit {
+ final fb.BufferContext _bc;
+ final int _bcOffset;
+
+ _AnalysisDriverResolvedUnitImpl(this._bc, this._bcOffset);
+
+ List<idl.AnalysisDriverUnitError> _errors;
+
+ @override
+ List<idl.AnalysisDriverUnitError> get errors {
+ _errors ??= const fb.ListReader<idl.AnalysisDriverUnitError>(const _AnalysisDriverUnitErrorReader()).vTableGet(_bc, _bcOffset, 0, const <idl.AnalysisDriverUnitError>[]);
+ return _errors;
+ }
+}
+
+abstract class _AnalysisDriverResolvedUnitMixin implements idl.AnalysisDriverResolvedUnit {
+ @override
+ Map<String, Object> toJson() {
+ Map<String, Object> _result = <String, Object>{};
+ if (errors.isNotEmpty) _result["errors"] = errors.map((_value) => _value.toJson()).toList();
+ return _result;
+ }
+
+ @override
+ Map<String, Object> toMap() => {
+ "errors": errors,
+ };
+
+ @override
+ String toString() => convert.JSON.encode(toJson());
+}
+
+class AnalysisDriverUnitErrorBuilder extends Object with _AnalysisDriverUnitErrorMixin implements idl.AnalysisDriverUnitError {
+ String _correction;
+ int _length;
+ String _message;
+ int _offset;
+ String _uniqueName;
+
+ @override
+ String get correction => _correction ??= '';
+
+ /**
+ * The optional correction hint for the error.
+ */
+ void set correction(String value) {
+ this._correction = value;
+ }
+
+ @override
+ int get length => _length ??= 0;
+
+ /**
+ * The length of the error in the file.
+ */
+ void set length(int value) {
+ assert(value == null || value >= 0);
+ this._length = value;
+ }
+
+ @override
+ String get message => _message ??= '';
+
+ /**
+ * The message of the error.
+ */
+ void set message(String value) {
+ this._message = value;
+ }
+
+ @override
+ int get offset => _offset ??= 0;
+
+ /**
+ * The offset from the beginning of the file.
+ */
+ void set offset(int value) {
+ assert(value == null || value >= 0);
+ this._offset = value;
+ }
+
+ @override
+ String get uniqueName => _uniqueName ??= '';
+
+ /**
+ * The unique name of the error code.
+ */
+ void set uniqueName(String value) {
+ this._uniqueName = value;
+ }
+
+ AnalysisDriverUnitErrorBuilder({String correction, int length, String message, int offset, String uniqueName})
+ : _correction = correction,
+ _length = length,
+ _message = message,
+ _offset = offset,
+ _uniqueName = uniqueName;
+
+ /**
+ * Flush [informative] data recursively.
+ */
+ void flushInformative() {
+ }
+
+ /**
+ * Accumulate non-[informative] data into [signature].
+ */
+ void collectApiSignature(api_sig.ApiSignature signature) {
+ signature.addInt(this._offset ?? 0);
+ signature.addInt(this._length ?? 0);
+ signature.addString(this._uniqueName ?? '');
+ signature.addString(this._message ?? '');
+ signature.addString(this._correction ?? '');
+ }
+
+ fb.Offset finish(fb.Builder fbBuilder) {
+ fb.Offset offset_correction;
+ fb.Offset offset_message;
+ fb.Offset offset_uniqueName;
+ if (_correction != null) {
+ offset_correction = fbBuilder.writeString(_correction);
+ }
+ if (_message != null) {
+ offset_message = fbBuilder.writeString(_message);
+ }
+ if (_uniqueName != null) {
+ offset_uniqueName = fbBuilder.writeString(_uniqueName);
+ }
+ fbBuilder.startTable();
+ if (offset_correction != null) {
+ fbBuilder.addOffset(4, offset_correction);
+ }
+ if (_length != null && _length != 0) {
+ fbBuilder.addUint32(1, _length);
+ }
+ if (offset_message != null) {
+ fbBuilder.addOffset(3, offset_message);
+ }
+ if (_offset != null && _offset != 0) {
+ fbBuilder.addUint32(0, _offset);
+ }
+ if (offset_uniqueName != null) {
+ fbBuilder.addOffset(2, offset_uniqueName);
+ }
+ return fbBuilder.endTable();
+ }
+}
+
+class _AnalysisDriverUnitErrorReader extends fb.TableReader<_AnalysisDriverUnitErrorImpl> {
+ const _AnalysisDriverUnitErrorReader();
+
+ @override
+ _AnalysisDriverUnitErrorImpl createObject(fb.BufferContext bc, int offset) => new _AnalysisDriverUnitErrorImpl(bc, offset);
+}
+
+class _AnalysisDriverUnitErrorImpl extends Object with _AnalysisDriverUnitErrorMixin implements idl.AnalysisDriverUnitError {
+ final fb.BufferContext _bc;
+ final int _bcOffset;
+
+ _AnalysisDriverUnitErrorImpl(this._bc, this._bcOffset);
+
+ String _correction;
+ int _length;
+ String _message;
+ int _offset;
+ String _uniqueName;
+
+ @override
+ String get correction {
+ _correction ??= const fb.StringReader().vTableGet(_bc, _bcOffset, 4, '');
+ return _correction;
+ }
+
+ @override
+ int get length {
+ _length ??= const fb.Uint32Reader().vTableGet(_bc, _bcOffset, 1, 0);
+ return _length;
+ }
+
+ @override
+ String get message {
+ _message ??= const fb.StringReader().vTableGet(_bc, _bcOffset, 3, '');
+ return _message;
+ }
+
+ @override
+ int get offset {
+ _offset ??= const fb.Uint32Reader().vTableGet(_bc, _bcOffset, 0, 0);
+ return _offset;
+ }
+
+ @override
+ String get uniqueName {
+ _uniqueName ??= const fb.StringReader().vTableGet(_bc, _bcOffset, 2, '');
+ return _uniqueName;
+ }
+}
+
+abstract class _AnalysisDriverUnitErrorMixin implements idl.AnalysisDriverUnitError {
+ @override
+ Map<String, Object> toJson() {
+ Map<String, Object> _result = <String, Object>{};
+ if (correction != '') _result["correction"] = correction;
+ if (length != 0) _result["length"] = length;
+ if (message != '') _result["message"] = message;
+ if (offset != 0) _result["offset"] = offset;
+ if (uniqueName != '') _result["uniqueName"] = uniqueName;
+ return _result;
+ }
+
+ @override
+ Map<String, Object> toMap() => {
+ "correction": correction,
+ "length": length,
+ "message": message,
+ "offset": offset,
+ "uniqueName": uniqueName,
+ };
+
+ @override
+ String toString() => convert.JSON.encode(toJson());
+}
+
class CodeRangeBuilder extends Object with _CodeRangeMixin implements idl.CodeRange {
int _length;
int _offset;

Powered by Google App Engine
This is Rietveld 408576698