@@ -6596,6 +6596,14 @@ sealed class DirectiveImpl extends AnnotatedNodeImpl implements Directive {
65966596 DirectiveImpl({required super.comment, required super.metadata});
65976597}
65986598
6599+ /// Works together with [GenerateNodeImpl], annotated constructors and methods
6600+ /// will not be generated.
6601+ class DoNotGenerate {
6602+ final String reason;
6603+
6604+ const DoNotGenerate({required this.reason});
6605+ }
6606+
65996607/// A do statement.
66006608///
66016609/// doStatement ::=
@@ -10351,60 +10359,75 @@ abstract final class FormalParameterList implements AstNode {
1035110359 Token get rightParenthesis;
1035210360}
1035310361
10362+ @GenerateNodeImpl(
10363+ childEntitiesOrder: [
10364+ GenerateNodeProperty('leftParenthesis'),
10365+ GenerateNodeProperty('parameters'),
10366+ GenerateNodeProperty('leftDelimiter'),
10367+ GenerateNodeProperty('rightDelimiter'),
10368+ GenerateNodeProperty('rightParenthesis'),
10369+ ],
10370+ )
1035410371final class FormalParameterListImpl extends AstNodeImpl
1035510372 implements FormalParameterList {
10373+ @generated
1035610374 @override
1035710375 final Token leftParenthesis;
1035810376
10359- final NodeListImpl<FormalParameterImpl> _parameters = NodeListImpl._();
10377+ @generated
10378+ @override
10379+ final NodeListImpl<FormalParameterImpl> parameters = NodeListImpl._();
1036010380
10381+ @generated
1036110382 @override
1036210383 final Token? leftDelimiter;
1036310384
10385+ @generated
1036410386 @override
1036510387 final Token? rightDelimiter;
1036610388
10389+ @generated
1036710390 @override
1036810391 final Token rightParenthesis;
1036910392
10370- /// Initializes a newly created parameter list.
10371- ///
10372- /// The [leftDelimiter] and [rightDelimiter] can be `null` if there are no
10373- /// optional or named parameters, but it must be the case that either both are
10374- /// `null` or that both are non-`null`.
10393+ @generated
1037510394 FormalParameterListImpl({
1037610395 required this.leftParenthesis,
1037710396 required List<FormalParameterImpl> parameters,
1037810397 required this.leftDelimiter,
1037910398 required this.rightDelimiter,
1038010399 required this.rightParenthesis,
1038110400 }) {
10382- _parameters ._initialize(this, parameters);
10401+ this.parameters ._initialize(this, parameters);
1038310402 }
1038410403
10404+ @generated
1038510405 @override
10386- Token get beginToken => leftParenthesis;
10406+ Token get beginToken {
10407+ return leftParenthesis;
10408+ }
1038710409
10410+ @generated
1038810411 @override
10389- Token get endToken => rightParenthesis;
10412+ Token get endToken {
10413+ return rightParenthesis;
10414+ }
1039010415
1039110416 @experimental
1039210417 @override
1039310418 List<FormalParameterFragmentImpl?> get parameterFragments {
10394- return _parameters .map((node) => node.declaredFragment).toList();
10419+ return parameters .map((node) => node.declaredFragment).toList();
1039510420 }
1039610421
1039710422 @override
10398- NodeListImpl<FormalParameterImpl> get parameters => _parameters;
10399-
10400- @override
10423+ @DoNotGenerate(reason: 'Has special logic for delimiters')
1040110424 ChildEntities get _childEntities {
1040210425 // TODO(paulberry): include commas.
1040310426 var result = ChildEntities()..addToken('leftParenthesis', leftParenthesis);
1040410427 bool leftDelimiterNeeded = leftDelimiter != null;
10405- int length = _parameters .length;
10428+ int length = parameters .length;
1040610429 for (int i = 0; i < length; i++) {
10407- FormalParameter parameter = _parameters [i];
10430+ FormalParameter parameter = parameters [i];
1040810431 if (leftDelimiterNeeded && leftDelimiter!.offset < parameter.offset) {
1040910432 result.addToken('leftDelimiter', leftDelimiter);
1041010433 leftDelimiterNeeded = false;
@@ -10416,17 +10439,24 @@ final class FormalParameterListImpl extends AstNodeImpl
1041610439 ..addToken('rightParenthesis', rightParenthesis);
1041710440 }
1041810441
10442+ @generated
1041910443 @override
1042010444 E? accept<E>(AstVisitor<E> visitor) => visitor.visitFormalParameterList(this);
1042110445
10446+ @generated
1042210447 @override
1042310448 void visitChildren(AstVisitor visitor) {
10424- _parameters .accept(visitor);
10449+ parameters .accept(visitor);
1042510450 }
1042610451
10452+ @generated
1042710453 @override
1042810454 AstNodeImpl? _childContainingRange(int rangeOffset, int rangeEnd) {
10429- return _parameters._elementContainingRange(rangeOffset, rangeEnd);
10455+ if (parameters._elementContainingRange(rangeOffset, rangeEnd)
10456+ case var result?) {
10457+ return result;
10458+ }
10459+ return null;
1043010460 }
1043110461}
1043210462
@@ -22270,12 +22300,14 @@ abstract final class StringInterpolation implements SingleStringLiteral {
2227022300 InterpolationString get lastString;
2227122301}
2227222302
22303+ @GenerateNodeImpl(childEntitiesOrder: [GenerateNodeProperty('elements')])
2227322304final class StringInterpolationImpl extends SingleStringLiteralImpl
2227422305 implements StringInterpolation {
22275- /// The elements that are composed to produce the resulting string.
22276- final NodeListImpl<InterpolationElementImpl> _elements = NodeListImpl._();
22306+ @generated
22307+ @override
22308+ final NodeListImpl<InterpolationElementImpl> elements = NodeListImpl._();
2227722309
22278- /// Initializes a newly created string interpolation expression.
22310+ @DoNotGenerate(reason: 'Has useful asserts')
2227922311 StringInterpolationImpl({required List<InterpolationElementImpl> elements}) {
2228022312 // TODO(scheglov): Replace asserts with appropriately typed parameters.
2228122313 assert(elements.length > 2, 'Expected at last three elements.');
@@ -22291,29 +22323,38 @@ final class StringInterpolationImpl extends SingleStringLiteralImpl
2229122323 elements.last is InterpolationStringImpl,
2229222324 'The last element must be a string.',
2229322325 );
22294- _elements ._initialize(this, elements);
22326+ this.elements ._initialize(this, elements);
2229522327 }
2229622328
22329+ @generated
2229722330 @override
22298- Token get beginToken => _elements.beginToken!;
22331+ Token get beginToken {
22332+ if (elements.beginToken case var result?) {
22333+ return result;
22334+ }
22335+ throw StateError('Expected at least one non-null');
22336+ }
2229922337
2230022338 @override
2230122339 int get contentsEnd {
22302- var element = _elements .last as InterpolationString;
22340+ var element = elements .last as InterpolationString;
2230322341 return element.contentsEnd;
2230422342 }
2230522343
2230622344 @override
2230722345 int get contentsOffset {
22308- var element = _elements .first as InterpolationString;
22346+ var element = elements .first as InterpolationString;
2230922347 return element.contentsOffset;
2231022348 }
2231122349
22350+ @generated
2231222351 @override
22313- NodeListImpl<InterpolationElementImpl> get elements => _elements;
22314-
22315- @override
22316- Token get endToken => _elements.endToken!;
22352+ Token get endToken {
22353+ if (elements.endToken case var result?) {
22354+ return result;
22355+ }
22356+ throw StateError('Expected at least one non-null');
22357+ }
2231722358
2231822359 @override
2231922360 InterpolationStringImpl get firstString =>
@@ -22332,37 +22373,46 @@ final class StringInterpolationImpl extends SingleStringLiteralImpl
2233222373 InterpolationStringImpl get lastString =>
2233322374 elements.last as InterpolationStringImpl;
2233422375
22376+ @generated
2233522377 @override
2233622378 ChildEntities get _childEntities =>
2233722379 ChildEntities()..addNodeList('elements', elements);
2233822380
2233922381 StringLexemeHelper get _firstHelper {
22340- var lastString = _elements .first as InterpolationString;
22382+ var lastString = elements .first as InterpolationString;
2234122383 String lexeme = lastString.contents.lexeme;
2234222384 return StringLexemeHelper(lexeme, true, false);
2234322385 }
2234422386
22387+ @generated
2234522388 @override
2234622389 E? accept<E>(AstVisitor<E> visitor) => visitor.visitStringInterpolation(this);
2234722390
22391+ @generated
2234822392 @override
2234922393 void resolveExpression(ResolverVisitor resolver, TypeImpl contextType) {
2235022394 resolver.visitStringInterpolation(this, contextType: contextType);
2235122395 }
2235222396
22397+ @generated
2235322398 @override
2235422399 void visitChildren(AstVisitor visitor) {
22355- _elements .accept(visitor);
22400+ elements .accept(visitor);
2235622401 }
2235722402
2235822403 @override
2235922404 void _appendStringValue(StringBuffer buffer) {
2236022405 throw ArgumentError();
2236122406 }
2236222407
22408+ @generated
2236322409 @override
2236422410 AstNodeImpl? _childContainingRange(int rangeOffset, int rangeEnd) {
22365- return _elements._elementContainingRange(rangeOffset, rangeEnd);
22411+ if (elements._elementContainingRange(rangeOffset, rangeEnd)
22412+ case var result?) {
22413+ return result;
22414+ }
22415+ return null;
2236622416 }
2236722417}
2236822418
0 commit comments