Skip to content

Commit

Permalink
Add major and minor version numbers to summary files.
Browse files Browse the repository at this point in the history
Note: my expectation is that we won't start bumping the version
numbers until summaries begin being used in the wild.  While summary
support remains experimental, the version number will remain at 1.0.

[email protected]

Review URL: https://codereview.chromium.org/1754793002 .
  • Loading branch information
stereotype441 committed Mar 1, 2016
1 parent e225e61 commit 92176ad
Show file tree
Hide file tree
Showing 4 changed files with 101 additions and 2 deletions.
56 changes: 55 additions & 1 deletion pkg/analyzer/lib/src/summary/format.dart
Original file line number Diff line number Diff line change
Expand Up @@ -1246,6 +1246,8 @@ class PackageBundleBuilder extends Object with _PackageBundleMixin implements id

List<LinkedLibraryBuilder> _linkedLibraries;
List<String> _linkedLibraryUris;
int _majorVersion;
int _minorVersion;
List<String> _unlinkedUnitHashes;
List<UnlinkedUnitBuilder> _unlinkedUnits;
List<String> _unlinkedUnitUris;
Expand Down Expand Up @@ -1273,6 +1275,32 @@ class PackageBundleBuilder extends Object with _PackageBundleMixin implements id
_linkedLibraryUris = _value;
}

@override
int get majorVersion => _majorVersion ??= 0;

/**
* Major version of the summary format. See
* [PackageBundleAssembler.currentMajorVersion].
*/
void set majorVersion(int _value) {
assert(!_finished);
assert(_value == null || _value >= 0);
_majorVersion = _value;
}

@override
int get minorVersion => _minorVersion ??= 0;

/**
* Minor version of the summary format. See
* [PackageBundleAssembler.currentMinorVersion].
*/
void set minorVersion(int _value) {
assert(!_finished);
assert(_value == null || _value >= 0);
_minorVersion = _value;
}

@override
List<String> get unlinkedUnitHashes => _unlinkedUnitHashes ??= <String>[];

Expand Down Expand Up @@ -1307,9 +1335,11 @@ class PackageBundleBuilder extends Object with _PackageBundleMixin implements id
_unlinkedUnitUris = _value;
}

PackageBundleBuilder({List<LinkedLibraryBuilder> linkedLibraries, List<String> linkedLibraryUris, List<String> unlinkedUnitHashes, List<UnlinkedUnitBuilder> unlinkedUnits, List<String> unlinkedUnitUris})
PackageBundleBuilder({List<LinkedLibraryBuilder> linkedLibraries, List<String> linkedLibraryUris, int majorVersion, int minorVersion, List<String> unlinkedUnitHashes, List<UnlinkedUnitBuilder> unlinkedUnits, List<String> unlinkedUnitUris})
: _linkedLibraries = linkedLibraries,
_linkedLibraryUris = linkedLibraryUris,
_majorVersion = majorVersion,
_minorVersion = minorVersion,
_unlinkedUnitHashes = unlinkedUnitHashes,
_unlinkedUnits = unlinkedUnits,
_unlinkedUnitUris = unlinkedUnitUris;
Expand Down Expand Up @@ -1349,6 +1379,12 @@ class PackageBundleBuilder extends Object with _PackageBundleMixin implements id
if (offset_linkedLibraryUris != null) {
fbBuilder.addOffset(1, offset_linkedLibraryUris);
}
if (_majorVersion != null && _majorVersion != 0) {
fbBuilder.addUint32(5, _majorVersion);
}
if (_minorVersion != null && _minorVersion != 0) {
fbBuilder.addUint32(6, _minorVersion);
}
if (offset_unlinkedUnitHashes != null) {
fbBuilder.addOffset(4, offset_unlinkedUnitHashes);
}
Expand Down Expand Up @@ -1381,6 +1417,8 @@ class _PackageBundleImpl extends Object with _PackageBundleMixin implements idl.

List<idl.LinkedLibrary> _linkedLibraries;
List<String> _linkedLibraryUris;
int _majorVersion;
int _minorVersion;
List<String> _unlinkedUnitHashes;
List<idl.UnlinkedUnit> _unlinkedUnits;
List<String> _unlinkedUnitUris;
Expand All @@ -1397,6 +1435,18 @@ class _PackageBundleImpl extends Object with _PackageBundleMixin implements idl.
return _linkedLibraryUris;
}

@override
int get majorVersion {
_majorVersion ??= const fb.Uint32Reader().vTableGet(_bp, 5, 0);
return _majorVersion;
}

@override
int get minorVersion {
_minorVersion ??= const fb.Uint32Reader().vTableGet(_bp, 6, 0);
return _minorVersion;
}

@override
List<String> get unlinkedUnitHashes {
_unlinkedUnitHashes ??= const fb.ListReader<String>(const fb.StringReader()).vTableGet(_bp, 4, const <String>[]);
Expand All @@ -1422,6 +1472,8 @@ abstract class _PackageBundleMixin implements idl.PackageBundle {
Map<String, Object> _result = <String, Object>{};
if (linkedLibraries.isNotEmpty) _result["linkedLibraries"] = linkedLibraries.map((_value) => _value.toJson()).toList();
if (linkedLibraryUris.isNotEmpty) _result["linkedLibraryUris"] = linkedLibraryUris;
if (majorVersion != 0) _result["majorVersion"] = majorVersion;
if (minorVersion != 0) _result["minorVersion"] = minorVersion;
if (unlinkedUnitHashes.isNotEmpty) _result["unlinkedUnitHashes"] = unlinkedUnitHashes;
if (unlinkedUnits.isNotEmpty) _result["unlinkedUnits"] = unlinkedUnits.map((_value) => _value.toJson()).toList();
if (unlinkedUnitUris.isNotEmpty) _result["unlinkedUnitUris"] = unlinkedUnitUris;
Expand All @@ -1432,6 +1484,8 @@ abstract class _PackageBundleMixin implements idl.PackageBundle {
Map<String, Object> toMap() => {
"linkedLibraries": linkedLibraries,
"linkedLibraryUris": linkedLibraryUris,
"majorVersion": majorVersion,
"minorVersion": minorVersion,
"unlinkedUnitHashes": unlinkedUnitHashes,
"unlinkedUnits": unlinkedUnits,
"unlinkedUnitUris": unlinkedUnitUris,
Expand Down
12 changes: 12 additions & 0 deletions pkg/analyzer/lib/src/summary/format.fbs
Original file line number Diff line number Diff line change
Expand Up @@ -808,6 +808,18 @@ table PackageBundle {
*/
linkedLibraryUris:[string] (id: 1);

/**
* Major version of the summary format. See
* [PackageBundleAssembler.currentMajorVersion].
*/
majorVersion:uint (id: 5);

/**
* Minor version of the summary format. See
* [PackageBundleAssembler.currentMinorVersion].
*/
minorVersion:uint (id: 6);

/**
* List of MD5 hashes of the files listed in [unlinkedUnitUris]. Each hash
* is encoded as a hexadecimal string using lower case letters.
Expand Down
14 changes: 14 additions & 0 deletions pkg/analyzer/lib/src/summary/idl.dart
Original file line number Diff line number Diff line change
Expand Up @@ -468,6 +468,20 @@ abstract class PackageBundle extends base.SummaryClass {
@Id(1)
List<String> get linkedLibraryUris;

/**
* Major version of the summary format. See
* [PackageBundleAssembler.currentMajorVersion].
*/
@Id(5)
int get majorVersion;

/**
* Minor version of the summary format. See
* [PackageBundleAssembler.currentMinorVersion].
*/
@Id(6)
int get minorVersion;

/**
* List of MD5 hashes of the files listed in [unlinkedUnitUris]. Each hash
* is encoded as a hexadecimal string using lower case letters.
Expand Down
21 changes: 20 additions & 1 deletion pkg/analyzer/lib/src/summary/summarize_elements.dart
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,23 @@ class LibrarySerializationResult {
* [PackageBundleBuilder].
*/
class PackageBundleAssembler {
/**
* Value that will be stored in [PackageBundle.majorVersion] for any summaries
* created by this code. When making a breaking change to the summary format,
* this value should be incremented by 1 and [currentMinorVersion] should be
* reset to zero.
*/
static const int currentMajorVersion = 1;

/**
* Value that will be stored in [PackageBundle.minorVersion] for any summaries
* created by this code. When making a non-breaking change to the summary
* format that clients might need to be aware of (such as adding a kind of
* data that was previously not summarized), this value should be incremented
* by 1.
*/
static const int currentMinorVersion = 0;

final List<String> _linkedLibraryUris = <String>[];
final List<LinkedLibraryBuilder> _linkedLibraries = <LinkedLibraryBuilder>[];
final List<String> _unlinkedUnitUris = <String>[];
Expand All @@ -129,7 +146,9 @@ class PackageBundleAssembler {
linkedLibraries: _linkedLibraries,
unlinkedUnitUris: _unlinkedUnitUris,
unlinkedUnits: _unlinkedUnits,
unlinkedUnitHashes: _unlinkedUnitHashes);
unlinkedUnitHashes: _unlinkedUnitHashes,
majorVersion: currentMajorVersion,
minorVersion: currentMinorVersion);
}

/**
Expand Down

0 comments on commit 92176ad

Please sign in to comment.