check method

  1. @override
void check(
  1. DcqRegistry registry
)

Implementation

@override
void check(
  DcqRegistry registry,
) {
  registry.addInstanceCreationExpression((node) {
    final name = node.constructorName.type.name.lexeme;
    if (name != 'Flexible' && name != 'Expanded') return;

    AstNode? current = node.parent;
    while (current != null) {
      if (current is ListLiteral) {
        final listParent = current.parent;
        if (listParent is NamedExpression &&
            listParent.name.label.name == 'children') {
          final argParent = listParent.parent;
          if (argParent is ArgumentList) {
            final constructorParent = argParent.parent;
            if (constructorParent is InstanceCreationExpression) {
              final parentName =
                  constructorParent.constructorName.type.name.lexeme;
              if (_flexWidgets.contains(parentName)) return;
            }
          }
        }
      }
      current = current.parent;
    }

    reportAtNode(node);
  });
}