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 1d91db31f51385ac0238e835a655b86c98910507..f779e4be1ef2710de0e8a44cd53731c58d05ac1c 100644 |
--- a/pkg/analyzer/lib/src/summary/format.dart |
+++ b/pkg/analyzer/lib/src/summary/format.dart |
@@ -419,6 +419,135 @@ abstract class _AnalysisDriverUnitErrorMixin implements idl.AnalysisDriverUnitEr |
String toString() => convert.JSON.encode(toJson()); |
} |
+class AnalysisDriverUnlinkedUnitBuilder extends Object with _AnalysisDriverUnlinkedUnitMixin implements idl.AnalysisDriverUnlinkedUnit { |
+ UnlinkedUnitBuilder _unit; |
+ List<String> _referencedNames; |
+ |
+ @override |
+ UnlinkedUnitBuilder get unit => _unit; |
+ |
+ /** |
+ * Unlinked information for the unit. |
+ */ |
+ void set unit(UnlinkedUnitBuilder value) { |
+ this._unit = value; |
+ } |
+ |
+ @override |
+ List<String> get referencedNames => _referencedNames ??= <String>[]; |
+ |
+ /** |
+ * List of external names referenced by the unit. |
+ */ |
+ void set referencedNames(List<String> value) { |
+ this._referencedNames = value; |
+ } |
+ |
+ AnalysisDriverUnlinkedUnitBuilder({UnlinkedUnitBuilder unit, List<String> referencedNames}) |
+ : _unit = unit, |
+ _referencedNames = referencedNames; |
+ |
+ /** |
+ * Flush [informative] data recursively. |
+ */ |
+ void flushInformative() { |
+ _unit?.flushInformative(); |
+ } |
+ |
+ /** |
+ * Accumulate non-[informative] data into [signature]. |
+ */ |
+ void collectApiSignature(api_sig.ApiSignature signature) { |
+ if (this._referencedNames == null) { |
+ signature.addInt(0); |
+ } else { |
+ signature.addInt(this._referencedNames.length); |
+ for (var x in this._referencedNames) { |
+ signature.addString(x); |
+ } |
+ } |
+ signature.addBool(this._unit != null); |
+ this._unit?.collectApiSignature(signature); |
+ } |
+ |
+ List<int> toBuffer() { |
+ fb.Builder fbBuilder = new fb.Builder(); |
+ return fbBuilder.finish(finish(fbBuilder), "ADUU"); |
+ } |
+ |
+ fb.Offset finish(fb.Builder fbBuilder) { |
+ fb.Offset offset_unit; |
+ fb.Offset offset_referencedNames; |
+ if (_unit != null) { |
+ offset_unit = _unit.finish(fbBuilder); |
+ } |
+ if (!(_referencedNames == null || _referencedNames.isEmpty)) { |
+ offset_referencedNames = fbBuilder.writeList(_referencedNames.map((b) => fbBuilder.writeString(b)).toList()); |
+ } |
+ fbBuilder.startTable(); |
+ if (offset_unit != null) { |
+ fbBuilder.addOffset(1, offset_unit); |
+ } |
+ if (offset_referencedNames != null) { |
+ fbBuilder.addOffset(0, offset_referencedNames); |
+ } |
+ return fbBuilder.endTable(); |
+ } |
+} |
+ |
+idl.AnalysisDriverUnlinkedUnit readAnalysisDriverUnlinkedUnit(List<int> buffer) { |
+ fb.BufferContext rootRef = new fb.BufferContext.fromBytes(buffer); |
+ return const _AnalysisDriverUnlinkedUnitReader().read(rootRef, 0); |
+} |
+ |
+class _AnalysisDriverUnlinkedUnitReader extends fb.TableReader<_AnalysisDriverUnlinkedUnitImpl> { |
+ const _AnalysisDriverUnlinkedUnitReader(); |
+ |
+ @override |
+ _AnalysisDriverUnlinkedUnitImpl createObject(fb.BufferContext bc, int offset) => new _AnalysisDriverUnlinkedUnitImpl(bc, offset); |
+} |
+ |
+class _AnalysisDriverUnlinkedUnitImpl extends Object with _AnalysisDriverUnlinkedUnitMixin implements idl.AnalysisDriverUnlinkedUnit { |
+ final fb.BufferContext _bc; |
+ final int _bcOffset; |
+ |
+ _AnalysisDriverUnlinkedUnitImpl(this._bc, this._bcOffset); |
+ |
+ idl.UnlinkedUnit _unit; |
+ List<String> _referencedNames; |
+ |
+ @override |
+ idl.UnlinkedUnit get unit { |
+ _unit ??= const _UnlinkedUnitReader().vTableGet(_bc, _bcOffset, 1, null); |
+ return _unit; |
+ } |
+ |
+ @override |
+ List<String> get referencedNames { |
+ _referencedNames ??= const fb.ListReader<String>(const fb.StringReader()).vTableGet(_bc, _bcOffset, 0, const <String>[]); |
+ return _referencedNames; |
+ } |
+} |
+ |
+abstract class _AnalysisDriverUnlinkedUnitMixin implements idl.AnalysisDriverUnlinkedUnit { |
+ @override |
+ Map<String, Object> toJson() { |
+ Map<String, Object> _result = <String, Object>{}; |
+ if (unit != null) _result["unit"] = unit.toJson(); |
+ if (referencedNames.isNotEmpty) _result["referencedNames"] = referencedNames; |
+ return _result; |
+ } |
+ |
+ @override |
+ Map<String, Object> toMap() => { |
+ "unit": unit, |
+ "referencedNames": referencedNames, |
+ }; |
+ |
+ @override |
+ String toString() => convert.JSON.encode(toJson()); |
+} |
+ |
class CodeRangeBuilder extends Object with _CodeRangeMixin implements idl.CodeRange { |
int _length; |
int _offset; |