check method

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

Implementation

@override
void check(
  DcqRegistry registry,
) {
  registry.addSwitchStatement((node) {
    final unit = node.root as CompilationUnit;
    final lineInfo = unit.lineInfo;
    final members = node.members;

    if (members.length < 3) return;

    for (var i = 1; i < members.length; i++) {
      final prev = members[i - 1];
      final curr = members[i];

      if (prev.statements.length < 2) continue;

      final prevEndLine = lineInfo.getLocation(prev.end).lineNumber;

      var currStartLine = lineInfo.getLocation(curr.offset).lineNumber;
      Token? comment = curr.beginToken.precedingComments;
      while (comment != null) {
        final commentLine = lineInfo.getLocation(comment.offset).lineNumber;
        if (commentLine < currStartLine) {
          currStartLine = commentLine;
        }
        comment = comment.next;
      }

      if (currStartLine - prevEndLine < 2) {
        reportAtNode(curr);
      }
    }
  });
}