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

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

Issue 1712583003: Serialize and resynthesize labels. (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_ast.dart
diff --git a/pkg/analyzer/lib/src/summary/summarize_ast.dart b/pkg/analyzer/lib/src/summary/summarize_ast.dart
index 7973867ffd5db4f37a14b00e8ff6a28f2f038880..5e89c01718f30527fafab0ee74dfa5911630046c 100644
--- a/pkg/analyzer/lib/src/summary/summarize_ast.dart
+++ b/pkg/analyzer/lib/src/summary/summarize_ast.dart
@@ -193,6 +193,12 @@ class _SummarizeAstVisitor extends RecursiveAstVisitor {
<UnlinkedExportNonPublicBuilder>[];
/**
+ * List of objects which should be written to
+ * [UnlinkedExecutable.localLabels].
+ */
+ List<UnlinkedLabelBuilder> labels = <UnlinkedLabelBuilder>[];
+
+ /**
* List of objects which should be written to [UnlinkedUnit.parts].
*/
final List<UnlinkedPartBuilder> parts = <UnlinkedPartBuilder>[];
@@ -551,13 +557,17 @@ class _SummarizeAstVisitor extends RecursiveAstVisitor {
}
}
List<UnlinkedExecutableBuilder> oldExecutables = executables;
+ List<UnlinkedLabelBuilder> oldLabels = labels;
List<UnlinkedVariableBuilder> oldVariables = variables;
executables = <UnlinkedExecutableBuilder>[];
+ labels = <UnlinkedLabelBuilder>[];
variables = <UnlinkedVariableBuilder>[];
body.accept(this);
b.localFunctions = executables;
+ b.localLabels = labels;
b.localVariables = variables;
executables = oldExecutables;
+ labels = oldLabels;
variables = oldVariables;
}
@@ -1018,6 +1028,17 @@ class _SummarizeAstVisitor extends RecursiveAstVisitor {
}
@override
+ void visitLabel(Label node) {
+ AstNode parent = node.parent;
+ labels.add(new UnlinkedLabelBuilder(
+ name: node.label.name,
+ nameOffset: node.offset,
+ isOnSwitchMember: parent is SwitchMember,
+ isOnSwitchStatement:
+ parent is LabeledStatement && parent.statement is SwitchStatement));
+ }
+
+ @override
void visitLibraryDirective(LibraryDirective node) {
libraryName =
node.name.components.map((SimpleIdentifier id) => id.name).join('.');
« no previous file with comments | « pkg/analyzer/lib/src/summary/resynthesize.dart ('k') | pkg/analyzer/lib/src/summary/summarize_elements.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698