def arg_collision
cli@0.2.0.0 · cli.bend:1789
import cli@0.2.0.0/cli.bend as Cli
import Base
1789def arg_collision(seen: List<&2, Seen>, +id: String,
1790 +short: String, +long: String) -> Maybe<&2, String>:
1791 match seen:
1792 case Nil{}:
1793 None{}
1794 case SeenArg{old_id, old_short, old_long} <> tail:
1795 here = Bool.pick(Maybe<&2, String>, same_nonempty(short, old_short),
1796 Some{short}, Bool.pick(Maybe<&2, String>,
1797 same_nonempty(long, old_long), Some{long},
1798 Bool.pick(Maybe<&2, String>, same_text(id, old_id), Some{id}, None{})))
1799 Maybe.or(&2, String, here, arg_collision(tail, id, short, long))
1800 case SeenArgAlias{+old} <> tail:
1801 Bool.pick(Maybe<&2, String>, same_nonempty(short, old),
1802 Some{short}, Bool.pick(Maybe<&2, String>,
1803 same_nonempty(long, old), Some{long},
1804 arg_collision(tail, id, short, long)))
1805 case head <> tail:
1806 arg_collision(tail, id, short, long)