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

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

Issue 1762193002: Resynthesize codeOffset/codeLength properties. (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
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 a3b8c030b6d27ce782d48561a4f11099a9c73f87..09fb448291de5673dfa2fc72ad3ddfb5b4d3a461 100644
--- a/pkg/analyzer/lib/src/summary/summarize_elements.dart
+++ b/pkg/analyzer/lib/src/summary/summarize_elements.dart
@@ -369,6 +369,7 @@ class _CompilationUnitSerializer {
unlinkedUnit.publicNamespace =
new UnlinkedPublicNamespaceBuilder(names: names);
}
+ serializeCodeRange(unlinkedUnit, compilationUnit);
unlinkedUnit.classes = compilationUnit.types.map(serializeClass).toList();
unlinkedUnit.enums = compilationUnit.enums.map(serializeEnum).toList();
unlinkedUnit.typedefs =
@@ -537,6 +538,7 @@ class _CompilationUnitSerializer {
b.isMixinApplication = classElement.isMixinApplication;
b.documentationComment = serializeDocumentation(classElement);
b.annotations = serializeAnnotations(classElement);
+ serializeCodeRange(b, classElement);
return b;
}
@@ -586,6 +588,44 @@ class _CompilationUnitSerializer {
return null;
}
+ void serializeCodeRange(Object b, Element element) {
+ if (element is ElementImpl && element.codeOffset != null) {
+ if (b is UnlinkedClassBuilder) {
+ b.hasCodeRange = true;
+ b.codeOffset = element.codeOffset;
+ b.codeLength = element.codeLength;
+ } else if (b is UnlinkedEnumBuilder) {
+ b.hasCodeRange = true;
+ b.codeOffset = element.codeOffset;
+ b.codeLength = element.codeLength;
+ } else if (b is UnlinkedExecutableBuilder) {
+ b.hasCodeRange = true;
+ b.codeOffset = element.codeOffset;
+ b.codeLength = element.codeLength;
+ } else if (b is UnlinkedParamBuilder) {
+ b.hasCodeRange = true;
+ b.codeOffset = element.codeOffset;
+ b.codeLength = element.codeLength;
+ } else if (b is UnlinkedTypedefBuilder) {
+ b.hasCodeRange = true;
+ b.codeOffset = element.codeOffset;
+ b.codeLength = element.codeLength;
+ } else if (b is UnlinkedTypeParamBuilder) {
+ b.hasCodeRange = true;
+ b.codeOffset = element.codeOffset;
+ b.codeLength = element.codeLength;
+ } else if (b is UnlinkedUnitBuilder) {
+ b.hasCodeRange = true;
+ b.codeOffset = element.codeOffset;
+ b.codeLength = element.codeLength;
+ } else if (b is UnlinkedVariableBuilder) {
+ b.hasCodeRange = true;
+ b.codeOffset = element.codeOffset;
+ b.codeLength = element.codeLength;
+ }
+ }
+ }
+
/**
* Serialize the given [combinator] into an [UnlinkedCombinator].
*/
@@ -648,6 +688,7 @@ class _CompilationUnitSerializer {
b.values = values;
b.documentationComment = serializeDocumentation(enumElement);
b.annotations = serializeAnnotations(enumElement);
+ serializeCodeRange(b, enumElement);
return b;
}
@@ -736,6 +777,7 @@ class _CompilationUnitSerializer {
b.isExternal = executableElement.isExternal;
b.documentationComment = serializeDocumentation(executableElement);
b.annotations = serializeAnnotations(executableElement);
+ serializeCodeRange(b, executableElement);
if (executableElement is FunctionElement) {
SourceRange visibleRange = executableElement.visibleRange;
if (visibleRange != null) {
@@ -832,6 +874,7 @@ class _CompilationUnitSerializer {
break;
}
b.annotations = serializeAnnotations(parameter);
+ serializeCodeRange(b, parameter);
b.isInitializingFormal = parameter.isInitializingFormal;
DartType type = parameter.type;
if (parameter.hasImplicitType) {
@@ -921,6 +964,7 @@ class _CompilationUnitSerializer {
b.parameters = typedefElement.parameters.map(serializeParam).toList();
b.documentationComment = serializeDocumentation(typedefElement);
b.annotations = serializeAnnotations(typedefElement);
+ serializeCodeRange(b, typedefElement);
return b;
}
@@ -936,6 +980,7 @@ class _CompilationUnitSerializer {
b.bound = serializeTypeRef(typeParameter.bound, typeParameter);
}
b.annotations = serializeAnnotations(typeParameter);
+ serializeCodeRange(b, typeParameter);
return b;
}
@@ -1085,6 +1130,7 @@ class _CompilationUnitSerializer {
(variable.initializer != null || !variable.isStatic)) {
b.inferredTypeSlot = storeInferredType(variable.type, variable);
}
+ serializeCodeRange(b, variable);
if (variable is LocalVariableElement) {
SourceRange visibleRange = variable.visibleRange;
if (visibleRange != null) {
@@ -1100,6 +1146,18 @@ class _CompilationUnitSerializer {
}
/**
+ * Create a new slot id and return it. If [hasCycle] is `true`, arrange for
+ * the slot id to be included in [LinkedUnit.constCycles].
+ */
+ int storeConstCycle(bool hasCycle) {
+ int slot = ++numSlots;
+ if (hasCycle) {
+ constCycles.add(slot);
+ }
+ return slot;
+ }
+
+ /**
* Create a slot id for the given [type] (which is an inferred type). If
* [type] is not `dynamic`, it is stored in [linkedTypes] so that once the
* compilation unit has been fully visited, it will be serialized into
@@ -1113,18 +1171,6 @@ class _CompilationUnitSerializer {
}
/**
- * Create a new slot id and return it. If [hasCycle] is `true`, arrange for
- * the slot id to be included in [LinkedUnit.constCycles].
- */
- int storeConstCycle(bool hasCycle) {
- int slot = ++numSlots;
- if (hasCycle) {
- constCycles.add(slot);
- }
- return slot;
- }
-
- /**
* Create a slot id for the given [type] (which may be either a propagated
* type or an inferred type). If [type] is not `null`, it is stored in
* [linkedTypes] so that once the compilation unit has been fully visited,

Powered by Google App Engine
This is Rietveld 408576698