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

Unified Diff: pkg/analyzer/lib/src/summary/format.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
« no previous file with comments | « pkg/analyzer/lib/src/dart/element/element.dart ('k') | pkg/analyzer/lib/src/summary/idl.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/analyzer/lib/src/summary/format.dart
diff --git a/pkg/analyzer/lib/src/summary/format.dart b/pkg/analyzer/lib/src/summary/format.dart
index bb93b483036065c7cc23d6c1701cc820afb6db77..b285dfcf909e1c76e7cbc918cb9f073b6ddb66a9 100644
--- a/pkg/analyzer/lib/src/summary/format.dart
+++ b/pkg/analyzer/lib/src/summary/format.dart
@@ -2434,6 +2434,7 @@ class UnlinkedExecutableBuilder extends Object with _UnlinkedExecutableMixin imp
bool _isStatic;
idl.UnlinkedExecutableKind _kind;
List<UnlinkedExecutableBuilder> _localFunctions;
+ List<UnlinkedLabelBuilder> _localLabels;
List<UnlinkedVariableBuilder> _localVariables;
String _name;
int _nameOffset;
@@ -2590,6 +2591,17 @@ class UnlinkedExecutableBuilder extends Object with _UnlinkedExecutableMixin imp
}
@override
+ List<UnlinkedLabelBuilder> get localLabels => _localLabels ??= <UnlinkedLabelBuilder>[];
+
+ /**
+ * The list of local labels.
+ */
+ void set localLabels(List<UnlinkedLabelBuilder> _value) {
+ assert(!_finished);
+ _localLabels = _value;
+ }
+
+ @override
List<UnlinkedVariableBuilder> get localVariables => _localVariables ??= <UnlinkedVariableBuilder>[];
/**
@@ -2714,7 +2726,7 @@ class UnlinkedExecutableBuilder extends Object with _UnlinkedExecutableMixin imp
_visibleOffset = _value;
}
- UnlinkedExecutableBuilder({List<UnlinkedConstBuilder> annotations, List<UnlinkedConstructorInitializerBuilder> constantInitializers, UnlinkedDocumentationCommentBuilder documentationComment, int inferredReturnTypeSlot, bool isAbstract, bool isConst, bool isExternal, bool isFactory, bool isRedirectedConstructor, bool isStatic, idl.UnlinkedExecutableKind kind, List<UnlinkedExecutableBuilder> localFunctions, List<UnlinkedVariableBuilder> localVariables, String name, int nameOffset, List<UnlinkedParamBuilder> parameters, EntityRefBuilder redirectedConstructor, String redirectedConstructorName, EntityRefBuilder returnType, List<UnlinkedTypeParamBuilder> typeParameters, int visibleLength, int visibleOffset})
+ UnlinkedExecutableBuilder({List<UnlinkedConstBuilder> annotations, List<UnlinkedConstructorInitializerBuilder> constantInitializers, UnlinkedDocumentationCommentBuilder documentationComment, int inferredReturnTypeSlot, bool isAbstract, bool isConst, bool isExternal, bool isFactory, bool isRedirectedConstructor, bool isStatic, idl.UnlinkedExecutableKind kind, List<UnlinkedExecutableBuilder> localFunctions, List<UnlinkedLabelBuilder> localLabels, List<UnlinkedVariableBuilder> localVariables, String name, int nameOffset, List<UnlinkedParamBuilder> parameters, EntityRefBuilder redirectedConstructor, String redirectedConstructorName, EntityRefBuilder returnType, List<UnlinkedTypeParamBuilder> typeParameters, int visibleLength, int visibleOffset})
: _annotations = annotations,
_constantInitializers = constantInitializers,
_documentationComment = documentationComment,
@@ -2727,6 +2739,7 @@ class UnlinkedExecutableBuilder extends Object with _UnlinkedExecutableMixin imp
_isStatic = isStatic,
_kind = kind,
_localFunctions = localFunctions,
+ _localLabels = localLabels,
_localVariables = localVariables,
_name = name,
_nameOffset = nameOffset,
@@ -2745,6 +2758,7 @@ class UnlinkedExecutableBuilder extends Object with _UnlinkedExecutableMixin imp
fb.Offset offset_constantInitializers;
fb.Offset offset_documentationComment;
fb.Offset offset_localFunctions;
+ fb.Offset offset_localLabels;
fb.Offset offset_localVariables;
fb.Offset offset_name;
fb.Offset offset_parameters;
@@ -2764,6 +2778,9 @@ class UnlinkedExecutableBuilder extends Object with _UnlinkedExecutableMixin imp
if (!(_localFunctions == null || _localFunctions.isEmpty)) {
offset_localFunctions = fbBuilder.writeList(_localFunctions.map((b) => b.finish(fbBuilder)).toList());
}
+ if (!(_localLabels == null || _localLabels.isEmpty)) {
+ offset_localLabels = fbBuilder.writeList(_localLabels.map((b) => b.finish(fbBuilder)).toList());
+ }
if (!(_localVariables == null || _localVariables.isEmpty)) {
offset_localVariables = fbBuilder.writeList(_localVariables.map((b) => b.finish(fbBuilder)).toList());
}
@@ -2822,6 +2839,9 @@ class UnlinkedExecutableBuilder extends Object with _UnlinkedExecutableMixin imp
if (offset_localFunctions != null) {
fbBuilder.addOffset(18, offset_localFunctions);
}
+ if (offset_localLabels != null) {
+ fbBuilder.addOffset(22, offset_localLabels);
+ }
if (offset_localVariables != null) {
fbBuilder.addOffset(19, offset_localVariables);
}
@@ -2880,6 +2900,7 @@ class _UnlinkedExecutableImpl extends Object with _UnlinkedExecutableMixin imple
bool _isStatic;
idl.UnlinkedExecutableKind _kind;
List<idl.UnlinkedExecutable> _localFunctions;
+ List<idl.UnlinkedLabel> _localLabels;
List<idl.UnlinkedVariable> _localVariables;
String _name;
int _nameOffset;
@@ -2964,6 +2985,12 @@ class _UnlinkedExecutableImpl extends Object with _UnlinkedExecutableMixin imple
}
@override
+ List<idl.UnlinkedLabel> get localLabels {
+ _localLabels ??= const fb.ListReader<idl.UnlinkedLabel>(const _UnlinkedLabelReader()).vTableGet(_bp, 22, const <idl.UnlinkedLabel>[]);
+ return _localLabels;
+ }
+
+ @override
List<idl.UnlinkedVariable> get localVariables {
_localVariables ??= const fb.ListReader<idl.UnlinkedVariable>(const _UnlinkedVariableReader()).vTableGet(_bp, 19, const <idl.UnlinkedVariable>[]);
return _localVariables;
@@ -3039,6 +3066,7 @@ abstract class _UnlinkedExecutableMixin implements idl.UnlinkedExecutable {
"isStatic": isStatic,
"kind": kind,
"localFunctions": localFunctions,
+ "localLabels": localLabels,
"localVariables": localVariables,
"name": name,
"nameOffset": nameOffset,
@@ -3579,6 +3607,142 @@ abstract class _UnlinkedImportMixin implements idl.UnlinkedImport {
};
}
+class UnlinkedLabelBuilder extends Object with _UnlinkedLabelMixin implements idl.UnlinkedLabel {
+ bool _finished = false;
+
+ bool _isOnSwitchMember;
+ bool _isOnSwitchStatement;
+ String _name;
+ int _nameOffset;
+
+ @override
+ bool get isOnSwitchMember => _isOnSwitchMember ??= false;
+
+ /**
+ * Return `true` if this label is associated with a `switch` member (`case` or
+ * `default`).
+ */
+ void set isOnSwitchMember(bool _value) {
+ assert(!_finished);
+ _isOnSwitchMember = _value;
+ }
+
+ @override
+ bool get isOnSwitchStatement => _isOnSwitchStatement ??= false;
+
+ /**
+ * Return `true` if this label is associated with a `switch` statement.
+ */
+ void set isOnSwitchStatement(bool _value) {
+ assert(!_finished);
+ _isOnSwitchStatement = _value;
+ }
+
+ @override
+ String get name => _name ??= '';
+
+ /**
+ * Name of the label.
+ */
+ void set name(String _value) {
+ assert(!_finished);
+ _name = _value;
+ }
+
+ @override
+ int get nameOffset => _nameOffset ??= 0;
+
+ /**
+ * Offset of the label relative to the beginning of the file.
+ */
+ void set nameOffset(int _value) {
+ assert(!_finished);
+ assert(_value == null || _value >= 0);
+ _nameOffset = _value;
+ }
+
+ UnlinkedLabelBuilder({bool isOnSwitchMember, bool isOnSwitchStatement, String name, int nameOffset})
+ : _isOnSwitchMember = isOnSwitchMember,
+ _isOnSwitchStatement = isOnSwitchStatement,
+ _name = name,
+ _nameOffset = nameOffset;
+
+ fb.Offset finish(fb.Builder fbBuilder) {
+ assert(!_finished);
+ _finished = true;
+ fb.Offset offset_name;
+ if (_name != null) {
+ offset_name = fbBuilder.writeString(_name);
+ }
+ fbBuilder.startTable();
+ if (_isOnSwitchMember == true) {
+ fbBuilder.addBool(2, true);
+ }
+ if (_isOnSwitchStatement == true) {
+ fbBuilder.addBool(3, true);
+ }
+ if (offset_name != null) {
+ fbBuilder.addOffset(0, offset_name);
+ }
+ if (_nameOffset != null && _nameOffset != 0) {
+ fbBuilder.addUint32(1, _nameOffset);
+ }
+ return fbBuilder.endTable();
+ }
+}
+
+class _UnlinkedLabelReader extends fb.TableReader<_UnlinkedLabelImpl> {
+ const _UnlinkedLabelReader();
+
+ @override
+ _UnlinkedLabelImpl createObject(fb.BufferPointer bp) => new _UnlinkedLabelImpl(bp);
+}
+
+class _UnlinkedLabelImpl extends Object with _UnlinkedLabelMixin implements idl.UnlinkedLabel {
+ final fb.BufferPointer _bp;
+
+ _UnlinkedLabelImpl(this._bp);
+
+ bool _isOnSwitchMember;
+ bool _isOnSwitchStatement;
+ String _name;
+ int _nameOffset;
+
+ @override
+ bool get isOnSwitchMember {
+ _isOnSwitchMember ??= const fb.BoolReader().vTableGet(_bp, 2, false);
+ return _isOnSwitchMember;
+ }
+
+ @override
+ bool get isOnSwitchStatement {
+ _isOnSwitchStatement ??= const fb.BoolReader().vTableGet(_bp, 3, false);
+ return _isOnSwitchStatement;
+ }
+
+ @override
+ String get name {
+ _name ??= const fb.StringReader().vTableGet(_bp, 0, '');
+ return _name;
+ }
+
+ @override
+ int get nameOffset {
+ _nameOffset ??= const fb.Uint32Reader().vTableGet(_bp, 1, 0);
+ return _nameOffset;
+ }
+}
+
+abstract class _UnlinkedLabelMixin implements idl.UnlinkedLabel {
+ @override
+ Map<String, Object> toMap() => {
+ "isOnSwitchMember": isOnSwitchMember,
+ "isOnSwitchStatement": isOnSwitchStatement,
+ "name": name,
+ "nameOffset": nameOffset,
+ };
+}
+
class UnlinkedParamBuilder extends Object with _UnlinkedParamMixin implements idl.UnlinkedParam {
bool _finished = false;
« no previous file with comments | « pkg/analyzer/lib/src/dart/element/element.dart ('k') | pkg/analyzer/lib/src/summary/idl.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698