visitDriftSpecificNode method
Implementation
@override
void visitDriftSpecificNode(DriftSpecificNode e, void arg) {
if (e is DartPlaceholder) {
e.when(
isLimit: (_) => keyword(TokenType.limit),
isOrderBy: (_) {
keyword(TokenType.order);
keyword(TokenType.by);
},
);
symbol(r'$', spaceBefore: true);
symbol(e.name, spaceAfter: true);
} else if (e is DeclaredStatement) {
identifier(e.identifier.name);
if (e.parameters.isNotEmpty) {
symbol('(');
_join(e.parameters, ',');
symbol(')');
}
visitNullable(e.as, arg);
symbol(':', spaceAfter: true);
visit(e.statement, arg);
symbol(';');
} else if (e is DriftFile) {
for (final stmt in e.statements) {
visit(stmt, arg);
buffer.write('\n');
needsSpace = false;
}
} else if (e is ImportStatement) {
keyword(TokenType.import);
_stringLiteral(e.importedFile);
symbol(';', spaceAfter: true);
} else if (e is StatementParameter) {
if (e is VariableTypeHint) {
if (e.isRequired) keyword(TokenType.required);
visit(e.variable, arg);
final typeName = e.typeName;
if (typeName != null) {
keyword(TokenType.as);
symbol(typeName, spaceBefore: true, spaceAfter: true);
}
if (e.orNull) {
keyword(TokenType.or);
keyword(TokenType.$null);
}
} else if (e is DartPlaceholderDefaultValue) {
symbol('\$${e.variableName}', spaceAfter: true);
symbol('=', spaceBefore: true, spaceAfter: true);
visit(e.defaultValue, arg);
} else {
throw AssertionError('Unknown StatementParameter: $e');
}
} else if (e is DriftTableName) {
keyword(e.useExistingDartClass ? TokenType.$with : TokenType.as);
identifier(e.overriddenDataClassName);
final constructor = e.constructorName;
if (constructor != null) {
symbol('.');
identifier(constructor);
}
} else if (e is NestedStarResultColumn) {
identifier(e.tableName);
symbol('.**', spaceAfter: true);
} else if (e is NestedQueryColumn) {
symbol('LIST(', spaceBefore: true);
visit(e.select, arg);
symbol(')', spaceAfter: true);
if (e.as != null) {
keyword(TokenType.as);
identifier(e.as!);
}
} else if (e is TransactionBlock) {
visit(e.begin, arg);
_writeStatements(e.innerStatements);
visit(e.commit, arg);
}
}