def AaQ.combine

bend-osdev-apparmor@0.1.0.0 · parse.bend:1040

import bend-osdev-apparmor@0.1.0.0/parse.bend as Parse
import Base
import bend-osdev-apparmor@0.1.0.0/error.bend as E

1040# a block's qualifiers with a rule's (or an inner block's): allow and deny conflict
1041def AaQ.combine(b: AaBQ, r: AaBQ, src: E.AaSrc) -> Result<&2, &2, E.AaError, AaBQ>:
1042  match b:
1043    case AaBQ{a1, +c1, o1}:
1044      match r:
1045        case AaBQ{a2, +c2, o2}:
1046          Bool.pick(Result<&2, &2, E.AaError, AaBQ>, Bool.and(Bool.and(Nat.is_gt(c1, 0n), Nat.is_gt(c2, 0n)), Bool.not(Nat.is_eq(c1, c2))), Fail{E.AaSrc.syntax(src)}, Done{AaBQ{Bool.or(a1, a2), Nat.max(c1, c2), Bool.or(o1, o2)}})

Uses (12)

Used by (2)