[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:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user