Testing ksusu Working directory is /opt/home/ejb/jacks/jacks compile = /home/ejb/jacks/jacks/ksusu_compiler ... run = /usr/java/jdk1.3/bin/java ... tests/jls/arrays/array-initializers tests/jls/blocks-and-statements/break-statement tests/jls/blocks-and-statements/continue-statement tests/jls/blocks-and-statements/labeled-statements tests/jls/blocks-and-statements/switch-statement tests/jls/blocks-and-statements/unreachable-statements tests/jls/classes/class-declaration/class-modifiers tests/jls/classes/class-declaration/class-modifiers/abstract-classes tests/jls/classes/class-declaration/class-modifiers/final-classes tests/jls/classes/class-declaration/superclasses-and-subclasses tests/jls/classes/class-members tests/jls/classes/constructor-declarations tests/jls/classes/constructor-declarations/constructor-body tests/jls/classes/constructor-declarations/constructor-body/explicit-constructor-invocations tests/jls/classes/constructor-declarations/constructor-modifiers tests/jls/classes/constructor-declarations/constructor-overloading tests/jls/classes/constructor-declarations/constructor-signature tests/jls/classes/constructor-declarations/default-constructor tests/jls/classes/constructor-declarations/formal-parameters tests/jls/classes/member-type-declarations/access-modifiers tests/jls/classes/member-type-declarations/static-member-type-declarations tests/jls/classes/method-declarations/method-body tests/jls/conversions-and-promotions/assignment-conversion tests/jls/conversions-and-promotions/kinds-of-conversion/identity-conversions tests/jls/conversions-and-promotions/kinds-of-conversion/narrowing-primitive-conversions tests/jls/conversions-and-promotions/kinds-of-conversion/widening-primitive-conversions tests/jls/definite-assignment/statements/if-statements tests/jls/definite-assignment/statements/switch-statements tests/jls/expressions/additive-operators tests/jls/expressions/additive-operators/numeric-types tests/jls/expressions/additive-operators/string-concatenation-operator ==== 15.18.1-float-6 conversion of float to String must use as few digits after decimal as produce the same float again by rounding FAILED ==== Contents of test case: constant_expression T15181f6 {"" + 123456768f == "1.2345677E8"} {"" + 123456776f == "1.23456776E8"} {"" + 123456784f == "1.2345678E8"} {"" + 123456792f == "1.2345679E8"} {"" + 123456800f == "1.234568E8"} ---- Result was: FAIL ---- Result should have been: PASS ==== 15.18.1-float-6 FAILED ==== 15.18.1-double-4 convert min double to String FAILED ==== Contents of test case: constant_expression T15181d4 {"" + Double.MIN_VALUE == "4.9E-324"} ---- Result was: FAIL ---- Result should have been: PASS ==== 15.18.1-double-4 FAILED tests/jls/expressions/array-creation-expressions tests/jls/expressions/assignment-operators/compound-assignment-operators tests/jls/expressions/class-instance-creation tests/jls/expressions/class-instance-creation/determining-the-class tests/jls/expressions/constant-expression tests/jls/expressions/method-invocation-expressions/determine-method-signature/applicable-and-accessible tests/jls/expressions/multiplicative-operators tests/jls/expressions/multiplicative-operators/division-operator tests/jls/expressions/multiplicative-operators/multiplication-operator ==== 15.17.1-double-14 Floating-point * follows round-to-nearest, even with denorms, known bug in Sun's javac FAILED ==== Contents of test case: constant_expression T15171d14 {8.578459548793971E-162 * 2.512418001798401E-147 == 2.155267619808936E-308} {6.946121092140867E-162 * 2.669444126910801E-147 == 1.8542282154226677E-308} ---- Result was: FAIL ---- Result should have been: PASS ==== 15.17.1-double-14 FAILED tests/jls/expressions/multiplicative-operators/remainder-operator tests/jls/expressions/postfix-expressions/postfix-decrement-operator tests/jls/expressions/postfix-expressions/postfix-increment-operator tests/jls/expressions/unary-operators tests/jls/expressions/unary-operators/bitwise-complement-operator tests/jls/expressions/unary-operators/logical-complement-operator tests/jls/expressions/unary-operators/prefix-decrement-operator tests/jls/expressions/unary-operators/prefix-increment-operator tests/jls/expressions/unary-operators/unary-minus-operator tests/jls/expressions/unary-operators/unary-plus-operator tests/jls/interfaces/interface-declarations/interface-modifiers tests/jls/interfaces/interface-declarations/interface-modifiers/abstract-interfaces tests/jls/lexical-structure/comments tests/jls/lexical-structure/identifiers tests/jls/lexical-structure/input-elements-and-tokens tests/jls/lexical-structure/keywords tests/jls/lexical-structure/lexical-translations tests/jls/lexical-structure/line-terminators tests/jls/lexical-structure/literals/character-literals tests/jls/lexical-structure/literals/escape-sequences tests/jls/lexical-structure/literals/floating-point-literals ==== 3.10.2-round-8 It is an error for a nonzero floating-point to round to zero FAILED ==== Contents of test case: literal T3102r8 0.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024703282292062327208828439643411068618252990130716238221279284125033775363510437593264991818081799618989828234772285886546332835517796989819938739800539093906315035659515570226392290858392449105184435931802849936536152500319370457678249219365623669863658480757001585769269903706311928279558551332927834338409351978015531246597263579574622766465272827220056374006485499977096599470454020828166226237857393450736339007967761930577506740176324673600968951340535537458516661134223766678604162159680461914467291840300530057530849048765391711386591646239524912623653881879636239373280423891018672348497668235089863388587925628302755995657524455507255189313690836254779186948667994968324049705821028513185451396213837722826145437693412532098591327667236328125 ---- Result was: PASS ---- Result should have been: FAIL ==== 3.10.2-round-8 FAILED tests/jls/lexical-structure/literals/integer-literals tests/jls/lexical-structure/literals/string-literals tests/jls/lexical-structure/unicode-escapes ==== 3.3-invalid-1 A unicode sequence must have four hex digits FAILED ==== Contents of test case: compile [saveas T33i1.java {class T33i1 { char c = '\u20'; }}] ---- Result was: WARN ---- Result should have been: FAIL ==== 3.3-invalid-1 FAILED tests/jls/lexical-structure/white-space tests/jls/names/access-control/determining-accessibility tests/jls/names/members-and-inheritance/members-of-a-class-type tests/jls/names/members-and-inheritance/members-of-an-array-type tests/jls/names/members-and-inheritance/members-of-an-interface-type tests/jls/names/scope-of-a-declaration tests/jls/packages/compilation-units tests/jls/packages/import-declarations/single-type-import-declaration tests/jls/packages/import-declarations/type-import-on-demand-declaration tests/jls/packages/package-declarations/named-packages tests/jls/packages/package-declarations/unnamed-packages tests/jls/packages/top-level-type-declarations tests/jls/types-values-and-variables/variables/final-variables tests/non-jls/argument-expansion tests/non-jls/encoding tests/non-jls/random-crashers tests/runtime tests/runtime/jls/blocks-and-statements ==== 14-runtime-jump-1 Generic test of large goto_w (can occur in for, if, while, do, switch, try, break, and continue) FAILED ==== Contents of test case: set class_data " class T14rj1 \{ public static void main(String\[\] args) \{ int i = 1; for (int j = 0; j < 2; j++) \{\n" set count 0 while {$count < 3500} { append class_data "\t i = 366 * i % 534;\n" incr count } append class_data "\t\} if (i == 210) System.out.print(\"OK\"); else System.out.print(\"FAIL\"); \} \}\n" compile_and_run [saveas T14rj1.java $class_data] ---- Result was: COMPILE FAIL ---- Result should have been: OK ==== 14-runtime-jump-1 FAILED tests/runtime/jls/blocks-and-statements/switch-statement tests/runtime/jls/blocks-and-statements/try-statement/try-catch-finally tests/runtime/jls/classes/constructor-declarations/default-constructor tests/runtime/jls/execution/creation-of-new-class-instances tests/runtime/jls/expressions/additive-operators/string-conversion tests/runtime/jls/expressions/assignment-operators/compound-assignment-operators tests/runtime/jls/expressions/class-instance-creation tests/runtime/jls/expressions/method-invocation-expressions/chosen-method-appropriate tests/runtime/jls/expressions/postfix-expressions tests/runtime/jls/expressions/unary-operators tests/runtime/jls/lexical-structure/literals/string-literals ==== 3.10.5-runtime-2 Strings that occupy more than 0xffff UTF8 bytes cannot be constant, according to JVMS. However, since the JLS does not require compile-time failure, we must also test for an invalid constant pool entry FAILED ==== Contents of test case: compile_and_run [saveas T3105r2.java { class T3105r2 { static final String s0001 = "a"; static final String s0002 = s0001 + s0001; static final String s0004 = s0002 + s0002; static final String s0008 = s0004 + s0004; static final String s0010 = s0008 + s0008; static final String s0020 = s0010 + s0010; static final String s0040 = s0020 + s0020; static final String s0080 = s0040 + s0040; static final String s0100 = s0080 + s0080; static final String s0200 = s0100 + s0100; static final String s0400 = s0200 + s0200; static final String s0800 = s0400 + s0400; static final String s1000 = s0800 + s0800; static final String s2000 = s1000 + s1000; static final String s4000 = s2000 + s2000; static final String s8000 = s4000 + s4000; static final String sffff = s8000 + s4000 + s2000 + s1000 + s0800 + s0400 + s0200 + s0100 + s0080 + s0040 + s0020 + s0010 + s0008 + s0004 + s0002 + "b"; // still constant! static final String toobig = sffff + "c"; // can't be constant public static void main(String[] args) { if (toobig.equals("")) System.out.println("String was lost completely"); else if (toobig.endsWith("b")) System.out.println("String was truncated at 0xffff bytes"); else if (toobig.endsWith("abc")) { String alternate = sffff; alternate += "c"; alternate = alternate.intern(); if (alternate != toobig) System.out.println("String was not interned"); else System.out.println("OK"); } else System.out.println("Unexpected case"); } } }] ---- Result was: String was not interned ---- Result should have been: OK ==== 3.10.5-runtime-2 FAILED ksusu: Total 1615 Passed 1600 Skipped 8 Failed 7 Number of tests skipped for each constraint: 7 encoding 1 pc