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

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

Issue 1452363002: Modify summary Builder classes to avoid the use of Object. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 5 years, 1 month 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 | « pkg/analyzer/lib/src/summary/format.dart ('k') | pkg/analyzer/test/src/summary/summary_test.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/analyzer/lib/src/summary/summarize_elements.dart
diff --git a/pkg/analyzer/lib/src/summary/summarize_elements.dart b/pkg/analyzer/lib/src/summary/summarize_elements.dart
index 9f8dd161350926312407b0454301d0217955a704..4f35c29a70b6e383e21767608e1c949b2b943019 100644
--- a/pkg/analyzer/lib/src/summary/summarize_elements.dart
+++ b/pkg/analyzer/lib/src/summary/summarize_elements.dart
@@ -13,11 +13,8 @@ import 'package:analyzer/src/summary/format.dart';
/**
* Serialize all the elements in [lib] to a summary using [ctx] as the context
* for building the summary, and using [typeProvider] to find built-in types.
- *
- * Return an object which may safely be passed to [BuilderContext.getBuffer] or
- * included in an aggregate summary.
*/
-Object serializeLibrary(
+PrelinkedLibraryBuilder serializeLibrary(
BuilderContext ctx, LibraryElement lib, TypeProvider typeProvider) {
return new _LibrarySerializer(ctx, lib, typeProvider).serializeLibrary();
}
@@ -40,32 +37,33 @@ class _LibrarySerializer {
/**
* List of objects which should be written to [UnlinkedLibrary.classes].
*/
- final List<Object> classes = <Object>[];
+ final List<UnlinkedClassBuilder> classes = <UnlinkedClassBuilder>[];
/**
* List of objects which should be written to [UnlinkedLibrary.enums].
*/
- final List<Object> enums = <Object>[];
+ final List<UnlinkedEnumBuilder> enums = <UnlinkedEnumBuilder>[];
/**
* List of objects which should be written to [UnlinkedLibrary.executables].
*/
- final List<Object> executables = <Object>[];
+ final List<UnlinkedExecutableBuilder> executables =
+ <UnlinkedExecutableBuilder>[];
/**
* List of objects which should be written to [UnlinkedLibrary.typedefs].
*/
- final List<Object> typedefs = <Object>[];
+ final List<UnlinkedTypedefBuilder> typedefs = <UnlinkedTypedefBuilder>[];
/**
* List of objects which should be written to [UnlinkedLibrary.units].
*/
- final List<Object> units = <Object>[];
+ final List<UnlinkedUnitBuilder> units = <UnlinkedUnitBuilder>[];
/**
* List of objects which should be written to [UnlinkedLibrary.variables].
*/
- final List<Object> variables = <Object>[];
+ final List<UnlinkedVariableBuilder> variables = <UnlinkedVariableBuilder>[];
/**
* Map from [LibraryElement] to the index of the entry in the "dependency
@@ -77,19 +75,20 @@ class _LibrarySerializer {
* The "dependency table". This is the list of objects which should be
* written to [PrelinkedLibrary.dependencies].
*/
- final List<Object> dependencies = <Object>[];
+ final List<PrelinkedDependencyBuilder> dependencies =
+ <PrelinkedDependencyBuilder>[];
/**
* The unlinked portion of the "imports table". This is the list of objects
* which should be written to [UnlinkedLibrary.imports].
*/
- final List<Object> unlinkedImports = <Object>[];
+ final List<UnlinkedImportBuilder> unlinkedImports = <UnlinkedImportBuilder>[];
/**
* The prelinked portion of the "imports table". This is the list of ints
* which should be written to [PrelinkedLibrary.imports].
*/
- final List<Object> prelinkedImports = <int>[];
+ final List<int> prelinkedImports = <int>[];
/**
* Map from prefix [String] to the index of the entry in the "prefix" table
@@ -101,7 +100,7 @@ class _LibrarySerializer {
* The "prefix table". This is the list of objects which should be written
* to [UnlinkedLibrary.prefixes].
*/
- final List<Object> prefixes = <Object>[];
+ final List<UnlinkedPrefixBuilder> prefixes = <UnlinkedPrefixBuilder>[];
/**
* Map from [Element] to the index of the entry in the "references table"
@@ -113,13 +112,15 @@ class _LibrarySerializer {
* The unlinked portion of the "references table". This is the list of
* objects which should be written to [UnlinkedLibrary.references].
*/
- final List<Object> unlinkedReferences = <Object>[];
+ final List<UnlinkedReferenceBuilder> unlinkedReferences =
+ <UnlinkedReferenceBuilder>[];
/**
* The prelinked portion of the "references table". This is the list of
* objects which should be written to [PrelinkedLibrary.references].
*/
- final List<Object> prelinkedReferences = <Object>[];
+ final List<PrelinkedReferenceBuilder> prelinkedReferences =
+ <PrelinkedReferenceBuilder>[];
//final Map<String, int> prefixIndices = <String, int>{};
@@ -171,7 +172,7 @@ class _LibrarySerializer {
if (element.uri != null) {
b.uri = element.uri;
}
- units.add(b.finish());
+ units.add(b);
for (ClassElement cls in element.types) {
classes.add(serializeClass(cls, unitNum));
}
@@ -242,7 +243,7 @@ class _LibrarySerializer {
* Serialize the given [classElement], which exists in the unit numbered
* [unitNum], creating an [UnlinkedClass].
*/
- Object serializeClass(ClassElement classElement, int unitNum) {
+ UnlinkedClassBuilder serializeClass(ClassElement classElement, int unitNum) {
UnlinkedClassBuilder b = new UnlinkedClassBuilder(ctx);
b.name = classElement.name;
b.unit = unitNum;
@@ -253,8 +254,8 @@ class _LibrarySerializer {
}
b.mixins = classElement.mixins.map(serializeTypeRef).toList();
b.interfaces = classElement.interfaces.map(serializeTypeRef).toList();
- List<Object> fields = <Object>[];
- List<Object> executables = <Object>[];
+ List<UnlinkedVariableBuilder> fields = <UnlinkedVariableBuilder>[];
+ List<UnlinkedExecutableBuilder> executables = <UnlinkedExecutableBuilder>[];
for (ConstructorElement executable in classElement.constructors) {
if (!executable.isSynthetic) {
executables.add(serializeExecutable(executable, 0));
@@ -277,26 +278,27 @@ class _LibrarySerializer {
b.executables = executables;
b.isAbstract = classElement.isAbstract;
b.isMixinApplication = classElement.isMixinApplication;
- return b.finish();
+ return b;
}
/**
* Serialize the given [combinator] into an [UnlinkedCombinator].
*/
- Object serializeCombinator(NamespaceCombinator combinator) {
+ UnlinkedCombinatorBuilder serializeCombinator(
+ NamespaceCombinator combinator) {
UnlinkedCombinatorBuilder b = new UnlinkedCombinatorBuilder(ctx);
if (combinator is ShowElementCombinator) {
b.shows = combinator.shownNames.map(serializeCombinatorName).toList();
} else if (combinator is HideElementCombinator) {
b.hides = combinator.hiddenNames.map(serializeCombinatorName).toList();
}
- return b.finish();
+ return b;
}
/**
* Serialize the given [name] into an [UnlinkedCombinatorName].
*/
- Object serializeCombinatorName(String name) {
+ UnlinkedCombinatorNameBuilder serializeCombinatorName(String name) {
return encodeUnlinkedCombinatorName(ctx, name: name);
}
@@ -335,10 +337,10 @@ class _LibrarySerializer {
* Serialize the given [enumElement], which exists in the unit numbered
* [unitNum], creating an [UnlinkedEnum].
*/
- Object serializeEnum(ClassElement enumElement, int unitNum) {
+ UnlinkedEnumBuilder serializeEnum(ClassElement enumElement, int unitNum) {
UnlinkedEnumBuilder b = new UnlinkedEnumBuilder(ctx);
b.name = enumElement.name;
- List<Object> values = <Object>[];
+ List<UnlinkedEnumValueBuilder> values = <UnlinkedEnumValueBuilder>[];
for (FieldElement field in enumElement.fields) {
if (field.isConst && field.type.element == enumElement) {
values.add(encodeUnlinkedEnumValue(ctx, name: field.name));
@@ -346,7 +348,7 @@ class _LibrarySerializer {
}
b.values = values;
b.unit = unitNum;
- return b.finish();
+ return b;
}
/**
@@ -354,7 +356,8 @@ class _LibrarySerializer {
* [unitNum], creating an [UnlinkedExecutable]. For elements declared inside
* a class, [unitNum] should be zero.
*/
- Object serializeExecutable(ExecutableElement executableElement, int unitNum) {
+ UnlinkedExecutableBuilder serializeExecutable(
+ ExecutableElement executableElement, int unitNum) {
if (executableElement.enclosingElement is ClassElement) {
assert(unitNum == 0);
}
@@ -383,17 +386,17 @@ class _LibrarySerializer {
b.isAbstract = executableElement.isAbstract;
b.isStatic = executableElement.isStatic &&
executableElement.enclosingElement is ClassElement;
- return b.finish();
+ return b;
}
/**
* Serialize the given [exportElement] into an [UnlinkedExport].
*/
- Object serializeExport(ExportElement exportElement) {
+ UnlinkedExportBuilder serializeExport(ExportElement exportElement) {
UnlinkedExportBuilder b = new UnlinkedExportBuilder(ctx);
b.uri = exportElement.uri;
b.combinators = exportElement.combinators.map(serializeCombinator).toList();
- return b.finish();
+ return b;
}
/**
@@ -420,7 +423,7 @@ class _LibrarySerializer {
b.uri = importElement.uri;
}
addTransitiveExportClosure(importElement.importedLibrary);
- unlinkedImports.add(b.finish());
+ unlinkedImports.add(b);
prelinkedImports.add(serializeDependency(importElement.importedLibrary));
}
@@ -428,7 +431,7 @@ class _LibrarySerializer {
* Serialize the whole library element into a [PrelinkedLibrary]. Should be
* called exactly once for each instance of [_LibrarySerializer].
*/
- Object serializeLibrary() {
+ PrelinkedLibraryBuilder serializeLibrary() {
UnlinkedLibraryBuilder ub = new UnlinkedLibraryBuilder(ctx);
PrelinkedLibraryBuilder pb = new PrelinkedLibraryBuilder(ctx);
if (libraryElement.name.isNotEmpty) {
@@ -451,17 +454,17 @@ class _LibrarySerializer {
ub.typedefs = typedefs;
ub.units = units;
ub.variables = variables;
- pb.unlinked = ub.finish();
+ pb.unlinked = ub;
pb.dependencies = dependencies;
pb.importDependencies = prelinkedImports;
pb.references = prelinkedReferences;
- return pb.finish();
+ return pb;
}
/**
* Serialize the given [parameter] into an [UnlinkedParam].
*/
- Object serializeParam(ParameterElement parameter) {
+ UnlinkedParamBuilder serializeParam(ParameterElement parameter) {
UnlinkedParamBuilder b = new UnlinkedParamBuilder(ctx);
b.name = parameter.name;
switch (parameter.parameterKind) {
@@ -486,14 +489,14 @@ class _LibrarySerializer {
} else {
b.type = serializeTypeRef(type);
}
- return b.finish();
+ return b;
}
/**
* Serialize the given [typedefElement], which exists in the unit numbered
* [unitNum], creating an [UnlinkedTypedef].
*/
- Object serializeTypedef(
+ UnlinkedTypedefBuilder serializeTypedef(
FunctionTypeAliasElement typedefElement, int unitNum) {
UnlinkedTypedefBuilder b = new UnlinkedTypedefBuilder(ctx);
b.name = typedefElement.name;
@@ -504,25 +507,26 @@ class _LibrarySerializer {
b.returnType = serializeTypeRef(typedefElement.returnType);
}
b.parameters = typedefElement.parameters.map(serializeParam).toList();
- return b.finish();
+ return b;
}
/**
* Serialize the given [typeParameter] into an [UnlinkedTypeParam].
*/
- Object serializeTypeParam(TypeParameterElement typeParameter) {
+ UnlinkedTypeParamBuilder serializeTypeParam(
+ TypeParameterElement typeParameter) {
UnlinkedTypeParamBuilder b = new UnlinkedTypeParamBuilder(ctx);
b.name = typeParameter.name;
if (typeParameter.bound != null) {
b.bound = serializeTypeRef(typeParameter.bound);
}
- return b.finish();
+ return b;
}
/**
* Serialize the given [type] into an [UnlinkedTypeRef].
*/
- Object serializeTypeRef(DartType type) {
+ UnlinkedTypeRefBuilder serializeTypeRef(DartType type) {
UnlinkedTypeRefBuilder b = new UnlinkedTypeRefBuilder(ctx);
if (type is TypeParameterType) {
Element enclosingElement = type.element.enclosingElement;
@@ -565,7 +569,7 @@ class _LibrarySerializer {
b.typeArguments = typeArguments.map(serializeTypeRef).toList();
}
}
- return b.finish();
+ return b;
}
/**
@@ -593,7 +597,8 @@ class _LibrarySerializer {
* [unitNum], creating an [UnlinkedVariable]. For variables declared inside
* a class (i.e. fields), [unitNum] should be zero.
*/
- Object serializeVariable(PropertyInducingElement variable, int unitNum) {
+ UnlinkedVariableBuilder serializeVariable(
+ PropertyInducingElement variable, int unitNum) {
if (variable.enclosingElement is ClassElement) {
assert(unitNum == 0);
}
@@ -604,6 +609,6 @@ class _LibrarySerializer {
b.isStatic = variable.isStatic && variable.enclosingElement is ClassElement;
b.isFinal = variable.isFinal;
b.isConst = variable.isConst;
- return b.finish();
+ return b;
}
}
« no previous file with comments | « pkg/analyzer/lib/src/summary/format.dart ('k') | pkg/analyzer/test/src/summary/summary_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698