(List (= scope= flags=0 words=[] bindings=[('DIR', {[ComSub (AndOr OP_AND_IF (Com {[LIT_CHARS cd]} {[DQ [ComSub (Com {[LIT_CHARS dirname]} {[DQ [VarSub BASH_SOURCE bracket_op=(Index {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 0]}})]]})]]}) (Com {[LIT_CHARS pwd]}) )]})]) (= scope= flags=0 words=[] bindings=[('JAVAC', {[VarSub 1]})]) (Com {[LIT_CHARS shift]}) (= scope= flags=0 words=[] bindings=[('JAVA', {[VarSub 1]})]) (Com {[LIT_CHARS shift]}) (= scope= flags=0 words=[] bindings=[('JAR', {[VarSub 1]})]) (Com {[LIT_CHARS shift]}) (= scope= flags=0 words=[] bindings=[('JAVAP', {[VarSub 1]})]) (Com {[LIT_CHARS shift]}) (= scope= flags=0 words=[] bindings=[('IJAR', {[VarSub 1]})]) (Com {[LIT_CHARS shift]}) (= scope= flags=0 words=[] bindings=[('LANGTOOLS8', {[VarSub 1]})]) (Com {[LIT_CHARS shift]}) (= scope= flags=0 words=[] bindings=[('UNZIP', {[VarSub 1]})]) (Com {[LIT_CHARS shift]}) (= scope= flags=0 words=[] bindings=[('ZIP', {[VarSub 1]})]) (Com {[LIT_CHARS shift]}) (= scope= flags=0 words=[] bindings=[('ZIP_COUNT', {[VarSub 1]})]) (Com {[LIT_CHARS shift]}) (AndOr OP_OR_IF (Com {[LIT_CHARS source]} {[VarSub DIR] [LIT_CHARS /testenv.sh]}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "testenv.sh not found!"]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) (FunctionDef cleanup [] (Com {[LIT_CHARS rm]} {[LIT_CHARS -fr]} {[DQ [VarSub TEST_TMPDIR]] [LIT_CHARS /] [LIT_OTHER "*"]}) ) (Com {[LIT_CHARS trap]} {[LIT_CHARS cleanup]} {[LIT_CHARS EXIT]}) (AndOr OP_OR_IF (DBracket {B2 BINARY_STRING_TILDE_EQUAL {[DQ [VarSub JAVAC]]} {[LIT_OTHER "^"] [LIT_CHARS "("] [LIT_CHARS /] [LIT_CHARS "|"] [LIT_OTHER "["] [LIT_OTHER "^"] [LIT_CHARS /] [LIT_OTHER "]"] [LIT_OTHER "+"] [LIT_OTHER "$"] [LIT_CHARS ")"]}}) (= scope= flags=0 words=[] bindings=[('JAVAC', {[DQ [VarSub PWD][LIT_CHARS /][VarSub JAVAC]]})]) ) (AndOr OP_OR_IF (DBracket {B2 BINARY_STRING_TILDE_EQUAL {[DQ [VarSub JAR]]} {[LIT_OTHER "^"] [LIT_CHARS "("] [LIT_CHARS /] [LIT_CHARS "|"] [LIT_OTHER "["] [LIT_OTHER "^"] [LIT_CHARS /] [LIT_OTHER "]"] [LIT_OTHER "+"] [LIT_OTHER "$"] [LIT_CHARS ")"]}}) (= scope= flags=0 words=[] bindings=[('JAR', {[DQ [VarSub PWD][LIT_CHARS /][VarSub JAR]]})]) ) (AndOr OP_OR_IF (DBracket {B2 BINARY_STRING_TILDE_EQUAL {[DQ [VarSub IJAR]]} {[LIT_OTHER "^"] [LIT_CHARS "("] [LIT_CHARS /] [LIT_CHARS "|"] [LIT_OTHER "["] [LIT_OTHER "^"] [LIT_CHARS /] [LIT_OTHER "]"] [LIT_OTHER "+"] [LIT_OTHER "$"] [LIT_CHARS ")"]}}) (= scope= flags=0 words=[] bindings=[('IJAR', {[DQ [VarSub PWD][LIT_CHARS /][VarSub IJAR]]})]) ) (AndOr OP_OR_IF (DBracket {B2 BINARY_STRING_TILDE_EQUAL {[DQ [VarSub UNZIP]]} {[LIT_OTHER "^"] [LIT_CHARS "("] [LIT_CHARS /] [LIT_CHARS "|"] [LIT_OTHER "["] [LIT_OTHER "^"] [LIT_CHARS /] [LIT_OTHER "]"] [LIT_OTHER "+"] [LIT_OTHER "$"] [LIT_CHARS ")"]}}) (= scope= flags=0 words=[] bindings=[('UNZIP', {[DQ [VarSub PWD][LIT_CHARS /][VarSub UNZIP]]})]) ) (AndOr OP_OR_IF (DBracket {B2 BINARY_STRING_TILDE_EQUAL {[DQ [VarSub ZIP]]} {[LIT_OTHER "^"] [LIT_CHARS "("] [LIT_CHARS /] [LIT_CHARS "|"] [LIT_OTHER "["] [LIT_OTHER "^"] [LIT_CHARS /] [LIT_OTHER "]"] [LIT_OTHER "+"] [LIT_OTHER "$"] [LIT_CHARS ")"]}}) (= scope= flags=0 words=[] bindings=[('ZIP', {[DQ [VarSub PWD][LIT_CHARS /][VarSub ZIP]]})]) ) (AndOr OP_OR_IF (DBracket {B2 BINARY_STRING_TILDE_EQUAL {[DQ [VarSub JAVAP]]} {[LIT_OTHER "^"] [LIT_CHARS "("] [LIT_CHARS /] [LIT_CHARS "|"] [LIT_OTHER "["] [LIT_OTHER "^"] [LIT_CHARS /] [LIT_OTHER "]"] [LIT_OTHER "+"] [LIT_OTHER "$"] [LIT_CHARS ")"]}}) (= scope= flags=0 words=[] bindings=[('JAVAP', {[DQ [VarSub PWD][LIT_CHARS /][VarSub JAVAP]]})]) ) (AndOr OP_OR_IF (DBracket {B2 BINARY_STRING_TILDE_EQUAL {[DQ [VarSub ZIP_COUNT]]} {[LIT_OTHER "^"] [LIT_CHARS "("] [LIT_CHARS /] [LIT_CHARS "|"] [LIT_OTHER "["] [LIT_OTHER "^"] [LIT_CHARS /] [LIT_OTHER "]"] [LIT_OTHER "+"] [LIT_OTHER "$"] [LIT_CHARS ")"]}}) (= scope= flags=0 words=[] bindings=[('ZIP_COUNT', {[DQ [VarSub PWD][LIT_CHARS /][VarSub ZIP_COUNT]]})]) ) (= scope= flags=0 words=[] bindings=[('IJAR_SRCDIR', {[ComSub (Com {[LIT_CHARS dirname]} {[VarSub IJAR]})]})]) (= scope= flags=0 words=[] bindings=[('A_JAR', {[VarSub TEST_TMPDIR] [LIT_CHARS /A.jar]})]) (= scope= flags=0 words=[] bindings=[('A_INTERFACE_JAR', {[VarSub TEST_TMPDIR] [LIT_CHARS /A-interface.jar]})]) (= scope= flags=0 words=[] bindings=[('A_ZIP_JAR', {[VarSub TEST_TMPDIR] [LIT_CHARS /A_zip.jar]})]) (= scope= flags=0 words=[] bindings=[('A_ZIP_INTERFACE_JAR', {[VarSub TEST_TMPDIR] [LIT_CHARS /A_zip-interface.jar]})]) (= scope= flags=0 words=[] bindings=[('W_JAR', {[VarSub TEST_TMPDIR] [LIT_CHARS /W.jar]})]) (= scope= flags=0 words=[] bindings=[('BOTTLES_JAR', {[VarSub TEST_TMPDIR] [LIT_CHARS /bottles.jar]})]) (= scope= flags=0 words=[] bindings=[('JAR_WRONG_CENTRAL_DIR', {[VarSub IJAR_SRCDIR] [LIT_CHARS /test/libwrongcentraldir.jar]})]) (= scope= flags=0 words=[] bindings=[('IJAR_WRONG_CENTRAL_DIR', {[VarSub TEST_TMPDIR] [LIT_CHARS /wrongcentraldir_interface.jar]})]) (= scope= flags=0 words=[] bindings=[('OBJECT_JAVA', {[VarSub IJAR_SRCDIR] [LIT_CHARS /test/Object.java]})]) (= scope= flags=0 words=[] bindings=[('OBJECT_JAR', {[VarSub TEST_TMPDIR] [LIT_CHARS /object.jar]})]) (= scope= flags=0 words=[] bindings=[('OBJECT_IJAR', {[VarSub TEST_TMPDIR] [LIT_CHARS /object_interface.jar]})]) (= scope= flags=0 words=[] bindings=[('TYPEANN2_JAR', {[VarSub IJAR_SRCDIR] [LIT_CHARS /test/libtypeannotations2.jar]})]) (= scope= flags=0 words=[] bindings=[('TYPEANN2_IJAR', {[VarSub TEST_TMPDIR] [LIT_CHARS /typeannotations2_interface.jar]})]) (= scope= flags=0 words=[] bindings=[('TYPEANN2_JAVA', {[VarSub IJAR_SRCDIR] [LIT_CHARS /test/TypeAnnotationTest2.java]})]) (= scope= flags=0 words=[] bindings=[('INVOKEDYNAMIC_JAR', {[VarSub IJAR_SRCDIR] [LIT_CHARS /test/libinvokedynamic.jar]})]) (= scope= flags=0 words=[] bindings=[('INVOKEDYNAMIC_IJAR', {[VarSub TEST_TMPDIR] [LIT_CHARS /invokedynamic_interface.jar]})]) (= scope= flags=0 words=[] bindings=[('METHODPARAM_JAR', {[VarSub IJAR_SRCDIR] [LIT_CHARS /test/libmethodparameters.jar]})]) (= scope= flags=0 words=[] bindings=[('METHODPARAM_IJAR', {[VarSub TEST_TMPDIR] [LIT_CHARS /methodparameters_interface.jar]})]) (= scope= flags=0 words=[] bindings=[('SOURCEDEBUGEXT_JAR', {[VarSub IJAR_SRCDIR] [LIT_CHARS /test/source_debug_extension.jar]})]) (= scope= flags=0 words=[] bindings=[('SOURCEDEBUGEXT_IJAR', {[VarSub TEST_TMPDIR] [LIT_CHARS /source_debug_extension.jar]})]) (= scope= flags=0 words=[] bindings=[('CENTRAL_DIR_LARGEST_REGULAR', {[VarSub IJAR_SRCDIR] [LIT_CHARS /test/largest_regular.jar]})]) (= scope= flags=0 words=[] bindings=[('CENTRAL_DIR_SMALLEST_ZIP64', {[VarSub IJAR_SRCDIR] [LIT_CHARS /test/smallest_zip64.jar]})]) (= scope= flags=0 words=[] bindings=[('CENTRAL_DIR_ZIP64', {[VarSub IJAR_SRCDIR] [LIT_CHARS /test/definitely_zip64.jar]})]) (FunctionDef set_file_length [] (AndOr OP_AND_IF (Com {[LIT_CHARS perl]} {[LIT_CHARS -e]} {[SQ >$ARGV[0]\") && truncate(FH, $ARGV[1]) or fail $!">]} {[DQ [VarSub @]]}) (AndOr OP_OR_IF (DBracket {B2 BINARY_STRING_EQUAL {[DQ [ComSub (Com {[LIT_CHARS statfmt]} {[VarSub 1]})]]} {[DQ [VarSub 2]]}}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "set_file_length failed"]]}) ) ) ) (= scope= flags=0 words=[] bindings=[('expected_output', {[DQ ]})]) (FunctionDef check_consistent_file_contents [] (List (= scope= flags=0 words=[] bindings=[('actual', {[DQ [ComSub (Pipeline (Com {[LIT_CHARS cat]} {[VarSub 1]}) (Com {[VarSub MD5SUM]}) (Com {[LIT_CHARS awk]} {[SQ ]}) )]]})]) (= scope= flags=0 words=[] bindings=[('filename', {[DQ [ComSub (Pipeline (Com {[LIT_CHARS echo]} {[VarSub 1]}) (Com {[VarSub MD5SUM]}) (Com {[LIT_CHARS awk]} {[SQ ]}) )]]})]) (= scope= flags=0 words=[] bindings=[('expected', {[DQ [VarSub actual]]})]) (If (Subshell (Pipeline (Com {[LIT_CHARS echo]} {[DQ [VarSub expected_output]]}) (Com {[LIT_CHARS grep]} {[LIT_CHARS -q]} {[DQ [LIT_CHARS "^"][VarSub filename][LIT_CHARS " "]]}) ) ) (AndOr OP_OR_IF (Pipeline (Com {[LIT_CHARS echo]} {[DQ [VarSub expected_output]]}) (Com {[LIT_CHARS grep]} {[LIT_CHARS -q]} {[DQ [LIT_CHARS "^"][VarSub filename][LIT_CHARS " "][VarSub actual][LIT_OTHER "$"]]}) ) (List (Com {[LIT_CHARS ls]} {[LIT_CHARS -l]} {[DQ [VarSub 1]]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "output file contents differ"]]}) ) ) (ElseTrue) (= scope= flags=0 words=[] bindings=[('expected_output', {[DQ [VarSub expected_output][VarSub filename][LIT_CHARS " "][VarSub actual][LIT_CHARS "\n"]]})]) ) ) ) (FunctionDef set_up [] (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[VarSub TEST_TMPDIR] [LIT_CHARS /classes]}) ) (FunctionDef tear_down [] (Com {[LIT_CHARS rm]} {[LIT_CHARS -fr]} {[VarSub TEST_TMPDIR] [LIT_CHARS /classes]}) ) (FunctionDef test_output_bigger_than_input [] (List (AndOr OP_OR_IF (Com {[VarSub JAVAC]} {[LIT_CHARS -g]} {[LIT_CHARS -d]} {[VarSub TEST_TMPDIR] [LIT_CHARS /classes]} {[VarSub IJAR_SRCDIR] [LIT_CHARS /test/WellCompressed] [LIT_OTHER "*"] [LIT_CHARS .java]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "javac failed"]]}) ) (AndOr OP_OR_IF (Com {[VarSub JAR]} {[LIT_CHARS cf]} {[VarSub W_JAR]} {[LIT_CHARS -C]} {[VarSub TEST_TMPDIR] [LIT_CHARS /classes]} {[LIT_CHARS .]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "jar failed"]]}) ) (= scope= flags=0 words=[] bindings=[('W_INTERFACE_JAR', {[VarSub TEST_TMPDIR] [LIT_CHARS /W-interface.jar]})]) (AndOr OP_OR_IF (Com {[VarSub IJAR]} {[VarSub W_JAR]} {[VarSub W_INTERFACE_JAR]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "ijar failed"]]}) ) (= scope= flags=0 words=[] bindings=[('W_JAR_SIZE', {[ComSub (Com {[LIT_CHARS statfmt]} {[VarSub W_JAR]})]})]) (= scope= flags=0 words=[] bindings=[('W_INTERFACE_JAR_SIZE', {[ComSub (Com {[LIT_CHARS statfmt]} {[VarSub W_INTERFACE_JAR]})]})]) (AndOr OP_OR_IF (DBracket {B2 BINARY_INT_GT {[VarSub W_INTERFACE_JAR_SIZE]} {[VarSub W_JAR_SIZE]}}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "interface jar should be bigger"]]}) ) ) ) (FunctionDef test_class_more_64k [] (List (= scope= flags=0 words=[] bindings=[('BOTTLES_JAVA', {[VarSub TEST_TMPDIR] [LIT_CHARS /BottlesOnTheWall.java]})]) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "public class BottlesOnTheWall {"]]} < (FilenameRedirectNode filename={[VarSub BOTTLES_JAVA]} "> 1), > ) (For i [{[ComSub (Com {[LIT_CHARS seq]} {[LIT_CHARS 1]} {[LIT_CHARS 16384]})]}]) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS " public int getBottleOnTheWall"][VarSub i][LIT_CHARS "() { return "][VarSub i][LIT_CHARS "; }"]]} < (FilenameRedirectNode filename={[VarSub BOTTLES_JAVA]} >"> 1), > ) ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "}"]]} < (FilenameRedirectNode filename={[VarSub BOTTLES_JAVA]} >"> 1), > ) (AndOr OP_OR_IF (Com {[VarSub JAVAC]} {[LIT_CHARS -g]} {[LIT_CHARS -d]} {[VarSub TEST_TMPDIR] [LIT_CHARS /classes]} {[VarSub BOTTLES_JAVA]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "javac failed"]]}) ) (= scope= flags=0 words=[] bindings=[('BOTTLES_INTERFACE_JAR', {[VarSub TEST_TMPDIR] [LIT_CHARS /bottles-interface.jar]})]) (For flag0 [{[SQ ]}, {[SQ ]}]) (List (AndOr OP_OR_IF (Com {[VarSub JAR]} {[LIT_CHARS c] [DQ [VarSub flag0]] [LIT_CHARS f]} {[VarSub BOTTLES_JAR]} {[LIT_CHARS -C]} {[VarSub TEST_TMPDIR] [LIT_CHARS /classes]} {[LIT_CHARS .]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "jar failed"]]}) ) (AndOr OP_OR_IF (Com {[VarSub IJAR]} {[VarSub BOTTLES_JAR]} {[VarSub BOTTLES_INTERFACE_JAR]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "ijar failed"]]}) ) (Com {[LIT_CHARS check_consistent_file_contents]} {[VarSub BOTTLES_INTERFACE_JAR]}) ) ) (= scope= flags=0 words=[] bindings=[('BOTTLES_INTERFACE_INTERFACE_JAR', {[VarSub TEST_TMPDIR] [LIT_CHARS /bottles-interface-interface.jar]})]) (AndOr OP_OR_IF (Com {[VarSub IJAR]} {[VarSub BOTTLES_INTERFACE_JAR]} {[VarSub BOTTLES_INTERFACE_INTERFACE_JAR]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "ijar cannot produce class files with body longer than 64K"]]}) ) ) ) (FunctionDef test_ijar_output [] (List (AndOr OP_OR_IF (Com {[VarSub JAVAC]} {[LIT_CHARS -g]} {[LIT_CHARS -d]} {[VarSub TEST_TMPDIR] [LIT_CHARS /classes]} {[VarSub IJAR_SRCDIR] [LIT_CHARS /test/A.java]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "javac failed"]]}) ) (AndOr OP_OR_IF (Com {[VarSub JAR]} {[LIT_CHARS cf]} {[VarSub A_JAR]} {[LIT_CHARS -C]} {[VarSub TEST_TMPDIR] [LIT_CHARS /classes]} {[LIT_CHARS .]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "jar failed"]]}) ) (AndOr OP_OR_IF (Com {[VarSub IJAR]} {[VarSub A_JAR]} {[VarSub A_INTERFACE_JAR]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "ijar failed."]]}) ) (= scope= flags=0 words=[] bindings=[('expected', {[LIT_CHARS 5]})]) (= scope= flags=0 words=[] bindings=[('lines', {[ComSub (Pipeline (Com {[VarSub JAR]} {[LIT_CHARS tvf]} {[VarSub A_INTERFACE_JAR]}) (Com {[LIT_CHARS wc]} {[LIT_CHARS -l]}) )]})]) (Com {[LIT_CHARS check_eq]} {[VarSub expected]} {[VarSub lines]} {[DQ [LIT_CHARS "Interface jar should have "][VarSub expected][LIT_CHARS " entries!"]]}) (= scope= flags=0 words=[] bindings=[('lines', {[ComSub (Pipeline (Com {[VarSub JAVAP]} {[LIT_CHARS -private]} {[LIT_CHARS -classpath]} {[VarSub A_JAR]} {[LIT_CHARS A]}) (Com {[LIT_CHARS grep]} {[LIT_CHARS priv]}) (Com {[LIT_CHARS wc]} {[LIT_CHARS -l]}) )]})]) (Com {[LIT_CHARS check_eq]} {[LIT_CHARS 2]} {[VarSub lines]} {[DQ [LIT_CHARS "Input jar should have 2 private members!"]]}) (= scope= flags=0 words=[] bindings=[('lines', {[ComSub (Pipeline (Com {[VarSub JAVAP]} {[LIT_CHARS -private]} {[LIT_CHARS -classpath]} {[VarSub A_INTERFACE_JAR]} {[LIT_CHARS A]}) (Com {[LIT_CHARS grep]} {[LIT_CHARS priv]}) (Com {[LIT_CHARS wc]} {[LIT_CHARS -l]}) )]})]) (Com {[LIT_CHARS check_eq]} {[LIT_CHARS 0]} {[VarSub lines]} {[DQ [LIT_CHARS "Interface jar should have no private members!"]]}) (= scope= flags=0 words=[] bindings=[('lines', {[ComSub (Pipeline (Com {[VarSub JAVAP]} {[LIT_CHARS -private]} {[LIT_CHARS -classpath]} {[VarSub A_INTERFACE_JAR]} {[LIT_CHARS A]}) (Com {[LIT_CHARS grep]} {[LIT_CHARS clinit]}) (Com {[LIT_CHARS wc]} {[LIT_CHARS -l]}) )]})]) (Com {[LIT_CHARS check_eq]} {[LIT_CHARS 0]} {[VarSub lines]} {[DQ [LIT_CHARS "Interface jar should have no class initializers!"]]}) (= scope= flags=0 words=[] bindings=[('lines', {[ComSub (Pipeline (Com {[VarSub JAVAP]} {[LIT_CHARS -c]} {[LIT_CHARS -private]} {[LIT_CHARS -classpath]} {[VarSub A_JAR]} {[LIT_CHARS A]}) (Com {[LIT_CHARS grep]} {[LIT_CHARS Code] [LIT_OTHER ":"]}) (Com {[LIT_CHARS wc]} {[LIT_CHARS -l]}) )]})]) (Com {[LIT_CHARS check_eq]} {[LIT_CHARS 5]} {[VarSub lines]} {[DQ [LIT_CHARS "Input jar should have 5 method bodies!"]]}) (= scope= flags=0 words=[] bindings=[('lines', {[ComSub (Pipeline (Com {[VarSub JAVAP]} {[LIT_CHARS -c]} {[LIT_CHARS -private]} {[LIT_CHARS -classpath]} {[VarSub A_INTERFACE_JAR]} {[LIT_CHARS A]}) (Com {[LIT_CHARS grep]} {[LIT_CHARS Code] [LIT_OTHER ":"]}) (Com {[LIT_CHARS wc]} {[LIT_CHARS -l]}) )]})]) (Com {[LIT_CHARS check_eq]} {[LIT_CHARS 0]} {[VarSub lines]} {[DQ [LIT_CHARS "Interface jar should have no method bodies!"]]}) (AndOr OP_OR_IF (Pipeline (Com {[VarSub JAVAP]} {[LIT_CHARS -c]} {[LIT_CHARS -private]} {[LIT_CHARS -classpath]} {[VarSub A_JAR]} {[LIT_CHARS A]}) (Com {[LIT_CHARS grep]} {[LIT_CHARS -sq]} {[LIT_CHARS foofoofoofoo]}) ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Input jar should have code constants!"]]}) ) (AndOr OP_AND_IF (Pipeline (Com {[VarSub JAVAP]} {[LIT_CHARS -c]} {[LIT_CHARS -private]} {[LIT_CHARS -classpath]} {[VarSub A_INTERFACE_JAR]} {[LIT_CHARS A]}) (Com {[LIT_CHARS grep]} {[LIT_CHARS -sq]} {[LIT_CHARS foofoofoofoo]}) ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Interface jar should have no code constants!"]]}) ) (AndOr OP_OR_IF (Com {[VarSub JAVAC]} {[LIT_CHARS -Xlint]} {[LIT_CHARS -classpath]} {[VarSub A_INTERFACE_JAR]} {[LIT_CHARS -g]} {[LIT_CHARS -d]} {[VarSub TEST_TMPDIR] [LIT_CHARS /classes]} {[VarSub IJAR_SRCDIR] [LIT_CHARS /test/B.java]} < (FilenameRedirectNode filename={[VarSub TEST_log]} "> 2), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "Can't compile B!"]]}) ) (Com {[LIT_CHARS expect_log]} {[SQ ]} {[DQ [LIT_CHARS "ijar has lost @Deprecated annotation!"]]}) (AndOr OP_OR_IF (Com {[VarSub JAVA]} {[LIT_CHARS -classpath]} {[VarSub TEST_TMPDIR] [LIT_CHARS /classes]} {[LIT_CHARS B]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) (= scope= flags=0 words=[] bindings=[('A_INTERFACE_INTERFACE_JAR', {[VarSub TEST_TMPDIR] [LIT_CHARS /A-interface-interface.jar]})]) (AndOr OP_OR_IF (Com {[VarSub IJAR]} {[VarSub A_INTERFACE_JAR]} {[VarSub A_INTERFACE_INTERFACE_JAR]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "ijar failed."]]}) ) (AndOr OP_OR_IF (Com {[LIT_CHARS cmp]} {[VarSub A_INTERFACE_JAR]} {[VarSub A_INTERFACE_INTERFACE_JAR]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "ijar transformation is not idempotent"]]}) ) (Com {[LIT_CHARS check_eq]} {[LIT_CHARS 0]} {[ComSub (Pipeline (Com {[VarSub JAR]} {[LIT_CHARS tf]} {[VarSub A_INTERFACE_JAR]}) (Com {[LIT_CHARS grep]} {[LIT_CHARS -v]} {[\ LIT_ESCAPED_CHAR "\\\\"] [LIT_CHARS .class] [LIT_OTHER "$"]}) (Com {[LIT_CHARS wc]} {[LIT_CHARS -l]}) )]} {[DQ [LIT_CHARS "Interface jar should contain only .class files!"]]}) (Com {[LIT_CHARS check_eq]} {[LIT_CHARS 0]} {[ComSub (Pipeline (Com more_env=[('TZ', {[LIT_CHARS UTC]})] {[VarSub JAR]} {[LIT_CHARS tvf]} {[VarSub A_INTERFACE_JAR]}) (Com {[LIT_CHARS grep]} {[LIT_CHARS -v]} {[SQ ]}) (Com {[LIT_CHARS wc]} {[LIT_CHARS -l]}) )]} {[DQ [LIT_CHARS "Interface jar contained non-zero timestamps!"]]}) (AndOr OP_OR_IF (Pipeline (Com {[VarSub JAVAP]} {[LIT_CHARS -classpath]} {[VarSub TEST_TMPDIR] [LIT_CHARS /classes]} {[LIT_CHARS -c]} {[LIT_CHARS B]}) (Com {[LIT_CHARS grep]} {[LIT_CHARS -sq]} {[LIT_CHARS ldc2_w.] [LIT_OTHER "*"] [LIT_CHARS 123]}) ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "ConstantValue not propagated to class B!"]]}) ) (Com {[LIT_CHARS rm]} {[LIT_CHARS -fr]} {[VarSub TEST_TMPDIR] [LIT_CHARS /classes]}) (AndOr OP_OR_IF (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[VarSub TEST_TMPDIR] [LIT_CHARS /classes]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "mkdir "][VarSub TEST_TMPDIR][LIT_CHARS "/classes failed"]]}) ) (AndOr OP_OR_IF (Com {[VarSub JAVAC]} {[LIT_CHARS -g]} {[LIT_CHARS -d]} {[VarSub TEST_TMPDIR] [LIT_CHARS /classes]} {[VarSub IJAR_SRCDIR] [LIT_CHARS /test/A.java]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "javac failed"]]}) ) (AndOr OP_OR_IF (Com {[VarSub JAR]} {[LIT_CHARS cf]} {[VarSub A_JAR]} {[VarSub TEST_TMPDIR] [LIT_CHARS /classes/A.class]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "jar failed"]]}) ) (AndOr OP_OR_IF (Com {[VarSub ZIP]} {[VarSub A_ZIP_JAR]} {[VarSub TEST_TMPDIR] [LIT_CHARS /classes/A.class]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "zip failed"]]}) ) (AndOr OP_OR_IF (Com {[VarSub IJAR]} {[VarSub A_JAR]} {[VarSub A_INTERFACE_JAR]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "ijar failed"]]}) ) (AndOr OP_OR_IF (Com {[VarSub IJAR]} {[VarSub A_ZIP_JAR]} {[VarSub A_ZIP_INTERFACE_JAR]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "ijar failed"]]}) ) (AndOr OP_OR_IF (Com {[LIT_CHARS cmp]} {[VarSub A_INTERFACE_JAR]} {[VarSub A_ZIP_INTERFACE_JAR]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "ijars from jar and zip are different"]]}) ) ) ) (FunctionDef do_test_large_file [] (List (AndOr OP_OR_IF (Com {[VarSub JAVAC]} {[LIT_CHARS -g]} {[LIT_CHARS -d]} {[VarSub TEST_TMPDIR] [LIT_CHARS /classes]} {[VarSub IJAR_SRCDIR] [LIT_CHARS /test/A.java]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "javac failed"]]}) ) (For flag0 [{[SQ ]}, {[SQ ]}]) (List (AndOr OP_OR_IF (Com {[VarSub JAR]} {[LIT_CHARS c] [DQ [VarSub flag0]] [LIT_CHARS f]} {[VarSub A_JAR]} {[LIT_CHARS -C]} {[VarSub TEST_TMPDIR] [LIT_CHARS /classes]} {[LIT_CHARS .]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "jar failed"]]}) ) (AndOr OP_OR_IF (Com {[VarSub IJAR]} {[VarSub A_JAR]} {[VarSub A_INTERFACE_JAR]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "ijar failed."]]}) ) (Com {[LIT_CHARS check_consistent_file_contents]} {[VarSub A_INTERFACE_JAR]}) ) ) (= scope= flags=0 words=[] bindings=[('extra_args', {[DQ ]})]) (If (DBracket {B1 UNARY_STRING_n {[DQ [VarSub 1 test_op=VS_TEST_HYPHEN {}]]}}) (For file [{[ComSub (Com {[LIT_CHARS find]} {[VarSub TEST_TMPDIR] [LIT_CHARS /classes]} {[LIT_CHARS -name]} {[SQ ]})]}]) (Com {[LIT_CHARS set_file_length]} {[DQ [VarSub file]]} {[DQ [VarSub 1]]}) ) ) (If (DBracket {B1 UNARY_STRING_n {[DQ [VarSub 2 test_op=VS_TEST_HYPHEN {}]]}}) (List (Com {[LIT_CHARS set_file_length]} {[VarSub TEST_TMPDIR] [LIT_CHARS /zeroes.data]} {[DQ [VarSub 2]]}) (= scope= flags=0 words=[] bindings=[('extra_args', {[DQ [LIT_CHARS "-C "][VarSub TEST_TMPDIR][LIT_CHARS " zeroes.data"]]})]) ) ) (For flag0 [{[SQ ]}, {[SQ ]}]) (List (AndOr OP_OR_IF (Com {[VarSub JAR]} {[LIT_CHARS c] [DQ [VarSub flag0]] [LIT_CHARS f]} {[VarSub A_JAR]} {[VarSub extra_args]} {[LIT_CHARS -C]} {[VarSub TEST_TMPDIR] [LIT_CHARS /classes]} {[LIT_CHARS .]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "jar failed"]]}) ) (AndOr OP_OR_IF (Com {[VarSub IJAR]} {[VarSub A_JAR]} {[VarSub A_INTERFACE_JAR]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "ijar failed."]]}) ) (Com {[LIT_CHARS check_consistent_file_contents]} {[VarSub A_INTERFACE_JAR]}) ) ) ) ) (FunctionDef test_large_files [] (For size [{[ArithSub {A2 AS_OP_STAR {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1024]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1024]}}}]}, {[ArithSub {A2 AS_OP_STAR {A2 AS_OP_STAR {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 15]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1024]}}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1024]}}}]}]) (Com {[LIT_CHARS do_test_large_file]} {[VarSub size]}) ) ) (FunctionDef test_z_2gb_plus_data_file [] (Com {[LIT_CHARS do_test_large_file]} {[SQ ]} {[ArithSub {A2 AS_OP_STAR {A2 AS_OP_STAR {A2 AS_OP_STAR {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 22]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 102]}}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1024]}}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1024]}}}]}) ) (FunctionDef test_upper_bound_up_2gb [] (List (= scope= flags=0 words=[] bindings=[('DIR', {[VarSub TEST_TMPDIR] [LIT_CHARS /ManyLargeClasses]})]) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[VarSub DIR] [LIT_CHARS /classes]}) (For i [{[ComSub (Com {[LIT_CHARS seq]} {[LIT_CHARS 200]})]}]) (Com {[LIT_CHARS printf]} {[DQ [LIT_CHARS "class C"][VarSub i][LIT_CHARS " {}"][\ LIT_ESCAPED_CHAR "\\n"]]} < (FilenameRedirectNode filename={[VarSub DIR] [LIT_CHARS /C] [VarSub i] [LIT_CHARS .java]} "> 1), > ) ) (Subshell (AndOr OP_AND_IF (Com {[LIT_CHARS cd]} {[VarSub DIR]}) (Com {[VarSub JAVAC]} {[LIT_CHARS -d]} {[LIT_CHARS classes]} {[LIT_OTHER "*"] [LIT_CHARS .java]}) ) ) (For i [{[ComSub (Com {[LIT_CHARS seq]} {[LIT_CHARS 200]})]}]) (Com {[LIT_CHARS set_file_length]} {[VarSub DIR] [LIT_CHARS /classes/C] [VarSub i] [LIT_CHARS .class]} {[ArithSub {A2 AS_OP_STAR {A2 AS_OP_STAR {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 15]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1024]}}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1024]}}}]}) ) (AndOr OP_OR_IF (Com {[VarSub JAR]} {[LIT_CHARS cf]} {[VarSub DIR] [LIT_CHARS /ManyLargeClasses.jar]} {[LIT_CHARS -C]} {[VarSub DIR] [LIT_CHARS /classes]} {[LIT_CHARS .]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "jar failed"]]}) ) (AndOr OP_OR_IF (Com {[VarSub IJAR]} {[VarSub DIR] [LIT_CHARS /ManyLargeClasses.jar]} {[VarSub DIR] [LIT_CHARS /ManyLargeClasses.ijar]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "ijar failed."]]}) ) ) ) (FunctionDef test_empty_jar [] (List (Com < (FilenameRedirectNode filename={[VarSub TEST_TMPDIR] [LIT_CHARS /empty]} "> 1), > ) (Com {[VarSub ZIP]} {[VarSub TEST_TMPDIR] [LIT_CHARS /noclasses.jar]} {[VarSub TEST_TMPDIR] [LIT_CHARS /empty]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), (DescriptorRedirectNode target={[LIT_CHARS 1]} &"> 2), > ) (AndOr OP_OR_IF (Com {[VarSub IJAR]} {[VarSub TEST_TMPDIR] [LIT_CHARS /noclasses.jar]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "ijar failed"]]}) ) (AndOr OP_OR_IF (Pipeline (Com {[VarSub UNZIP]} {[LIT_CHARS -qql]} {[VarSub TEST_TMPDIR] [LIT_CHARS /noclasses-interface.jar]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2), > ) (Com {[LIT_CHARS grep]} {[LIT_CHARS -q]} {[LIT_CHARS .]}) ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "noclasses-interface.jar is completely empty!"]]}) ) (AndOr OP_OR_IF (Com {[VarSub JAVAC]} {[LIT_CHARS -classpath]} {[VarSub TEST_TMPDIR] [LIT_CHARS /noclasses-interface.jar]} {[LIT_CHARS -d]} {[VarSub TEST_TMPDIR] [LIT_CHARS /classes]} {[VarSub IJAR_SRCDIR] [LIT_CHARS /test/A.java]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "javac noclasses-interface.jar failed"]]}) ) (Com {[LIT_CHARS rm]} {[VarSub TEST_TMPDIR] [LIT_CHARS /] [LIT_LBRACE "{"] [LIT_CHARS empty] [LIT_COMMA ","] [LIT_CHARS noclasses.jar] [LIT_COMMA ","] [LIT_CHARS noclasses-interface.jar] [LIT_RBRACE "}"]}) ) ) (FunctionDef test_wrong_centraldir [] (List (AndOr OP_OR_IF (Com {[VarSub IJAR]} {[VarSub JAR_WRONG_CENTRAL_DIR]} {[VarSub IJAR_WRONG_CENTRAL_DIR]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "ijar failed"]]}) ) (= scope= flags=0 words=[] bindings=[('IJAR_FILES', {[ComSub (Pipeline (Com {[VarSub UNZIP]} {[LIT_CHARS -qql]} {[VarSub IJAR_WRONG_CENTRAL_DIR]}) (Com {[LIT_CHARS wc]} {[LIT_CHARS -l]}) (Com {[LIT_CHARS xargs]} {[LIT_CHARS echo]}) )]})]) (If (DBracket {B2 BINARY_STRING_NOT_EQUAL {[VarSub IJAR_FILES]} {[LIT_CHARS 2]}}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "ijar removed files"]]}) ) ) ) (FunctionDef test_type_annotation [] (List (AndOr OP_OR_IF (Com {[VarSub IJAR]} {[VarSub TYPEANN2_JAR]} {[VarSub TYPEANN2_IJAR]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "ijar failed"]]}) ) (AndOr OP_OR_IF (Com {[VarSub JAVAP]} {[LIT_CHARS -classpath]} {[VarSub TYPEANN2_IJAR]} {[LIT_CHARS -v]} {[LIT_CHARS Util]} < (DescriptorRedirectNode target={[VarSub TEST_log]} &"> 1), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "javap failed"]]}) ) (Com {[LIT_CHARS expect_log]} {[DQ [LIT_CHARS RuntimeVisibleTypeAnnotations]]} {[DQ [LIT_CHARS "RuntimeVisibleTypeAnnotations not preserved!"]]}) (Com {[LIT_CHARS cp]} {[VarSub TYPEANN2_JAVA]} {[VarSub TEST_TMPDIR] [LIT_CHARS /TypeAnnotationTest2.java]}) (AndOr OP_OR_IF (Com {[VarSub JAVAC]} {[LIT_CHARS -J-Xbootclasspath/p] [LIT_OTHER ":"] [VarSub LANGTOOLS8]} {[VarSub TEST_TMPDIR] [LIT_CHARS /TypeAnnotationTest2.java]} {[LIT_CHARS -cp]} {[VarSub TYPEANN2_IJAR]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "javac failed"]]}) ) ) ) (FunctionDef test_invokedynamic [] (List (AndOr OP_OR_IF (Com {[VarSub IJAR]} {[VarSub INVOKEDYNAMIC_JAR]} {[VarSub INVOKEDYNAMIC_IJAR]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "ijar failed"]]}) ) (= scope= flags=0 words=[] bindings=[('lines', {[ComSub (Pipeline (Com {[VarSub JAVAP]} {[LIT_CHARS -c]} {[LIT_CHARS -private]} {[LIT_CHARS -classpath]} {[VarSub INVOKEDYNAMIC_JAR]} {[LIT_CHARS ClassWithLambda]}) (Com {[LIT_CHARS grep]} {[LIT_CHARS Code] [LIT_OTHER ":"]}) (Com {[LIT_CHARS wc]} {[LIT_CHARS -l]}) )]})]) (Com {[LIT_CHARS check_eq]} {[LIT_CHARS 4]} {[VarSub lines]} {[DQ [LIT_CHARS "Input jar should have 4 method bodies!"]]}) (= scope= flags=0 words=[] bindings=[('lines', {[ComSub (Pipeline (Com {[VarSub JAVAP]} {[LIT_CHARS -c]} {[LIT_CHARS -private]} {[LIT_CHARS -classpath]} {[VarSub INVOKEDYNAMIC_IJAR]} {[LIT_CHARS ClassWithLambda]}) (Com {[LIT_CHARS grep]} {[LIT_CHARS Code] [LIT_OTHER ":"]}) (Com {[LIT_CHARS wc]} {[LIT_CHARS -l]}) )]})]) (Com {[LIT_CHARS check_eq]} {[LIT_CHARS 0]} {[VarSub lines]} {[DQ [LIT_CHARS "Interface jar should have no method bodies!"]]}) ) ) (FunctionDef test_object_class [] (List (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[VarSub TEST_TMPDIR] [LIT_CHARS /java/lang]}) (Com {[LIT_CHARS cp]} {[VarSub OBJECT_JAVA]} {[VarSub TEST_TMPDIR] [LIT_CHARS /java/lang/.]}) (AndOr OP_OR_IF (Com {[VarSub JAVAC]} {[VarSub TEST_TMPDIR] [LIT_CHARS /java/lang/Object.java]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "javac failed"]]}) ) (AndOr OP_OR_IF (Com {[VarSub JAR]} {[LIT_CHARS cf]} {[VarSub OBJECT_JAR]} {[LIT_CHARS -C]} {[VarSub TEST_TMPDIR]} {[LIT_CHARS java/lang/Object.class]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "jar failed"]]}) ) (AndOr OP_OR_IF (Com {[VarSub IJAR]} {[VarSub OBJECT_JAR]} {[VarSub OBJECT_IJAR]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "ijar failed"]]}) ) ) ) (FunctionDef test_corrupted_end_of_centraldir [] (List (= scope= flags=0 words=[] bindings=[('CORRUPTED_JAR', {[VarSub TEST_TMPDIR] [LIT_CHARS /corrupted.jar]})]) (Com {[LIT_CHARS cp]} {[VarSub JAR_WRONG_CENTRAL_DIR]} {[VarSub CORRUPTED_JAR]}) (Com {[LIT_CHARS chmod]} {[LIT_OTHER "+"] [LIT_CHARS w]} {[VarSub CORRUPTED_JAR]}) (Com {[LIT_CHARS echo]} < (FilenameRedirectNode filename={[VarSub CORRUPTED_JAR]} >"> 1), > ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Abort trap is expected"]]}) (AndOr OP_AND_IF (Com {[VarSub IJAR]} {[VarSub CORRUPTED_JAR]} < (FilenameRedirectNode filename={[VarSub TEST_log]} "> 2), > ) (AndOr OP_OR_IF (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "ijar should have failed"]]}) (= scope= flags=0 words=[] bindings=[('status', {[VarSub ?]})]) ) ) (Com {[LIT_CHARS check_ne]} {[LIT_CHARS 0]} {[VarSub status]}) (Com {[LIT_CHARS expect_log]} {[DQ [LIT_CHARS "missing end of central directory record"]]}) (Com {[LIT_CHARS let]} {[DQ [LIT_CHARS "NEW_SIZE = "][ComSub (Com {[LIT_CHARS statfmt]} {[VarSub CORRUPTED_JAR]})][LIT_CHARS " - 2"]]}) (Com {[LIT_CHARS set_file_length]} {[VarSub CORRUPTED_JAR]} {[VarSub NEW_SIZE]}) (AndOr OP_AND_IF (Com {[VarSub IJAR]} {[VarSub CORRUPTED_JAR]} < (FilenameRedirectNode filename={[VarSub TEST_log]} "> 2), > ) (AndOr OP_OR_IF (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "ijar should have failed"]]}) (= scope= flags=0 words=[] bindings=[('status', {[VarSub ?]})]) ) ) (Com {[LIT_CHARS check_ne]} {[LIT_CHARS 0]} {[VarSub status]}) (Com {[LIT_CHARS expect_log]} {[DQ [LIT_CHARS "missing end of central directory record"]]}) ) ) (FunctionDef test_inner_class_argument [] (List (Com {[LIT_CHARS cd]} {[VarSub TEST_TMPDIR]}) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[LIT_CHARS a]} {[LIT_CHARS b]} {[LIT_CHARS c]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS a/A.java]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "package a;\n"][LIT_CHARS "\n"][LIT_CHARS "public class A {\n"][LIT_CHARS " public static class A2 {\n"][LIT_CHARS " public int n;\n"][LIT_CHARS " }\n"][LIT_CHARS "}\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS b/B.java]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "package b;\n"][LIT_CHARS "import a.A;\n"][LIT_CHARS "\n"][LIT_CHARS "public class B {\n"][LIT_CHARS " public static void b(A.A2 arg) {\n"][LIT_CHARS " System.out.println(arg.n);\n"][LIT_CHARS " }\n"][LIT_CHARS "}\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS c/C.java]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "package c;\n"][LIT_CHARS "import b.B;\n"][LIT_CHARS "\n"][LIT_CHARS "public class C {\n"][LIT_CHARS " public static void c() {\n"][LIT_CHARS " B.b(null);\n"][LIT_CHARS " }\n"][LIT_CHARS "}\n"]]} 0), > ) (Com {[VarSub JAVAC]} {[LIT_CHARS a/A.java]} {[LIT_CHARS b/B.java]}) (Com {[VarSub JAR]} {[LIT_CHARS cf]} {[LIT_CHARS lib.jar]} {[LIT_LBRACE "{"] [LIT_CHARS a] [LIT_COMMA ","] [LIT_CHARS b] [LIT_RBRACE "}"] [LIT_CHARS /] [LIT_OTHER "*"] [LIT_CHARS .class]}) (Com {[VarSub JAVAC]} {[LIT_CHARS -cp]} {[LIT_CHARS lib.jar]} {[LIT_CHARS c/C.java]}) ) ) (FunctionDef test_inner_class_pruning [] (List (Com {[LIT_CHARS cd]} {[VarSub TEST_TMPDIR]}) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[LIT_CHARS lib/l]} {[LIT_LBRACE "{"] [LIT_CHARS one] [LIT_COMMA ","] [LIT_CHARS two] [LIT_COMMA ","] [LIT_CHARS three] [LIT_RBRACE "}"] [LIT_CHARS /a]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS lib/l/L.java]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "package l;\n"][LIT_CHARS "\n"][LIT_CHARS "public class L {\n"][LIT_CHARS " public static class I {\n"][LIT_CHARS " public static class J {\n"][LIT_CHARS " public static int number() {\n"][LIT_CHARS " return 3;\n"][LIT_CHARS " }\n"][LIT_CHARS " }\n"][LIT_CHARS " public static int number() {\n"][LIT_CHARS " return 2;\n"][LIT_CHARS " }\n"][LIT_CHARS " }\n"][LIT_CHARS "}\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS one/a/A.java]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "package a;\n"][LIT_CHARS "\n"][LIT_CHARS "public class A {\n"][LIT_CHARS " public static void message() {\n"][LIT_CHARS " System.out.println("][RIGHT_D_QUOTE "\""][LIT_CHARS "hello "][RIGHT_D_QUOTE "\""][LIT_CHARS " + 1);\n"][LIT_CHARS " }\n"][LIT_CHARS "}\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS two/a/A.java]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "package a;\n"][LIT_CHARS "\n"][LIT_CHARS "import l.L;\n"][LIT_CHARS "\n"][LIT_CHARS "public class A {\n"][LIT_CHARS " public static void message() {\n"][LIT_CHARS " System.out.println("][RIGHT_D_QUOTE "\""][LIT_CHARS "hello "][RIGHT_D_QUOTE "\""][LIT_CHARS " + L.I.number());\n"][LIT_CHARS " }\n"][LIT_CHARS "}\n"]]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS three/a/A.java]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "package a;\n"][LIT_CHARS "\n"][LIT_CHARS "import l.L;\n"][LIT_CHARS "\n"][LIT_CHARS "public class A {\n"][LIT_CHARS " public static void message() {\n"][LIT_CHARS " System.out.println("][RIGHT_D_QUOTE "\""][LIT_CHARS "hello "][RIGHT_D_QUOTE "\""][LIT_CHARS " + L.I.J.number());\n"][LIT_CHARS " }\n"][LIT_CHARS "}\n"]]} 0), > ) (Com {[VarSub JAVAC]} {[LIT_CHARS lib/l/L.java]}) (Subshell (List (Com {[LIT_CHARS cd]} {[LIT_CHARS lib]}) (Com {[VarSub JAR]} {[LIT_CHARS cf]} {[LIT_CHARS lib.jar]} {[LIT_CHARS l/] [LIT_OTHER "*"] [LIT_CHARS .class]}) ) ) (Com {[VarSub JAVAC]} {[LIT_CHARS one/a/A.java]}) (Subshell (List (Com {[LIT_CHARS cd]} {[LIT_CHARS one]}) (Com {[VarSub JAR]} {[LIT_CHARS cf]} {[LIT_CHARS one.jar]} {[LIT_CHARS a/] [LIT_OTHER "*"] [LIT_CHARS .class]}) ) ) (Com {[VarSub JAVAC]} {[LIT_CHARS two/a/A.java]} {[LIT_CHARS -classpath]} {[LIT_CHARS lib/lib.jar]}) (Subshell (List (Com {[LIT_CHARS cd]} {[LIT_CHARS two]}) (Com {[VarSub JAR]} {[LIT_CHARS cf]} {[LIT_CHARS two.jar]} {[LIT_CHARS a/] [LIT_OTHER "*"] [LIT_CHARS .class]}) ) ) (Com {[VarSub JAVAC]} {[LIT_CHARS three/a/A.java]} {[LIT_CHARS -classpath]} {[LIT_CHARS lib/lib.jar]}) (Subshell (List (Com {[LIT_CHARS cd]} {[LIT_CHARS three]}) (Com {[VarSub JAR]} {[LIT_CHARS cf]} {[LIT_CHARS three.jar]} {[LIT_CHARS a/] [LIT_OTHER "*"] [LIT_CHARS .class]}) ) ) (Com {[VarSub IJAR]} {[LIT_CHARS one/one.jar]} {[LIT_CHARS one/one-ijar.jar]}) (Com {[VarSub IJAR]} {[LIT_CHARS one/one.jar]} {[LIT_CHARS two/two-ijar.jar]}) (Com {[VarSub IJAR]} {[LIT_CHARS one/one.jar]} {[LIT_CHARS three/three-ijar.jar]}) (Com {[LIT_CHARS cmp]} {[LIT_CHARS one/one-ijar.jar]} {[LIT_CHARS two/two-ijar.jar]}) (Com {[LIT_CHARS cmp]} {[LIT_CHARS one/one-ijar.jar]} {[LIT_CHARS three/three-ijar.jar]}) ) ) (FunctionDef test_method_parameters_attribute [] (List (AndOr OP_OR_IF (Com {[VarSub IJAR]} {[VarSub METHODPARAM_JAR]} {[VarSub METHODPARAM_IJAR]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "ijar failed"]]}) ) (AndOr OP_OR_IF (Com {[VarSub JAVAP]} {[LIT_CHARS -classpath]} {[VarSub METHODPARAM_IJAR]} {[LIT_CHARS -v]} {[LIT_CHARS methodparameters.Test]} < (DescriptorRedirectNode target={[VarSub TEST_log]} &"> 1), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "javap failed"]]}) ) (Com {[LIT_CHARS expect_log]} {[DQ [LIT_CHARS MethodParameters]]} {[DQ [LIT_CHARS "MethodParameters not preserved!"]]}) ) ) (FunctionDef test_source_debug_extension_attribute [] (List (AndOr OP_OR_IF (Com {[VarSub IJAR]} {[VarSub SOURCEDEBUGEXT_JAR]} {[VarSub SOURCEDEBUGEXT_IJAR]} < (DescriptorRedirectNode target={[VarSub TEST_log]} &"> 1), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "ijar failed"]]}) ) (Com {[LIT_CHARS expect_not_log]} {[DQ [LIT_CHARS "skipping unknown attribute"]]}) (AndOr OP_OR_IF (Com {[VarSub JAVAP]} {[LIT_CHARS -classpath]} {[VarSub SOURCEDEBUGEXT_IJAR]} {[LIT_CHARS -v]} {[LIT_CHARS sourcedebugextension.Test]} < (DescriptorRedirectNode target={[VarSub TEST_log]} &"> 1), > ) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "javap failed"]]}) ) (Com {[LIT_CHARS expect_not_log]} {[DQ [LIT_CHARS SourceDebugExtension]]} {[DQ [LIT_CHARS "SourceDebugExtension preserved!"]]}) ) ) (FunctionDef test_central_dir_largest_regular [] (List (AndOr OP_OR_IF (Com {[VarSub IJAR]} {[VarSub CENTRAL_DIR_LARGEST_REGULAR]} {[VarSub TEST_TMPDIR] [LIT_CHARS /ijar.jar]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "ijar failed"]]}) ) (AndOr OP_OR_IF (Com {[VarSub ZIP_COUNT]} {[VarSub TEST_TMPDIR] [LIT_CHARS /ijar.jar]} {[LIT_CHARS 65535]}) (Com {[LIT_CHARS fail]}) ) ) ) (FunctionDef test_central_dir_smallest_zip64 [] (List (AndOr OP_OR_IF (Com {[VarSub IJAR]} {[VarSub CENTRAL_DIR_SMALLEST_ZIP64]} {[VarSub TEST_TMPDIR] [LIT_CHARS /ijar.jar]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "ijar failed"]]}) ) (AndOr OP_OR_IF (Com {[VarSub ZIP_COUNT]} {[VarSub TEST_TMPDIR] [LIT_CHARS /ijar.jar]} {[LIT_CHARS 65536]}) (Com {[LIT_CHARS fail]}) ) ) ) (FunctionDef test_central_dir_zip64 [] (List (AndOr OP_OR_IF (Com {[VarSub IJAR]} {[VarSub CENTRAL_DIR_ZIP64]} {[VarSub TEST_TMPDIR] [LIT_CHARS /ijar.jar]}) (Com {[LIT_CHARS fail]} {[DQ [LIT_CHARS "ijar failed"]]}) ) (AndOr OP_OR_IF (Com {[VarSub ZIP_COUNT]} {[VarSub TEST_TMPDIR] [LIT_CHARS /ijar.jar]} {[LIT_CHARS 70000]}) (Com {[LIT_CHARS fail]}) ) ) ) (Com {[LIT_CHARS run_suite]} {[DQ [LIT_CHARS "ijar tests"]]}) )