check method
void
check(
- DcqRegistry registry
)
Implementation
@override
void check(
DcqRegistry registry,
) {
registry.addMethodDeclaration((node) {
if (!node.metadata.any((a) => a.name.name == 'override')) return;
final params = node.parameters;
if (params == null) return;
final bodyNode = node.parent;
if (bodyNode is! BlockClassBody) return;
final classNode = bodyNode.parent;
if (classNode is! ClassDeclaration) return;
final extendsClause = classNode.extendsClause;
if (extendsClause == null) return;
final superType = extendsClause.superclass.type;
if (superType is! InterfaceType) return;
final superMethodType = _findMethodType(superType, node.name.lexeme);
if (superMethodType == null) return;
for (final param in params.parameters) {
if (param is! DefaultFormalParameter) continue;
final defaultValue = param.defaultValue;
if (defaultValue == null) continue;
final superParam = _findParam(
superMethodType.formalParameters,
param.name?.lexeme,
);
if (superParam == null) continue;
final superDefault = superParam.defaultValueCode;
if (superDefault == null) continue;
if (defaultValue.toSource() != superDefault) {
reportAtNode(defaultValue);
}
}
});
}