Deprecate unneeded fields from PackageBundle.
Change-Id: I071a44499ef20a32388eea7ba04264c8c9b8e1c9
Reviewed-on: https://dart-review.googlesource.com/73285
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
diff --git a/pkg/analyzer/lib/src/summary/format.dart b/pkg/analyzer/lib/src/summary/format.dart
index 96a374d..599f424 100644
--- a/pkg/analyzer/lib/src/summary/format.dart
+++ b/pkg/analyzer/lib/src/summary/format.dart
@@ -3099,7 +3099,7 @@
}
@override
- bool get fallbackMode =>
+ Null get fallbackMode =>
throw new UnimplementedError('attempt to access deprecated field');
@override
@@ -3316,7 +3316,7 @@
}
@override
- bool get fallbackMode =>
+ Null get fallbackMode =>
throw new UnimplementedError('attempt to access deprecated field');
@override
@@ -3432,7 +3432,7 @@
}
@override
- int get localIndex =>
+ Null get localIndex =>
throw new UnimplementedError('attempt to access deprecated field');
@override
@@ -3580,7 +3580,7 @@
}
@override
- int get localIndex =>
+ Null get localIndex =>
throw new UnimplementedError('attempt to access deprecated field');
@override
@@ -3915,8 +3915,6 @@
class PackageBundleBuilder extends Object
with _PackageBundleMixin
implements idl.PackageBundle {
- String _apiSignature;
- List<PackageDependencyInfoBuilder> _dependencies;
List<LinkedLibraryBuilder> _linkedLibraries;
List<String> _linkedLibraryUris;
int _majorVersion;
@@ -3925,27 +3923,12 @@
List<String> _unlinkedUnitUris;
@override
- String get apiSignature => _apiSignature ??= '';
-
- /**
- * MD5 hash of the non-informative fields of the [PackageBundle] (not
- * including this one). This can be used to identify when the API of a
- * package may have changed.
- */
- void set apiSignature(String value) {
- this._apiSignature = value;
- }
+ Null get apiSignature =>
+ throw new UnimplementedError('attempt to access deprecated field');
@override
- List<PackageDependencyInfoBuilder> get dependencies =>
- _dependencies ??= <PackageDependencyInfoBuilder>[];
-
- /**
- * Information about the packages this package depends on, if known.
- */
- void set dependencies(List<PackageDependencyInfoBuilder> value) {
- this._dependencies = value;
- }
+ Null get dependencies =>
+ throw new UnimplementedError('attempt to access deprecated field');
@override
List<LinkedLibraryBuilder> get linkedLibraries =>
@@ -3994,7 +3977,7 @@
}
@override
- List<String> get unlinkedUnitHashes =>
+ Null get unlinkedUnitHashes =>
throw new UnimplementedError('attempt to access deprecated field');
@override
@@ -4019,17 +4002,13 @@
}
PackageBundleBuilder(
- {String apiSignature,
- List<PackageDependencyInfoBuilder> dependencies,
- List<LinkedLibraryBuilder> linkedLibraries,
+ {List<LinkedLibraryBuilder> linkedLibraries,
List<String> linkedLibraryUris,
int majorVersion,
int minorVersion,
List<UnlinkedUnitBuilder> unlinkedUnits,
List<String> unlinkedUnitUris})
- : _apiSignature = apiSignature,
- _dependencies = dependencies,
- _linkedLibraries = linkedLibraries,
+ : _linkedLibraries = linkedLibraries,
_linkedLibraryUris = linkedLibraryUris,
_majorVersion = majorVersion,
_minorVersion = minorVersion,
@@ -4040,7 +4019,6 @@
* Flush [informative] data recursively.
*/
void flushInformative() {
- _dependencies = null;
_linkedLibraries?.forEach((b) => b.flushInformative());
_unlinkedUnits?.forEach((b) => b.flushInformative());
}
@@ -4083,7 +4061,6 @@
}
signature.addInt(this._majorVersion ?? 0);
signature.addInt(this._minorVersion ?? 0);
- signature.addString(this._apiSignature ?? '');
}
List<int> toBuffer() {
@@ -4092,19 +4069,10 @@
}
fb.Offset finish(fb.Builder fbBuilder) {
- fb.Offset offset_apiSignature;
- fb.Offset offset_dependencies;
fb.Offset offset_linkedLibraries;
fb.Offset offset_linkedLibraryUris;
fb.Offset offset_unlinkedUnits;
fb.Offset offset_unlinkedUnitUris;
- if (_apiSignature != null) {
- offset_apiSignature = fbBuilder.writeString(_apiSignature);
- }
- if (!(_dependencies == null || _dependencies.isEmpty)) {
- offset_dependencies = fbBuilder
- .writeList(_dependencies.map((b) => b.finish(fbBuilder)).toList());
- }
if (!(_linkedLibraries == null || _linkedLibraries.isEmpty)) {
offset_linkedLibraries = fbBuilder
.writeList(_linkedLibraries.map((b) => b.finish(fbBuilder)).toList());
@@ -4122,12 +4090,6 @@
_unlinkedUnitUris.map((b) => fbBuilder.writeString(b)).toList());
}
fbBuilder.startTable();
- if (offset_apiSignature != null) {
- fbBuilder.addOffset(7, offset_apiSignature);
- }
- if (offset_dependencies != null) {
- fbBuilder.addOffset(8, offset_dependencies);
- }
if (offset_linkedLibraries != null) {
fbBuilder.addOffset(0, offset_linkedLibraries);
}
@@ -4171,8 +4133,6 @@
_PackageBundleImpl(this._bc, this._bcOffset);
- String _apiSignature;
- List<idl.PackageDependencyInfo> _dependencies;
List<idl.LinkedLibrary> _linkedLibraries;
List<String> _linkedLibraryUris;
int _majorVersion;
@@ -4181,18 +4141,12 @@
List<String> _unlinkedUnitUris;
@override
- String get apiSignature {
- _apiSignature ??= const fb.StringReader().vTableGet(_bc, _bcOffset, 7, '');
- return _apiSignature;
- }
+ Null get apiSignature =>
+ throw new UnimplementedError('attempt to access deprecated field');
@override
- List<idl.PackageDependencyInfo> get dependencies {
- _dependencies ??= const fb.ListReader<idl.PackageDependencyInfo>(
- const _PackageDependencyInfoReader())
- .vTableGet(_bc, _bcOffset, 8, const <idl.PackageDependencyInfo>[]);
- return _dependencies;
- }
+ Null get dependencies =>
+ throw new UnimplementedError('attempt to access deprecated field');
@override
List<idl.LinkedLibrary> get linkedLibraries {
@@ -4222,7 +4176,7 @@
}
@override
- List<String> get unlinkedUnitHashes =>
+ Null get unlinkedUnitHashes =>
throw new UnimplementedError('attempt to access deprecated field');
@override
@@ -4245,10 +4199,6 @@
@override
Map<String, Object> toJson() {
Map<String, Object> _result = <String, Object>{};
- if (apiSignature != '') _result["apiSignature"] = apiSignature;
- if (dependencies.isNotEmpty)
- _result["dependencies"] =
- dependencies.map((_value) => _value.toJson()).toList();
if (linkedLibraries.isNotEmpty)
_result["linkedLibraries"] =
linkedLibraries.map((_value) => _value.toJson()).toList();
@@ -4266,8 +4216,6 @@
@override
Map<String, Object> toMap() => {
- "apiSignature": apiSignature,
- "dependencies": dependencies,
"linkedLibraries": linkedLibraries,
"linkedLibraryUris": linkedLibraryUris,
"majorVersion": majorVersion,
@@ -4280,231 +4228,6 @@
String toString() => convert.json.encode(toJson());
}
-class PackageDependencyInfoBuilder extends Object
- with _PackageDependencyInfoMixin
- implements idl.PackageDependencyInfo {
- String _apiSignature;
- List<String> _includedPackageNames;
- bool _includesDartUris;
- bool _includesFileUris;
- String _summaryPath;
-
- @override
- String get apiSignature => _apiSignature ??= '';
-
- /**
- * API signature of this dependency.
- */
- void set apiSignature(String value) {
- this._apiSignature = value;
- }
-
- @override
- List<String> get includedPackageNames => _includedPackageNames ??= <String>[];
-
- /**
- * If this dependency summarizes any files whose URI takes the form
- * "package:<package_name>/...", a list of all such package names, sorted
- * lexicographically. Otherwise empty.
- */
- void set includedPackageNames(List<String> value) {
- this._includedPackageNames = value;
- }
-
- @override
- bool get includesDartUris => _includesDartUris ??= false;
-
- /**
- * Indicates whether this dependency summarizes any files whose URI takes the
- * form "dart:...".
- */
- void set includesDartUris(bool value) {
- this._includesDartUris = value;
- }
-
- @override
- bool get includesFileUris => _includesFileUris ??= false;
-
- /**
- * Indicates whether this dependency summarizes any files whose URI takes the
- * form "file:...".
- */
- void set includesFileUris(bool value) {
- this._includesFileUris = value;
- }
-
- @override
- String get summaryPath => _summaryPath ??= '';
-
- /**
- * Relative path to the summary file for this dependency. This is intended as
- * a hint to help the analysis server locate summaries of dependencies. We
- * don't specify precisely what this path is relative to, but we expect it to
- * be relative to a directory the analysis server can find (e.g. for projects
- * built using Bazel, it would be relative to the "bazel-bin" directory).
- *
- * Absent if the path is not known.
- */
- void set summaryPath(String value) {
- this._summaryPath = value;
- }
-
- PackageDependencyInfoBuilder(
- {String apiSignature,
- List<String> includedPackageNames,
- bool includesDartUris,
- bool includesFileUris,
- String summaryPath})
- : _apiSignature = apiSignature,
- _includedPackageNames = includedPackageNames,
- _includesDartUris = includesDartUris,
- _includesFileUris = includesFileUris,
- _summaryPath = summaryPath;
-
- /**
- * Flush [informative] data recursively.
- */
- void flushInformative() {}
-
- /**
- * Accumulate non-[informative] data into [signature].
- */
- void collectApiSignature(api_sig.ApiSignature signature) {
- signature.addString(this._apiSignature ?? '');
- signature.addString(this._summaryPath ?? '');
- if (this._includedPackageNames == null) {
- signature.addInt(0);
- } else {
- signature.addInt(this._includedPackageNames.length);
- for (var x in this._includedPackageNames) {
- signature.addString(x);
- }
- }
- signature.addBool(this._includesFileUris == true);
- signature.addBool(this._includesDartUris == true);
- }
-
- fb.Offset finish(fb.Builder fbBuilder) {
- fb.Offset offset_apiSignature;
- fb.Offset offset_includedPackageNames;
- fb.Offset offset_summaryPath;
- if (_apiSignature != null) {
- offset_apiSignature = fbBuilder.writeString(_apiSignature);
- }
- if (!(_includedPackageNames == null || _includedPackageNames.isEmpty)) {
- offset_includedPackageNames = fbBuilder.writeList(
- _includedPackageNames.map((b) => fbBuilder.writeString(b)).toList());
- }
- if (_summaryPath != null) {
- offset_summaryPath = fbBuilder.writeString(_summaryPath);
- }
- fbBuilder.startTable();
- if (offset_apiSignature != null) {
- fbBuilder.addOffset(0, offset_apiSignature);
- }
- if (offset_includedPackageNames != null) {
- fbBuilder.addOffset(2, offset_includedPackageNames);
- }
- if (_includesDartUris == true) {
- fbBuilder.addBool(4, true);
- }
- if (_includesFileUris == true) {
- fbBuilder.addBool(3, true);
- }
- if (offset_summaryPath != null) {
- fbBuilder.addOffset(1, offset_summaryPath);
- }
- return fbBuilder.endTable();
- }
-}
-
-class _PackageDependencyInfoReader
- extends fb.TableReader<_PackageDependencyInfoImpl> {
- const _PackageDependencyInfoReader();
-
- @override
- _PackageDependencyInfoImpl createObject(fb.BufferContext bc, int offset) =>
- new _PackageDependencyInfoImpl(bc, offset);
-}
-
-class _PackageDependencyInfoImpl extends Object
- with _PackageDependencyInfoMixin
- implements idl.PackageDependencyInfo {
- final fb.BufferContext _bc;
- final int _bcOffset;
-
- _PackageDependencyInfoImpl(this._bc, this._bcOffset);
-
- String _apiSignature;
- List<String> _includedPackageNames;
- bool _includesDartUris;
- bool _includesFileUris;
- String _summaryPath;
-
- @override
- String get apiSignature {
- _apiSignature ??= const fb.StringReader().vTableGet(_bc, _bcOffset, 0, '');
- return _apiSignature;
- }
-
- @override
- List<String> get includedPackageNames {
- _includedPackageNames ??=
- const fb.ListReader<String>(const fb.StringReader())
- .vTableGet(_bc, _bcOffset, 2, const <String>[]);
- return _includedPackageNames;
- }
-
- @override
- bool get includesDartUris {
- _includesDartUris ??=
- const fb.BoolReader().vTableGet(_bc, _bcOffset, 4, false);
- return _includesDartUris;
- }
-
- @override
- bool get includesFileUris {
- _includesFileUris ??=
- const fb.BoolReader().vTableGet(_bc, _bcOffset, 3, false);
- return _includesFileUris;
- }
-
- @override
- String get summaryPath {
- _summaryPath ??= const fb.StringReader().vTableGet(_bc, _bcOffset, 1, '');
- return _summaryPath;
- }
-}
-
-abstract class _PackageDependencyInfoMixin
- implements idl.PackageDependencyInfo {
- @override
- Map<String, Object> toJson() {
- Map<String, Object> _result = <String, Object>{};
- if (apiSignature != '') _result["apiSignature"] = apiSignature;
- if (includedPackageNames.isNotEmpty)
- _result["includedPackageNames"] = includedPackageNames;
- if (includesDartUris != false)
- _result["includesDartUris"] = includesDartUris;
- if (includesFileUris != false)
- _result["includesFileUris"] = includesFileUris;
- if (summaryPath != '') _result["summaryPath"] = summaryPath;
- return _result;
- }
-
- @override
- Map<String, Object> toMap() => {
- "apiSignature": apiSignature,
- "includedPackageNames": includedPackageNames,
- "includesDartUris": includesDartUris,
- "includesFileUris": includesFileUris,
- "summaryPath": summaryPath,
- };
-
- @override
- String toString() => convert.json.encode(toJson());
-}
-
class PackageIndexBuilder extends Object
with _PackageIndexMixin
implements idl.PackageIndex {
@@ -6890,11 +6613,11 @@
String _text;
@override
- int get length =>
+ Null get length =>
throw new UnimplementedError('attempt to access deprecated field');
@override
- int get offset =>
+ Null get offset =>
throw new UnimplementedError('attempt to access deprecated field');
@override
@@ -6958,11 +6681,11 @@
String _text;
@override
- int get length =>
+ Null get length =>
throw new UnimplementedError('attempt to access deprecated field');
@override
- int get offset =>
+ Null get offset =>
throw new UnimplementedError('attempt to access deprecated field');
@override
@@ -7676,11 +7399,11 @@
}
@override
- List<String> get localLabels =>
+ Null get localLabels =>
throw new UnimplementedError('attempt to access deprecated field');
@override
- List<UnlinkedVariableBuilder> get localVariables =>
+ Null get localVariables =>
throw new UnimplementedError('attempt to access deprecated field');
@override
@@ -8269,11 +7992,11 @@
}
@override
- List<String> get localLabels =>
+ Null get localLabels =>
throw new UnimplementedError('attempt to access deprecated field');
@override
- List<idl.UnlinkedVariable> get localVariables =>
+ Null get localVariables =>
throw new UnimplementedError('attempt to access deprecated field');
@override
@@ -11506,7 +11229,7 @@
}
@override
- String get fallbackModePath =>
+ Null get fallbackModePath =>
throw new UnimplementedError('attempt to access deprecated field');
@override
@@ -12077,7 +11800,7 @@
}
@override
- String get fallbackModePath =>
+ Null get fallbackModePath =>
throw new UnimplementedError('attempt to access deprecated field');
@override
@@ -12444,11 +12167,11 @@
}
@override
- int get visibleLength =>
+ Null get visibleLength =>
throw new UnimplementedError('attempt to access deprecated field');
@override
- int get visibleOffset =>
+ Null get visibleOffset =>
throw new UnimplementedError('attempt to access deprecated field');
UnlinkedVariableBuilder(
@@ -12715,11 +12438,11 @@
}
@override
- int get visibleLength =>
+ Null get visibleLength =>
throw new UnimplementedError('attempt to access deprecated field');
@override
- int get visibleOffset =>
+ Null get visibleOffset =>
throw new UnimplementedError('attempt to access deprecated field');
}
diff --git a/pkg/analyzer/lib/src/summary/format.fbs b/pkg/analyzer/lib/src/summary/format.fbs
index b804769..542ec79 100644
--- a/pkg/analyzer/lib/src/summary/format.fbs
+++ b/pkg/analyzer/lib/src/summary/format.fbs
@@ -1548,12 +1548,12 @@
* including this one). This can be used to identify when the API of a
* package may have changed.
*/
- apiSignature:string (id: 7);
+ apiSignature:string (id: 7, deprecated);
/**
* Information about the packages this package depends on, if known.
*/
- dependencies:[PackageDependencyInfo] (id: 8);
+ dependencies:[PackageDependencyInfo] (id: 8, deprecated);
/**
* Linked libraries.
diff --git a/pkg/analyzer/lib/src/summary/idl.dart b/pkg/analyzer/lib/src/summary/idl.dart
index 4b42d06..ee9df47 100644
--- a/pkg/analyzer/lib/src/summary/idl.dart
+++ b/pkg/analyzer/lib/src/summary/idl.dart
@@ -944,6 +944,7 @@
* package may have changed.
*/
@Id(7)
+ @deprecated
String get apiSignature;
/**
@@ -951,6 +952,7 @@
*/
@Id(8)
@informative
+ @deprecated
List<PackageDependencyInfo> get dependencies;
/**
@@ -1005,6 +1007,7 @@
/**
* Information about a single dependency of a summary package.
*/
+@deprecated
abstract class PackageDependencyInfo extends base.SummaryClass {
/**
* API signature of this dependency.
diff --git a/pkg/analyzer/lib/src/summary/summarize_elements.dart b/pkg/analyzer/lib/src/summary/summarize_elements.dart
index 0bf4716..30964d4 100644
--- a/pkg/analyzer/lib/src/summary/summarize_elements.dart
+++ b/pkg/analyzer/lib/src/summary/summarize_elements.dart
@@ -7,7 +7,6 @@
import 'package:analyzer/src/generated/source.dart';
import 'package:analyzer/src/summary/format.dart';
import 'package:analyzer/src/summary/idl.dart';
-import 'package:front_end/src/base/api_signature.dart';
/**
* Object that gathers information uses it to assemble a new
@@ -63,19 +62,6 @@
unlinkedUnitUris: _unlinkedUnitUris,
unlinkedUnits: _unlinkedUnits,
majorVersion: currentMajorVersion,
- minorVersion: currentMinorVersion,
- apiSignature: _computeApiSignature());
- }
-
- /**
- * Compute the API signature for this package bundle.
- */
- String _computeApiSignature() {
- ApiSignature apiSignature = new ApiSignature();
- for (String unitUri in _unlinkedUnitMap.keys.toList()..sort()) {
- apiSignature.addString(unitUri);
- _unlinkedUnitMap[unitUri].collectApiSignature(apiSignature);
- }
- return apiSignature.toHex();
+ minorVersion: currentMinorVersion);
}
}
diff --git a/pkg/analyzer/test/src/summary/linker_test.dart b/pkg/analyzer/test/src/summary/linker_test.dart
index e738436..12b8e8c 100644
--- a/pkg/analyzer/test/src/summary/linker_test.dart
+++ b/pkg/analyzer/test/src/summary/linker_test.dart
@@ -33,60 +33,6 @@
return linker.getLibrary(Uri.parse(uri));
}
- void test_apiSignature_apiChanges() {
- var bundle0 =
- createPackageBundle('f(int i) { print(i); }', path: '/test.dart');
- var bundle1 =
- createPackageBundle('f(String s) { print(s); }', path: '/test.dart');
- expect(bundle0.apiSignature, isNotEmpty);
- expect(bundle1.apiSignature, isNotEmpty);
- expect(bundle0.apiSignature, isNot(bundle1.apiSignature));
- }
-
- void test_apiSignature_localChanges() {
- var bundle0 = createPackageBundle('f() { print(0); }', path: '/test.dart');
- var bundle1 = createPackageBundle('f() { print(1); }', path: '/test.dart');
- expect(bundle0.apiSignature, isNotEmpty);
- expect(bundle1.apiSignature, isNotEmpty);
- expect(bundle0.apiSignature, bundle1.apiSignature);
- }
-
- void test_apiSignature_orderChange() {
- // A change to the order in which files are processed should not affect the
- // API signature.
- addNamedSource('/a.dart', 'class A {}');
- var bundle0 = createPackageBundle('class B {}', path: '/b.dart');
- addNamedSource('/b.dart', 'class B {}');
- var bundle1 = createPackageBundle('class A {}', path: '/a.dart');
- expect(bundle0.apiSignature, isNotEmpty);
- expect(bundle1.apiSignature, isNotEmpty);
- expect(bundle0.apiSignature, bundle1.apiSignature);
- }
-
- void test_apiSignature_unlinkedOnly() {
- // The API signature of a package bundle should only contain unlinked
- // information. In this test, the linked information for bundle2 and
- // bundle3 refer to class C as existing in different files. But the
- // unlinked information for bundle2 and bundle3 should be the same, so their
- // API signatures should be the same.
- addNamedSource('/a.dart', 'class C {}');
- var bundle0 = createPackageBundle('', path: '/b.dart');
- addNamedSource('/a.dart', '');
- var bundle1 = createPackageBundle('class C {}', path: '/b.dart');
- var text = '''
-import 'a.dart';
-import 'b.dart';
-class D extends C {}
-''';
- addBundle('/bundle0.ds', bundle0);
- var bundle2 = createPackageBundle(text, path: '/c.dart');
- addBundle('/bundle1.ds', bundle1);
- var bundle3 = createPackageBundle(text, path: '/c.dart');
- expect(bundle2.apiSignature, isNotEmpty);
- expect(bundle3.apiSignature, isNotEmpty);
- expect(bundle2.apiSignature, bundle3.apiSignature);
- }
-
void test_baseClass_genericWithAccessor() {
createLinker('''
class B<T> {
diff --git a/pkg/analyzer/tool/summary/generate.dart b/pkg/analyzer/tool/summary/generate.dart
index 1604d01..97495b4 100644
--- a/pkg/analyzer/tool/summary/generate.dart
+++ b/pkg/analyzer/tool/summary/generate.dart
@@ -215,6 +215,7 @@
for (CompilationUnitMember decl in idlParsed.declarations) {
if (decl is ClassDeclaration) {
bool isTopLevel = false;
+ bool isDeprecated = false;
String fileIdentifier;
String clsName = decl.name;
for (Annotation annotation in decl.metadata) {
@@ -222,14 +223,6 @@
annotation.name == 'TopLevel' &&
annotation.constructorName == null) {
isTopLevel = true;
- if (annotation.arguments == null) {
- throw new Exception(
- 'Class `$clsName`: TopLevel requires parenthesis');
- }
- if (annotation.constructorName != null) {
- throw new Exception(
- "Class `$clsName`: TopLevel doesn't have named constructors");
- }
if (annotation.arguments.length == 1) {
Expression arg = annotation.arguments[0];
if (arg is StringLiteral) {
@@ -243,11 +236,15 @@
throw new Exception(
'Class `$clsName`: TopLevel requires 0 or 1 arguments');
}
+ } else if (annotation.arguments == null &&
+ annotation.name == 'deprecated' &&
+ annotation.constructorName == null) {
+ isDeprecated = true;
}
}
String doc = _getNodeDoc(decl);
idlModel.ClassDeclaration cls = new idlModel.ClassDeclaration(
- doc, clsName, isTopLevel, fileIdentifier);
+ doc, clsName, isTopLevel, fileIdentifier, isDeprecated);
_idl.classes[clsName] = cls;
String expectedBase = 'base.SummaryClass';
if (decl.superclass == null || decl.superclass.name != expectedBase) {
@@ -445,18 +442,22 @@
out();
}
for (idlModel.ClassDeclaration cls in _idl.classes.values) {
- _generateBuilder(cls);
- out();
+ if (!cls.isDeprecated) {
+ _generateBuilder(cls);
+ out();
+ }
if (cls.isTopLevel) {
_generateReadFunction(cls);
out();
}
- _generateReader(cls);
- out();
- _generateImpl(cls);
- out();
- _generateMixin(cls);
- out();
+ if (!cls.isDeprecated) {
+ _generateReader(cls);
+ out();
+ _generateImpl(cls);
+ out();
+ _generateMixin(cls);
+ out();
+ }
}
}
@@ -529,8 +530,9 @@
String builderName = name + 'Builder';
String mixinName = '_${name}Mixin';
List<String> constructorParams = <String>[];
- out('class $builderName extends Object with $mixinName '
- 'implements ${idlPrefix(name)} {');
+ var implementsClause =
+ cls.isDeprecated ? '' : ' implements ${idlPrefix(name)}';
+ out('class $builderName extends Object with $mixinName$implementsClause {');
indent(() {
// Generate fields.
for (idlModel.FieldDeclaration field in cls.fields) {
@@ -549,7 +551,7 @@
out();
out('@override');
if (field.isDeprecated) {
- out('$typeStr get $fieldName => $_throwDeprecated;');
+ out('Null get $fieldName => $_throwDeprecated;');
} else {
out('$typeStr get $fieldName => _$fieldName$defSuffix;');
out();
@@ -842,7 +844,7 @@
out('@override');
String returnType = dartType(type);
if (field.isDeprecated) {
- out('$returnType get $fieldName => $_throwDeprecated;');
+ out('Null get $fieldName => $_throwDeprecated;');
} else {
out('$returnType get $fieldName {');
indent(() {
diff --git a/pkg/analyzer/tool/summary/idl_model.dart b/pkg/analyzer/tool/summary/idl_model.dart
index 375dcb2..79bae0e 100644
--- a/pkg/analyzer/tool/summary/idl_model.dart
+++ b/pkg/analyzer/tool/summary/idl_model.dart
@@ -29,8 +29,13 @@
*/
final String fileIdentifier;
- ClassDeclaration(
- String documentation, String name, this.isTopLevel, this.fileIdentifier)
+ /**
+ * Indicates whether the class has the `deprecated` annotation.
+ */
+ final bool isDeprecated;
+
+ ClassDeclaration(String documentation, String name, this.isTopLevel,
+ this.fileIdentifier, this.isDeprecated)
: super(documentation, name);
/**