(command.CommandList children: [ (C {<set>} {<-o>} {<nounset>}) (C {<set>} {<-o>} {<pipefail>}) (C {<set>} {<-o>} {<errexit>}) (C {<source>} {<'test/common.sh'>}) (command.ShFunction name: assert-deps body: (BraceGroup children: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (command.Pipeline children: [(C {<'bin/oshc'>} {<deps>}) (C {<diff>} {<-u>} {<'/dev/fd/3'>} {<->})] negated: F ) (C {<fail>}) ] ) ] ) ) (command.ShFunction name: usage body: (BraceGroup children: [ (C {<set>} {<Id.Lit_Other '+'> <o>} {<errexit>}) (C {<'bin/oshc'>}) (command.AndOr ops: [Id.Op_DPipe] children: [(C {<test>} {($ Id.VSub_QMark '$?')} {<-eq>} {<2>}) (C {<fail>})] ) (C {<'bin/oshc'>} {<invalid>}) (command.AndOr ops: [Id.Op_DPipe] children: [(C {<test>} {($ Id.VSub_QMark '$?')} {<-eq>} {<2>}) (C {<fail>})] ) (command.Pipeline children: [(C {<echo>} {(SQ <'<'>)}) (C {<'bin/oshc'>} {<deps>})] negated: F ) (command.AndOr ops: [Id.Op_DPipe] children: [(C {<test>} {($ Id.VSub_QMark '$?')} {<-eq>} {<2>}) (C {<fail>})] ) (C {<'bin/oshc'>} {<deps>} {<nonexistent.txt>}) (command.AndOr ops: [Id.Op_DPipe] children: [(C {<test>} {($ Id.VSub_QMark '$?')} {<-eq>} {<2>}) (C {<fail>})] ) (command.ControlFlow token:<Id.ControlFlow_Return return>) (C {<echo>} {<-->}) (C {<'bin/oshc'>} {<--help>}) (command.AndOr ops: [Id.Op_DPipe] children: [(C {<test>} {($ Id.VSub_QMark '$?')} {<-eq>} {<0>}) (C {<fail>})] ) (C {<set>} {<-o>} {<errexit>}) ] ) ) (command.ShFunction name: deps body: (BraceGroup children: [ (C {<'bin/oshc'>} {<deps>} {($ Id.VSub_Number '$0')}) (command.AndOr ops: [Id.Op_DPipe] children: [(C {<test>} {($ Id.VSub_QMark '$?')} {<-eq>} {<0>}) (C {<fail>})] ) (command.Simple words: [{<assert-deps>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<EOF>} here_end_span_id: 276 stdin_parts: [<'if { grep foo bar; } then\n'> <' cat hi\n'> <'fi\n'>] ) ) (redir op: <Id.Redir_DLess '3<<'> loc: (redir_loc.Fd fd:3) arg: (redir_param.HereDoc here_begin: {<DEPS>} here_end_span_id: 280 stdin_parts: [<'grep\n'> <'cat\n'>] ) ) ] do_fork: T ) (command.Simple words: [{<assert-deps>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<EOF>} here_end_span_id: 304 stdin_parts: [ <'f() {\n'> <' g\n'> <'}\n'> <'g() {\n'> <' echo G\n'> <'}\n'> <'f\n'> <'grep foo bar\n'> ] ) ) (redir op: <Id.Redir_DLess '3<<'> loc: (redir_loc.Fd fd:3) arg: (redir_param.HereDoc here_begin: {<DEPS>} here_end_span_id: 307 stdin_parts: [<'grep\n'>] ) ) ] do_fork: T ) (command.Simple words: [{<assert-deps>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<EOF>} here_end_span_id: 328 stdin_parts: [<'g\n'> <'g() {\n'> <' echo G\n'> <'}\n'> <'grep foo bar\n'>] ) ) (redir op: <Id.Redir_DLess '3<<'> loc: (redir_loc.Fd fd:3) arg: (redir_param.HereDoc here_begin: {<DEPS>} here_end_span_id: 332 stdin_parts: [<'g\n'> <'grep\n'>] ) ) ] do_fork: T ) ] ) ) (C {<readonly>} {<-a>} {<Id.Lit_VarLike 'PASSING='> (sh_array_literal left:<Id.Op_LParen _> words:[{<usage>} {<deps>}]) } ) (command.ShFunction name: all-passing body: (BraceGroup children: [ (C {<run-all>} { (DQ (braced_var_sub token: <Id.VSub_Name PASSING> bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) ) } ) ] ) ) (C {(DQ ($ Id.VSub_At '$@'))}) ] )