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

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

Issue 1743963002: Index defined top-level and class member names. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 10 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
« no previous file with comments | « no previous file | pkg/analyzer/lib/src/summary/format.fbs » ('j') | pkg/analyzer/lib/src/summary/idl.dart » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 946a6eb2776ba055903561b73686aa88e9b96fc9..f13eb0ebc1456df93aad0bd5d0ced780fe9b09bc 100644
--- a/pkg/analyzer/lib/src/summary/format.dart
+++ b/pkg/analyzer/lib/src/summary/format.dart
@@ -11,6 +11,19 @@ import 'flat_buffers.dart' as fb;
import 'idl.dart' as idl;
import 'dart:convert' as convert;
+class _IndexNameKindReader extends fb.Reader<idl.IndexNameKind> {
+ const _IndexNameKindReader() : super();
+
+ @override
+ int get size => 1;
+
+ @override
+ idl.IndexNameKind read(fb.BufferPointer bp) {
+ int index = const fb.Uint8Reader().read(bp);
+ return idl.IndexNameKind.values[index];
+ }
+}
+
class _IndexRelationKindReader extends fb.Reader<idl.IndexRelationKind> {
const _IndexRelationKindReader() : super();
@@ -1436,8 +1449,8 @@ class PackageIndexBuilder extends Object with _PackageIndexMixin implements idl.
List<int> _elementOffsets;
List<int> _elementUnits;
List<int> _elementUnitUris;
+ List<String> _strings;
List<UnitIndexBuilder> _units;
- List<String> _uris;
@override
List<idl.IndexSyntheticElementKind> get elementKinds => _elementKinds ??= <idl.IndexSyntheticElementKind>[];
@@ -1507,35 +1520,35 @@ class PackageIndexBuilder extends Object with _PackageIndexMixin implements idl.
}
@override
- List<UnitIndexBuilder> get units => _units ??= <UnitIndexBuilder>[];
+ List<String> get strings => _strings ??= <String>[];
/**
- * List of units indexed in this [PackageIndex].
+ * List of unique element strings used in this [PackageIndex].
*/
- void set units(List<UnitIndexBuilder> _value) {
+ void set strings(List<String> _value) {
assert(!_finished);
- _units = _value;
+ _strings = _value;
}
@override
- List<String> get uris => _uris ??= <String>[];
+ List<UnitIndexBuilder> get units => _units ??= <UnitIndexBuilder>[];
/**
- * List of unique URIs used in this [PackageIndex].
+ * List of units indexed in this [PackageIndex].
*/
- void set uris(List<String> _value) {
+ void set units(List<UnitIndexBuilder> _value) {
assert(!_finished);
- _uris = _value;
+ _units = _value;
}
- PackageIndexBuilder({List<idl.IndexSyntheticElementKind> elementKinds, List<int> elementLibraryUris, List<int> elementOffsets, List<int> elementUnits, List<int> elementUnitUris, List<UnitIndexBuilder> units, List<String> uris})
+ PackageIndexBuilder({List<idl.IndexSyntheticElementKind> elementKinds, List<int> elementLibraryUris, List<int> elementOffsets, List<int> elementUnits, List<int> elementUnitUris, List<String> strings, List<UnitIndexBuilder> units})
: _elementKinds = elementKinds,
_elementLibraryUris = elementLibraryUris,
_elementOffsets = elementOffsets,
_elementUnits = elementUnits,
_elementUnitUris = elementUnitUris,
- _units = units,
- _uris = uris;
+ _strings = strings,
+ _units = units;
List<int> toBuffer() {
fb.Builder fbBuilder = new fb.Builder();
@@ -1550,8 +1563,8 @@ class PackageIndexBuilder extends Object with _PackageIndexMixin implements idl.
fb.Offset offset_elementOffsets;
fb.Offset offset_elementUnits;
fb.Offset offset_elementUnitUris;
+ fb.Offset offset_strings;
fb.Offset offset_units;
- fb.Offset offset_uris;
if (!(_elementKinds == null || _elementKinds.isEmpty)) {
offset_elementKinds = fbBuilder.writeListUint8(_elementKinds.map((b) => b.index).toList());
}
@@ -1567,15 +1580,15 @@ class PackageIndexBuilder extends Object with _PackageIndexMixin implements idl.
if (!(_elementUnitUris == null || _elementUnitUris.isEmpty)) {
offset_elementUnitUris = fbBuilder.writeListUint32(_elementUnitUris);
}
+ if (!(_strings == null || _strings.isEmpty)) {
+ offset_strings = fbBuilder.writeList(_strings.map((b) => fbBuilder.writeString(b)).toList());
+ }
if (!(_units == null || _units.isEmpty)) {
offset_units = fbBuilder.writeList(_units.map((b) => b.finish(fbBuilder)).toList());
}
- if (!(_uris == null || _uris.isEmpty)) {
- offset_uris = fbBuilder.writeList(_uris.map((b) => fbBuilder.writeString(b)).toList());
- }
fbBuilder.startTable();
if (offset_elementKinds != null) {
- fbBuilder.addOffset(6, offset_elementKinds);
+ fbBuilder.addOffset(5, offset_elementKinds);
Brian Wilkerson 2016/02/27 18:15:10 It would be good to use constants for these offset
scheglov 2016/02/27 23:00:44 I'm sorry, I should have thought to provide more d
}
if (offset_elementLibraryUris != null) {
fbBuilder.addOffset(2, offset_elementLibraryUris);
@@ -1589,11 +1602,11 @@ class PackageIndexBuilder extends Object with _PackageIndexMixin implements idl.
if (offset_elementUnitUris != null) {
fbBuilder.addOffset(3, offset_elementUnitUris);
}
- if (offset_units != null) {
- fbBuilder.addOffset(5, offset_units);
+ if (offset_strings != null) {
+ fbBuilder.addOffset(6, offset_strings);
}
- if (offset_uris != null) {
- fbBuilder.addOffset(4, offset_uris);
+ if (offset_units != null) {
+ fbBuilder.addOffset(4, offset_units);
}
return fbBuilder.endTable();
}
@@ -1621,12 +1634,12 @@ class _PackageIndexImpl extends Object with _PackageIndexMixin implements idl.Pa
List<int> _elementOffsets;
List<int> _elementUnits;
List<int> _elementUnitUris;
+ List<String> _strings;
List<idl.UnitIndex> _units;
- List<String> _uris;
@override
List<idl.IndexSyntheticElementKind> get elementKinds {
- _elementKinds ??= const fb.ListReader<idl.IndexSyntheticElementKind>(const _IndexSyntheticElementKindReader()).vTableGet(_bp, 6, const <idl.IndexSyntheticElementKind>[]);
+ _elementKinds ??= const fb.ListReader<idl.IndexSyntheticElementKind>(const _IndexSyntheticElementKindReader()).vTableGet(_bp, 5, const <idl.IndexSyntheticElementKind>[]);
return _elementKinds;
}
@@ -1655,15 +1668,15 @@ class _PackageIndexImpl extends Object with _PackageIndexMixin implements idl.Pa
}
@override
- List<idl.UnitIndex> get units {
- _units ??= const fb.ListReader<idl.UnitIndex>(const _UnitIndexReader()).vTableGet(_bp, 5, const <idl.UnitIndex>[]);
- return _units;
+ List<String> get strings {
+ _strings ??= const fb.ListReader<String>(const fb.StringReader()).vTableGet(_bp, 6, const <String>[]);
+ return _strings;
}
@override
- List<String> get uris {
- _uris ??= const fb.ListReader<String>(const fb.StringReader()).vTableGet(_bp, 4, const <String>[]);
- return _uris;
+ List<idl.UnitIndex> get units {
+ _units ??= const fb.ListReader<idl.UnitIndex>(const _UnitIndexReader()).vTableGet(_bp, 4, const <idl.UnitIndex>[]);
+ return _units;
}
}
@@ -1676,8 +1689,8 @@ abstract class _PackageIndexMixin implements idl.PackageIndex {
if (elementOffsets.isNotEmpty) _result["elementOffsets"] = elementOffsets;
if (elementUnits.isNotEmpty) _result["elementUnits"] = elementUnits;
if (elementUnitUris.isNotEmpty) _result["elementUnitUris"] = elementUnitUris;
+ if (strings.isNotEmpty) _result["strings"] = strings;
if (units.isNotEmpty) _result["units"] = units.map((_value) => _value.toJson()).toList();
- if (uris.isNotEmpty) _result["uris"] = uris;
return _result;
}
@@ -1688,8 +1701,8 @@ abstract class _PackageIndexMixin implements idl.PackageIndex {
"elementOffsets": elementOffsets,
"elementUnits": elementUnits,
"elementUnitUris": elementUnitUris,
+ "strings": strings,
"units": units,
- "uris": uris,
};
@override
@@ -1699,6 +1712,9 @@ abstract class _PackageIndexMixin implements idl.PackageIndex {
class UnitIndexBuilder extends Object with _UnitIndexMixin implements idl.UnitIndex {
bool _finished = false;
+ List<idl.IndexNameKind> _definedNameKinds;
+ List<int> _definedNameOffsets;
+ List<int> _definedNames;
List<int> _elements;
List<idl.IndexRelationKind> _kinds;
int _libraryUri;
@@ -1707,6 +1723,45 @@ class UnitIndexBuilder extends Object with _UnitIndexMixin implements idl.UnitIn
int _unitUri;
@override
+ List<idl.IndexNameKind> get definedNameKinds => _definedNameKinds ??= <idl.IndexNameKind>[];
+
+ /**
+ * Each item of this list is the kind of an element defined in this unit.
+ */
+ void set definedNameKinds(List<idl.IndexNameKind> _value) {
+ assert(!_finished);
+ _definedNameKinds = _value;
+ }
+
+ @override
+ List<int> get definedNameOffsets => _definedNameOffsets ??= <int>[];
+
+ /**
+ * Each item of this list is the name offset of an element defined in this
+ * unit relative to the beginning of the file.
+ */
+ void set definedNameOffsets(List<int> _value) {
+ assert(!_finished);
+ assert(_value == null || _value.every((e) => e >= 0));
+ _definedNameOffsets = _value;
+ }
+
+ @override
+ List<int> get definedNames => _definedNames ??= <int>[];
+
+ /**
+ * Each item of this list corresponds to an element defined in this unit. It
+ * is an index into [PackageIndex.strings] list. The list is sorted in
+ * ascending order, so that the client can quickly find name definitions in
+ * this [UnitIndex].
+ */
+ void set definedNames(List<int> _value) {
+ assert(!_finished);
+ assert(_value == null || _value.every((e) => e >= 0));
+ _definedNames = _value;
+ }
+
+ @override
List<int> get elements => _elements ??= <int>[];
/**
@@ -1782,8 +1837,11 @@ class UnitIndexBuilder extends Object with _UnitIndexMixin implements idl.UnitIn
_unitUri = _value;
}
- UnitIndexBuilder({List<int> elements, List<idl.IndexRelationKind> kinds, int libraryUri, List<int> locationLengths, List<int> locationOffsets, int unitUri})
- : _elements = elements,
+ UnitIndexBuilder({List<idl.IndexNameKind> definedNameKinds, List<int> definedNameOffsets, List<int> definedNames, List<int> elements, List<idl.IndexRelationKind> kinds, int libraryUri, List<int> locationLengths, List<int> locationOffsets, int unitUri})
+ : _definedNameKinds = definedNameKinds,
+ _definedNameOffsets = definedNameOffsets,
+ _definedNames = definedNames,
+ _elements = elements,
_kinds = kinds,
_libraryUri = libraryUri,
_locationLengths = locationLengths,
@@ -1793,10 +1851,22 @@ class UnitIndexBuilder extends Object with _UnitIndexMixin implements idl.UnitIn
fb.Offset finish(fb.Builder fbBuilder) {
assert(!_finished);
_finished = true;
+ fb.Offset offset_definedNameKinds;
+ fb.Offset offset_definedNameOffsets;
+ fb.Offset offset_definedNames;
fb.Offset offset_elements;
fb.Offset offset_kinds;
fb.Offset offset_locationLengths;
fb.Offset offset_locationOffsets;
+ if (!(_definedNameKinds == null || _definedNameKinds.isEmpty)) {
+ offset_definedNameKinds = fbBuilder.writeListUint8(_definedNameKinds.map((b) => b.index).toList());
+ }
+ if (!(_definedNameOffsets == null || _definedNameOffsets.isEmpty)) {
+ offset_definedNameOffsets = fbBuilder.writeListUint32(_definedNameOffsets);
+ }
+ if (!(_definedNames == null || _definedNames.isEmpty)) {
+ offset_definedNames = fbBuilder.writeListUint32(_definedNames);
+ }
if (!(_elements == null || _elements.isEmpty)) {
offset_elements = fbBuilder.writeListUint32(_elements);
}
@@ -1810,6 +1880,15 @@ class UnitIndexBuilder extends Object with _UnitIndexMixin implements idl.UnitIn
offset_locationOffsets = fbBuilder.writeListUint32(_locationOffsets);
}
fbBuilder.startTable();
+ if (offset_definedNameKinds != null) {
+ fbBuilder.addOffset(7, offset_definedNameKinds);
+ }
+ if (offset_definedNameOffsets != null) {
+ fbBuilder.addOffset(8, offset_definedNameOffsets);
+ }
+ if (offset_definedNames != null) {
+ fbBuilder.addOffset(6, offset_definedNames);
+ }
if (offset_elements != null) {
fbBuilder.addOffset(4, offset_elements);
}
@@ -1844,6 +1923,9 @@ class _UnitIndexImpl extends Object with _UnitIndexMixin implements idl.UnitInde
_UnitIndexImpl(this._bp);
+ List<idl.IndexNameKind> _definedNameKinds;
+ List<int> _definedNameOffsets;
+ List<int> _definedNames;
List<int> _elements;
List<idl.IndexRelationKind> _kinds;
int _libraryUri;
@@ -1852,6 +1934,24 @@ class _UnitIndexImpl extends Object with _UnitIndexMixin implements idl.UnitInde
int _unitUri;
@override
+ List<idl.IndexNameKind> get definedNameKinds {
+ _definedNameKinds ??= const fb.ListReader<idl.IndexNameKind>(const _IndexNameKindReader()).vTableGet(_bp, 7, const <idl.IndexNameKind>[]);
+ return _definedNameKinds;
+ }
+
+ @override
+ List<int> get definedNameOffsets {
+ _definedNameOffsets ??= const fb.Uint32ListReader().vTableGet(_bp, 8, const <int>[]);
+ return _definedNameOffsets;
+ }
+
+ @override
+ List<int> get definedNames {
+ _definedNames ??= const fb.Uint32ListReader().vTableGet(_bp, 6, const <int>[]);
+ return _definedNames;
+ }
+
+ @override
List<int> get elements {
_elements ??= const fb.Uint32ListReader().vTableGet(_bp, 4, const <int>[]);
return _elements;
@@ -1892,6 +1992,9 @@ abstract class _UnitIndexMixin implements idl.UnitIndex {
@override
Map<String, Object> toJson() {
Map<String, Object> _result = <String, Object>{};
+ if (definedNameKinds.isNotEmpty) _result["definedNameKinds"] = definedNameKinds.map((_value) => _value.toString().split('.')[1]).toList();
+ if (definedNameOffsets.isNotEmpty) _result["definedNameOffsets"] = definedNameOffsets;
+ if (definedNames.isNotEmpty) _result["definedNames"] = definedNames;
if (elements.isNotEmpty) _result["elements"] = elements;
if (kinds.isNotEmpty) _result["kinds"] = kinds.map((_value) => _value.toString().split('.')[1]).toList();
if (libraryUri != 0) _result["libraryUri"] = libraryUri;
@@ -1903,6 +2006,9 @@ abstract class _UnitIndexMixin implements idl.UnitIndex {
@override
Map<String, Object> toMap() => {
+ "definedNameKinds": definedNameKinds,
+ "definedNameOffsets": definedNameOffsets,
+ "definedNames": definedNames,
"elements": elements,
"kinds": kinds,
"libraryUri": libraryUri,
« no previous file with comments | « no previous file | pkg/analyzer/lib/src/summary/format.fbs » ('j') | pkg/analyzer/lib/src/summary/idl.dart » ('J')

Powered by Google App Engine
This is Rietveld 408576698