(CommandList children: [ (C {(set)} {(-eu)}) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:WARNING) op:Equal rhs:{(SQ <'\\033[0;31m'>)} spids:[12])] spids: [12] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:SUCCESS) op:Equal rhs:{(SQ <'\\033[0;32m'>)} spids:[17])] spids: [17] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:INFO) op:Equal rhs:{(SQ )} spids:[22])] spids: [22] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:DEBUG) op:Equal rhs:{(SQ )} spids:[26])] spids: [26] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:RESET) op:Equal rhs:{(SQ <'\\033[0m'>)} spids:[30])] spids: [30] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:VERBOSE) op: Equal rhs: { (BracedVarSub token: <VSub_Name VERBOSE> suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{}) spids: [36 39] ) } spids: [35] ) ] spids: [35] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:DIR) op: Equal rhs: { (DQ (CommandSubPart command_list: (CommandList children: [ (AndOr children: [ (C {(cd)} { (DQ (CommandSubPart command_list: (CommandList children: [ (C {(dirname)} { (DQ (BracedVarSub token: <VSub_Name BASH_SOURCE> bracket_op: (ArrayIndex expr: (ArithWord w:{(Lit_Digits 0)}) ) spids: [54 59] ) ) } ) ] ) left_token: <Left_CommandSub '$('> spids: [49 62] ) ) } ) (C {(pwd)}) ] op_id: Op_DAmp ) ] ) left_token: <Left_CommandSub '$('> spids: [44 69] ) ) } spids: [42] ) ] spids: [42] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:REFMT) op: Equal rhs: {(DQ ($ VSub_Name '$DIR') (/../refmt_impl.native))} spids: [73] ) ] spids: [73] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr:(BoolUnary op_id:BoolUnary_f child:{(REFMT)})) terminator: <Op_Semi ';'> ) ] action: [ (SimpleCommand words: [{(echo)} {(DQ ('Cannot find refmt at ') ($ VSub_Name '$REFMT'))}] redirects: [(Redir op_id:Redir_GreatAnd fd:1 arg_word:{(2)} spids:[101])] ) (Sentence child:(C {(exit)} {(1)}) terminator:<Op_Semi ';'>) ] spids: [-1 91] ) ] spids: [-1 110] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:UNIT_TEST_INPUT) op: Equal rhs: {($ VSub_Name '$DIR') (/unit_tests/input)} spids: [113] ) ] spids: [113] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:UNIT_TEST_OUTPUT) op: Equal rhs: {($ VSub_Name '$DIR') (/unit_tests/actual_output)} spids: [118] ) ] spids: [118] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:UNIT_TEST_EXPECTED_OUTPUT) op: Equal rhs: {($ VSub_Name '$DIR') (/unit_tests/expected_output)} spids: [123] ) ] spids: [123] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:TYPE_TEST_INPUT) op: Equal rhs: {($ VSub_Name '$DIR') (/typeCheckedTests/input)} spids: [129] ) ] spids: [129] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:TYPE_TEST_OUTPUT) op: Equal rhs: {($ VSub_Name '$DIR') (/typeCheckedTests/actual_output)} spids: [134] ) ] spids: [134] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:TYPE_TEST_EXPECTED_OUTPUT) op: Equal rhs: {($ VSub_Name '$DIR') (/typeCheckedTests/expected_output)} spids: [139] ) ] spids: [139] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:ERROR_TEST_INPUT) op: Equal rhs: {($ VSub_Name '$DIR') (/errorTests/input)} spids: [145] ) ] spids: [145] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:ERROR_TEST_OUTPUT) op: Equal rhs: {($ VSub_Name '$DIR') (/errorTests/actual_output)} spids: [150] ) ] spids: [150] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:ERROR_TEST_EXPECTED_OUTPUT) op: Equal rhs: {($ VSub_Name '$DIR') (/errorTests/expected_output)} spids: [155] ) ] spids: [155] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:FAILED_TESTS) op: Equal rhs: {($ VSub_Name '$DIR') (/failed_tests)} spids: [161] ) ] spids: [161] ) (FuncDef name: info body: (BraceGroup children: [ (C {(printf)} { (DQ (${ VSub_Name INFO) ($ VSub_Number '$1') (${ VSub_Name RESET) (EscapedLiteralPart token:<Lit_EscapedChar '\\n'>) ) } ) ] spids: [172] ) spids: [166 171] ) (FuncDef name: debug body: (BraceGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(KW_Bang '!')} {(-z)} {(DQ ($ VSub_Name '$VERBOSE'))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (C {(printf)} { (DQ (${ VSub_Name DEBUG) ($ VSub_Number '$1') (${ VSub_Name RESET) (EscapedLiteralPart token:<Lit_EscapedChar '\\n'>) ) } ) ] spids: [-1 215] ) ] spids: [-1 232] ) ] spids: [197] ) spids: [191 196] ) (FuncDef name: success body: (BraceGroup children: [ (C {(printf)} { (DQ (${ VSub_Name SUCCESS) ($ VSub_Number '$1') (${ VSub_Name RESET) (EscapedLiteralPart token:<Lit_EscapedChar '\\n'>) ) } ) ] spids: [243] ) spids: [237 242] ) (FuncDef name: output body: (BraceGroup children: [ (C {(printf)} {(DQ ($ VSub_Number '$1') (EscapedLiteralPart token:<Lit_EscapedChar '\\n'>))}) ] spids: [268] ) spids: [262 267] ) (FuncDef name: warning body: (BraceGroup children: [ (C {(printf)} { (DQ (${ VSub_Name WARNING) ($ VSub_Number '$1') (${ VSub_Name RESET) (EscapedLiteralPart token:<Lit_EscapedChar '\\n'>) ) } ) ] spids: [287] ) spids: [281 286] ) (FuncDef name: setup_test_dir body: (BraceGroup children: [ (C {(echo)} {(DQ ("Setting up test dirs actual_output alongside the tests' expected_output"))} ) (C {(mkdir)} {(-p)} {($ VSub_Name '$UNIT_TEST_OUTPUT')} {($ VSub_Name '$TYPE_TEST_OUTPUT')} {($ VSub_Name '$ERROR_TEST_OUTPUT')} ) (C {(touch)} {($ VSub_Name '$FAILED_TESTS')}) ] spids: [312] ) spids: [306 311] ) (C {(setup_test_dir)}) (C {(set)} {(Lit_Other '+') (e)}) (FuncDef name: stdin_test body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:INPUT_FILE) op: Equal rhs: {($ VSub_Number '$1')} spids: [358] ) ] spids: [358] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:OUTPUT_FILE) op: Equal rhs: {($ VSub_Number '$2')} spids: [362] ) ] spids: [362] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:EXPECTED_OUTPUT_FILE) op: Equal rhs: {($ VSub_Number '$3')} spids: [366] ) ] spids: [366] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:HEURISTICS_FILE) op: Equal rhs: {($ VSub_Number '$4')} spids: [374] ) ] spids: [374] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:FILENAME) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [(C {(basename)} {($ VSub_Name '$INPUT_FILE')})] ) left_token: <Left_CommandSub '$('> spids: [380 384] ) } spids: [379] ) ] spids: [379] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:FILEEXT) op: Equal rhs: { (DQ (BracedVarSub token: <VSub_Name FILENAME> suffix_op: (StringUnary op_id:VOp1_DPound arg_word:{('*.')}) spids: [389 393] ) ) } spids: [387] ) ] spids: [387] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobEqual left: {($ VSub_Name '$FILEEXT')} right: {(DQ (re))} ) ) terminator: <Op_Semi ';'> ) ] action: [ (Pipeline children: [ (C {(cat)} {($ VSub_Name '$INPUT_FILE')}) (SimpleCommand words: [ {($ VSub_Name '$REFMT')} {(-is-interface-pp)} {(false)} {(-print-width)} {(50)} {(-parse)} {(re)} {(-print)} {(re)} {(-use-stdin)} {(true)} ] redirects: [ (Redir op_id: Redir_GreatAnd fd: 2 arg_word: {(1)} spids: [444] ) (Redir op_id: Redir_Great fd: -1 arg_word: {($ VSub_Name '$OUTPUT_FILE')} spids: [447] ) ] ) ] negated: False ) ] spids: [-1 413] ) (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobEqual left: {($ VSub_Name '$FILEEXT')} right: {(DQ (rei))} ) ) terminator: <Op_Semi ';'> ) ] action: [ (Pipeline children: [ (C {(cat)} {($ VSub_Name '$INPUT_FILE')}) (SimpleCommand words: [ {($ VSub_Name '$REFMT')} {(-is-interface-pp)} {(true)} {(-print-width)} {(50)} {(-parse)} {(re)} {(-print)} {(re)} {(-use-stdin)} {(true)} ] redirects: [ (Redir op_id: Redir_GreatAnd fd: 2 arg_word: {(1)} spids: [498] ) (Redir op_id: Redir_Great fd: -1 arg_word: {($ VSub_Name '$OUTPUT_FILE')} spids: [501] ) ] ) ] negated: False ) ] spids: [452 467] ) (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobEqual left: {($ VSub_Name '$FILEEXT')} right: {(DQ (ml))} ) ) terminator: <Op_Semi ';'> ) ] action: [ (Pipeline children: [ (C {(cat)} {($ VSub_Name '$INPUT_FILE')}) (SimpleCommand words: [ {($ VSub_Name '$REFMT')} {(-heuristics-file)} {($ VSub_Name '$HEURISTICS_FILE')} {(-is-interface-pp)} {(false)} {(-print-width)} {(50)} {(-parse)} {(ml)} {(-print)} {(re)} {(-use-stdin)} {(true)} ] redirects: [ (Redir op_id: Redir_GreatAnd fd: 2 arg_word: {(1)} spids: [556] ) (Redir op_id: Redir_Great fd: -1 arg_word: {($ VSub_Name '$OUTPUT_FILE')} spids: [559] ) ] ) ] negated: False ) ] spids: [506 521] ) (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_GlobEqual left: {($ VSub_Name '$FILEEXT')} right: {(DQ (mli))} ) ) terminator: <Op_Semi ';'> ) ] action: [ (Pipeline children: [ (C {(cat)} {($ VSub_Name '$INPUT_FILE')}) (SimpleCommand words: [ {($ VSub_Name '$REFMT')} {(-heuristics-file)} {($ VSub_Name '$HEURISTICS_FILE')} {(-is-interface-pp)} {(true)} {(-print-width)} {(50)} {(-parse)} {(ml)} {(-print)} {(re)} {(-use-stdin)} {(true)} ] redirects: [ (Redir op_id: Redir_GreatAnd fd: 2 arg_word: {(1)} spids: [614] ) (Redir op_id: Redir_Great fd: -1 arg_word: {($ VSub_Name '$OUTPUT_FILE')} spids: [617] ) ] ) ] negated: False ) ] spids: [564 579] ) ] else_action: [ (C {(warning)} { (DQ (' \xe2\x8a\x98 FAILED -use-stdin ') (EscapedLiteralPart token:<Lit_EscapedChar '\\n'>) ) } ) (C {(info)} { (DQ (' Cannot determine default implementation parser for extension ') (${ VSub_Name FILEEXT) ) } ) (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) ] spids: [622 648] ) (If arms: [ (if_arm cond: [ (Sentence child: (Pipeline children: [ (DBracket expr: (BoolBinary op_id: BoolBinary_eq left: {($ VSub_QMark '$?')} right: {(0)} ) ) ] negated: True ) terminator: <Op_Semi ';'> ) ] action: [ (C {(warning)} { (DQ (' \xe2\x8a\x98 FAILED -use-stdin ') (EscapedLiteralPart token:<Lit_EscapedChar '\\n'>) ) } ) (C {(info)} {(DQ (' There was an error when testing -use-stdin'))}) (C {(info)} {(DQ (' for input file ') ($ VSub_Name '$INPUT_FILE'))}) (C {(info)} {(DQ (' and output file ') ($ VSub_Name '$OUTPUT_FILE') (${ VSub_Name RESET))} ) (C {(echo)} {(DQ )}) (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) ] spids: [-1 667] ) ] spids: [-1 715] ) (C {(debug)} { (DQ (' Comparing -use-stdin results: diff ') ($ VSub_Name '$OUTPUT_FILE') (' ') ($ VSub_Name '$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_Name '$OUTPUT_FILE')} {($ VSub_Name '$EXPECTED_OUTPUT_FILE')} ) (If arms: [ (if_arm cond: [ (Sentence child: (Pipeline children: [ (DBracket expr: (BoolBinary op_id: BoolBinary_eq left: {($ VSub_QMark '$?')} right: {(0)} ) ) ] negated: True ) terminator: <Op_Semi ';'> ) ] action: [ (C {(warning)} { (DQ (' \xe2\x8a\x98 FAILED -use-stdin ') (EscapedLiteralPart token:<Lit_EscapedChar '\\n'>) ) } ) (C {(info)} { (DQ (' ') (${ VSub_Name INFO) ($ VSub_Name '$OUTPUT_FILE') (${ VSub_Name RESET)) } ) (C {(info)} {(DQ (" doesn't match expected output"))}) (C {(info)} { (DQ (' ') (${ VSub_Name INFO) ($ VSub_Name '$EXPECTED_OUTPUT_FILE') (${ VSub_Name RESET) ) } ) (C {(echo)} {(DQ )}) (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) ] spids: [-1 769] ) ] spids: [-1 826] ) (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)}) ] spids: [355] ) spids: [349 354] ) (FuncDef name: unit_test body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:FILE) op: Equal rhs: {($ VSub_Number '$1')} spids: [845] ) ] spids: [845] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:INPUT) op: Equal rhs: {($ VSub_Number '$2')} spids: [849] ) ] spids: [849] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:OUTPUT) op: Equal rhs: {($ VSub_Number '$3')} spids: [853] ) ] spids: [853] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:EXPECTED_OUTPUT) op: Equal rhs: {($ VSub_Number '$4')} spids: [857] ) ] spids: [857] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:FILENAME) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [(C {(basename)} {($ VSub_Name '$FILE')})] ) left_token: <Left_CommandSub '$('> spids: [863 867] ) } spids: [862] ) ] spids: [862] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:FILEEXT) op: Equal rhs: { (DQ (BracedVarSub token: <VSub_Name FILENAME> suffix_op: (StringUnary op_id:VOp1_DPound arg_word:{('*.')}) spids: [872 876] ) ) } spids: [870] ) ] spids: [870] ) (C {(info)} {(DQ ('Unit Test: ') ($ VSub_Name '$FILE'))}) (If arms: [ (if_arm cond: [ (Sentence child: (AndOr children: [ (C {(Lit_Other '[')} { (DQ (CommandSubPart command_list: (CommandList children: [(C {(basename)} {($ VSub_Name '$FILE')})] ) left_token: <Left_CommandSub '$('> spids: [894 898] ) ) } {(KW_Bang '!') (Lit_Other '=')} { (DQ (CommandSubPart command_list: (CommandList children: [(C {(basename)} {($ VSub_Name '$FILE')} {(.ml)})] ) left_token: <Left_CommandSub '$('> spids: [905 911] ) ) } {(Lit_Other ']')} ) (C {(Lit_Other '[')} { (DQ (CommandSubPart command_list: (CommandList children: [(C {(basename)} {($ VSub_Name '$FILE')})] ) left_token: <Left_CommandSub '$('> spids: [921 925] ) ) } {(KW_Bang '!') (Lit_Other '=')} { (DQ (CommandSubPart command_list: (CommandList children: [(C {(basename)} {($ VSub_Name '$FILE')} {(.mli)})] ) left_token: <Left_CommandSub '$('> spids: [932 938] ) ) } {(Lit_Other ']')} ) ] op_id: Op_DPipe ) terminator: <Op_Semi ';'> ) ] action: [ (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} { (DQ (CommandSubPart command_list: (CommandList children: [(C {(basename)} {($ VSub_Name '$FILE')})] ) left_token: <Left_CommandSub '$('> spids: [952 956] ) ) } {(KW_Bang '!') (Lit_Other '=')} { (DQ (CommandSubPart command_list: (CommandList children: [(C {(basename)} {($ VSub_Name '$FILE')} {(.ml)})] ) left_token: <Left_CommandSub '$('> spids: [963 969] ) ) } {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:REFILE) op: Equal rhs: { (DQ (CommandSubPart command_list: (CommandList children: [ (C {(basename)} {($ VSub_Name '$FILE')} {(.ml)}) ] ) left_token: <Left_CommandSub '$('> spids: [980 986] ) (.re) ) } spids: [978] ) ] spids: [978] ) ] spids: [-1 975] ) ] else_action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:REFILE) op: Equal rhs: { (DQ (CommandSubPart command_list: (CommandList children: [(C {(basename)} {($ VSub_Name '$FILE')} {(.mli)})] ) left_token: <Left_CommandSub '$('> spids: [996 1002] ) (.rei) ) } spids: [994] ) ] spids: [994] ) ] spids: [991 1007] ) (C {(debug)} { (DQ ($ VSub_Name '$REFMT') (' -heuristics-file ') ($ VSub_Name '$INPUT') ('/arity.txt -print-width 50 -print re ') ($ VSub_Name '$INPUT') (/) ($ VSub_Name '$FILE') (' 2>&1 > ') ($ VSub_Name '$OUTPUT') (/) ($ VSub_Name '$REFILE') ) } ) (SimpleCommand words: [ {($ VSub_Name '$REFMT')} {(-heuristics-file)} {($ VSub_Name '$INPUT') (/arity.txt)} {(-print-width)} {(50)} {(-print)} {(re)} {($ VSub_Name '$INPUT') (/) ($ VSub_Name '$FILE')} ] redirects: [ (Redir op_id: Redir_GreatAnd fd: 2 arg_word: {(1)} spids: [1046] ) (Redir op_id: Redir_Great fd: -1 arg_word: {($ VSub_Name '$OUTPUT') (/) ($ VSub_Name '$REFILE')} spids: [1049] ) ] ) (If arms: [ (if_arm cond: [ (Sentence child: (Pipeline children: [ (DBracket expr: (BoolBinary op_id: BoolBinary_eq left: {($ VSub_QMark '$?')} right: {(0)} ) ) ] negated: True ) terminator: <Op_Semi ';'> ) ] action: [ (C {(warning)} { (DQ (' \xe2\x8a\x98 TEST FAILED CONVERTING ML TO RE') (EscapedLiteralPart token: <Lit_EscapedChar '\\n'> ) ) } ) (ControlFlow token: <ControlFlow_Return return> arg_word: {(1)} ) ] spids: [-1 1071] ) ] spids: [-1 1087] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:FILE) op: Equal rhs: {($ VSub_Name '$REFILE')} spids: [1090] ) ] spids: [1090] ) ] spids: [-1 944] ) ] else_action: [ (C {(debug)} { (DQ (" '") ($ VSub_Name '$REFMT') (' -print-width 50 -print re ') ($ VSub_Name '$INPUT') (/) ($ VSub_Name '$FILE') (' 2>&1 > ') ($ VSub_Name '$OUTPUT') (/) ($ VSub_Name '$FILE') ("'") ) } ) (SimpleCommand words: [ {($ VSub_Name '$REFMT')} {(-print-width)} {(50)} {(-print)} {(re)} {($ VSub_Name '$INPUT') (/) ($ VSub_Name '$FILE')} ] redirects: [ (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[1128]) (Redir op_id: Redir_Great fd: -1 arg_word: {($ VSub_Name '$OUTPUT') (/) ($ VSub_Name '$FILE')} spids: [1131] ) ] ) ] spids: [1094 1138] ) (C {(debug)} { (DQ (' Comparing results: diff ') ($ VSub_Name '$OUTPUT') (/) ($ VSub_Name '$FILE') (' ') ($ VSub_Name '$EXPECTED_OUTPUT') (/) ($ VSub_Name '$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_Name '$OUTPUT') (/) ($ VSub_Name '$FILE')} {($ VSub_Name '$EXPECTED_OUTPUT') (/) ($ VSub_Name '$FILE')} ) (If arms: [ (if_arm cond: [ (Sentence child: (Pipeline children: [ (DBracket expr: (BoolBinary op_id: BoolBinary_eq left: {($ VSub_QMark '$?')} right: {(0)} ) ) ] negated: True ) terminator: <Op_Semi ';'> ) ] action: [ (C {(warning)} { (DQ (' \xe2\x8a\x98 FAILED') (EscapedLiteralPart token:<Lit_EscapedChar '\\n'>) ) } ) (C {(info)} { (DQ (' ') (${ VSub_Name INFO) ($ VSub_Name '$OUTPUT') (/) ($ VSub_Name '$FILE') (${ VSub_Name RESET) ) } ) (C {(info)} {(DQ (" doesn't match expected output"))}) (C {(info)} { (DQ (' ') (${ VSub_Name INFO) ($ VSub_Name '$EXPECTED_OUTPUT') (/) ($ VSub_Name '$FILE') (${ VSub_Name RESET) ) } ) (C {(echo)} {(DQ )}) (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) ] spids: [-1 1201] ) ] spids: [-1 1262] ) (C {(debug)} {(DQ ('Testing -use-stdin'))}) (C {(stdin_test)} {($ VSub_Name '$INPUT') (/) ($ VSub_Number '$1')} {($ VSub_Name '$OUTPUT') (/) ($ VSub_Name '$FILE')} {($ VSub_Name '$EXPECTED_OUTPUT') (/) ($ VSub_Name '$FILE')} {($ VSub_Name '$INPUT') (/arity.txt)} ) (If arms: [ (if_arm cond: [ (Sentence child: (Pipeline children: [ (DBracket expr: (BoolBinary op_id: BoolBinary_eq left: {($ VSub_QMark '$?')} right: {(0)} ) ) ] negated: True ) terminator: <Op_Semi ';'> ) ] action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})] spids: [-1 1307] ) ] else_action: [(C {(success)} {(DQ (' \xe2\x98\x91 PASS'))}) (C {(echo)})] spids: [1315 1328] ) ] spids: [842] ) spids: [836 841] ) (FuncDef name: idempotent_test body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:FILE) op: Equal rhs: {($ VSub_Number '$1')} spids: [1342] ) ] spids: [1342] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:INPUT) op: Equal rhs: {($ VSub_Number '$2')} spids: [1346] ) ] spids: [1346] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:OUTPUT) op: Equal rhs: {($ VSub_Number '$3')} spids: [1350] ) ] spids: [1350] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:FILENAME) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [(C {(basename)} {($ VSub_Name '$FILE')})] ) left_token: <Left_CommandSub '$('> spids: [1356 1360] ) } spids: [1355] ) ] spids: [1355] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:FILEEXT) op: Equal rhs: { (DQ (BracedVarSub token: <VSub_Name FILENAME> suffix_op: (StringUnary op_id:VOp1_DPound arg_word:{('*.')}) spids: [1365 1369] ) ) } spids: [1363] ) ] spids: [1363] ) (C {(info)} {(DQ ('Idempotent Test: ') ($ VSub_Name '$FILE'))}) (If arms: [ (if_arm cond: [ (Sentence child: (AndOr children: [ (C {(Lit_Other '[')} { (DQ (CommandSubPart command_list: (CommandList children: [(C {(basename)} {($ VSub_Name '$FILE')})] ) left_token: <Left_CommandSub '$('> spids: [1387 1391] ) ) } {(KW_Bang '!') (Lit_Other '=')} { (DQ (CommandSubPart command_list: (CommandList children: [(C {(basename)} {($ VSub_Name '$FILE')} {(.ml)})] ) left_token: <Left_CommandSub '$('> spids: [1398 1404] ) ) } {(Lit_Other ']')} ) (C {(Lit_Other '[')} { (DQ (CommandSubPart command_list: (CommandList children: [(C {(basename)} {($ VSub_Name '$FILE')})] ) left_token: <Left_CommandSub '$('> spids: [1414 1418] ) ) } {(KW_Bang '!') (Lit_Other '=')} { (DQ (CommandSubPart command_list: (CommandList children: [(C {(basename)} {($ VSub_Name '$FILE')} {(.mli)})] ) left_token: <Left_CommandSub '$('> spids: [1425 1431] ) ) } {(Lit_Other ']')} ) ] op_id: Op_DPipe ) terminator: <Op_Semi ';'> ) ] action: [ (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} { (DQ (CommandSubPart command_list: (CommandList children: [(C {(basename)} {($ VSub_Name '$FILE')})] ) left_token: <Left_CommandSub '$('> spids: [1445 1449] ) ) } {(KW_Bang '!') (Lit_Other '=')} { (DQ (CommandSubPart command_list: (CommandList children: [(C {(basename)} {($ VSub_Name '$FILE')} {(.ml)})] ) left_token: <Left_CommandSub '$('> spids: [1456 1462] ) ) } {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:REFILE) op: Equal rhs: { (DQ (CommandSubPart command_list: (CommandList children: [ (C {(basename)} {($ VSub_Name '$FILE')} {(.ml)}) ] ) left_token: <Left_CommandSub '$('> spids: [1473 1479] ) (.re) ) } spids: [1471] ) ] spids: [1471] ) ] spids: [-1 1468] ) ] else_action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:REFILE) op: Equal rhs: { (DQ (CommandSubPart command_list: (CommandList children: [(C {(basename)} {($ VSub_Name '$FILE')} {(.mli)})] ) left_token: <Left_CommandSub '$('> spids: [1489 1495] ) (.rei) ) } spids: [1487] ) ] spids: [1487] ) ] spids: [1484 1500] ) (C {(debug)} { (DQ (' Converting ') ($ VSub_Name '$FILE') (' to ') ($ VSub_Name '$REFILE') (':') ) } ) (C {(debug)} { (DQ (' Formatting Once: ') ($ VSub_Name '$REFMT') (' -heuristics-file ') ($ VSub_Name '$INPUT') ('/arity.txt -print-width 50 -print re ') ($ VSub_Name '$INPUT') (/) ($ VSub_Name '$FILE') (' 2>&1 > ') ($ VSub_Name '$OUTPUT') (/) ($ VSub_Name '$REFILE') ) } ) (SimpleCommand words: [ {($ VSub_Name '$REFMT')} {(-heuristics-file)} {($ VSub_Name '$INPUT') (/arity.txt)} {(-print-width)} {(50)} {(-print)} {(re)} {($ VSub_Name '$INPUT') (/) ($ VSub_Name '$FILE')} ] redirects: [ (Redir op_id: Redir_GreatAnd fd: 2 arg_word: {(1)} spids: [1552] ) (Redir op_id: Redir_Great fd: -1 arg_word: {($ VSub_Name '$OUTPUT') (/) ($ VSub_Name '$REFILE')} spids: [1555] ) ] ) (If arms: [ (if_arm cond: [ (Sentence child: (Pipeline children: [ (DBracket expr: (BoolBinary op_id: BoolBinary_eq left: {($ VSub_QMark '$?')} right: {(0)} ) ) ] negated: True ) terminator: <Op_Semi ';'> ) ] action: [ (C {(warning)} { (DQ ('\xe2\x8a\x98 FAILED') (EscapedLiteralPart token: <Lit_EscapedChar '\\n'> ) ) } ) (ControlFlow token: <ControlFlow_Return return> arg_word: {(1)} ) ] spids: [-1 1577] ) ] spids: [-1 1593] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:FILE) op: Equal rhs: {($ VSub_Name '$REFILE')} spids: [1596] ) ] spids: [1596] ) (C {(debug)} { (DQ (' Generating output again: ') ($ VSub_Name '$REFMT') (' -print-width 50 -print re ') ($ VSub_Name '$OUTPUT') (/) ($ VSub_Name '$FILE') (' 2>&1 > ') ($ VSub_Name '$OUTPUT') (/) ($ VSub_Name '$FILE') (.formatted) ) } ) (SimpleCommand words: [ {($ VSub_Name '$REFMT')} {(-print-width)} {(50)} {(-print)} {(re)} {($ VSub_Name '$OUTPUT') (/) ($ VSub_Name '$FILE')} ] redirects: [ (Redir op_id: Redir_GreatAnd fd: 2 arg_word: {(1)} spids: [1631] ) (Redir op_id: Redir_Great fd: -1 arg_word: {($ VSub_Name '$OUTPUT') (/) ($ VSub_Name '$FILE') (.formatted)} spids: [1634] ) ] ) ] spids: [-1 1437] ) ] else_action: [ (C {(debug)} { (DQ (" Formatting Once: '") ($ VSub_Name '$REFMT') (' -print-width 50 -print re ') ($ VSub_Name '$INPUT') (/) ($ VSub_Name '$FILE') (' 2>&1 > ') ($ VSub_Name '$OUTPUT') (/) ($ VSub_Name '$FILE') ("'") ) } ) (SimpleCommand words: [ {($ VSub_Name '$REFMT')} {(-print-width)} {(50)} {(-print)} {(re)} {($ VSub_Name '$INPUT') (/) ($ VSub_Name '$FILE')} ] redirects: [ (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[1676]) (Redir op_id: Redir_Great fd: -1 arg_word: {($ VSub_Name '$OUTPUT') (/) ($ VSub_Name '$FILE')} spids: [1679] ) ] ) (C {(debug)} { (DQ (' Generating output again: ') ($ VSub_Name '$REFMT') (' -print-width 50 -print re ') ($ VSub_Name '$OUTPUT') (/) ($ VSub_Name '$FILE') (' 2>&1 > ') ($ VSub_Name '$OUTPUT') (/) ($ VSub_Name '$FILE') (.formatted) ) } ) (SimpleCommand words: [ {($ VSub_Name '$REFMT')} {(-print-width)} {(50)} {(-print)} {(re)} {($ VSub_Name '$OUTPUT') (/) ($ VSub_Name '$FILE')} ] redirects: [ (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[1718]) (Redir op_id: Redir_Great fd: -1 arg_word: {($ VSub_Name '$OUTPUT') (/) ($ VSub_Name '$FILE') (.formatted)} spids: [1721] ) ] ) ] spids: [1642 1729] ) (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_Name '$OUTPUT') (/) ($ VSub_Name '$FILE')} {($ VSub_Name '$OUTPUT') (/) ($ VSub_Name '$FILE') (.formatted)} ) (If arms: [ (if_arm cond: [ (Sentence child: (Pipeline children: [ (DBracket expr: (BoolBinary op_id: BoolBinary_eq left: {($ VSub_QMark '$?')} right: {(0)} ) ) ] negated: True ) terminator: <Op_Semi ';'> ) ] action: [ (C {(warning)} { (DQ ('\xe2\x8a\x98 FAILED') (EscapedLiteralPart token:<Lit_EscapedChar '\\n'>)) } ) (C {(info)} { (DQ (' ') (${ VSub_Name INFO) ($ VSub_Name '$OUTPUT') (/) ($ VSub_Name '$FILE') (.formatted) (${ VSub_Name RESET) (EscapedLiteralPart token:<Lit_EscapedChar '\\n'>) ) } ) (C {(info)} {(DQ (' is not same as'))}) (C {(info)} { (DQ (' ') (${ VSub_Name INFO) ($ VSub_Name '$OUTPUT') (/) ($ VSub_Name '$FILE') (${ VSub_Name RESET) ) } ) (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) ] spids: [-1 1777] ) ] spids: [-1 1834] ) (C {(debug)} {(DQ ('Testing -use-stdin'))}) (C {(stdin_test)} {($ VSub_Name '$INPUT') (/) ($ VSub_Number '$1')} {($ VSub_Name '$OUTPUT') (/) ($ VSub_Name '$FILE')} {($ VSub_Name '$OUTPUT') (/) ($ VSub_Name '$FILE')} {($ VSub_Name '$INPUT') (/arity.txt)} ) (If arms: [ (if_arm cond: [ (Sentence child: (Pipeline children: [ (DBracket expr: (BoolBinary op_id: BoolBinary_eq left: {($ VSub_QMark '$?')} right: {(0)} ) ) ] negated: True ) terminator: <Op_Semi ';'> ) ] action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})] spids: [-1 1879] ) ] else_action: [ (C {(stdin_test)} {($ VSub_Name '$OUTPUT') (/) ($ VSub_Name '$FILE')} {($ VSub_Name '$OUTPUT') (/) ($ VSub_Name '$FILE') (.formatted)} {($ VSub_Name '$OUTPUT') (/) ($ VSub_Name '$FILE')} {($ VSub_Name '$INPUT') (/arity.txt)} ) (If arms: [ (if_arm cond: [ (Sentence child: (Pipeline children: [ (DBracket expr: (BoolBinary op_id: BoolBinary_eq left: {($ VSub_QMark '$?')} right: {(0)} ) ) ] negated: True ) terminator: <Op_Semi ';'> ) ] action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})] spids: [-1 1924] ) ] else_action: [(C {(success)} {(DQ (' \xe2\x98\x91 PASS'))}) (C {(echo)})] spids: [1932 1945] ) ] spids: [1887 1948] ) ] spids: [1339] ) spids: [1333 1338] ) (FuncDef name: typecheck_test body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:FILE) op: Equal rhs: {($ VSub_Number '$1')} spids: [1962] ) ] spids: [1962] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:INPUT) op: Equal rhs: {($ VSub_Number '$2')} spids: [1966] ) ] spids: [1966] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:OUTPUT) op: Equal rhs: {($ VSub_Number '$3')} spids: [1970] ) ] spids: [1970] ) (C {(info)} {(DQ ('Typecheck Test: ') ($ VSub_Name '$FILE'))}) (If arms: [ (if_arm cond: [ (Sentence child: (AndOr children: [ (C {(Lit_Other '[')} { (DQ (CommandSubPart command_list: (CommandList children: [(C {(basename)} {($ VSub_Name '$FILE')})] ) left_token: <Left_CommandSub '$('> spids: [1988 1992] ) ) } {(KW_Bang '!') (Lit_Other '=')} { (DQ (CommandSubPart command_list: (CommandList children: [(C {(basename)} {($ VSub_Name '$FILE')} {(.ml)})] ) left_token: <Left_CommandSub '$('> spids: [1999 2005] ) ) } {(Lit_Other ']')} ) (C {(Lit_Other '[')} { (DQ (CommandSubPart command_list: (CommandList children: [(C {(basename)} {($ VSub_Name '$FILE')})] ) left_token: <Left_CommandSub '$('> spids: [2015 2019] ) ) } {(KW_Bang '!') (Lit_Other '=')} { (DQ (CommandSubPart command_list: (CommandList children: [(C {(basename)} {($ VSub_Name '$FILE')} {(.mli)})] ) left_token: <Left_CommandSub '$('> spids: [2026 2032] ) ) } {(Lit_Other ']')} ) ] op_id: Op_DPipe ) terminator: <Op_Semi ';'> ) ] action: [ (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} { (DQ (CommandSubPart command_list: (CommandList children: [(C {(basename)} {($ VSub_Name '$FILE')})] ) left_token: <Left_CommandSub '$('> spids: [2046 2050] ) ) } {(KW_Bang '!') (Lit_Other '=')} { (DQ (CommandSubPart command_list: (CommandList children: [(C {(basename)} {($ VSub_Name '$FILE')} {(.ml)})] ) left_token: <Left_CommandSub '$('> spids: [2057 2063] ) ) } {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:REFILE) op: Equal rhs: { (DQ (CommandSubPart command_list: (CommandList children: [ (C {(basename)} {($ VSub_Name '$FILE')} {(.ml)}) ] ) left_token: <Left_CommandSub '$('> spids: [2074 2080] ) (.re) ) } spids: [2072] ) ] spids: [2072] ) ] spids: [-1 2069] ) ] else_action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:REFILE) op: Equal rhs: { (DQ (CommandSubPart command_list: (CommandList children: [(C {(basename)} {($ VSub_Name '$FILE')} {(.mli)})] ) left_token: <Left_CommandSub '$('> spids: [2090 2096] ) (.rei) ) } spids: [2088] ) ] spids: [2088] ) ] spids: [2085 2101] ) (C {(debug)} { (DQ (' Converting ') ($ VSub_Name '$FILE') (' to ') ($ VSub_Name '$REFILE') (':') ) } ) (C {(debug)} { (DQ ($ VSub_Name '$REFMT') (' -heuristics-file ') ($ VSub_Name '$INPUT') ('/arity.txt -print-width 50 -print re ') ($ VSub_Name '$INPUT') (/) ($ VSub_Name '$FILE') (' 2>&1 > ') ($ VSub_Name '$OUTPUT') (/) ($ VSub_Name '$REFILE') ) } ) (SimpleCommand words: [ {($ VSub_Name '$REFMT')} {(-heuristics-file)} {($ VSub_Name '$INPUT') (/arity.txt)} {(-print-width)} {(50)} {(-print)} {(re)} {($ VSub_Name '$INPUT') (/) ($ VSub_Name '$FILE')} ] redirects: [ (Redir op_id: Redir_GreatAnd fd: 2 arg_word: {(1)} spids: [2151] ) (Redir op_id: Redir_Great fd: -1 arg_word: {($ VSub_Name '$OUTPUT') (/) ($ VSub_Name '$REFILE')} spids: [2154] ) ] ) (If arms: [ (if_arm cond: [ (Sentence child: (Pipeline children: [ (DBracket expr: (BoolBinary op_id: BoolBinary_eq left: {($ VSub_QMark '$?')} right: {(0)} ) ) ] negated: True ) terminator: <Op_Semi ';'> ) ] action: [ (C {(warning)} { (DQ (' \xe2\x8a\x98 FAILED') (EscapedLiteralPart token: <Lit_EscapedChar '\\n'> ) ) } ) (ControlFlow token: <ControlFlow_Return return> arg_word: {(1)} ) ] spids: [-1 2176] ) ] spids: [-1 2192] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:FILE) op: Equal rhs: {($ VSub_Name '$REFILE')} spids: [2195] ) ] spids: [2195] ) ] spids: [-1 2038] ) ] else_action: [ (C {(debug)} { (DQ (' Formatting: ') ($ VSub_Name '$REFMT') (' -print-width 50 -print re ') ($ VSub_Name '$INPUT') (/) ($ VSub_Name '$FILE') (' 2>&1 > ') ($ VSub_Name '$OUTPUT') (/) ($ VSub_Name '$FILE') ) } ) (SimpleCommand words: [ {($ VSub_Name '$REFMT')} {(-print-width)} {(50)} {(-print)} {(re)} {($ VSub_Name '$INPUT') (/) ($ VSub_Name '$FILE')} ] redirects: [ (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[2232]) (Redir op_id: Redir_Great fd: -1 arg_word: {($ VSub_Name '$OUTPUT') (/) ($ VSub_Name '$FILE')} spids: [2235] ) ] ) (If arms: [ (if_arm cond: [ (Sentence child: (Pipeline children: [ (DBracket expr: (BoolBinary op_id: BoolBinary_eq left: {($ VSub_QMark '$?')} right: {(0)} ) ) ] negated: True ) terminator: <Op_Semi ';'> ) ] action: [ (C {(warning)} { (DQ (' \xe2\x8a\x98 FAILED') (EscapedLiteralPart token: <Lit_EscapedChar '\\n'> ) ) } ) (ControlFlow token: <ControlFlow_Return return> arg_word: {(1)} ) ] spids: [-1 2257] ) ] spids: [-1 2273] ) ] spids: [2199 2276] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} { (DQ (CommandSubPart command_list: (CommandList children: [(C {(basename)} {($ VSub_Name '$FILE')})] ) left_token: <Left_CommandSub '$('> spids: [2284 2288] ) ) } {(KW_Bang '!') (Lit_Other '=')} { (DQ (CommandSubPart command_list: (CommandList children: [(C {(basename)} {($ VSub_Name '$FILE')} {(.re)})] ) left_token: <Left_CommandSub '$('> spids: [2295 2301] ) ) } {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:COMPILE_FLAGS) op: Equal rhs: {(DQ ('-intf-suffix .rei -impl'))} spids: [2310] ) ] spids: [2310] ) ] spids: [-1 2307] ) ] else_action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:COMPILE_FLAGS) op: Equal rhs: {(DQ (-intf))} spids: [2319] ) ] spids: [2319] ) ] spids: [2316 2325] ) (C {(debug)} { (DQ (' Compiling: ocamlc -c -pp ') ($ VSub_Name '$REFMT') (' ') ($ VSub_Name '$COMPILE_FLAGS') (' ') ($ VSub_Name '$OUTPUT') (/) ($ VSub_Name '$FILE') ) } ) (C {(ocamlc)} {(-c)} {(-pp)} {($ VSub_Name '$REFMT')} {($ VSub_Name '$COMPILE_FLAGS')} {(DQ ($ VSub_Name '$OUTPUT') (/) ($ VSub_Name '$FILE'))} ) (If arms: [ (if_arm cond: [ (Sentence child: (Pipeline children: [ (DBracket expr: (BoolBinary op_id: BoolBinary_eq left: {($ VSub_QMark '$?')} right: {(0)} ) ) ] negated: True ) terminator: <Op_Semi ';'> ) ] action: [ (C {(warning)} { (DQ (' \xe2\x8a\x98 FAILED') (EscapedLiteralPart token:<Lit_EscapedChar '\\n'>) ) } ) (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) ] spids: [-1 2375] ) ] spids: [-1 2391] ) (C {(success)} {(DQ (' \xe2\x98\x91 PASS'))}) (C {(echo)}) ] spids: [1959] ) spids: [1953 1958] ) (FuncDef name: error_test body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:FILE) op: Equal rhs: {($ VSub_Number '$1')} spids: [2416] ) ] spids: [2416] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:INPUT) op: Equal rhs: {($ VSub_Number '$2')} spids: [2420] ) ] spids: [2420] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:OUTPUT) op: Equal rhs: {($ VSub_Number '$3')} spids: [2424] ) ] spids: [2424] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:EXPECTED_OUTPUT) op: Equal rhs: {($ VSub_Number '$4')} spids: [2428] ) ] spids: [2428] ) (C {(info)} {(DQ ('Error Test: ') ($ VSub_Name '$FILE'))}) (If arms: [ (if_arm cond: [ (Sentence child: (AndOr children: [ (C {(Lit_Other '[')} { (DQ (CommandSubPart command_list: (CommandList children: [(C {(basename)} {($ VSub_Name '$FILE')})] ) left_token: <Left_CommandSub '$('> spids: [2446 2450] ) ) } {(KW_Bang '!') (Lit_Other '=')} { (DQ (CommandSubPart command_list: (CommandList children: [(C {(basename)} {($ VSub_Name '$FILE')} {(.ml)})] ) left_token: <Left_CommandSub '$('> spids: [2457 2463] ) ) } {(Lit_Other ']')} ) (C {(Lit_Other '[')} { (DQ (CommandSubPart command_list: (CommandList children: [(C {(basename)} {($ VSub_Name '$FILE')})] ) left_token: <Left_CommandSub '$('> spids: [2473 2477] ) ) } {(KW_Bang '!') (Lit_Other '=')} { (DQ (CommandSubPart command_list: (CommandList children: [(C {(basename)} {($ VSub_Name '$FILE')} {(.mli)})] ) left_token: <Left_CommandSub '$('> spids: [2484 2490] ) ) } {(Lit_Other ']')} ) ] op_id: Op_DPipe ) terminator: <Op_Semi ';'> ) ] action: [ (C {(warning)} { (DQ ( ' \xe2\x8a\x98 FAILED: .ml files should not need to be run against error tests. ' ) (EscapedLiteralPart token:<Lit_EscapedChar '\\n'>) ) } ) (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) ] spids: [-1 2496] ) ] else_action: [ (C {(debug)} { (DQ (" '") ($ VSub_Name '$REFMT') (' -print-width 50 -print re ') ($ VSub_Name '$INPUT') (/) ($ VSub_Name '$FILE') (' &> ') ($ VSub_Name '$OUTPUT') (/) ($ VSub_Name '$FILE') ("'") ) } ) (C {(cd)} {($ VSub_Name '$INPUT')}) (Sentence child: (C {($ VSub_Name '$REFMT')} {(-print-width)} {(50)} {(-print)} {(re)} { (CommandSubPart command_list: (CommandList children: [(C {(basename)} {($ VSub_Name '$FILE')})] ) left_token: <Left_CommandSub '$('> spids: [2551 2555] ) } ) terminator: <Op_Amp '&'> ) (SimpleCommand redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {($ VSub_Name '$OUTPUT') (/) ($ VSub_Name '$FILE')} spids: [2558] ) ] ) (SimpleCommand words: [{(cd)} {(-)}] redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(/dev/null)} spids:[2569])] ) ] spids: [2512 2574] ) (C {(debug)} { (DQ (' Comparing results: diff ') ($ VSub_Name '$OUTPUT') (/) ($ VSub_Name '$FILE') (' ') ($ VSub_Name '$EXPECTED_OUTPUT') (/) ($ VSub_Name '$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_Name '$OUTPUT') (/) ($ VSub_Name '$FILE')} {($ VSub_Name '$EXPECTED_OUTPUT') (/) ($ VSub_Name '$FILE')} ) (If arms: [ (if_arm cond: [ (Sentence child: (Pipeline children: [ (DBracket expr: (BoolBinary op_id: BoolBinary_eq left: {($ VSub_QMark '$?')} right: {(0)} ) ) ] negated: True ) terminator: <Op_Semi ';'> ) ] action: [ (C {(warning)} { (DQ (' \xe2\x8a\x98 FAILED') (EscapedLiteralPart token:<Lit_EscapedChar '\\n'>) ) } ) (C {(info)} { (DQ (' ') (${ VSub_Name INFO) ($ VSub_Name '$OUTPUT') (/) ($ VSub_Name '$FILE') (${ VSub_Name RESET) ) } ) (C {(info)} {(DQ (" doesn't match expected output"))}) (C {(info)} { (DQ (' ') (${ VSub_Name INFO) ($ VSub_Name '$EXPECTED_OUTPUT') (/) ($ VSub_Name '$FILE') (${ VSub_Name RESET) ) } ) (C {(echo)} {(DQ )}) (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) ] spids: [-1 2637] ) ] spids: [-1 2698] ) (C {(success)} {(DQ (' \xe2\x98\x91 PASS'))}) (C {(echo)}) ] spids: [2413] ) spids: [2407 2412] ) (AndOr children: [ (C {(cd)} {($ VSub_Name '$UNIT_TEST_INPUT')}) (Pipeline children: [ (C {(find)} {(.)} {(-type)} {(f)} {(EscapedLiteralPart token:<Lit_EscapedChar '\\('>)} {(-name)} {(DQ ('*.re*'))} {(-or)} {(-name)} {(DQ ('*.ml*'))} {(EscapedLiteralPart token:<Lit_EscapedChar '\\)'>)} ) (While cond: [(Sentence child:(C {(read)} {(file)}) terminator:<Op_Semi ';'>)] body: (DoGroup children: [ (C {(unit_test)} {($ VSub_Name '$file')} {($ VSub_Name '$UNIT_TEST_INPUT')} {($ VSub_Name '$UNIT_TEST_OUTPUT')} {($ VSub_Name '$UNIT_TEST_EXPECTED_OUTPUT')} ) (If arms: [ (if_arm cond: [ (Sentence child: (Pipeline children: [ (DBracket expr: (BoolBinary op_id: BoolBinary_eq left: {($ VSub_QMark '$?')} right: {(0)} ) ) ] negated: True ) terminator: <Op_Semi ';'> ) ] action: [ (SimpleCommand words: [{(echo)} {(DQ ($ VSub_Name '$file') (' -- failed unit_test'))}] redirects: [ (Redir op_id: Redir_DGreat fd: -1 arg_word: {($ VSub_Name '$FAILED_TESTS')} spids: [2794] ) ] ) ] spids: [-1 2784] ) ] spids: [-1 2799] ) (C {(idempotent_test)} {($ VSub_Name '$file')} {($ VSub_Name '$UNIT_TEST_INPUT')} {($ VSub_Name '$UNIT_TEST_OUTPUT')} {($ VSub_Name '$UNIT_TEST_EXPECTED_OUTPUT')} ) (If arms: [ (if_arm cond: [ (Sentence child: (Pipeline children: [ (DBracket expr: (BoolBinary op_id: BoolBinary_eq left: {($ VSub_QMark '$?')} right: {(0)} ) ) ] negated: True ) terminator: <Op_Semi ';'> ) ] action: [ (SimpleCommand words: [ {(echo)} {(DQ ($ VSub_Name '$file') (' -- failed idempotent_test'))} ] redirects: [ (Redir op_id: Redir_DGreat fd: -1 arg_word: {($ VSub_Name '$FAILED_TESTS')} spids: [2839] ) ] ) ] spids: [-1 2829] ) ] spids: [-1 2844] ) ] spids: [2755 2846] ) ) ] negated: False ) ] op_id: Op_DAmp ) (AndOr children: [ (C {(cd)} {($ VSub_Name '$TYPE_TEST_INPUT')}) (Pipeline children: [ (C {(find)} {(.)} {(-type)} {(f)} {(EscapedLiteralPart token:<Lit_EscapedChar '\\('>)} {(-name)} {(DQ ('*.re*'))} {(-or)} {(-name)} {(DQ ('*.ml*'))} {(EscapedLiteralPart token:<Lit_EscapedChar '\\)'>)} ) (C {(sort)}) (While cond: [(Sentence child:(C {(read)} {(file)}) terminator:<Op_Semi ';'>)] body: (DoGroup children: [ (C {(typecheck_test)} {($ VSub_Name '$file')} {($ VSub_Name '$TYPE_TEST_INPUT')} {($ VSub_Name '$TYPE_TEST_OUTPUT')} ) (If arms: [ (if_arm cond: [ (Sentence child: (Pipeline children: [ (DBracket expr: (BoolBinary op_id: BoolBinary_eq left: {($ VSub_QMark '$?')} right: {(0)} ) ) ] negated: True ) terminator: <Op_Semi ';'> ) ] action: [ (SimpleCommand words: [ {(echo)} {(DQ ($ VSub_Name '$file') (' -- failed typecheck_test'))} ] redirects: [ (Redir op_id: Redir_DGreat fd: -1 arg_word: {($ VSub_Name '$FAILED_TESTS')} spids: [2931] ) ] ) ] spids: [-1 2921] ) ] spids: [-1 2936] ) (C {(unit_test)} {($ VSub_Name '$file')} {($ VSub_Name '$TYPE_TEST_INPUT')} {($ VSub_Name '$TYPE_TEST_OUTPUT')} {($ VSub_Name '$TYPE_TEST_EXPECTED_OUTPUT')} ) (If arms: [ (if_arm cond: [ (Sentence child: (Pipeline children: [ (DBracket expr: (BoolBinary op_id: BoolBinary_eq left: {($ VSub_QMark '$?')} right: {(0)} ) ) ] negated: True ) terminator: <Op_Semi ';'> ) ] action: [ (SimpleCommand words: [{(echo)} {(DQ ($ VSub_Name '$file') (' -- failed unit_test'))}] redirects: [ (Redir op_id: Redir_DGreat fd: -1 arg_word: {($ VSub_Name '$FAILED_TESTS')} spids: [2975] ) ] ) ] spids: [-1 2965] ) ] spids: [-1 2980] ) (C {(idempotent_test)} {($ VSub_Name '$file')} {($ VSub_Name '$TYPE_TEST_INPUT')} {($ VSub_Name '$TYPE_TEST_OUTPUT')} {($ VSub_Name '$TYPE_TEST_EXPECTED_OUTPUT')} ) (If arms: [ (if_arm cond: [ (Sentence child: (Pipeline children: [ (DBracket expr: (BoolBinary op_id: BoolBinary_eq left: {($ VSub_QMark '$?')} right: {(0)} ) ) ] negated: True ) terminator: <Op_Semi ';'> ) ] action: [ (SimpleCommand words: [ {(echo)} {(DQ ($ VSub_Name '$file') (' -- failed idempotent_test'))} ] redirects: [ (Redir op_id: Redir_DGreat fd: -1 arg_word: {($ VSub_Name '$FAILED_TESTS')} spids: [3019] ) ] ) ] spids: [-1 3009] ) ] spids: [-1 3024] ) ] spids: [2894 3026] ) ) ] negated: False ) ] op_id: Op_DAmp ) (AndOr children: [ (C {(cd)} {($ VSub_Name '$ERROR_TEST_INPUT')}) (Pipeline children: [ (C {(find)} {(.)} {(-type)} {(f)} {(EscapedLiteralPart token:<Lit_EscapedChar '\\('>)} {(-name)} {(DQ ('*.re*'))} {(-or)} {(-name)} {(DQ ('*.ml*'))} {(EscapedLiteralPart token:<Lit_EscapedChar '\\)'>)} ) (While cond: [(Sentence child:(C {(read)} {(file)}) terminator:<Op_Semi ';'>)] body: (DoGroup children: [ (C {(error_test)} {($ VSub_Name '$file')} {($ VSub_Name '$ERROR_TEST_INPUT')} {($ VSub_Name '$ERROR_TEST_OUTPUT')} {($ VSub_Name '$ERROR_TEST_EXPECTED_OUTPUT')} ) (If arms: [ (if_arm cond: [ (Sentence child: (Pipeline children: [ (DBracket expr: (BoolBinary op_id: BoolBinary_eq left: {($ VSub_QMark '$?')} right: {(0)} ) ) ] negated: True ) terminator: <Op_Semi ';'> ) ] action: [ (SimpleCommand words: [{(echo)} {(DQ ($ VSub_Name '$file') (' -- failed error_test'))}] redirects: [ (Redir op_id: Redir_DGreat fd: -1 arg_word: {($ VSub_Name '$FAILED_TESTS')} spids: [3109] ) ] ) ] spids: [-1 3099] ) ] spids: [-1 3114] ) ] spids: [3070 3116] ) ) ] negated: False ) ] op_id: Op_DAmp ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr:(BoolUnary op_id:BoolUnary_s child:{($ VSub_Name '$FAILED_TESTS')})) terminator: <Op_Semi ';'> ) ] action: [ (C {(warning)} {(DQ ('Failed tests:'))}) (C {(cat)} {($ VSub_Name '$FAILED_TESTS')}) (C {(exit)} {(1)}) ] spids: [-1 3130] ) ] spids: [-1 3149] ) (C {(exit)} {(0)}) ] )