(command.CommandList children: [ (C {<Id.KW_Set set>} {<-o>} {<nounset>}) (C {<Id.KW_Set set>} {<-o>} {<pipefail>}) (C {<Id.KW_Set set>} {<-o>} {<errexit>}) (C {<source>} {<test/common.sh>}) (command.ShFunction name: assert-deps body: (command.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: (command.BraceGroup children: [ (C {<Id.KW_Set 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 {<Id.KW_Set set>} {<-o>} {<errexit>}) ] ) ) (command.ShFunction name: deps body: (command.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.HereDoc op: <Id.Redir_DLess '<<'> fd: -1 here_begin: {<EOF>} here_end_span_id: 276 stdin_parts: [<'if { grep foo bar; } then\n'> <' cat hi\n'> <'fi\n'>] ) (redir.HereDoc op: <Id.Redir_DLess '3<<'> fd: 3 here_begin: {<DEPS>} here_end_span_id: 280 stdin_parts: [<'grep\n'> <'cat\n'>] ) ] ) (command.Simple words: [{<assert-deps>}] redirects: [ (redir.HereDoc op: <Id.Redir_DLess '<<'> fd: -1 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.HereDoc op: <Id.Redir_DLess '3<<'> fd: 3 here_begin: {<DEPS>} here_end_span_id: 307 stdin_parts: [<'grep\n'>] ) ] ) (command.Simple words: [{<assert-deps>}] redirects: [ (redir.HereDoc op: <Id.Redir_DLess '<<'> fd: -1 here_begin: {<EOF>} here_end_span_id: 328 stdin_parts: [<'g\n'> <'g() {\n'> <' echo G\n'> <'}\n'> <'grep foo bar\n'>] ) (redir.HereDoc op: <Id.Redir_DLess '3<<'> fd: 3 here_begin: {<DEPS>} here_end_span_id: 332 stdin_parts: [<'g\n'> <'grep\n'>] ) ] ) ] ) ) (C {<readonly>} {<-a>} {<Id.Lit_VarLike 'PASSING='> (sh_array_literal left:<Id.Op_LParen _> words:[{<usage>} {<deps>}]) } ) (command.ShFunction name: all-passing body: (command.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 '$@'))}) ] )