blob: bcc01912e58091624ed47da1203aba00c22a2ab7 [file]
// Copyright (c) 2026, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
import '../code_generator/cpp_class.dart';
import '../code_generator/func.dart';
import '../code_generator/func_type.dart';
import '../code_generator/objc_block.dart';
import '../code_generator/objc_built_in_functions.dart';
import '../code_generator/objc_methods.dart';
import '../code_generator/scope.dart';
import 'ast.dart';
/// Visitation to set default names for unnamed parameters across all AST nodes.
class DefaultParameterNamesVisitation extends Visitation {
void _defaultParamNames(Iterable<Parameter> params, {int startIndex = 0}) {
var i = startIndex;
for (final param in params) {
if (param.symbol.oldName.isEmpty) {
param.symbol = Symbol('arg$i', SymbolKind.field);
}
i++;
}
}
@override
void visitFunctionType(FunctionType node) {
_defaultParamNames(node.parameters);
_defaultParamNames(
node.varArgParameters,
startIndex: node.parameters.length,
);
node.visitChildren(visitor);
}
@override
void visitObjCMethod(ObjCMethod node) {
_defaultParamNames(node.params);
node.visitChildren(visitor);
}
@override
void visitCppMethod(CppMethod node) {
_defaultParamNames(node.parameters);
node.visitChildren(visitor);
}
@override
void visitObjCBlock(ObjCBlock node) {
_defaultParamNames(node.params);
node.visitChildren(visitor);
}
@override
void visitObjCMsgSendFunc(ObjCMsgSendFunc node) {}
@override
void visitObjCMsgSendVariantFunc(ObjCMsgSendVariantFunc node) {}
}