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

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

Issue 2644543005: Element model support for covariant (Closed)
Patch Set: Created 3 years, 11 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/format.dart
diff --git a/pkg/analyzer/lib/src/summary/format.dart b/pkg/analyzer/lib/src/summary/format.dart
index c38e50bb8e24dbad0170bb3b9dc0b9be89db6160..8c6768a8ac493e6b642c9313f56e18a2070b0817 100644
--- a/pkg/analyzer/lib/src/summary/format.dart
+++ b/pkg/analyzer/lib/src/summary/format.dart
@@ -7925,6 +7925,7 @@ class UnlinkedParamBuilder extends Object with _UnlinkedParamMixin implements id
int _inferredTypeSlot;
int _inheritsCovariantSlot;
UnlinkedExecutableBuilder _initializer;
+ bool _isExplicitlyCovariant;
bool _isFunctionTyped;
bool _isInitializingFormal;
idl.UnlinkedParamKind _kind;
@@ -8013,6 +8014,16 @@ class UnlinkedParamBuilder extends Object with _UnlinkedParamMixin implements id
}
@override
+ bool get isExplicitlyCovariant => _isExplicitlyCovariant ??= false;
+
+ /**
+ * Indicates whether this parameter is explicitly marked as being covariant.
+ */
+ void set isExplicitlyCovariant(bool value) {
+ this._isExplicitlyCovariant = value;
+ }
+
+ @override
bool get isFunctionTyped => _isFunctionTyped ??= false;
/**
@@ -8108,13 +8119,14 @@ class UnlinkedParamBuilder extends Object with _UnlinkedParamMixin implements id
this._visibleOffset = value;
}
- UnlinkedParamBuilder({List<UnlinkedExprBuilder> annotations, CodeRangeBuilder codeRange, String defaultValueCode, int inferredTypeSlot, int inheritsCovariantSlot, UnlinkedExecutableBuilder initializer, bool isFunctionTyped, bool isInitializingFormal, idl.UnlinkedParamKind kind, String name, int nameOffset, List<UnlinkedParamBuilder> parameters, EntityRefBuilder type, int visibleLength, int visibleOffset})
+ UnlinkedParamBuilder({List<UnlinkedExprBuilder> annotations, CodeRangeBuilder codeRange, String defaultValueCode, int inferredTypeSlot, int inheritsCovariantSlot, UnlinkedExecutableBuilder initializer, bool isExplicitlyCovariant, bool isFunctionTyped, bool isInitializingFormal, idl.UnlinkedParamKind kind, String name, int nameOffset, List<UnlinkedParamBuilder> parameters, EntityRefBuilder type, int visibleLength, int visibleOffset})
: _annotations = annotations,
_codeRange = codeRange,
_defaultValueCode = defaultValueCode,
_inferredTypeSlot = inferredTypeSlot,
_inheritsCovariantSlot = inheritsCovariantSlot,
_initializer = initializer,
+ _isExplicitlyCovariant = isExplicitlyCovariant,
_isFunctionTyped = isFunctionTyped,
_isInitializingFormal = isInitializingFormal,
_kind = kind,
@@ -8170,6 +8182,7 @@ class UnlinkedParamBuilder extends Object with _UnlinkedParamMixin implements id
signature.addBool(this._initializer != null);
this._initializer?.collectApiSignature(signature);
signature.addInt(this._inheritsCovariantSlot ?? 0);
+ signature.addBool(this._isExplicitlyCovariant == true);
}
fb.Offset finish(fb.Builder fbBuilder) {
@@ -8220,6 +8233,9 @@ class UnlinkedParamBuilder extends Object with _UnlinkedParamMixin implements id
if (offset_initializer != null) {
fbBuilder.addOffset(12, offset_initializer);
}
+ if (_isExplicitlyCovariant == true) {
+ fbBuilder.addBool(15, true);
+ }
if (_isFunctionTyped == true) {
fbBuilder.addBool(5, true);
}
@@ -8270,6 +8286,7 @@ class _UnlinkedParamImpl extends Object with _UnlinkedParamMixin implements idl.
int _inferredTypeSlot;
int _inheritsCovariantSlot;
idl.UnlinkedExecutable _initializer;
+ bool _isExplicitlyCovariant;
bool _isFunctionTyped;
bool _isInitializingFormal;
idl.UnlinkedParamKind _kind;
@@ -8317,6 +8334,12 @@ class _UnlinkedParamImpl extends Object with _UnlinkedParamMixin implements idl.
}
@override
+ bool get isExplicitlyCovariant {
+ _isExplicitlyCovariant ??= const fb.BoolReader().vTableGet(_bc, _bcOffset, 15, false);
+ return _isExplicitlyCovariant;
+ }
+
+ @override
bool get isFunctionTyped {
_isFunctionTyped ??= const fb.BoolReader().vTableGet(_bc, _bcOffset, 5, false);
return _isFunctionTyped;
@@ -8381,6 +8404,7 @@ abstract class _UnlinkedParamMixin implements idl.UnlinkedParam {
if (inferredTypeSlot != 0) _result["inferredTypeSlot"] = inferredTypeSlot;
if (inheritsCovariantSlot != 0) _result["inheritsCovariantSlot"] = inheritsCovariantSlot;
if (initializer != null) _result["initializer"] = initializer.toJson();
+ if (isExplicitlyCovariant != false) _result["isExplicitlyCovariant"] = isExplicitlyCovariant;
if (isFunctionTyped != false) _result["isFunctionTyped"] = isFunctionTyped;
if (isInitializingFormal != false) _result["isInitializingFormal"] = isInitializingFormal;
if (kind != idl.UnlinkedParamKind.required) _result["kind"] = kind.toString().split('.')[1];
@@ -8401,6 +8425,7 @@ abstract class _UnlinkedParamMixin implements idl.UnlinkedParam {
"inferredTypeSlot": inferredTypeSlot,
"inheritsCovariantSlot": inheritsCovariantSlot,
"initializer": initializer,
+ "isExplicitlyCovariant": isExplicitlyCovariant,
"isFunctionTyped": isFunctionTyped,
"isInitializingFormal": isInitializingFormal,
"kind": kind,
@@ -10254,6 +10279,7 @@ class UnlinkedVariableBuilder extends Object with _UnlinkedVariableMixin impleme
int _inferredTypeSlot;
UnlinkedExecutableBuilder _initializer;
bool _isConst;
+ bool _isCovariant;
bool _isFinal;
bool _isStatic;
String _name;
@@ -10330,6 +10356,17 @@ class UnlinkedVariableBuilder extends Object with _UnlinkedVariableMixin impleme
}
@override
+ bool get isCovariant => _isCovariant ??= false;
+
+ /**
+ * Indicates whether this variable is declared using the `covariant` keyword.
+ * This should be false for everything except instance fields.
+ */
+ void set isCovariant(bool value) {
+ this._isCovariant = value;
+ }
+
+ @override
bool get isFinal => _isFinal ??= false;
/**
@@ -10422,13 +10459,14 @@ class UnlinkedVariableBuilder extends Object with _UnlinkedVariableMixin impleme
this._visibleOffset = value;
}
- UnlinkedVariableBuilder({List<UnlinkedExprBuilder> annotations, CodeRangeBuilder codeRange, UnlinkedDocumentationCommentBuilder documentationComment, int inferredTypeSlot, UnlinkedExecutableBuilder initializer, bool isConst, bool isFinal, bool isStatic, String name, int nameOffset, int propagatedTypeSlot, EntityRefBuilder type, int visibleLength, int visibleOffset})
+ UnlinkedVariableBuilder({List<UnlinkedExprBuilder> annotations, CodeRangeBuilder codeRange, UnlinkedDocumentationCommentBuilder documentationComment, int inferredTypeSlot, UnlinkedExecutableBuilder initializer, bool isConst, bool isCovariant, bool isFinal, bool isStatic, String name, int nameOffset, int propagatedTypeSlot, EntityRefBuilder type, int visibleLength, int visibleOffset})
: _annotations = annotations,
_codeRange = codeRange,
_documentationComment = documentationComment,
_inferredTypeSlot = inferredTypeSlot,
_initializer = initializer,
_isConst = isConst,
+ _isCovariant = isCovariant,
_isFinal = isFinal,
_isStatic = isStatic,
_name = name,
@@ -10474,6 +10512,7 @@ class UnlinkedVariableBuilder extends Object with _UnlinkedVariableMixin impleme
signature.addInt(this._inferredTypeSlot ?? 0);
signature.addBool(this._initializer != null);
this._initializer?.collectApiSignature(signature);
+ signature.addBool(this._isCovariant == true);
}
fb.Offset finish(fb.Builder fbBuilder) {
@@ -10520,6 +10559,9 @@ class UnlinkedVariableBuilder extends Object with _UnlinkedVariableMixin impleme
if (_isConst == true) {
fbBuilder.addBool(6, true);
}
+ if (_isCovariant == true) {
+ fbBuilder.addBool(14, true);
+ }
if (_isFinal == true) {
fbBuilder.addBool(7, true);
}
@@ -10567,6 +10609,7 @@ class _UnlinkedVariableImpl extends Object with _UnlinkedVariableMixin implement
int _inferredTypeSlot;
idl.UnlinkedExecutable _initializer;
bool _isConst;
+ bool _isCovariant;
bool _isFinal;
bool _isStatic;
String _name;
@@ -10613,6 +10656,12 @@ class _UnlinkedVariableImpl extends Object with _UnlinkedVariableMixin implement
}
@override
+ bool get isCovariant {
+ _isCovariant ??= const fb.BoolReader().vTableGet(_bc, _bcOffset, 14, false);
+ return _isCovariant;
+ }
+
+ @override
bool get isFinal {
_isFinal ??= const fb.BoolReader().vTableGet(_bc, _bcOffset, 7, false);
return _isFinal;
@@ -10671,6 +10720,7 @@ abstract class _UnlinkedVariableMixin implements idl.UnlinkedVariable {
if (inferredTypeSlot != 0) _result["inferredTypeSlot"] = inferredTypeSlot;
if (initializer != null) _result["initializer"] = initializer.toJson();
if (isConst != false) _result["isConst"] = isConst;
+ if (isCovariant != false) _result["isCovariant"] = isCovariant;
if (isFinal != false) _result["isFinal"] = isFinal;
if (isStatic != false) _result["isStatic"] = isStatic;
if (name != '') _result["name"] = name;
@@ -10690,6 +10740,7 @@ abstract class _UnlinkedVariableMixin implements idl.UnlinkedVariable {
"inferredTypeSlot": inferredTypeSlot,
"initializer": initializer,
"isConst": isConst,
+ "isCovariant": isCovariant,
"isFinal": isFinal,
"isStatic": isStatic,
"name": name,

Powered by Google App Engine
This is Rietveld 408576698