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

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

Issue 1691693002: Serialize local functions and variables. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Fixes for review comments. 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 | « pkg/analyzer/lib/src/summary/summarize_ast.dart ('k') | pkg/analyzer/test/src/summary/summary_common.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 d2a5c20c77beeec4922b6eca08790206d83edb20..b7b2f4d1f5baea676b974f98576e0bd7a6549b8e 100644
--- a/pkg/analyzer/lib/src/summary/summarize_elements.dart
+++ b/pkg/analyzer/lib/src/summary/summarize_elements.dart
@@ -11,6 +11,7 @@ import 'package:analyzer/src/dart/element/member.dart';
import 'package:analyzer/src/dart/element/type.dart';
import 'package:analyzer/src/generated/ast.dart';
import 'package:analyzer/src/generated/resolver.dart';
+import 'package:analyzer/src/generated/source.dart';
import 'package:analyzer/src/generated/utilities_dart.dart';
import 'package:analyzer/src/summary/format.dart';
import 'package:analyzer/src/summary/idl.dart';
@@ -586,6 +587,17 @@ class _CompilationUnitSerializer {
b.isExternal = executableElement.isExternal;
b.documentationComment = serializeDocumentation(executableElement);
b.annotations = serializeAnnotations(executableElement);
+ if (executableElement is FunctionElement) {
+ SourceRange visibleRange = executableElement.visibleRange;
+ if (visibleRange != null) {
+ b.visibleOffset = visibleRange.offset;
+ b.visibleLength = visibleRange.length;
+ }
+ }
+ b.localFunctions =
+ executableElement.functions.map(serializeExecutable).toList();
+ b.localVariables =
+ executableElement.localVariables.map(serializeVariable).toList();
return b;
}
@@ -853,7 +865,7 @@ class _CompilationUnitSerializer {
/**
* Serialize the given [variable], creating an [UnlinkedVariable].
*/
- UnlinkedVariableBuilder serializeVariable(PropertyInducingElement variable) {
+ UnlinkedVariableBuilder serializeVariable(VariableElement variable) {
UnlinkedVariableBuilder b = new UnlinkedVariableBuilder();
b.name = variable.name;
b.nameOffset = variable.nameOffset;
@@ -872,16 +884,26 @@ class _CompilationUnitSerializer {
b.constExpr = serializeConstExpr(initializer);
}
}
- if (b.isFinal || b.isConst) {
- b.propagatedTypeSlot = storeLinkedType(variable.propagatedType, variable);
- } else {
- // Variable is not propagable.
- assert(variable.propagatedType == null);
+ if (variable is PropertyInducingElement) {
+ if (b.isFinal || b.isConst) {
+ b.propagatedTypeSlot =
+ storeLinkedType(variable.propagatedType, variable);
+ } else {
+ // Variable is not propagable.
+ assert(variable.propagatedType == null);
+ }
}
if (variable.hasImplicitType &&
(variable.initializer != null || !variable.isStatic)) {
b.inferredTypeSlot = storeInferredType(variable.type, variable);
}
+ if (variable is LocalVariableElement) {
+ SourceRange visibleRange = variable.visibleRange;
+ if (visibleRange != null) {
+ b.visibleOffset = visibleRange.offset;
+ b.visibleLength = visibleRange.length;
+ }
+ }
return b;
}
« no previous file with comments | « pkg/analyzer/lib/src/summary/summarize_ast.dart ('k') | pkg/analyzer/test/src/summary/summary_common.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698