[cfe] Update ast printing of new variable nodes

Part of https://github.com/dart-lang/sdk/issues/61572

Change-Id: I36f968d4dffc523af8e4f4c993d59b1b914110d0
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/501641
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Chloe Stefantsova <cstefantsova@google.com>
This commit is contained in:
Chloe Stefantsova
2026-05-11 04:46:26 -07:00
parent 96d8359e32
commit 8df966741d
+60 -46
View File
@@ -2778,58 +2778,70 @@ class Printer extends VisitorDefault<void> with VisitorVoidMixin {
VariableDeclaration node, {
bool useVarKeyword = false,
}) {
if (node is FunctionParameter) {
writeExpressionVariable(node);
} else {
if (showOffsets) writeWord("[${node.fileOffset}]");
if (showMetadata) writeMetadata(node);
writeAnnotationList(node.annotations, separateLines: false);
writeModifier(node.isLowered, 'lowered');
writeModifier(node.isLate, 'late');
writeModifier(node.isRequired, 'required');
writeModifier(node.isCovariantByDeclaration, 'covariant-by-declaration');
writeModifier(node.isCovariantByClass, 'covariant-by-class');
writeModifier(node.isFinal, 'final');
writeModifier(node.isConst, 'const');
writeModifier(node.isSynthesized && node.name != null, 'synthesized');
writeModifier(node.isHoisted, 'hoisted');
writeModifier(node.isWildcard, 'wildcard');
writeModifier(node.isInitializingFormal, 'initializing-formal');
writeModifier(
node.isSuperInitializingFormal,
'super-initializing-formal',
);
writeModifier(node.isErroneouslyInitialized, 'erroneously-initialized');
bool hasImplicitInitializer =
node.initializer is NullLiteral ||
(node.initializer is ConstantExpression &&
(node.initializer as ConstantExpression).constant
is NullConstant);
if ((node.initializer == null || hasImplicitInitializer) &&
node.hasDeclaredInitializer) {
writeModifier(node.hasDeclaredInitializer, 'has-declared-initializer');
} else if (node.initializer != null &&
!hasImplicitInitializer &&
!node.hasDeclaredInitializer) {
switch (node) {
case LocalVariable():
case CatchVariable():
case ThisVariable():
case SyntheticVariable():
case PositionalParameter():
case NamedParameter():
writeExpressionVariable(node);
case VariableStatement():
if (showOffsets) writeWord("[${node.fileOffset}]");
if (showMetadata) writeMetadata(node);
writeAnnotationList(node.annotations, separateLines: false);
writeModifier(node.isLowered, 'lowered');
writeModifier(node.isLate, 'late');
writeModifier(node.isRequired, 'required');
writeModifier(
node.hasDeclaredInitializer,
'has-no-declared-initializer',
node.isCovariantByDeclaration,
'covariant-by-declaration',
);
}
writeAnnotatedType(node.type, annotator?.annotateVariable(this, node));
writeWord(getVariableName(node));
Expression? initializer = node.initializer;
if (initializer != null) {
writeSpaced('=');
writeExpression(initializer);
}
writeModifier(node.isCovariantByClass, 'covariant-by-class');
writeModifier(node.isFinal, 'final');
writeModifier(node.isConst, 'const');
writeModifier(node.isSynthesized && node.name != null, 'synthesized');
writeModifier(node.isHoisted, 'hoisted');
writeModifier(node.isWildcard, 'wildcard');
writeModifier(node.isInitializingFormal, 'initializing-formal');
writeModifier(
node.isSuperInitializingFormal,
'super-initializing-formal',
);
writeModifier(node.isErroneouslyInitialized, 'erroneously-initialized');
bool hasImplicitInitializer =
node.initializer is NullLiteral ||
(node.initializer is ConstantExpression &&
(node.initializer as ConstantExpression).constant
is NullConstant);
if ((node.initializer == null || hasImplicitInitializer) &&
node.hasDeclaredInitializer) {
writeModifier(
node.hasDeclaredInitializer,
'has-declared-initializer',
);
} else if (node.initializer != null &&
!hasImplicitInitializer &&
!node.hasDeclaredInitializer) {
writeModifier(
node.hasDeclaredInitializer,
'has-no-declared-initializer',
);
}
writeAnnotatedType(node.type, annotator?.annotateVariable(this, node));
writeWord(getVariableName(node));
Expression? initializer = node.initializer;
if (initializer != null) {
writeSpaced('=');
writeExpression(initializer);
}
case VariableInitialization():
writeVariableInitialization(node);
}
}
void writeVariableInitialization(VariableDeclaration node) {
if (node is VariableStatement) {
writeVariableDeclaration(node);
} else {
if (node is VariableInitialization) {
if (showOffsets) writeWord("[${node.fileOffset}]");
if (showMetadata) writeMetadata(node);
writeAnnotationList(node.annotations, separateLines: false);
@@ -2856,6 +2868,8 @@ class Printer extends VisitorDefault<void> with VisitorVoidMixin {
writeSpaced(':=');
writeExpression(initializer);
}
} else {
writeVariableDeclaration(node);
}
}