Support for 'required' keyword and default parameter kinds.
R=brianwilkerson@google.com
Change-Id: Ia5e62e190812c321f2fb06c045f153d9a6b6833d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/100826
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
diff --git a/pkg/analyzer/lib/src/summary/format.dart b/pkg/analyzer/lib/src/summary/format.dart
index ea1c0b1..808c6ba 100644
--- a/pkg/analyzer/lib/src/summary/format.dart
+++ b/pkg/analyzer/lib/src/summary/format.dart
@@ -4745,9 +4745,9 @@
idl.LinkedNodeCommentType _variantField_29;
List<LinkedNodeBuilder> _variantField_3;
LinkedNodeBuilder _variantField_10;
+ idl.LinkedNodeFormalParameterKind _variantField_26;
double _variantField_21;
LinkedNodeTypeBuilder _variantField_25;
- idl.LinkedNodeFormalParameterKind _variantField_26;
String _variantField_30;
LinkedNodeBuilder _variantField_14;
bool _isSynthetic;
@@ -9083,6 +9083,14 @@
}
@override
+ int get normalFormalParameter_requiredKeyword {
+ assert(kind == idl.LinkedNodeKind.fieldFormalParameter ||
+ kind == idl.LinkedNodeKind.functionTypedFormalParameter ||
+ kind == idl.LinkedNodeKind.simpleFormalParameter);
+ return _variantField_18 ??= 0;
+ }
+
+ @override
int get switchStatement_leftBracket {
assert(kind == idl.LinkedNodeKind.switchStatement);
return _variantField_18 ??= 0;
@@ -9174,6 +9182,14 @@
_variantField_18 = value;
}
+ set normalFormalParameter_requiredKeyword(int value) {
+ assert(kind == idl.LinkedNodeKind.fieldFormalParameter ||
+ kind == idl.LinkedNodeKind.functionTypedFormalParameter ||
+ kind == idl.LinkedNodeKind.simpleFormalParameter);
+ assert(value == null || value >= 0);
+ _variantField_18 = value;
+ }
+
set switchStatement_leftBracket(int value) {
assert(kind == idl.LinkedNodeKind.switchStatement);
assert(value == null || value >= 0);
@@ -9377,12 +9393,6 @@
}
@override
- bool get defaultFormalParameter_isNamed {
- assert(kind == idl.LinkedNodeKind.defaultFormalParameter);
- return _variantField_27 ??= false;
- }
-
- @override
bool get inheritsCovariant {
assert(kind == idl.LinkedNodeKind.fieldFormalParameter ||
kind == idl.LinkedNodeKind.functionTypedFormalParameter ||
@@ -9420,11 +9430,6 @@
_variantField_27 = value;
}
- set defaultFormalParameter_isNamed(bool value) {
- assert(kind == idl.LinkedNodeKind.defaultFormalParameter);
- _variantField_27 = value;
- }
-
set inheritsCovariant(bool value) {
assert(kind == idl.LinkedNodeKind.fieldFormalParameter ||
kind == idl.LinkedNodeKind.functionTypedFormalParameter ||
@@ -9783,6 +9788,18 @@
}
@override
+ idl.LinkedNodeFormalParameterKind get defaultFormalParameter_kind {
+ assert(kind == idl.LinkedNodeKind.defaultFormalParameter);
+ return _variantField_26 ??=
+ idl.LinkedNodeFormalParameterKind.requiredPositional;
+ }
+
+ set defaultFormalParameter_kind(idl.LinkedNodeFormalParameterKind value) {
+ assert(kind == idl.LinkedNodeKind.defaultFormalParameter);
+ _variantField_26 = value;
+ }
+
+ @override
double get doubleLiteral_value {
assert(kind == idl.LinkedNodeKind.doubleLiteral);
return _variantField_21 ??= 0.0;
@@ -9878,22 +9895,6 @@
}
@override
- idl.LinkedNodeFormalParameterKind get formalParameter_kind {
- assert(kind == idl.LinkedNodeKind.fieldFormalParameter ||
- kind == idl.LinkedNodeKind.functionTypedFormalParameter ||
- kind == idl.LinkedNodeKind.simpleFormalParameter);
- return _variantField_26 ??=
- idl.LinkedNodeFormalParameterKind.requiredPositional;
- }
-
- set formalParameter_kind(idl.LinkedNodeFormalParameterKind value) {
- assert(kind == idl.LinkedNodeKind.fieldFormalParameter ||
- kind == idl.LinkedNodeKind.functionTypedFormalParameter ||
- kind == idl.LinkedNodeKind.simpleFormalParameter);
- _variantField_26 = value;
- }
-
- @override
String get interpolationString_value {
assert(kind == idl.LinkedNodeKind.interpolationString);
return _variantField_30 ??= '';
@@ -10215,12 +10216,12 @@
int fieldFormalParameter_thisKeyword,
LinkedNodeBuilder fieldFormalParameter_formalParameters,
int fieldFormalParameter_period,
+ int normalFormalParameter_requiredKeyword,
int normalFormalParameter_covariantKeyword,
bool inheritsCovariant,
LinkedNodeBuilder normalFormalParameter_identifier,
int codeLength,
int codeOffset,
- idl.LinkedNodeFormalParameterKind formalParameter_kind,
LinkedNodeBuilder normalFormalParameter_comment,
}) : _kind = idl.LinkedNodeKind.fieldFormalParameter,
_variantField_24 = actualType,
@@ -10231,12 +10232,12 @@
_variantField_17 = fieldFormalParameter_thisKeyword,
_variantField_8 = fieldFormalParameter_formalParameters,
_variantField_16 = fieldFormalParameter_period,
+ _variantField_18 = normalFormalParameter_requiredKeyword,
_variantField_19 = normalFormalParameter_covariantKeyword,
_variantField_27 = inheritsCovariant,
_variantField_12 = normalFormalParameter_identifier,
_variantField_34 = codeLength,
_variantField_33 = codeOffset,
- _variantField_26 = formalParameter_kind,
_variantField_14 = normalFormalParameter_comment;
LinkedNodeBuilder.functionTypedFormalParameter({
@@ -10245,12 +10246,12 @@
LinkedNodeBuilder functionTypedFormalParameter_formalParameters,
LinkedNodeBuilder functionTypedFormalParameter_returnType,
LinkedNodeBuilder functionTypedFormalParameter_typeParameters,
+ int normalFormalParameter_requiredKeyword,
int normalFormalParameter_covariantKeyword,
bool inheritsCovariant,
LinkedNodeBuilder normalFormalParameter_identifier,
int codeLength,
int codeOffset,
- idl.LinkedNodeFormalParameterKind formalParameter_kind,
LinkedNodeBuilder normalFormalParameter_comment,
}) : _kind = idl.LinkedNodeKind.functionTypedFormalParameter,
_variantField_24 = actualType,
@@ -10258,12 +10259,12 @@
_variantField_6 = functionTypedFormalParameter_formalParameters,
_variantField_7 = functionTypedFormalParameter_returnType,
_variantField_8 = functionTypedFormalParameter_typeParameters,
+ _variantField_18 = normalFormalParameter_requiredKeyword,
_variantField_19 = normalFormalParameter_covariantKeyword,
_variantField_27 = inheritsCovariant,
_variantField_12 = normalFormalParameter_identifier,
_variantField_34 = codeLength,
_variantField_33 = codeOffset,
- _variantField_26 = formalParameter_kind,
_variantField_14 = normalFormalParameter_comment;
LinkedNodeBuilder.simpleFormalParameter({
@@ -10271,12 +10272,12 @@
List<LinkedNodeBuilder> normalFormalParameter_metadata,
LinkedNodeBuilder simpleFormalParameter_type,
int simpleFormalParameter_keyword,
+ int normalFormalParameter_requiredKeyword,
int normalFormalParameter_covariantKeyword,
bool inheritsCovariant,
LinkedNodeBuilder normalFormalParameter_identifier,
int codeLength,
int codeOffset,
- idl.LinkedNodeFormalParameterKind formalParameter_kind,
LinkedNodeBuilder normalFormalParameter_comment,
TopLevelInferenceErrorBuilder topLevelTypeInferenceError,
}) : _kind = idl.LinkedNodeKind.simpleFormalParameter,
@@ -10284,12 +10285,12 @@
_variantField_4 = normalFormalParameter_metadata,
_variantField_6 = simpleFormalParameter_type,
_variantField_15 = simpleFormalParameter_keyword,
+ _variantField_18 = normalFormalParameter_requiredKeyword,
_variantField_19 = normalFormalParameter_covariantKeyword,
_variantField_27 = inheritsCovariant,
_variantField_12 = normalFormalParameter_identifier,
_variantField_34 = codeLength,
_variantField_33 = codeOffset,
- _variantField_26 = formalParameter_kind,
_variantField_14 = normalFormalParameter_comment,
_variantField_35 = topLevelTypeInferenceError;
@@ -11145,16 +11146,16 @@
LinkedNodeBuilder defaultFormalParameter_defaultValue,
int defaultFormalParameter_separator,
LinkedNodeBuilder defaultFormalParameter_parameter,
- bool defaultFormalParameter_isNamed,
int codeLength,
int codeOffset,
+ idl.LinkedNodeFormalParameterKind defaultFormalParameter_kind,
}) : _kind = idl.LinkedNodeKind.defaultFormalParameter,
_variantField_6 = defaultFormalParameter_defaultValue,
_variantField_15 = defaultFormalParameter_separator,
_variantField_7 = defaultFormalParameter_parameter,
- _variantField_27 = defaultFormalParameter_isNamed,
_variantField_34 = codeLength,
- _variantField_33 = codeOffset;
+ _variantField_33 = codeOffset,
+ _variantField_26 = defaultFormalParameter_kind;
LinkedNodeBuilder.doStatement({
LinkedNodeBuilder doStatement_body,
@@ -11957,17 +11958,17 @@
if (offset_variantField_10 != null) {
fbBuilder.addOffset(10, offset_variantField_10);
}
+ if (_variantField_26 != null &&
+ _variantField_26 !=
+ idl.LinkedNodeFormalParameterKind.requiredPositional) {
+ fbBuilder.addUint8(26, _variantField_26.index);
+ }
if (_variantField_21 != null && _variantField_21 != 0.0) {
fbBuilder.addFloat64(21, _variantField_21);
}
if (offset_variantField_25 != null) {
fbBuilder.addOffset(25, offset_variantField_25);
}
- if (_variantField_26 != null &&
- _variantField_26 !=
- idl.LinkedNodeFormalParameterKind.requiredPositional) {
- fbBuilder.addUint8(26, _variantField_26.index);
- }
if (offset_variantField_30 != null) {
fbBuilder.addOffset(30, offset_variantField_30);
}
@@ -12039,9 +12040,9 @@
idl.LinkedNodeCommentType _variantField_29;
List<idl.LinkedNode> _variantField_3;
idl.LinkedNode _variantField_10;
+ idl.LinkedNodeFormalParameterKind _variantField_26;
double _variantField_21;
idl.LinkedNodeType _variantField_25;
- idl.LinkedNodeFormalParameterKind _variantField_26;
String _variantField_30;
idl.LinkedNode _variantField_14;
bool _isSynthetic;
@@ -15114,6 +15115,16 @@
}
@override
+ int get normalFormalParameter_requiredKeyword {
+ assert(kind == idl.LinkedNodeKind.fieldFormalParameter ||
+ kind == idl.LinkedNodeKind.functionTypedFormalParameter ||
+ kind == idl.LinkedNodeKind.simpleFormalParameter);
+ _variantField_18 ??=
+ const fb.Uint32Reader().vTableGet(_bc, _bcOffset, 18, 0);
+ return _variantField_18;
+ }
+
+ @override
int get switchStatement_leftBracket {
assert(kind == idl.LinkedNodeKind.switchStatement);
_variantField_18 ??=
@@ -15262,14 +15273,6 @@
}
@override
- bool get defaultFormalParameter_isNamed {
- assert(kind == idl.LinkedNodeKind.defaultFormalParameter);
- _variantField_27 ??=
- const fb.BoolReader().vTableGet(_bc, _bcOffset, 27, false);
- return _variantField_27;
- }
-
- @override
bool get inheritsCovariant {
assert(kind == idl.LinkedNodeKind.fieldFormalParameter ||
kind == idl.LinkedNodeKind.functionTypedFormalParameter ||
@@ -15530,6 +15533,17 @@
}
@override
+ idl.LinkedNodeFormalParameterKind get defaultFormalParameter_kind {
+ assert(kind == idl.LinkedNodeKind.defaultFormalParameter);
+ _variantField_26 ??= const _LinkedNodeFormalParameterKindReader().vTableGet(
+ _bc,
+ _bcOffset,
+ 26,
+ idl.LinkedNodeFormalParameterKind.requiredPositional);
+ return _variantField_26;
+ }
+
+ @override
double get doubleLiteral_value {
assert(kind == idl.LinkedNodeKind.doubleLiteral);
_variantField_21 ??=
@@ -15585,19 +15599,6 @@
}
@override
- idl.LinkedNodeFormalParameterKind get formalParameter_kind {
- assert(kind == idl.LinkedNodeKind.fieldFormalParameter ||
- kind == idl.LinkedNodeKind.functionTypedFormalParameter ||
- kind == idl.LinkedNodeKind.simpleFormalParameter);
- _variantField_26 ??= const _LinkedNodeFormalParameterKindReader().vTableGet(
- _bc,
- _bcOffset,
- 26,
- idl.LinkedNodeFormalParameterKind.requiredPositional);
- return _variantField_26;
- }
-
- @override
String get interpolationString_value {
assert(kind == idl.LinkedNodeKind.interpolationString);
_variantField_30 ??=
@@ -15896,6 +15897,9 @@
fieldFormalParameter_formalParameters.toJson();
if (fieldFormalParameter_period != 0)
_result["fieldFormalParameter_period"] = fieldFormalParameter_period;
+ if (normalFormalParameter_requiredKeyword != 0)
+ _result["normalFormalParameter_requiredKeyword"] =
+ normalFormalParameter_requiredKeyword;
if (normalFormalParameter_covariantKeyword != 0)
_result["normalFormalParameter_covariantKeyword"] =
normalFormalParameter_covariantKeyword;
@@ -15906,10 +15910,6 @@
normalFormalParameter_identifier.toJson();
if (codeLength != 0) _result["codeLength"] = codeLength;
if (codeOffset != 0) _result["codeOffset"] = codeOffset;
- if (formalParameter_kind !=
- idl.LinkedNodeFormalParameterKind.requiredPositional)
- _result["formalParameter_kind"] =
- formalParameter_kind.toString().split('.')[1];
if (normalFormalParameter_comment != null)
_result["normalFormalParameter_comment"] =
normalFormalParameter_comment.toJson();
@@ -15930,6 +15930,9 @@
if (functionTypedFormalParameter_typeParameters != null)
_result["functionTypedFormalParameter_typeParameters"] =
functionTypedFormalParameter_typeParameters.toJson();
+ if (normalFormalParameter_requiredKeyword != 0)
+ _result["normalFormalParameter_requiredKeyword"] =
+ normalFormalParameter_requiredKeyword;
if (normalFormalParameter_covariantKeyword != 0)
_result["normalFormalParameter_covariantKeyword"] =
normalFormalParameter_covariantKeyword;
@@ -15940,10 +15943,6 @@
normalFormalParameter_identifier.toJson();
if (codeLength != 0) _result["codeLength"] = codeLength;
if (codeOffset != 0) _result["codeOffset"] = codeOffset;
- if (formalParameter_kind !=
- idl.LinkedNodeFormalParameterKind.requiredPositional)
- _result["formalParameter_kind"] =
- formalParameter_kind.toString().split('.')[1];
if (normalFormalParameter_comment != null)
_result["normalFormalParameter_comment"] =
normalFormalParameter_comment.toJson();
@@ -15961,6 +15960,9 @@
if (simpleFormalParameter_keyword != 0)
_result["simpleFormalParameter_keyword"] =
simpleFormalParameter_keyword;
+ if (normalFormalParameter_requiredKeyword != 0)
+ _result["normalFormalParameter_requiredKeyword"] =
+ normalFormalParameter_requiredKeyword;
if (normalFormalParameter_covariantKeyword != 0)
_result["normalFormalParameter_covariantKeyword"] =
normalFormalParameter_covariantKeyword;
@@ -15971,10 +15973,6 @@
normalFormalParameter_identifier.toJson();
if (codeLength != 0) _result["codeLength"] = codeLength;
if (codeOffset != 0) _result["codeOffset"] = codeOffset;
- if (formalParameter_kind !=
- idl.LinkedNodeFormalParameterKind.requiredPositional)
- _result["formalParameter_kind"] =
- formalParameter_kind.toString().split('.')[1];
if (normalFormalParameter_comment != null)
_result["normalFormalParameter_comment"] =
normalFormalParameter_comment.toJson();
@@ -16965,11 +16963,12 @@
if (defaultFormalParameter_parameter != null)
_result["defaultFormalParameter_parameter"] =
defaultFormalParameter_parameter.toJson();
- if (defaultFormalParameter_isNamed != false)
- _result["defaultFormalParameter_isNamed"] =
- defaultFormalParameter_isNamed;
if (codeLength != 0) _result["codeLength"] = codeLength;
if (codeOffset != 0) _result["codeOffset"] = codeOffset;
+ if (defaultFormalParameter_kind !=
+ idl.LinkedNodeFormalParameterKind.requiredPositional)
+ _result["defaultFormalParameter_kind"] =
+ defaultFormalParameter_kind.toString().split('.')[1];
}
if (kind == idl.LinkedNodeKind.doStatement) {
if (doStatement_body != null)
@@ -17603,13 +17602,14 @@
"fieldFormalParameter_formalParameters":
fieldFormalParameter_formalParameters,
"fieldFormalParameter_period": fieldFormalParameter_period,
+ "normalFormalParameter_requiredKeyword":
+ normalFormalParameter_requiredKeyword,
"normalFormalParameter_covariantKeyword":
normalFormalParameter_covariantKeyword,
"inheritsCovariant": inheritsCovariant,
"normalFormalParameter_identifier": normalFormalParameter_identifier,
"codeLength": codeLength,
"codeOffset": codeOffset,
- "formalParameter_kind": formalParameter_kind,
"normalFormalParameter_comment": normalFormalParameter_comment,
"isSynthetic": isSynthetic,
"kind": kind,
@@ -17625,13 +17625,14 @@
functionTypedFormalParameter_returnType,
"functionTypedFormalParameter_typeParameters":
functionTypedFormalParameter_typeParameters,
+ "normalFormalParameter_requiredKeyword":
+ normalFormalParameter_requiredKeyword,
"normalFormalParameter_covariantKeyword":
normalFormalParameter_covariantKeyword,
"inheritsCovariant": inheritsCovariant,
"normalFormalParameter_identifier": normalFormalParameter_identifier,
"codeLength": codeLength,
"codeOffset": codeOffset,
- "formalParameter_kind": formalParameter_kind,
"normalFormalParameter_comment": normalFormalParameter_comment,
"isSynthetic": isSynthetic,
"kind": kind,
@@ -17643,13 +17644,14 @@
"normalFormalParameter_metadata": normalFormalParameter_metadata,
"simpleFormalParameter_type": simpleFormalParameter_type,
"simpleFormalParameter_keyword": simpleFormalParameter_keyword,
+ "normalFormalParameter_requiredKeyword":
+ normalFormalParameter_requiredKeyword,
"normalFormalParameter_covariantKeyword":
normalFormalParameter_covariantKeyword,
"inheritsCovariant": inheritsCovariant,
"normalFormalParameter_identifier": normalFormalParameter_identifier,
"codeLength": codeLength,
"codeOffset": codeOffset,
- "formalParameter_kind": formalParameter_kind,
"normalFormalParameter_comment": normalFormalParameter_comment,
"isSynthetic": isSynthetic,
"kind": kind,
@@ -18378,9 +18380,9 @@
defaultFormalParameter_defaultValue,
"defaultFormalParameter_separator": defaultFormalParameter_separator,
"defaultFormalParameter_parameter": defaultFormalParameter_parameter,
- "defaultFormalParameter_isNamed": defaultFormalParameter_isNamed,
"codeLength": codeLength,
"codeOffset": codeOffset,
+ "defaultFormalParameter_kind": defaultFormalParameter_kind,
"isSynthetic": isSynthetic,
"kind": kind,
};
diff --git a/pkg/analyzer/lib/src/summary/format.fbs b/pkg/analyzer/lib/src/summary/format.fbs
index 53ffeee..87cd3d5 100644
--- a/pkg/analyzer/lib/src/summary/format.fbs
+++ b/pkg/analyzer/lib/src/summary/format.fbs
@@ -1926,12 +1926,12 @@
variantField_10:LinkedNode (id: 10);
+ variantField_26:LinkedNodeFormalParameterKind (id: 26);
+
variantField_21:double (id: 21);
variantField_25:LinkedNodeType (id: 25);
- variantField_26:LinkedNodeFormalParameterKind (id: 26);
-
variantField_30:string (id: 30);
variantField_14:LinkedNode (id: 14);
diff --git a/pkg/analyzer/lib/src/summary/idl.dart b/pkg/analyzer/lib/src/summary/idl.dart
index 82ce3dd..b83ce60 100644
--- a/pkg/analyzer/lib/src/summary/idl.dart
+++ b/pkg/analyzer/lib/src/summary/idl.dart
@@ -1308,8 +1308,8 @@
@VariantId(6, variant: LinkedNodeKind.defaultFormalParameter)
LinkedNode get defaultFormalParameter_defaultValue;
- @VariantId(27, variant: LinkedNodeKind.defaultFormalParameter)
- bool get defaultFormalParameter_isNamed;
+ @VariantId(26, variant: LinkedNodeKind.defaultFormalParameter)
+ LinkedNodeFormalParameterKind get defaultFormalParameter_kind;
@VariantId(7, variant: LinkedNodeKind.defaultFormalParameter)
LinkedNode get defaultFormalParameter_parameter;
@@ -1497,13 +1497,6 @@
@VariantId(7, variant: LinkedNodeKind.forElement)
LinkedNode get forElement_body;
- @VariantId(26, variantList: [
- LinkedNodeKind.fieldFormalParameter,
- LinkedNodeKind.functionTypedFormalParameter,
- LinkedNodeKind.simpleFormalParameter,
- ])
- LinkedNodeFormalParameterKind get formalParameter_kind;
-
@VariantId(15, variant: LinkedNodeKind.formalParameterList)
int get formalParameterList_leftDelimiter;
@@ -1974,6 +1967,13 @@
])
List<LinkedNode> get normalFormalParameter_metadata;
+ @VariantId(18, variantList: [
+ LinkedNodeKind.fieldFormalParameter,
+ LinkedNodeKind.functionTypedFormalParameter,
+ LinkedNodeKind.simpleFormalParameter,
+ ])
+ int get normalFormalParameter_requiredKeyword;
+
@VariantId(15, variant: LinkedNodeKind.nullLiteral)
int get nullLiteral_literal;
diff --git a/pkg/analyzer/lib/src/summary2/ast_binary_reader.dart b/pkg/analyzer/lib/src/summary2/ast_binary_reader.dart
index b9348b6..3dbd99e 100644
--- a/pkg/analyzer/lib/src/summary2/ast_binary_reader.dart
+++ b/pkg/analyzer/lib/src/summary2/ast_binary_reader.dart
@@ -372,9 +372,7 @@
DefaultFormalParameter _read_defaultFormalParameter(LinkedNode data) {
var node = astFactory.defaultFormalParameter(
_readNode(data.defaultFormalParameter_parameter),
- data.defaultFormalParameter_isNamed
- ? ParameterKind.NAMED
- : ParameterKind.POSITIONAL,
+ _toParameterKind(data.defaultFormalParameter_kind),
_getToken(data.defaultFormalParameter_separator),
_readNodeLazy(data.defaultFormalParameter_defaultValue),
);
@@ -505,6 +503,7 @@
comment: _readNode(data.normalFormalParameter_comment),
type: _readNode(data.fieldFormalParameter_type),
parameters: _readNode(data.fieldFormalParameter_formalParameters),
+ requiredKeyword: _getToken(data.normalFormalParameter_requiredKeyword),
);
LazyFormalParameter.setData(node, data);
return node;
@@ -648,6 +647,7 @@
parameters: _readNodeLazy(
data.functionTypedFormalParameter_formalParameters,
),
+ requiredKeyword: _getToken(data.normalFormalParameter_requiredKeyword),
returnType: _readNodeLazy(data.functionTypedFormalParameter_returnType),
typeParameters: _readNode(
data.functionTypedFormalParameter_typeParameters,
@@ -1071,6 +1071,7 @@
comment: _readNode(data.normalFormalParameter_comment),
metadata: _readNodeList(data.normalFormalParameter_metadata),
keyword: _getToken(data.simpleFormalParameter_keyword),
+ requiredKeyword: _getToken(data.normalFormalParameter_requiredKeyword),
);
LazyFormalParameter.setData(node, data);
LazyAst.setInheritsCovariant(node, data.inheritsCovariant);
@@ -1562,4 +1563,21 @@
DartType _readType(LinkedNodeType data) {
return _unitContext.readType(data);
}
+
+ static ParameterKind _toParameterKind(LinkedNodeFormalParameterKind kind) {
+ switch (kind) {
+ case LinkedNodeFormalParameterKind.requiredPositional:
+ return ParameterKind.REQUIRED;
+ case LinkedNodeFormalParameterKind.requiredNamed:
+ return ParameterKind.NAMED_REQUIRED;
+ break;
+ case LinkedNodeFormalParameterKind.optionalPositional:
+ return ParameterKind.POSITIONAL;
+ break;
+ case LinkedNodeFormalParameterKind.optionalNamed:
+ return ParameterKind.NAMED;
+ default:
+ throw StateError('Unexpected: $kind');
+ }
+ }
}
diff --git a/pkg/analyzer/lib/src/summary2/ast_binary_writer.dart b/pkg/analyzer/lib/src/summary2/ast_binary_writer.dart
index 3089959..a375c6a 100644
--- a/pkg/analyzer/lib/src/summary2/ast_binary_writer.dart
+++ b/pkg/analyzer/lib/src/summary2/ast_binary_writer.dart
@@ -345,11 +345,9 @@
@override
LinkedNodeBuilder visitDefaultFormalParameter(DefaultFormalParameter node) {
- // TODO(brianwilkerson) Record whether the node is required, either by
- // adding a new bool field or by recording a parameter kind.
var builder = LinkedNodeBuilder.defaultFormalParameter(
defaultFormalParameter_defaultValue: node.defaultValue?.accept(this),
- defaultFormalParameter_isNamed: node.isNamed,
+ defaultFormalParameter_kind: _toParameterKind(node),
defaultFormalParameter_parameter: node.parameter.accept(this),
defaultFormalParameter_separator: _getToken(node.separator),
);
@@ -1456,20 +1454,6 @@
void _storeForLoopParts(LinkedNodeBuilder builder, ForLoopParts node) {}
void _storeFormalParameter(LinkedNodeBuilder builder, FormalParameter node) {
- var kind;
- if (node.isRequiredPositional) {
- kind = LinkedNodeFormalParameterKind.requiredPositional;
- } else if (node.isRequiredNamed) {
- kind = LinkedNodeFormalParameterKind.requiredNamed;
- } else if (node.isOptionalPositional) {
- kind = LinkedNodeFormalParameterKind.optionalPositional;
- } else if (node.isOptionalNamed) {
- kind = LinkedNodeFormalParameterKind.optionalNamed;
- } else {
- throw new StateError('Unknown kind of parameter');
- }
- builder.formalParameter_kind = kind;
-
_storeCodeOffsetLength(builder, node);
_writeActualType(builder, node);
}
@@ -1548,7 +1532,8 @@
..normalFormalParameter_covariantKeyword =
_getToken(node.covariantKeyword)
..normalFormalParameter_identifier = node.identifier?.accept(this)
- ..normalFormalParameter_metadata = _writeNodeList(node.metadata);
+ ..normalFormalParameter_metadata = _writeNodeList(node.metadata)
+ ..normalFormalParameter_requiredKeyword = _getToken(node.requiredKeyword);
}
void _storeStatement(LinkedNodeBuilder builder, Statement node) {}
@@ -1610,6 +1595,20 @@
LinkedNodeTypeBuilder _writeType(DartType type) {
return _linkingContext.writeType(type);
}
+
+ static LinkedNodeFormalParameterKind _toParameterKind(FormalParameter node) {
+ if (node.isRequiredPositional) {
+ return LinkedNodeFormalParameterKind.requiredPositional;
+ } else if (node.isRequiredNamed) {
+ return LinkedNodeFormalParameterKind.requiredNamed;
+ } else if (node.isOptionalPositional) {
+ return LinkedNodeFormalParameterKind.optionalPositional;
+ } else if (node.isOptionalNamed) {
+ return LinkedNodeFormalParameterKind.optionalNamed;
+ } else {
+ throw new StateError('Unknown kind of parameter');
+ }
+ }
}
/// Components of a [Member] - the raw element, and the defining type.
diff --git a/pkg/analyzer/lib/src/summary2/linking_bundle_context.dart b/pkg/analyzer/lib/src/summary2/linking_bundle_context.dart
index 90ea6df..c151916 100644
--- a/pkg/analyzer/lib/src/summary2/linking_bundle_context.dart
+++ b/pkg/analyzer/lib/src/summary2/linking_bundle_context.dart
@@ -8,7 +8,6 @@
import 'package:analyzer/src/dart/element/member.dart';
import 'package:analyzer/src/dart/element/type.dart';
import 'package:analyzer/src/dart/element/type_algebra.dart';
-import 'package:analyzer/src/generated/utilities_dart.dart';
import 'package:analyzer/src/summary/format.dart';
import 'package:analyzer/src/summary/idl.dart';
import 'package:analyzer/src/summary2/reference.dart';
@@ -121,16 +120,17 @@
}
LinkedNodeFormalParameterKind _formalParameterKind(ParameterElement p) {
- // ignore: deprecated_member_use_from_same_package
- var kind = p.parameterKind;
- if (kind == ParameterKind.NAMED) {
- return LinkedNodeFormalParameterKind.optionalNamed;
- } else if (kind == ParameterKind.POSITIONAL) {
- return LinkedNodeFormalParameterKind.optionalPositional;
- } else if (kind == ParameterKind.NAMED_REQUIRED) {
+ if (p.isRequiredPositional) {
+ return LinkedNodeFormalParameterKind.requiredPositional;
+ } else if (p.isRequiredNamed) {
return LinkedNodeFormalParameterKind.requiredNamed;
+ } else if (p.isOptionalPositional) {
+ return LinkedNodeFormalParameterKind.optionalPositional;
+ } else if (p.isOptionalNamed) {
+ return LinkedNodeFormalParameterKind.requiredNamed;
+ } else {
+ throw StateError('Unexpected parameter kind: $p');
}
- return LinkedNodeFormalParameterKind.requiredPositional;
}
FunctionType _toSyntheticFunctionType(FunctionType type) {