(command.CommandList children: [ (C {(set)} {(-eu)}) (command.Assignment pairs: [(assign_pair lhs:(lhs_expr.LhsName name:WARNING) op:Equal rhs:{(SQ <'\\033[0;31m'>)})] ) (command.Assignment pairs: [(assign_pair lhs:(lhs_expr.LhsName name:SUCCESS) op:Equal rhs:{(SQ <'\\033[0;32m'>)})] ) (command.Assignment pairs: [(assign_pair lhs:(lhs_expr.LhsName name:INFO) op:Equal rhs:{(SQ )})] ) (command.Assignment pairs: [(assign_pair lhs:(lhs_expr.LhsName name:DEBUG) op:Equal rhs:{(SQ )})] ) (command.Assignment pairs: [(assign_pair lhs:(lhs_expr.LhsName name:RESET) op:Equal rhs:{(SQ <'\\033[0m'>)})] ) (command.Assignment pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:VERBOSE) op: Equal rhs: { (word_part.BracedVarSub token: <VSub_Name VERBOSE> suffix_op: (suffix_op.Unary op_id:VTest_ColonHyphen arg_word:{}) ) } ) ] ) (command.Assignment pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:DIR) op: Equal rhs: { (DQ (word_part.CommandSub left_token: <Left_DollarParen '$('> command_list: (command.CommandList children: [ (command.AndOr ops: [Op_DAmp] children: [ (C {(cd)} { (DQ (word_part.CommandSub left_token: <Left_DollarParen '$('> command_list: (command.CommandList children: [ (C {(dirname)} { (DQ (word_part.BracedVarSub token: <VSub_Name BASH_SOURCE> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{(Lit_Digits 0)}) ) ) ) } ) ] ) ) ) } ) (C {(pwd)}) ] ) ] ) ) ) } ) ] ) (command.Assignment pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:REFMT) op: Equal rhs: {(DQ ($ VSub_DollarName '$DIR') (/../refmt_impl.native))} ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr:(bool_expr.Unary op_id:BoolUnary_f child:{(REFMT)})) terminator: <Op_Semi ';'> ) ] action: [ (command.Simple words: [{(echo)} {(DQ ('Cannot find refmt at ') ($ VSub_DollarName '$REFMT'))}] redirects: [(redir.Redir op:<Redir_GreatAnd '1>&'> fd:1 arg_word:{(2)})] ) (command.Sentence child: (command.ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)}) terminator: <Op_Semi ';'> ) ] ) ] ) (command.Assignment pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:UNIT_TEST_INPUT) op: Equal rhs: {($ VSub_DollarName '$DIR') (/unit_tests/input)} ) ] ) (command.Assignment pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:UNIT_TEST_OUTPUT) op: Equal rhs: {($ VSub_DollarName '$DIR') (/unit_tests/actual_output)} ) ] ) (command.Assignment pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:UNIT_TEST_EXPECTED_OUTPUT) op: Equal rhs: {($ VSub_DollarName '$DIR') (/unit_tests/expected_output)} ) ] ) (command.Assignment pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:TYPE_TEST_INPUT) op: Equal rhs: {($ VSub_DollarName '$DIR') (/typeCheckedTests/input)} ) ] ) (command.Assignment pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:TYPE_TEST_OUTPUT) op: Equal rhs: {($ VSub_DollarName '$DIR') (/typeCheckedTests/actual_output)} ) ] ) (command.Assignment pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:TYPE_TEST_EXPECTED_OUTPUT) op: Equal rhs: {($ VSub_DollarName '$DIR') (/typeCheckedTests/expected_output)} ) ] ) (command.Assignment pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:ERROR_TEST_INPUT) op: Equal rhs: {($ VSub_DollarName '$DIR') (/errorTests/input)} ) ] ) (command.Assignment pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:ERROR_TEST_OUTPUT) op: Equal rhs: {($ VSub_DollarName '$DIR') (/errorTests/actual_output)} ) ] ) (command.Assignment pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:ERROR_TEST_EXPECTED_OUTPUT) op: Equal rhs: {($ VSub_DollarName '$DIR') (/errorTests/expected_output)} ) ] ) (command.Assignment pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:FAILED_TESTS) op: Equal rhs: {($ VSub_DollarName '$DIR') (/failed_tests)} ) ] ) (command.FuncDef name: info body: (command.BraceGroup children: [ (C {(printf)} { (DQ (${ VSub_Name INFO) ($ VSub_Number '$1') (${ VSub_Name RESET) (Lit_Other '\\') (n)) } ) ] ) ) (command.FuncDef name: debug body: (command.BraceGroup children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Lit_LBracket '[')} {(KW_Bang '!')} {(-z)} {(DQ ($ VSub_DollarName '$VERBOSE'))} {(Lit_RBracket ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (C {(printf)} { (DQ (${ VSub_Name DEBUG) ($ VSub_Number '$1') (${ VSub_Name RESET) (Lit_Other '\\') (n) ) } ) ] ) ] ) ] ) ) (command.FuncDef name: success body: (command.BraceGroup children: [ (C {(printf)} { (DQ (${ VSub_Name SUCCESS) ($ VSub_Number '$1') (${ VSub_Name RESET) (Lit_Other '\\') (n)) } ) ] ) ) (command.FuncDef name: output body: (command.BraceGroup children: [(C {(printf)} {(DQ ($ VSub_Number '$1') (Lit_Other '\\') (n))})] ) ) (command.FuncDef name: warning body: (command.BraceGroup children: [ (C {(printf)} { (DQ (${ VSub_Name WARNING) ($ VSub_Number '$1') (${ VSub_Name RESET) (Lit_Other '\\') (n)) } ) ] ) ) (command.FuncDef name: setup_test_dir body: (command.BraceGroup children: [ (C {(echo)} {(DQ ("Setting up test dirs actual_output alongside the tests' expected_output"))} ) (C {(mkdir)} {(-p)} {($ VSub_DollarName '$UNIT_TEST_OUTPUT')} {($ VSub_DollarName '$TYPE_TEST_OUTPUT')} {($ VSub_DollarName '$ERROR_TEST_OUTPUT')} ) (C {(touch)} {($ VSub_DollarName '$FAILED_TESTS')}) ] ) ) (C {(setup_test_dir)}) (C {(set)} {(Lit_Other '+') (e)}) (command.FuncDef name: stdin_test body: (command.BraceGroup children: [ (command.Assignment pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:INPUT_FILE) op: Equal rhs: {($ VSub_Number '$1')} ) ] ) (command.Assignment pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:OUTPUT_FILE) op: Equal rhs: {($ VSub_Number '$2')} ) ] ) (command.Assignment pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:EXPECTED_OUTPUT_FILE) op: Equal rhs: {($ VSub_Number '$3')} ) ] ) (command.Assignment pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:HEURISTICS_FILE) op: Equal rhs: {($ VSub_Number '$4')} ) ] ) (command.Assignment pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:FILENAME) op: Equal rhs: { (word_part.CommandSub left_token: <Left_DollarParen '$('> command_list: (command.CommandList children: [(C {(basename)} {($ VSub_DollarName '$INPUT_FILE')})] ) ) } ) ] ) (command.Assignment pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:FILEEXT) op: Equal rhs: { (DQ (word_part.BracedVarSub token: <VSub_Name FILENAME> suffix_op: (suffix_op.Unary op_id:VOp1_DPound arg_word:{('*.')}) ) ) } ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: BoolBinary_GlobEqual left: {($ VSub_DollarName '$FILEEXT')} right: {(DQ (re))} ) ) terminator: <Op_Semi ';'> ) ] action: [ (command.Pipeline children: [ (C {(cat)} {($ VSub_DollarName '$INPUT_FILE')}) (command.Simple words: [ {($ VSub_DollarName '$REFMT')} {(-is-interface-pp)} {(false)} {(-print-width)} {(50)} {(-parse)} {(re)} {(-print)} {(re)} {(-use-stdin)} {(true)} ] redirects: [ (redir.Redir op: <Redir_GreatAnd '2>&'> fd: 2 arg_word: {(1)} ) (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {($ VSub_DollarName '$OUTPUT_FILE')} ) ] ) ] negated: F ) ] ) (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: BoolBinary_GlobEqual left: {($ VSub_DollarName '$FILEEXT')} right: {(DQ (rei))} ) ) terminator: <Op_Semi ';'> ) ] action: [ (command.Pipeline children: [ (C {(cat)} {($ VSub_DollarName '$INPUT_FILE')}) (command.Simple words: [ {($ VSub_DollarName '$REFMT')} {(-is-interface-pp)} {(true)} {(-print-width)} {(50)} {(-parse)} {(re)} {(-print)} {(re)} {(-use-stdin)} {(true)} ] redirects: [ (redir.Redir op: <Redir_GreatAnd '2>&'> fd: 2 arg_word: {(1)} ) (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {($ VSub_DollarName '$OUTPUT_FILE')} ) ] ) ] negated: F ) ] ) (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: BoolBinary_GlobEqual left: {($ VSub_DollarName '$FILEEXT')} right: {(DQ (ml))} ) ) terminator: <Op_Semi ';'> ) ] action: [ (command.Pipeline children: [ (C {(cat)} {($ VSub_DollarName '$INPUT_FILE')}) (command.Simple words: [ {($ VSub_DollarName '$REFMT')} {(-heuristics-file)} {($ VSub_DollarName '$HEURISTICS_FILE')} {(-is-interface-pp)} {(false)} {(-print-width)} {(50)} {(-parse)} {(ml)} {(-print)} {(re)} {(-use-stdin)} {(true)} ] redirects: [ (redir.Redir op: <Redir_GreatAnd '2>&'> fd: 2 arg_word: {(1)} ) (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {($ VSub_DollarName '$OUTPUT_FILE')} ) ] ) ] negated: F ) ] ) (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: BoolBinary_GlobEqual left: {($ VSub_DollarName '$FILEEXT')} right: {(DQ (mli))} ) ) terminator: <Op_Semi ';'> ) ] action: [ (command.Pipeline children: [ (C {(cat)} {($ VSub_DollarName '$INPUT_FILE')}) (command.Simple words: [ {($ VSub_DollarName '$REFMT')} {(-heuristics-file)} {($ VSub_DollarName '$HEURISTICS_FILE')} {(-is-interface-pp)} {(true)} {(-print-width)} {(50)} {(-parse)} {(ml)} {(-print)} {(re)} {(-use-stdin)} {(true)} ] redirects: [ (redir.Redir op: <Redir_GreatAnd '2>&'> fd: 2 arg_word: {(1)} ) (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {($ VSub_DollarName '$OUTPUT_FILE')} ) ] ) ] negated: F ) ] ) ] else_action: [ (C {(warning)} {(DQ (' \xe2\x8a\x98 FAILED -use-stdin ') (Lit_Other '\\') (n))}) (C {(info)} { (DQ (' Cannot determine default implementation parser for extension ') (${ VSub_Name FILEEXT) ) } ) (command.ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.Pipeline children: [ (command.DBracket expr: (bool_expr.Binary op_id: BoolBinary_eq left: {($ VSub_QMark '$?')} right: {(0)} ) ) ] negated: T ) terminator: <Op_Semi ';'> ) ] action: [ (C {(warning)} {(DQ (' \xe2\x8a\x98 FAILED -use-stdin ') (Lit_Other '\\') (n))}) (C {(info)} {(DQ (' There was an error when testing -use-stdin'))}) (C {(info)} {(DQ (' for input file ') ($ VSub_DollarName '$INPUT_FILE'))}) (C {(info)} { (DQ (' and output file ') ($ VSub_DollarName '$OUTPUT_FILE') (${ VSub_Name RESET) ) } ) (C {(echo)} {(DQ )}) (command.ControlFlow token: <ControlFlow_Return return> arg_word: {(1)} ) ] ) ] ) (C {(debug)} { (DQ (' Comparing -use-stdin results: diff ') ($ VSub_DollarName '$OUTPUT_FILE') (' ') ($ VSub_DollarName '$EXPECTED_OUTPUT_FILE') ) } ) (C {(diff)} {(--unchanged-line-format) (Lit_Other '=') (DQ )} {(--new-line-format) (Lit_Other '=') (DQ (':%dn: %L'))} {(--old-line-format) (Lit_Other '=') (DQ (':%dn: %L'))} {($ VSub_DollarName '$OUTPUT_FILE')} {($ VSub_DollarName '$EXPECTED_OUTPUT_FILE')} ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.Pipeline children: [ (command.DBracket expr: (bool_expr.Binary op_id: BoolBinary_eq left: {($ VSub_QMark '$?')} right: {(0)} ) ) ] negated: T ) terminator: <Op_Semi ';'> ) ] action: [ (C {(warning)} {(DQ (' \xe2\x8a\x98 FAILED -use-stdin ') (Lit_Other '\\') (n))}) (C {(info)} { (DQ (' ') (${ VSub_Name INFO) ($ VSub_DollarName '$OUTPUT_FILE') (${ VSub_Name RESET) ) } ) (C {(info)} {(DQ (" doesn't match expected output"))}) (C {(info)} { (DQ (' ') (${ VSub_Name INFO) ($ VSub_DollarName '$EXPECTED_OUTPUT_FILE') (${ VSub_Name RESET) ) } ) (C {(echo)} {(DQ )}) (command.ControlFlow token: <ControlFlow_Return return> arg_word: {(1)} ) ] ) ] ) (command.ControlFlow token:<ControlFlow_Return return> arg_word:{(0)}) ] ) ) (command.FuncDef name: unit_test body: (command.BraceGroup children: [ (command.Assignment pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:FILE) op: Equal rhs: {($ VSub_Number '$1')} ) ] ) (command.Assignment pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:INPUT) op: Equal rhs: {($ VSub_Number '$2')} ) ] ) (command.Assignment pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:OUTPUT) op: Equal rhs: {($ VSub_Number '$3')} ) ] ) (command.Assignment pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:EXPECTED_OUTPUT) op: Equal rhs: {($ VSub_Number '$4')} ) ] ) (command.Assignment pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:FILENAME) op: Equal rhs: { (word_part.CommandSub left_token: <Left_DollarParen '$('> command_list: (command.CommandList children: [(C {(basename)} {($ VSub_DollarName '$FILE')})] ) ) } ) ] ) (command.Assignment pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:FILEEXT) op: Equal rhs: { (DQ (word_part.BracedVarSub token: <VSub_Name FILENAME> suffix_op: (suffix_op.Unary op_id:VOp1_DPound arg_word:{('*.')}) ) ) } ) ] ) (C {(info)} {(DQ ('Unit Test: ') ($ VSub_DollarName '$FILE'))}) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.AndOr ops: [Op_DPipe] children: [ (C {(Lit_LBracket '[')} { (DQ (word_part.CommandSub left_token: <Left_DollarParen '$('> command_list: (command.CommandList children: [(C {(basename)} {($ VSub_DollarName '$FILE')})] ) ) ) } {(KW_Bang '!') (Lit_Other '=')} { (DQ (word_part.CommandSub left_token: <Left_DollarParen '$('> command_list: (command.CommandList children: [ (C {(basename)} {($ VSub_DollarName '$FILE')} {(.ml)}) ] ) ) ) } {(Lit_RBracket ']')} ) (C {(Lit_LBracket '[')} { (DQ (word_part.CommandSub left_token: <Left_DollarParen '$('> command_list: (command.CommandList children: [(C {(basename)} {($ VSub_DollarName '$FILE')})] ) ) ) } {(KW_Bang '!') (Lit_Other '=')} { (DQ (word_part.CommandSub left_token: <Left_DollarParen '$('> command_list: (command.CommandList children: [ (C {(basename)} {($ VSub_DollarName '$FILE')} {(.mli)}) ] ) ) ) } {(Lit_RBracket ']')} ) ] ) terminator: <Op_Semi ';'> ) ] action: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Lit_LBracket '[')} { (DQ (word_part.CommandSub left_token: <Left_DollarParen '$('> command_list: (command.CommandList children: [(C {(basename)} {($ VSub_DollarName '$FILE')})] ) ) ) } {(KW_Bang '!') (Lit_Other '=')} { (DQ (word_part.CommandSub left_token: <Left_DollarParen '$('> command_list: (command.CommandList children: [ (C {(basename)} {($ VSub_DollarName '$FILE')} {(.ml)}) ] ) ) ) } {(Lit_RBracket ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (command.Assignment pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:REFILE) op: Equal rhs: { (DQ (word_part.CommandSub left_token: <Left_DollarParen '$('> command_list: (command.CommandList children: [ (C {(basename)} {($ VSub_DollarName '$FILE')} {(.ml)}) ] ) ) (.re) ) } ) ] ) ] ) ] else_action: [ (command.Assignment pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:REFILE) op: Equal rhs: { (DQ (word_part.CommandSub left_token: <Left_DollarParen '$('> command_list: (command.CommandList children: [ (C {(basename)} {($ VSub_DollarName '$FILE')} {(.mli)}) ] ) ) (.rei) ) } ) ] ) ] ) (C {(debug)} { (DQ ($ VSub_DollarName '$REFMT') (' -heuristics-file ') ($ VSub_DollarName '$INPUT') ('/arity.txt -print-width 50 -print re ') ($ VSub_DollarName '$INPUT') (/) ($ VSub_DollarName '$FILE') (' 2>&1 > ') ($ VSub_DollarName '$OUTPUT') (/) ($ VSub_DollarName '$REFILE') ) } ) (command.Simple words: [ {($ VSub_DollarName '$REFMT')} {(-heuristics-file)} {($ VSub_DollarName '$INPUT') (/arity.txt)} {(-print-width)} {(50)} {(-print)} {(re)} {($ VSub_DollarName '$INPUT') (/) ($ VSub_DollarName '$FILE')} ] redirects: [ (redir.Redir op: <Redir_GreatAnd '2>&'> fd: 2 arg_word: {(1)} ) (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {($ VSub_DollarName '$OUTPUT') (/) ($ VSub_DollarName '$REFILE')} ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.Pipeline children: [ (command.DBracket expr: (bool_expr.Binary op_id: BoolBinary_eq left: {($ VSub_QMark '$?')} right: {(0)} ) ) ] negated: T ) terminator: <Op_Semi ';'> ) ] action: [ (C {(warning)} { (DQ (' \xe2\x8a\x98 TEST FAILED CONVERTING ML TO RE') (Lit_Other '\\') (n) ) } ) (command.ControlFlow token: <ControlFlow_Return return> arg_word: {(1)} ) ] ) ] ) (command.Assignment pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:FILE) op: Equal rhs: {($ VSub_DollarName '$REFILE')} ) ] ) ] ) ] else_action: [ (C {(debug)} { (DQ (" '") ($ VSub_DollarName '$REFMT') (' -print-width 50 -print re ') ($ VSub_DollarName '$INPUT') (/) ($ VSub_DollarName '$FILE') (' 2>&1 > ') ($ VSub_DollarName '$OUTPUT') (/) ($ VSub_DollarName '$FILE') ("'") ) } ) (command.Simple words: [ {($ VSub_DollarName '$REFMT')} {(-print-width)} {(50)} {(-print)} {(re)} {($ VSub_DollarName '$INPUT') (/) ($ VSub_DollarName '$FILE')} ] redirects: [ (redir.Redir op:<Redir_GreatAnd '2>&'> fd:2 arg_word:{(1)}) (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {($ VSub_DollarName '$OUTPUT') (/) ($ VSub_DollarName '$FILE')} ) ] ) ] ) (C {(debug)} { (DQ (' Comparing results: diff ') ($ VSub_DollarName '$OUTPUT') (/) ($ VSub_DollarName '$FILE') (' ') ($ VSub_DollarName '$EXPECTED_OUTPUT') (/) ($ VSub_DollarName '$FILE') ) } ) (C {(diff)} {(--unchanged-line-format) (Lit_Other '=') (DQ )} {(--new-line-format) (Lit_Other '=') (DQ (':%dn: %L'))} {(--old-line-format) (Lit_Other '=') (DQ (':%dn: %L'))} {($ VSub_DollarName '$OUTPUT') (/) ($ VSub_DollarName '$FILE')} {($ VSub_DollarName '$EXPECTED_OUTPUT') (/) ($ VSub_DollarName '$FILE')} ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.Pipeline children: [ (command.DBracket expr: (bool_expr.Binary op_id: BoolBinary_eq left: {($ VSub_QMark '$?')} right: {(0)} ) ) ] negated: T ) terminator: <Op_Semi ';'> ) ] action: [ (C {(warning)} {(DQ (' \xe2\x8a\x98 FAILED') (Lit_Other '\\') (n))}) (C {(info)} { (DQ (' ') (${ VSub_Name INFO) ($ VSub_DollarName '$OUTPUT') (/) ($ VSub_DollarName '$FILE') (${ VSub_Name RESET) ) } ) (C {(info)} {(DQ (" doesn't match expected output"))}) (C {(info)} { (DQ (' ') (${ VSub_Name INFO) ($ VSub_DollarName '$EXPECTED_OUTPUT') (/) ($ VSub_DollarName '$FILE') (${ VSub_Name RESET) ) } ) (C {(echo)} {(DQ )}) (command.ControlFlow token: <ControlFlow_Return return> arg_word: {(1)} ) ] ) ] ) (C {(debug)} {(DQ ('Testing -use-stdin'))}) (C {(stdin_test)} {($ VSub_DollarName '$INPUT') (/) ($ VSub_Number '$1')} {($ VSub_DollarName '$OUTPUT') (/) ($ VSub_DollarName '$FILE')} {($ VSub_DollarName '$EXPECTED_OUTPUT') (/) ($ VSub_DollarName '$FILE')} {($ VSub_DollarName '$INPUT') (/arity.txt)} ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.Pipeline children: [ (command.DBracket expr: (bool_expr.Binary op_id: BoolBinary_eq left: {($ VSub_QMark '$?')} right: {(0)} ) ) ] negated: T ) terminator: <Op_Semi ';'> ) ] action: [(command.ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})] ) ] else_action: [(C {(success)} {(DQ (' \xe2\x98\x91 PASS'))}) (C {(echo)})] ) ] ) ) (command.FuncDef name: idempotent_test body: (command.BraceGroup children: [ (command.Assignment pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:FILE) op: Equal rhs: {($ VSub_Number '$1')} ) ] ) (command.Assignment pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:INPUT) op: Equal rhs: {($ VSub_Number '$2')} ) ] ) (command.Assignment pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:OUTPUT) op: Equal rhs: {($ VSub_Number '$3')} ) ] ) (command.Assignment pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:FILENAME) op: Equal rhs: { (word_part.CommandSub left_token: <Left_DollarParen '$('> command_list: (command.CommandList children: [(C {(basename)} {($ VSub_DollarName '$FILE')})] ) ) } ) ] ) (command.Assignment pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:FILEEXT) op: Equal rhs: { (DQ (word_part.BracedVarSub token: <VSub_Name FILENAME> suffix_op: (suffix_op.Unary op_id:VOp1_DPound arg_word:{('*.')}) ) ) } ) ] ) (C {(info)} {(DQ ('Idempotent Test: ') ($ VSub_DollarName '$FILE'))}) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.AndOr ops: [Op_DPipe] children: [ (C {(Lit_LBracket '[')} { (DQ (word_part.CommandSub left_token: <Left_DollarParen '$('> command_list: (command.CommandList children: [(C {(basename)} {($ VSub_DollarName '$FILE')})] ) ) ) } {(KW_Bang '!') (Lit_Other '=')} { (DQ (word_part.CommandSub left_token: <Left_DollarParen '$('> command_list: (command.CommandList children: [ (C {(basename)} {($ VSub_DollarName '$FILE')} {(.ml)}) ] ) ) ) } {(Lit_RBracket ']')} ) (C {(Lit_LBracket '[')} { (DQ (word_part.CommandSub left_token: <Left_DollarParen '$('> command_list: (command.CommandList children: [(C {(basename)} {($ VSub_DollarName '$FILE')})] ) ) ) } {(KW_Bang '!') (Lit_Other '=')} { (DQ (word_part.CommandSub left_token: <Left_DollarParen '$('> command_list: (command.CommandList children: [ (C {(basename)} {($ VSub_DollarName '$FILE')} {(.mli)}) ] ) ) ) } {(Lit_RBracket ']')} ) ] ) terminator: <Op_Semi ';'> ) ] action: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Lit_LBracket '[')} { (DQ (word_part.CommandSub left_token: <Left_DollarParen '$('> command_list: (command.CommandList children: [(C {(basename)} {($ VSub_DollarName '$FILE')})] ) ) ) } {(KW_Bang '!') (Lit_Other '=')} { (DQ (word_part.CommandSub left_token: <Left_DollarParen '$('> command_list: (command.CommandList children: [ (C {(basename)} {($ VSub_DollarName '$FILE')} {(.ml)}) ] ) ) ) } {(Lit_RBracket ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (command.Assignment pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:REFILE) op: Equal rhs: { (DQ (word_part.CommandSub left_token: <Left_DollarParen '$('> command_list: (command.CommandList children: [ (C {(basename)} {($ VSub_DollarName '$FILE')} {(.ml)}) ] ) ) (.re) ) } ) ] ) ] ) ] else_action: [ (command.Assignment pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:REFILE) op: Equal rhs: { (DQ (word_part.CommandSub left_token: <Left_DollarParen '$('> command_list: (command.CommandList children: [ (C {(basename)} {($ VSub_DollarName '$FILE')} {(.mli)}) ] ) ) (.rei) ) } ) ] ) ] ) (C {(debug)} { (DQ (' Converting ') ($ VSub_DollarName '$FILE') (' to ') ($ VSub_DollarName '$REFILE') (':') ) } ) (C {(debug)} { (DQ (' Formatting Once: ') ($ VSub_DollarName '$REFMT') (' -heuristics-file ') ($ VSub_DollarName '$INPUT') ('/arity.txt -print-width 50 -print re ') ($ VSub_DollarName '$INPUT') (/) ($ VSub_DollarName '$FILE') (' 2>&1 > ') ($ VSub_DollarName '$OUTPUT') (/) ($ VSub_DollarName '$REFILE') ) } ) (command.Simple words: [ {($ VSub_DollarName '$REFMT')} {(-heuristics-file)} {($ VSub_DollarName '$INPUT') (/arity.txt)} {(-print-width)} {(50)} {(-print)} {(re)} {($ VSub_DollarName '$INPUT') (/) ($ VSub_DollarName '$FILE')} ] redirects: [ (redir.Redir op: <Redir_GreatAnd '2>&'> fd: 2 arg_word: {(1)} ) (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {($ VSub_DollarName '$OUTPUT') (/) ($ VSub_DollarName '$REFILE')} ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.Pipeline children: [ (command.DBracket expr: (bool_expr.Binary op_id: BoolBinary_eq left: {($ VSub_QMark '$?')} right: {(0)} ) ) ] negated: T ) terminator: <Op_Semi ';'> ) ] action: [ (C {(warning)} {(DQ ('\xe2\x8a\x98 FAILED') (Lit_Other '\\') (n))}) (command.ControlFlow token: <ControlFlow_Return return> arg_word: {(1)} ) ] ) ] ) (command.Assignment pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:FILE) op: Equal rhs: {($ VSub_DollarName '$REFILE')} ) ] ) (C {(debug)} { (DQ (' Generating output again: ') ($ VSub_DollarName '$REFMT') (' -print-width 50 -print re ') ($ VSub_DollarName '$OUTPUT') (/) ($ VSub_DollarName '$FILE') (' 2>&1 > ') ($ VSub_DollarName '$OUTPUT') (/) ($ VSub_DollarName '$FILE') (.formatted) ) } ) (command.Simple words: [ {($ VSub_DollarName '$REFMT')} {(-print-width)} {(50)} {(-print)} {(re)} {($ VSub_DollarName '$OUTPUT') (/) ($ VSub_DollarName '$FILE')} ] redirects: [ (redir.Redir op: <Redir_GreatAnd '2>&'> fd: 2 arg_word: {(1)} ) (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {($ VSub_DollarName '$OUTPUT') (/) ($ VSub_DollarName '$FILE') (.formatted)} ) ] ) ] ) ] else_action: [ (C {(debug)} { (DQ (" Formatting Once: '") ($ VSub_DollarName '$REFMT') (' -print-width 50 -print re ') ($ VSub_DollarName '$INPUT') (/) ($ VSub_DollarName '$FILE') (' 2>&1 > ') ($ VSub_DollarName '$OUTPUT') (/) ($ VSub_DollarName '$FILE') ("'") ) } ) (command.Simple words: [ {($ VSub_DollarName '$REFMT')} {(-print-width)} {(50)} {(-print)} {(re)} {($ VSub_DollarName '$INPUT') (/) ($ VSub_DollarName '$FILE')} ] redirects: [ (redir.Redir op:<Redir_GreatAnd '2>&'> fd:2 arg_word:{(1)}) (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {($ VSub_DollarName '$OUTPUT') (/) ($ VSub_DollarName '$FILE')} ) ] ) (C {(debug)} { (DQ (' Generating output again: ') ($ VSub_DollarName '$REFMT') (' -print-width 50 -print re ') ($ VSub_DollarName '$OUTPUT') (/) ($ VSub_DollarName '$FILE') (' 2>&1 > ') ($ VSub_DollarName '$OUTPUT') (/) ($ VSub_DollarName '$FILE') (.formatted) ) } ) (command.Simple words: [ {($ VSub_DollarName '$REFMT')} {(-print-width)} {(50)} {(-print)} {(re)} {($ VSub_DollarName '$OUTPUT') (/) ($ VSub_DollarName '$FILE')} ] redirects: [ (redir.Redir op:<Redir_GreatAnd '2>&'> fd:2 arg_word:{(1)}) (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {($ VSub_DollarName '$OUTPUT') (/) ($ VSub_DollarName '$FILE') (.formatted)} ) ] ) ] ) (C {(diff)} {(--unchanged-line-format) (Lit_Other '=') (DQ )} {(--new-line-format) (Lit_Other '=') (DQ (':%dn: %L'))} {(--old-line-format) (Lit_Other '=') (DQ (':%dn: %L'))} {($ VSub_DollarName '$OUTPUT') (/) ($ VSub_DollarName '$FILE')} {($ VSub_DollarName '$OUTPUT') (/) ($ VSub_DollarName '$FILE') (.formatted)} ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.Pipeline children: [ (command.DBracket expr: (bool_expr.Binary op_id: BoolBinary_eq left: {($ VSub_QMark '$?')} right: {(0)} ) ) ] negated: T ) terminator: <Op_Semi ';'> ) ] action: [ (C {(warning)} {(DQ ('\xe2\x8a\x98 FAILED') (Lit_Other '\\') (n))}) (C {(info)} { (DQ (' ') (${ VSub_Name INFO) ($ VSub_DollarName '$OUTPUT') (/) ($ VSub_DollarName '$FILE') (.formatted) (${ VSub_Name RESET) (Lit_Other '\\') (n) ) } ) (C {(info)} {(DQ (' is not same as'))}) (C {(info)} { (DQ (' ') (${ VSub_Name INFO) ($ VSub_DollarName '$OUTPUT') (/) ($ VSub_DollarName '$FILE') (${ VSub_Name RESET) ) } ) (command.ControlFlow token: <ControlFlow_Return return> arg_word: {(1)} ) ] ) ] ) (C {(debug)} {(DQ ('Testing -use-stdin'))}) (C {(stdin_test)} {($ VSub_DollarName '$INPUT') (/) ($ VSub_Number '$1')} {($ VSub_DollarName '$OUTPUT') (/) ($ VSub_DollarName '$FILE')} {($ VSub_DollarName '$OUTPUT') (/) ($ VSub_DollarName '$FILE')} {($ VSub_DollarName '$INPUT') (/arity.txt)} ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.Pipeline children: [ (command.DBracket expr: (bool_expr.Binary op_id: BoolBinary_eq left: {($ VSub_QMark '$?')} right: {(0)} ) ) ] negated: T ) terminator: <Op_Semi ';'> ) ] action: [(command.ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})] ) ] else_action: [ (C {(stdin_test)} {($ VSub_DollarName '$OUTPUT') (/) ($ VSub_DollarName '$FILE')} {($ VSub_DollarName '$OUTPUT') (/) ($ VSub_DollarName '$FILE') (.formatted)} {($ VSub_DollarName '$OUTPUT') (/) ($ VSub_DollarName '$FILE')} {($ VSub_DollarName '$INPUT') (/arity.txt)} ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.Pipeline children: [ (command.DBracket expr: (bool_expr.Binary op_id: BoolBinary_eq left: {($ VSub_QMark '$?')} right: {(0)} ) ) ] negated: T ) terminator: <Op_Semi ';'> ) ] action: [(command.ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})] ) ] else_action: [(C {(success)} {(DQ (' \xe2\x98\x91 PASS'))}) (C {(echo)})] ) ] ) ] ) ) (command.FuncDef name: typecheck_test body: (command.BraceGroup children: [ (command.Assignment pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:FILE) op: Equal rhs: {($ VSub_Number '$1')} ) ] ) (command.Assignment pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:INPUT) op: Equal rhs: {($ VSub_Number '$2')} ) ] ) (command.Assignment pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:OUTPUT) op: Equal rhs: {($ VSub_Number '$3')} ) ] ) (C {(info)} {(DQ ('Typecheck Test: ') ($ VSub_DollarName '$FILE'))}) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.AndOr ops: [Op_DPipe] children: [ (C {(Lit_LBracket '[')} { (DQ (word_part.CommandSub left_token: <Left_DollarParen '$('> command_list: (command.CommandList children: [(C {(basename)} {($ VSub_DollarName '$FILE')})] ) ) ) } {(KW_Bang '!') (Lit_Other '=')} { (DQ (word_part.CommandSub left_token: <Left_DollarParen '$('> command_list: (command.CommandList children: [ (C {(basename)} {($ VSub_DollarName '$FILE')} {(.ml)}) ] ) ) ) } {(Lit_RBracket ']')} ) (C {(Lit_LBracket '[')} { (DQ (word_part.CommandSub left_token: <Left_DollarParen '$('> command_list: (command.CommandList children: [(C {(basename)} {($ VSub_DollarName '$FILE')})] ) ) ) } {(KW_Bang '!') (Lit_Other '=')} { (DQ (word_part.CommandSub left_token: <Left_DollarParen '$('> command_list: (command.CommandList children: [ (C {(basename)} {($ VSub_DollarName '$FILE')} {(.mli)}) ] ) ) ) } {(Lit_RBracket ']')} ) ] ) terminator: <Op_Semi ';'> ) ] action: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Lit_LBracket '[')} { (DQ (word_part.CommandSub left_token: <Left_DollarParen '$('> command_list: (command.CommandList children: [(C {(basename)} {($ VSub_DollarName '$FILE')})] ) ) ) } {(KW_Bang '!') (Lit_Other '=')} { (DQ (word_part.CommandSub left_token: <Left_DollarParen '$('> command_list: (command.CommandList children: [ (C {(basename)} {($ VSub_DollarName '$FILE')} {(.ml)}) ] ) ) ) } {(Lit_RBracket ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (command.Assignment pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:REFILE) op: Equal rhs: { (DQ (word_part.CommandSub left_token: <Left_DollarParen '$('> command_list: (command.CommandList children: [ (C {(basename)} {($ VSub_DollarName '$FILE')} {(.ml)}) ] ) ) (.re) ) } ) ] ) ] ) ] else_action: [ (command.Assignment pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:REFILE) op: Equal rhs: { (DQ (word_part.CommandSub left_token: <Left_DollarParen '$('> command_list: (command.CommandList children: [ (C {(basename)} {($ VSub_DollarName '$FILE')} {(.mli)}) ] ) ) (.rei) ) } ) ] ) ] ) (C {(debug)} { (DQ (' Converting ') ($ VSub_DollarName '$FILE') (' to ') ($ VSub_DollarName '$REFILE') (':') ) } ) (C {(debug)} { (DQ ($ VSub_DollarName '$REFMT') (' -heuristics-file ') ($ VSub_DollarName '$INPUT') ('/arity.txt -print-width 50 -print re ') ($ VSub_DollarName '$INPUT') (/) ($ VSub_DollarName '$FILE') (' 2>&1 > ') ($ VSub_DollarName '$OUTPUT') (/) ($ VSub_DollarName '$REFILE') ) } ) (command.Simple words: [ {($ VSub_DollarName '$REFMT')} {(-heuristics-file)} {($ VSub_DollarName '$INPUT') (/arity.txt)} {(-print-width)} {(50)} {(-print)} {(re)} {($ VSub_DollarName '$INPUT') (/) ($ VSub_DollarName '$FILE')} ] redirects: [ (redir.Redir op: <Redir_GreatAnd '2>&'> fd: 2 arg_word: {(1)} ) (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {($ VSub_DollarName '$OUTPUT') (/) ($ VSub_DollarName '$REFILE')} ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.Pipeline children: [ (command.DBracket expr: (bool_expr.Binary op_id: BoolBinary_eq left: {($ VSub_QMark '$?')} right: {(0)} ) ) ] negated: T ) terminator: <Op_Semi ';'> ) ] action: [ (C {(warning)} {(DQ (' \xe2\x8a\x98 FAILED') (Lit_Other '\\') (n))}) (command.ControlFlow token: <ControlFlow_Return return> arg_word: {(1)} ) ] ) ] ) (command.Assignment pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:FILE) op: Equal rhs: {($ VSub_DollarName '$REFILE')} ) ] ) ] ) ] else_action: [ (C {(debug)} { (DQ (' Formatting: ') ($ VSub_DollarName '$REFMT') (' -print-width 50 -print re ') ($ VSub_DollarName '$INPUT') (/) ($ VSub_DollarName '$FILE') (' 2>&1 > ') ($ VSub_DollarName '$OUTPUT') (/) ($ VSub_DollarName '$FILE') ) } ) (command.Simple words: [ {($ VSub_DollarName '$REFMT')} {(-print-width)} {(50)} {(-print)} {(re)} {($ VSub_DollarName '$INPUT') (/) ($ VSub_DollarName '$FILE')} ] redirects: [ (redir.Redir op:<Redir_GreatAnd '2>&'> fd:2 arg_word:{(1)}) (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {($ VSub_DollarName '$OUTPUT') (/) ($ VSub_DollarName '$FILE')} ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.Pipeline children: [ (command.DBracket expr: (bool_expr.Binary op_id: BoolBinary_eq left: {($ VSub_QMark '$?')} right: {(0)} ) ) ] negated: T ) terminator: <Op_Semi ';'> ) ] action: [ (C {(warning)} {(DQ (' \xe2\x8a\x98 FAILED') (Lit_Other '\\') (n))}) (command.ControlFlow token: <ControlFlow_Return return> arg_word: {(1)} ) ] ) ] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Lit_LBracket '[')} { (DQ (word_part.CommandSub left_token: <Left_DollarParen '$('> command_list: (command.CommandList children: [(C {(basename)} {($ VSub_DollarName '$FILE')})] ) ) ) } {(KW_Bang '!') (Lit_Other '=')} { (DQ (word_part.CommandSub left_token: <Left_DollarParen '$('> command_list: (command.CommandList children: [(C {(basename)} {($ VSub_DollarName '$FILE')} {(.re)})] ) ) ) } {(Lit_RBracket ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (command.Assignment pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:COMPILE_FLAGS) op: Equal rhs: {(DQ ('-intf-suffix .rei -impl'))} ) ] ) ] ) ] else_action: [ (command.Assignment pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:COMPILE_FLAGS) op: Equal rhs: {(DQ (-intf))} ) ] ) ] ) (C {(debug)} { (DQ (' Compiling: ocamlc -c -pp ') ($ VSub_DollarName '$REFMT') (' ') ($ VSub_DollarName '$COMPILE_FLAGS') (' ') ($ VSub_DollarName '$OUTPUT') (/) ($ VSub_DollarName '$FILE') ) } ) (C {(ocamlc)} {(-c)} {(-pp)} {($ VSub_DollarName '$REFMT')} {($ VSub_DollarName '$COMPILE_FLAGS')} {(DQ ($ VSub_DollarName '$OUTPUT') (/) ($ VSub_DollarName '$FILE'))} ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.Pipeline children: [ (command.DBracket expr: (bool_expr.Binary op_id: BoolBinary_eq left: {($ VSub_QMark '$?')} right: {(0)} ) ) ] negated: T ) terminator: <Op_Semi ';'> ) ] action: [ (C {(warning)} {(DQ (' \xe2\x8a\x98 FAILED') (Lit_Other '\\') (n))}) (command.ControlFlow token: <ControlFlow_Return return> arg_word: {(1)} ) ] ) ] ) (C {(success)} {(DQ (' \xe2\x98\x91 PASS'))}) (C {(echo)}) ] ) ) (command.FuncDef name: error_test body: (command.BraceGroup children: [ (command.Assignment pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:FILE) op: Equal rhs: {($ VSub_Number '$1')} ) ] ) (command.Assignment pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:INPUT) op: Equal rhs: {($ VSub_Number '$2')} ) ] ) (command.Assignment pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:OUTPUT) op: Equal rhs: {($ VSub_Number '$3')} ) ] ) (command.Assignment pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:EXPECTED_OUTPUT) op: Equal rhs: {($ VSub_Number '$4')} ) ] ) (C {(info)} {(DQ ('Error Test: ') ($ VSub_DollarName '$FILE'))}) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.AndOr ops: [Op_DPipe] children: [ (C {(Lit_LBracket '[')} { (DQ (word_part.CommandSub left_token: <Left_DollarParen '$('> command_list: (command.CommandList children: [(C {(basename)} {($ VSub_DollarName '$FILE')})] ) ) ) } {(KW_Bang '!') (Lit_Other '=')} { (DQ (word_part.CommandSub left_token: <Left_DollarParen '$('> command_list: (command.CommandList children: [ (C {(basename)} {($ VSub_DollarName '$FILE')} {(.ml)}) ] ) ) ) } {(Lit_RBracket ']')} ) (C {(Lit_LBracket '[')} { (DQ (word_part.CommandSub left_token: <Left_DollarParen '$('> command_list: (command.CommandList children: [(C {(basename)} {($ VSub_DollarName '$FILE')})] ) ) ) } {(KW_Bang '!') (Lit_Other '=')} { (DQ (word_part.CommandSub left_token: <Left_DollarParen '$('> command_list: (command.CommandList children: [ (C {(basename)} {($ VSub_DollarName '$FILE')} {(.mli)}) ] ) ) ) } {(Lit_RBracket ']')} ) ] ) terminator: <Op_Semi ';'> ) ] action: [ (C {(warning)} { (DQ ( ' \xe2\x8a\x98 FAILED: .ml files should not need to be run against error tests. ' ) (Lit_Other '\\') (n) ) } ) (command.ControlFlow token: <ControlFlow_Return return> arg_word: {(1)} ) ] ) ] else_action: [ (C {(debug)} { (DQ (" '") ($ VSub_DollarName '$REFMT') (' -print-width 50 -print re ') ($ VSub_DollarName '$INPUT') (/) ($ VSub_DollarName '$FILE') (' &> ') ($ VSub_DollarName '$OUTPUT') (/) ($ VSub_DollarName '$FILE') ("'") ) } ) (C {(cd)} {($ VSub_DollarName '$INPUT')}) (command.Simple words: [ {($ VSub_DollarName '$REFMT')} {(-print-width)} {(50)} {(-print)} {(re)} { (word_part.CommandSub left_token: <Left_DollarParen '$('> command_list: (command.CommandList children: [(C {(basename)} {($ VSub_DollarName '$FILE')})] ) ) } ] redirects: [ (redir.Redir op: <Redir_AndGreat '&>'> fd: 16777215 arg_word: {($ VSub_DollarName '$OUTPUT') (/) ($ VSub_DollarName '$FILE')} ) ] ) (command.Simple words: [{(cd)} {(-)}] redirects: [(redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(/dev/null)})] ) ] ) (C {(debug)} { (DQ (' Comparing results: diff ') ($ VSub_DollarName '$OUTPUT') (/) ($ VSub_DollarName '$FILE') (' ') ($ VSub_DollarName '$EXPECTED_OUTPUT') (/) ($ VSub_DollarName '$FILE') ) } ) (C {(diff)} {(--unchanged-line-format) (Lit_Other '=') (DQ )} {(--new-line-format) (Lit_Other '=') (DQ (':%dn: %L'))} {(--old-line-format) (Lit_Other '=') (DQ (':%dn: %L'))} {($ VSub_DollarName '$OUTPUT') (/) ($ VSub_DollarName '$FILE')} {($ VSub_DollarName '$EXPECTED_OUTPUT') (/) ($ VSub_DollarName '$FILE')} ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.Pipeline children: [ (command.DBracket expr: (bool_expr.Binary op_id: BoolBinary_eq left: {($ VSub_QMark '$?')} right: {(0)} ) ) ] negated: T ) terminator: <Op_Semi ';'> ) ] action: [ (C {(warning)} {(DQ (' \xe2\x8a\x98 FAILED') (Lit_Other '\\') (n))}) (C {(info)} { (DQ (' ') (${ VSub_Name INFO) ($ VSub_DollarName '$OUTPUT') (/) ($ VSub_DollarName '$FILE') (${ VSub_Name RESET) ) } ) (C {(info)} {(DQ (" doesn't match expected output"))}) (C {(info)} { (DQ (' ') (${ VSub_Name INFO) ($ VSub_DollarName '$EXPECTED_OUTPUT') (/) ($ VSub_DollarName '$FILE') (${ VSub_Name RESET) ) } ) (C {(echo)} {(DQ )}) (command.ControlFlow token: <ControlFlow_Return return> arg_word: {(1)} ) ] ) ] ) (C {(success)} {(DQ (' \xe2\x98\x91 PASS'))}) (C {(echo)}) ] ) ) (command.AndOr ops: [Op_DAmp] children: [ (C {(cd)} {($ VSub_DollarName '$UNIT_TEST_INPUT')}) (command.Pipeline children: [ (C {(find)} {(.)} {(-type)} {(f)} {(word_part.EscapedLiteral token:<Lit_EscapedChar '\\('>)} {(-name)} {(DQ ('*.re*'))} {(-or)} {(-name)} {(DQ ('*.ml*'))} {(word_part.EscapedLiteral token:<Lit_EscapedChar '\\)'>)} ) (command.WhileUntil keyword: <KW_While while> cond: [(command.Sentence child:(C {(read)} {(file)}) terminator:<Op_Semi ';'>)] body: (command.DoGroup children: [ (C {(unit_test)} {($ VSub_DollarName '$file')} {($ VSub_DollarName '$UNIT_TEST_INPUT')} {($ VSub_DollarName '$UNIT_TEST_OUTPUT')} {($ VSub_DollarName '$UNIT_TEST_EXPECTED_OUTPUT')} ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.Pipeline children: [ (command.DBracket expr: (bool_expr.Binary op_id: BoolBinary_eq left: {($ VSub_QMark '$?')} right: {(0)} ) ) ] negated: T ) terminator: <Op_Semi ';'> ) ] action: [ (command.Simple words: [ {(echo)} {(DQ ($ VSub_DollarName '$file') (' -- failed unit_test'))} ] redirects: [ (redir.Redir op: <Redir_DGreat '>>'> fd: 16777215 arg_word: {($ VSub_DollarName '$FAILED_TESTS')} ) ] ) ] ) ] ) (C {(idempotent_test)} {($ VSub_DollarName '$file')} {($ VSub_DollarName '$UNIT_TEST_INPUT')} {($ VSub_DollarName '$UNIT_TEST_OUTPUT')} {($ VSub_DollarName '$UNIT_TEST_EXPECTED_OUTPUT')} ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.Pipeline children: [ (command.DBracket expr: (bool_expr.Binary op_id: BoolBinary_eq left: {($ VSub_QMark '$?')} right: {(0)} ) ) ] negated: T ) terminator: <Op_Semi ';'> ) ] action: [ (command.Simple words: [ {(echo)} {(DQ ($ VSub_DollarName '$file') (' -- failed idempotent_test'))} ] redirects: [ (redir.Redir op: <Redir_DGreat '>>'> fd: 16777215 arg_word: {($ VSub_DollarName '$FAILED_TESTS')} ) ] ) ] ) ] ) ] ) ) ] negated: F ) ] ) (command.AndOr ops: [Op_DAmp] children: [ (C {(cd)} {($ VSub_DollarName '$TYPE_TEST_INPUT')}) (command.Pipeline children: [ (C {(find)} {(.)} {(-type)} {(f)} {(word_part.EscapedLiteral token:<Lit_EscapedChar '\\('>)} {(-name)} {(DQ ('*.re*'))} {(-or)} {(-name)} {(DQ ('*.ml*'))} {(word_part.EscapedLiteral token:<Lit_EscapedChar '\\)'>)} ) (C {(sort)}) (command.WhileUntil keyword: <KW_While while> cond: [(command.Sentence child:(C {(read)} {(file)}) terminator:<Op_Semi ';'>)] body: (command.DoGroup children: [ (C {(typecheck_test)} {($ VSub_DollarName '$file')} {($ VSub_DollarName '$TYPE_TEST_INPUT')} {($ VSub_DollarName '$TYPE_TEST_OUTPUT')} ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.Pipeline children: [ (command.DBracket expr: (bool_expr.Binary op_id: BoolBinary_eq left: {($ VSub_QMark '$?')} right: {(0)} ) ) ] negated: T ) terminator: <Op_Semi ';'> ) ] action: [ (command.Simple words: [ {(echo)} {(DQ ($ VSub_DollarName '$file') (' -- failed typecheck_test'))} ] redirects: [ (redir.Redir op: <Redir_DGreat '>>'> fd: 16777215 arg_word: {($ VSub_DollarName '$FAILED_TESTS')} ) ] ) ] ) ] ) (C {(unit_test)} {($ VSub_DollarName '$file')} {($ VSub_DollarName '$TYPE_TEST_INPUT')} {($ VSub_DollarName '$TYPE_TEST_OUTPUT')} {($ VSub_DollarName '$TYPE_TEST_EXPECTED_OUTPUT')} ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.Pipeline children: [ (command.DBracket expr: (bool_expr.Binary op_id: BoolBinary_eq left: {($ VSub_QMark '$?')} right: {(0)} ) ) ] negated: T ) terminator: <Op_Semi ';'> ) ] action: [ (command.Simple words: [ {(echo)} {(DQ ($ VSub_DollarName '$file') (' -- failed unit_test'))} ] redirects: [ (redir.Redir op: <Redir_DGreat '>>'> fd: 16777215 arg_word: {($ VSub_DollarName '$FAILED_TESTS')} ) ] ) ] ) ] ) (C {(idempotent_test)} {($ VSub_DollarName '$file')} {($ VSub_DollarName '$TYPE_TEST_INPUT')} {($ VSub_DollarName '$TYPE_TEST_OUTPUT')} {($ VSub_DollarName '$TYPE_TEST_EXPECTED_OUTPUT')} ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.Pipeline children: [ (command.DBracket expr: (bool_expr.Binary op_id: BoolBinary_eq left: {($ VSub_QMark '$?')} right: {(0)} ) ) ] negated: T ) terminator: <Op_Semi ';'> ) ] action: [ (command.Simple words: [ {(echo)} {(DQ ($ VSub_DollarName '$file') (' -- failed idempotent_test'))} ] redirects: [ (redir.Redir op: <Redir_DGreat '>>'> fd: 16777215 arg_word: {($ VSub_DollarName '$FAILED_TESTS')} ) ] ) ] ) ] ) ] ) ) ] negated: F ) ] ) (command.AndOr ops: [Op_DAmp] children: [ (C {(cd)} {($ VSub_DollarName '$ERROR_TEST_INPUT')}) (command.Pipeline children: [ (C {(find)} {(.)} {(-type)} {(f)} {(word_part.EscapedLiteral token:<Lit_EscapedChar '\\('>)} {(-name)} {(DQ ('*.re*'))} {(-or)} {(-name)} {(DQ ('*.ml*'))} {(word_part.EscapedLiteral token:<Lit_EscapedChar '\\)'>)} ) (command.WhileUntil keyword: <KW_While while> cond: [(command.Sentence child:(C {(read)} {(file)}) terminator:<Op_Semi ';'>)] body: (command.DoGroup children: [ (C {(error_test)} {($ VSub_DollarName '$file')} {($ VSub_DollarName '$ERROR_TEST_INPUT')} {($ VSub_DollarName '$ERROR_TEST_OUTPUT')} {($ VSub_DollarName '$ERROR_TEST_EXPECTED_OUTPUT')} ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.Pipeline children: [ (command.DBracket expr: (bool_expr.Binary op_id: BoolBinary_eq left: {($ VSub_QMark '$?')} right: {(0)} ) ) ] negated: T ) terminator: <Op_Semi ';'> ) ] action: [ (command.Simple words: [ {(echo)} {(DQ ($ VSub_DollarName '$file') (' -- failed error_test'))} ] redirects: [ (redir.Redir op: <Redir_DGreat '>>'> fd: 16777215 arg_word: {($ VSub_DollarName '$FAILED_TESTS')} ) ] ) ] ) ] ) ] ) ) ] negated: F ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id:BoolUnary_s child:{($ VSub_DollarName '$FAILED_TESTS')}) ) terminator: <Op_Semi ';'> ) ] action: [ (C {(warning)} {(DQ ('Failed tests:'))}) (C {(cat)} {($ VSub_DollarName '$FAILED_TESTS')}) (command.ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)}) ] ) ] ) (command.ControlFlow token:<ControlFlow_Exit exit> arg_word:{(0)}) ] )