def AaParse.expand0

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

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

404# includes nested too deep
405def AaParse.expand0(items: List<&2, AaItem>, +scopes: List<&2, List<&2, List<&2, U32>>>, +acc: List<&2, AaItem>) -> AaExpOut:
406  match items:
407    case Nil{}:
408      AaExpOut{AaItem.rev_onto(acc, Nil{}), scopes}
409    case Con{it, rest}:
410      match it:
411        case AaIOpen{ts, src}:
412          AaParse.expand0(rest, Con{Nil{}, scopes}, Con{AaIOpen{ts, src}, acc})
413        case AaIClose{src}:
414          AaParse.expand0(rest, AaParse.pop(scopes), Con{AaIClose{src}, acc})
415        case AaIInclude{+name, opt, src}:
416          AaParse.expand0(rest, scopes, Bool.pick(List<&2, AaItem>, AaParse.seen(scopes, name), acc, Con{AaIError{E.AaSrc.include_depth(src)}, acc}))
417        case AaIStmt{ts, src}:
418          AaParse.expand0(rest, scopes, Con{AaIStmt{ts, src}, acc})
419        case AaIVar{ts, src}:
420          AaParse.expand0(rest, scopes, Con{AaIVar{ts, src}, acc})
421        case AaIError{e}:
422          AaParse.expand0(rest, scopes, Con{AaIError{e}, acc})

Uses (9)

Used by (1)