def lint

cli@0.2.0.0 · cli.bend:2310

import cli@0.2.0.0/cli.bend as Cli
import Base

2310def lint(items: List<&2, LintItem>, +at: String, +ids: List<&2, String>,
2311    +seen: List<&2, Seen>, +inherited: List<&2, Seen>, +optional: Bool,
2312    +variadic: Bool, +version: Bool, +root: Bool) -> List<&2, Problem>:
2313  match items:
2314    case Nil{}:
2315      Nil{}
2316    case LintArg{+usage, help, +attrs, +parsed} <> +tail:
2317      List.append(&2, Problem,
2318        arg_problems(parsed, usage, help, attrs, tail, at, ids, seen,
2319          optional, variadic, version),
2320        lint(tail, at, ids,
2321          List.append(&2, Seen, arg_entries(parsed, attrs), seen),
2322          inherited,
2323          Bool.or(optional, usage_kind(~kind_optional_pos, parsed)),
2324          Bool.or(variadic, usage_kind(~kind_variadic_pos, parsed)),
2325          version, root))
2326    case LintSub{+name, about, +children, +kids} <> tail:
2327      +child_at = String.concat([at, " ", name])
2328      +aliases = find_aliases(children)
2329      List.concat(&2, Problem, [
2330        sub_name_issues(at, name, seen),
2331        sub_alias_issues(aliases, at, SeenSub{name} <> seen),
2332        command_body_issues(child_at, name, about, children,
2333          has_pos_item(kids)),
2334        lint(kids, child_at, scope_ids(kids), inherited,
2335          List.append(&2, Seen, global_entries(kids), inherited),
2336          False{}, False{}, version, False{}),
2337        lint(tail, at, ids,
2338          List.append(&2, Seen, sub_alias_entries(aliases),
2339            SeenSub{name} <> seen),
2340          inherited, optional, variadic, version, root),
2341      ])
2342    case LintOther{head} <> tail:
2343      List.append(&2, Problem,
2344        maybe_misplaced(command_attr_name(head, root), at),
2345        lint(tail, at, ids, seen, inherited, optional, variadic,
2346          version, root))

Uses (25)

Used by (1)