Testing Java is easy, if you play your cards right.
| jls section | directory |
| 3.2 | tests/jls/lexical-structure/lexical-translations |
| 3.3 | tests/jls/lexical-structure/unicode-escapes |
| 3.4 | tests/jls/lexical-structure/line-terminators |
| 3.5 | tests/jls/lexical-structure/input-elements-and-tokens |
| 3.6 | tests/jls/lexical-structure/white-space |
| 3.7 | tests/jls/lexical-structure/comments |
| 3.8 | tests/jls/lexical-structure/identifiers |
| 3.9 | tests/jls/lexical-structure/keywords |
| 3.10.1 | tests/jls/lexical-structure/literals/integer-literals |
| 3.10.2 | tests/jls/lexical-structure/literals/floating-point-literals |
| 3.10.4 | tests/jls/lexical-structure/literals/character-literals |
| 3.10.5 | tests/jls/lexical-structure/literals/string-literals |
| 3.10.7 | tests/jls/lexical-structure/literals/escape-sequences |
| 4.5.4 | tests/jls/types-values-and-variables/variables/final-variables |
| 5.1.1 | tests/jls/conversions-and-promotions/kinds-of-conversion/identity-conversions |
| 5.1.2 | tests/jls/conversions-and-promotions/kinds-of-conversion/widening-primitive-conversions |
| 5.1.3 | tests/jls/conversions-and-promotions/kinds-of-conversion/narrowing-primitive-conversions |
| 5.2 | tests/jls/conversions-and-promotions/assignment-conversion |
| 6.2 | tests/jls/names/names-and-identifiers |
| 6.3 | tests/jls/names/scope-of-a-declaration |
| 6.4.1 | tests/jls/names/members-and-inheritance/members-of-a-package |
| 6.4.2 | tests/jls/names/members-and-inheritance/members-of-a-class-type |
| 6.4.3 | tests/jls/names/members-and-inheritance/members-of-an-interface-type |
| 6.4.4 | tests/jls/names/members-and-inheritance/members-of-an-array-type |
| 6.5.1 | tests/jls/names/meaning-of-a-name/syntactic-classification |
| 6.5.2 | tests/jls/names/meaning-of-a-name/reclassification |
| 6.5.3.1 | tests/jls/names/meaning-of-a-name/package-names/simple |
| 6.5.3.2 | tests/jls/names/meaning-of-a-name/package-names/qualified |
| 6.5.4.1 | tests/jls/names/meaning-of-a-name/packageortypenames/simple |
| 6.5.4.2 | tests/jls/names/meaning-of-a-name/packageortypenames/qualified |
| 6.5.5.1 | tests/jls/names/meaning-of-a-name/type-names/simple |
| 6.5.5.2 | tests/jls/names/meaning-of-a-name/type-names/qualified |
| 6.5.6.1 | tests/jls/names/meaning-of-a-name/expression-names/simple |
| 6.5.6.2 | tests/jls/names/meaning-of-a-name/expression-names/qualified |
| 6.5.7.1 | tests/jls/names/meaning-of-a-name/method-names/simple |
| 6.5.7.2 | tests/jls/names/meaning-of-a-name/method-names/qualified |
| 6.6.1 | tests/jls/names/access-control/determining-accessibility |
| 6.6.2.1 | tests/jls/names/access-control/details-on-protected-access/protected-member |
| 6.6.2.2 | tests/jls/names/access-control/details-on-protected-access/protected-constructor |
| 7.1 | tests/jls/packages/package-members |
| 7.3 | tests/jls/packages/compilation-units |
| 7.4.1 | tests/jls/packages/package-declarations/named-packages |
| 7.4.2 | tests/jls/packages/package-declarations/unnamed-packages |
| 7.5.1 | tests/jls/packages/import-declarations/single-type-import-declaration |
| 7.5.2 | tests/jls/packages/import-declarations/type-import-on-demand-declaration |
| 7.5.3 | tests/jls/packages/import-declarations/automatic-imports |
| 7.5.4 | tests/jls/packages/import-declarations/strange-example |
| 7.6 | tests/jls/packages/top-level-type-declarations |
| 8.1 | tests/jls/classes/class-declaration |
| 8.1.1 | tests/jls/classes/class-declaration/class-modifiers |
| 8.1.1.1 | tests/jls/classes/class-declaration/class-modifiers/abstract-classes |
| 8.1.1.2 | tests/jls/classes/class-declaration/class-modifiers/final-classes |
| 8.1.2 | tests/jls/classes/class-declaration/inner-classes-and-enclosing-instances |
| 8.1.3 | tests/jls/classes/class-declaration/superclasses-and-subclasses |
| 8.1.4 | tests/jls/classes/class-declaration/superinterfaces |
| 8.2 | tests/jls/classes/class-members |
| 8.3 | tests/jls/classes/field-declarations |
| 8.3.1 | tests/jls/classes/field-declarations/field-modifiers |
| 8.3.1.1 | tests/jls/classes/field-declarations/field-modifiers/static-fields |
| 8.3.1.2 | tests/jls/classes/field-declarations/field-modifiers/final-fields |
| 8.3.2 | tests/jls/classes/field-declarations/initialization-of-fields |
| 8.3.2.1 | tests/jls/classes/field-declarations/initialization-of-fields/initializers-for-class-variables |
| 8.3.2.2 | tests/jls/classes/field-declarations/initialization-of-fields/initializers-for-instance-variables |
| 8.3.2.3 | tests/jls/classes/field-declarations/initialization-of-fields/restrictions |
| 8.4.3 | tests/jls/classes/method-declarations/method-modifiers |
| 8.4.5 | tests/jls/classes/method-declarations/method-body |
| 8.4.6 | tests/jls/classes/method-declarations/inheritance-overriding-and-hiding |
| 8.4.6.1 | tests/jls/classes/method-declarations/inheritance-overriding-and-hiding/overriding |
| 8.4.6.2 | tests/jls/classes/method-declarations/inheritance-overriding-and-hiding/hiding |
| 8.4.6.3 | tests/jls/classes/method-declarations/inheritance-overriding-and-hiding/requirements |
| 8.4.6.4 | tests/jls/classes/method-declarations/inheritance-overriding-and-hiding/inheriting-same-signature |
| 8.5 | tests/jls/classes/member-type-declarations |
| 8.5.1 | tests/jls/classes/member-type-declarations/access-modifiers |
| 8.5.2 | tests/jls/classes/member-type-declarations/static-member-type-declarations |
| 8.6 | tests/jls/classes/instance-initializers |
| 8.7 | tests/jls/classes/static-initializers |
| 8.8 | tests/jls/classes/constructor-declarations |
| 8.8.1 | tests/jls/classes/constructor-declarations/formal-parameters |
| 8.8.2 | tests/jls/classes/constructor-declarations/constructor-signature |
| 8.8.3 | tests/jls/classes/constructor-declarations/constructor-modifiers |
| 8.8.5 | tests/jls/classes/constructor-declarations/constructor-body |
| 8.8.5.1 | tests/jls/classes/constructor-declarations/constructor-body/explicit-constructor-invocations |
| 8.8.6 | tests/jls/classes/constructor-declarations/constructor-overloading |
| 8.8.7 | tests/jls/classes/constructor-declarations/default-constructor |
| 9.1 | tests/jls/interfaces/interface-declarations |
| 9.1.1 | tests/jls/interfaces/interface-declarations/interface-modifiers |
| 9.1.1.1 | tests/jls/interfaces/interface-declarations/interface-modifiers/abstract-interfaces |
| 9.1.2 | tests/jls/interfaces/interface-declarations/superinterfaces-and-subinterfaces |
| 9.1.3 | tests/jls/interfaces/interface-declarations/interface-body-and-member-declarations |
| 9.2 | tests/jls/interfaces/interface-members |
| 9.3 | tests/jls/interfaces/field-constant-declarations |
| 9.3.1 | tests/jls/interfaces/field-constant-declarations/initialization-of-fields |
| 9.4 | tests/jls/interfaces/abstract-method-declarations |
| 9.4.1 | tests/jls/interfaces/abstract-method-declarations/inheritance-and-overriding |
| 9.4.2 | tests/jls/interfaces/abstract-method-declarations/overloading |
| 10.6 | tests/jls/arrays/array-initializers |
| 13.1 | tests/jls/binary-compatibility/form-of-binary |
| 14.3 | tests/jls/blocks-and-statements/local-class-declarations |
| 14.4.2 | tests/jls/blocks-and-statements/local-variable-declaration-statements/scope |
| 14.7 | tests/jls/blocks-and-statements/labeled-statements |
| 14.9 | tests/jls/blocks-and-statements/if-statement |
| 14.10 | tests/jls/blocks-and-statements/switch-statement |
| 14.14 | tests/jls/blocks-and-statements/break-statement |
| 14.15 | tests/jls/blocks-and-statements/continue-statement |
| 14.18 | tests/jls/blocks-and-statements/synchronized-statement |
| 14.19 | tests/jls/blocks-and-statements/try-statement |
| 14.20 | tests/jls/blocks-and-statements/unreachable-statements |
| 15.8.2 | tests/jls/expressions/primary-expressions/class-literals |
| 15.8.4 | tests/jls/expressions/primary-expressions/qualified-this |
| 15.8.5 | tests/jls/expressions/primary-expressions/parenthesized-expressions |
| 15.9 | tests/jls/expressions/class-instance-creation |
| 15.9.1 | tests/jls/expressions/class-instance-creation/determining-the-class |
| 15.9.2 | tests/jls/expressions/class-instance-creation/determining-enclosing-instances |
| 15.9.3 | tests/jls/expressions/class-instance-creation/choosing-the-constructor |
| 15.9.5.1 | tests/jls/expressions/class-instance-creation/anonymous-class-declarations/anonymous-constructors |
| 15.10 | tests/jls/expressions/array-creation-expressions |
| 15.11.1 | tests/jls/expressions/field-access-expressions/using-a-primary |
| 15.11.2 | tests/jls/expressions/field-access-expressions/accessing-superclass-members-using-super |
| 15.12.1 | tests/jls/expressions/method-invocation-expressions/determine-class-or-interface |
| 15.12.2.1 | tests/jls/expressions/method-invocation-expressions/determine-method-signature/applicable-and-accessible |
| 15.12.2.2 | tests/jls/expressions/method-invocation-expressions/determine-method-signature/choose-most-specific |
| 15.12.3 | tests/jls/expressions/method-invocation-expressions/chosen-method-appropriate |
| 15.13 | tests/jls/expressions/array-access-expressions |
| 15.14.1 | tests/jls/expressions/postfix-expressions/postfix-increment-operator |
| 15.14.2 | tests/jls/expressions/postfix-expressions/postfix-decrement-operator |
| 15.15 | tests/jls/expressions/unary-operators |
| 15.15.1 | tests/jls/expressions/unary-operators/prefix-increment-operator |
| 15.15.2 | tests/jls/expressions/unary-operators/prefix-decrement-operator |
| 15.15.3 | tests/jls/expressions/unary-operators/unary-plus-operator |
| 15.15.4 | tests/jls/expressions/unary-operators/unary-minus-operator |
| 15.15.5 | tests/jls/expressions/unary-operators/bitwise-complement-operator |
| 15.15.6 | tests/jls/expressions/unary-operators/logical-complement-operator |
| 15.16 | tests/jls/expressions/cast-expressions |
| 15.17 | tests/jls/expressions/multiplicative-operators |
| 15.17.1 | tests/jls/expressions/multiplicative-operators/multiplication-operator |
| 15.17.2 | tests/jls/expressions/multiplicative-operators/division-operator |
| 15.17.3 | tests/jls/expressions/multiplicative-operators/remainder-operator |
| 15.18 | tests/jls/expressions/additive-operators |
| 15.18.1 | tests/jls/expressions/additive-operators/string-concatenation-operator |
| 15.18.2 | tests/jls/expressions/additive-operators/numeric-types |
| 15.20 | tests/jls/expressions/relational-operators/type-comparison-operator-instanceof |
| 15.20.2 | tests/jls/expressions/relational-operators/type-comparison-operator-instanceof |
| 15.21 | tests/jls/expressions/equality-operators |
| 15.21.1 | tests/jls/expressions/equality-operators/numerical-equality |
| 15.21.3 | tests/jls/expressions/equality-operators/reference-equality |
| 15.23 | tests/jls/expressions/conditional-and-operator |
| 15.24 | tests/jls/expressions/conditional-or-operator |
| 15.25 | tests/jls/expressions/conditional-operator |
| 15.26.2 | tests/jls/expressions/assignment-operators/compound-assignment-operators |
| 15.28 | tests/jls/expressions/constant-expression |
| 16 | tests/jls/definite-assignment |
| 16.1.2 | tests/jls/definite-assignment/expressions/boolean-conditional-and |
| 16.1.3 | tests/jls/definite-assignment/expressions/boolean-conditional-or |
| 16.1.5 | tests/jls/definite-assignment/expressions/boolean-conditional-operator |
| 16.1.7 | tests/jls/definite-assignment/expressions/assignment-expressions |
| 16.1.8 | tests/jls/definite-assignment/expressions/operators-increment-and-decrement |
| 16.2.3 | tests/jls/definite-assignment/statements/local-class-declaration-statements |
| 16.2.5 | tests/jls/definite-assignment/statements/labeled-statements |
| 16.2.7 | tests/jls/definite-assignment/statements/if-statements |
| 16.2.8 | tests/jls/definite-assignment/statements/switch-statements |
| 16.2.9 | tests/jls/definite-assignment/statements/while-statements |
| 16.2.10 | tests/jls/definite-assignment/statements/do-statements |
| 16.2.11 | tests/jls/definite-assignment/statements/for-statements |
| 16.2.14 | tests/jls/definite-assignment/statements/try-statements |
| 16.5 | tests/jls/definite-assignment/anonymous-classes |
| 16.8 | tests/jls/definite-assignment/constructors-and-instance-initializers |
| try-statement | tests/jls/blocks-and-statements/try-statement |
| runtime section | directory |
| 3.10.1 | tests/runtime/jls/lexical-structure/literals/integer-literals |
| 3.10.2 | tests/runtime/jls/lexical-structure/literals/floating-point-literals |
| 3.10.4 | tests/runtime/jls/lexical-structure/literals/character-literals |
| 3.10.5 | tests/runtime/jls/lexical-structure/literals/string-literals |
| 4.10 | tests/runtime/jvms/class-file-format/limitations |
| 6.6.1 | tests/runtime/jls/classes/constructor-declarations/constructor-access |
| 8.1.2 | tests/runtime/jls/classes/class-declaration/inner-classes-and-enclosing-instances |
| 8.3 | tests/runtime/jls/classes/field-declarations |
| 8.4.6 | tests/runtime/jls/classes/method-declarations/inheritance-overriding-and-hiding |
| 8.4.6.4 | tests/runtime/jls/classes/method-declarations/inheritance-overriding-and-hiding |
| 8.8.3 | tests/runtime/jls/classes/constructor-declarations/constructor-modifiers |
| 8.8.5 | tests/runtime/jls/classes/constructor-declarations/constructor-body |
| 8.8.7 | tests/runtime/jls/classes/constructor-declarations/default-constructor |
| 12.4.1 | tests/runtime/jls/execution/initialization-of-classes-and-interfaces/when-initialization-occurs |
| 12.4.2 | tests/runtime/jls/execution/initialization-of-classes-and-interfaces/detailed-initialization-procedure |
| 12.5 | tests/runtime/jls/execution/creation-of-new-class-instances |
| 13.1 | tests/runtime/jls/binary-compatibility/form-of-binary |
| 14 | tests/runtime/jls/blocks-and-statements |
| 14.3 | tests/runtime/jls/blocks-and-statements/local-class-declarations |
| 14.3.1 | tests/runtime/jls/blocks-and-statements/local-class-declarations |
| 14.9.1 | tests/runtime/jls/blocks-and-statements/if-statement/if-then-statement |
| 14.9.2 | tests/runtime/jls/blocks-and-statements/if-statement/if-then-else-statement |
| 14.10 | tests/runtime/jls/blocks-and-statements/switch-statement |
| 14.11 | tests/runtime/jls/blocks-and-statements/while-statement |
| 14.12 | tests/runtime/jls/blocks-and-statements/do-statement |
| 14.13 | tests/runtime/jls/blocks-and-statements/for-statement |
| 14.14 | tests/runtime/jls/blocks-and-statements/break-statement |
| 14.18 | tests/runtime/jls/blocks-and-statements/synchronized-statement |
| 14.19.1 | tests/runtime/jls/blocks-and-statements/try-statement/try-catch |
| 14.19.2 | tests/runtime/jls/blocks-and-statements/try-statement/try-catch-finally |
| 15.8.4 | tests/runtime/jls/expressions/primary-expressions/qualified-this |
| 15.9 | tests/runtime/jls/expressions/class-instance-creation |
| 15.9.4 | tests/runtime/jls/expressions/class-instance-creation/run-time-evaluation |
| 15.11.1 | tests/runtime/jls/expressions/field-access-expressions/using-a-primary |
| 15.11.2 | tests/runtime/jls/expressions/field-access-expressions/accessing-superclass-members-using-super |
| 15.12.3 | tests/runtime/jls/expressions/method-invocation-expressions/chosen-method-appropriate |
| 15.12.4.1 | tests/runtime/jls/expressions/method-invocation-expressions/runtime-evaluation/compute-target-reference |
| 15.13.2 | tests/runtime/jls/expressions/array-access-expressions/examples |
| 15.14 | tests/runtime/jls/expressions/postfix-expressions |
| 15.15 | tests/runtime/jls/expressions/unary-operators |
| 15.18.1.1 | tests/runtime/jls/expressions/additive-operators/string-conversion |
| 15.20 | tests/runtime/jls/expressions/relational-operators/type-comparison-operator-instanceof |
| 15.21.3 | tests/runtime/jls/expressions/equality-operators/reference-equality |
| 15.25 | tests/runtime/jls/expressions/conditional-operator |
| 15.26.1 | tests/runtime/jls/expressions/assignment-operators/simple-assignment-operator |
| 15.26.2 | tests/runtime/jls/expressions/assignment-operators/compound-assignment-operators |
| 15.28 | tests/runtime/jls/expressions/constant-expression |
| 16.5 | tests/runtime/jls/definite-assignment/anonymous-classes |
| 41.3 | tests/runtime/non-jls/assert |
| non-jls section | directory |
| 41.2 | tests/non-jls/assert/syntax |
| 41.4 | tests/non-jls/assert/definite-assignment |
| argument-expansion | tests/non-jls/argument-expansion |
| encoding | tests/non-jls/encoding |
| random-crashers | tests/non-jls/random-crashers |
| zip | tests/non-jls/zip |
| gcj section | directory |
| gcj | tests/gcj |
| jikes section | directory |
| 3.1 | tests/jikes/jls/lexical-structure/unicode |
| 3.10.4 | tests/jikes/jls/lexical-structure/literals/character-literals |
| 7.5.2 | tests/jikes/jls/packages/import-declarations/type-import-on-demand-declaration |
| 8.3.2 | tests/jikes/jls/classes/field-declarations/initialization-of-fields |
| 8.4.5 | tests/jikes/jls/classes/method-declarations/method-body |
| 8.8.5.1 | tests/jikes/jls/classes/constructor-declarations/constructor-body/explicit-constructor-invocations |
| 14.7 | tests/jikes/jls/blocks-and-statements/labeled-statements |
| 14.19 | tests/jikes/jls/blocks-and-statements/try-statement |
| 14.20 | tests/jikes/jls/blocks-and-statements/unreachable-statements |
| jikes | tests/jikes |
| jvms section | directory |
| 4.7.10 | tests/jvms/class-file-format/attributes/deprecated-attribute |
| 4.10 | tests/jvms/class-file-format/limitations |
tests/jls/lexical-structure/lexical-translations
The parser must consume the largest token, even if another interpretation is validTest Case: 3.2-invalid-2Expected Result: FAIL
Regression Test:
tcltest::test 3.2-invalid-1 { The parser must consume the largest token, even if another interpretation is valid } { empty_class T32i1 { int foo(int a, int b) { return a--b; } } } {FAIL}
ensure that unicode escapes are processed before tokenization is doneTest Case: 3.2-invalid-3Expected Result: FAIL
Regression Test:
tcltest::test 3.2-invalid-2 { ensure that unicode escapes are processed before tokenization is done } { empty_class T32i2 { int foo(int a, int b) { return \u0061\u002d\u002d\u0062; } } } {FAIL}
The parser must consume the largest token, even if another interpretation is validTest Case: 3.2-invalid-4Expected Result: FAIL
Regression Test:
tcltest::test 3.2-invalid-3 { The parser must consume the largest token, even if another interpretation is valid } { compile [saveas T32i3.java {classT32i3 {}}] } {FAIL}
The parser must consume the largest token, even if another interpretation is validTest Case: 3.2-invalid-5Expected Result: FAIL
Regression Test:
tcltest::test 3.2-invalid-4 { The parser must consume the largest token, even if another interpretation is valid } { empty_main T32i4 { int i = 1/// comment starts at first /, not second 1; } } {FAIL}
Comments, as tokens, separate other tokensTest Case: 3.2-invalid-6Expected Result: FAIL
Regression Test:
tcltest::test 3.2-invalid-5 { Comments, as tokens, separate other tokens } { empty_main T32i5 { int i = 1/**/0; } } {FAIL}
Comments, as tokens, separate other tokensTest Case: 3.2-invalid-7Expected Result: FAIL
Regression Test:
tcltest::test 3.2-invalid-6 { Comments, as tokens, separate other tokens } { empty_main T32i6 { i/**/nt i = 10; } } {FAIL}
Comments, as tokens, separate other tokensTest Case: 3.2-invalid-8Expected Result: FAIL
Regression Test:
tcltest::test 3.2-invalid-7 { Comments, as tokens, separate other tokens } { empty_main T32i7 { int i = 0; i +/**/= 10; } } {FAIL}
An unterminated \ is illegalTest Case: 3.2-invalid-9Expected Result: FAIL
Regression Test:
tcltest::test 3.2-invalid-8 { An unterminated \ is illegal } { compile [saveas T32i8.java "class T32i8{} \\"] } {FAIL}
Even in comments, \u escapes must be legalTest Case: 3.2-invalid-10Expected Result: FAIL
Regression Test:
tcltest::test 3.2-invalid-9 { Even in comments, \u escapes must be legal } { empty_main T32i9 { /* \udefg */ } } {FAIL}
Whitespace, as tokens, separate other tokensTest Case: 3.2-invalid-11Expected Result: FAIL
Regression Test:
tcltest::test 3.2-invalid-10 { Whitespace, as tokens, separate other tokens } { empty_main T32i10 { int i = 0; i + = 10; } } {FAIL}
Whitespace, as tokens, separate other tokensTest Case: 3.2-invalid-12Expected Result: FAIL
Regression Test:
tcltest::test 3.2-invalid-11 { Whitespace, as tokens, separate other tokens } { empty_main T32i11 { int i = 0; i = i > > 1; } } {FAIL}
Whitespace, as tokens, separate other tokensTest Case: 3.2-invalid-13Expected Result: FAIL
Regression Test:
tcltest::test 3.2-invalid-12 { Whitespace, as tokens, separate other tokens } { empty_main T32i12 { int i = 0; i = i > > > 1; } } {FAIL}
Whitespace, as tokens, separate other tokensTest Case: 3.2-invalid-14Expected Result: FAIL
Regression Test:
tcltest::test 3.2-invalid-13 { Whitespace, as tokens, separate other tokens } { empty_main T32i13 { int i = 0; i = i >> > 1; } } {FAIL}
Whitespace, as tokens, separate other tokensTest Case: 3.2-invalid-15Expected Result: FAIL
Regression Test:
tcltest::test 3.2-invalid-14 { Whitespace, as tokens, separate other tokens } { empty_main T32i14 { int i = 0; i = i > >> 1; } } {FAIL}
Whitespace, as tokens, separate other tokensTest Case: 3.2-invalid-16Expected Result: FAIL
Regression Test:
tcltest::test 3.2-invalid-15 { Whitespace, as tokens, separate other tokens } { empty_main T32i15 { int i = 0; boolean b = i > = 1; } } {FAIL}
Whitespace, as tokens, separate other tokensTest Case: 3.2-invalid-17Expected Result: FAIL
Regression Test:
tcltest::test 3.2-invalid-16 { Whitespace, as tokens, separate other tokens } { empty_main T32i16 { int i = 0; i > > = 1; } } {FAIL}
Whitespace, as tokens, separate other tokensTest Case: 3.2-invalid-18Expected Result: FAIL
Regression Test:
tcltest::test 3.2-invalid-17 { Whitespace, as tokens, separate other tokens } { empty_main T32i17 { int i = 0; i >> = 1; } } {FAIL}
Whitespace, as tokens, separate other tokensTest Case: 3.2-invalid-19Expected Result: FAIL
Regression Test:
tcltest::test 3.2-invalid-18 { Whitespace, as tokens, separate other tokens } { empty_main T32i18 { int i = 0; i > >= 1; } } {FAIL}
Whitespace, as tokens, separate other tokensTest Case: 3.2-invalid-20Expected Result: FAIL
Regression Test:
tcltest::test 3.2-invalid-19 { Whitespace, as tokens, separate other tokens } { empty_main T32i19 { int i = 0; i > > > = 1; } } {FAIL}
Whitespace, as tokens, separate other tokensTest Case: 3.2-invalid-21Expected Result: FAIL
Regression Test:
tcltest::test 3.2-invalid-20 { Whitespace, as tokens, separate other tokens } { empty_main T32i20 { int i = 0; i >> >= 1; } } {FAIL}
Whitespace, as tokens, separate other tokensTest Case: 3.2-invalid-22Expected Result: FAIL
Regression Test:
tcltest::test 3.2-invalid-21 { Whitespace, as tokens, separate other tokens } { empty_main T32i21 { int i = 0; i > > >= 1; } } {FAIL}
Whitespace, as tokens, separate other tokensTest Case: 3.2-invalid-23Expected Result: FAIL
Regression Test:
tcltest::test 3.2-invalid-22 { Whitespace, as tokens, separate other tokens } { empty_main T32i22 { int i = 0; i > >> = 1; } } {FAIL}
Whitespace, as tokens, separate other tokensTest Case: 3.2-invalid-24Expected Result: FAIL
Regression Test:
tcltest::test 3.2-invalid-23 { Whitespace, as tokens, separate other tokens } { empty_main T32i23 { int i = 0; i >> > = 1; } } {FAIL}
Whitespace, as tokens, separate other tokensTest Case: 3.2-invalid-25Expected Result: FAIL
Regression Test:
tcltest::test 3.2-invalid-24 { Whitespace, as tokens, separate other tokens } { empty_main T32i24 { int i = 0; i > >>= 1; } } {FAIL}
Whitespace, as tokens, separate other tokensTest Case: 3.2-valid-1Expected Result: FAIL
Regression Test:
tcltest::test 3.2-invalid-25 { Whitespace, as tokens, separate other tokens } { empty_main T32i25 { int i = 0; i >>> = 1; } } {FAIL}
Compiler should recognize difference in tokensTest Case: 3.2-valid-2Expected Result: PASS
Regression Test:
tcltest::test 3.2-valid-1 { Compiler should recognize difference in tokens } { empty_main T32v1 { boolean b1=""+1instanceof String; boolean b2=""+1Linstanceof String; boolean b3=""+1linstanceof String; boolean b4=""+1Dinstanceof String; boolean b5=""+1dinstanceof String; boolean b6=""+1Finstanceof String; boolean b7=""+1finstanceof String; boolean b8=""+0x1instanceof String; boolean b9=""+0xAinstanceof String; boolean b10=""+0xainstanceof String; boolean b11=""+'1'instanceof String; boolean b12=""+1.instanceof String; boolean b13=""+.1instanceof String; } } {PASS}
The parser must consume the largest token, even if another interpretation is validTest Case: 3.2-valid-3Expected Result: PASS
Regression Test:
tcltest::test 3.2-valid-2 { The parser must consume the largest token, even if another interpretation is valid } { empty_main T32v2 { int i = 1/* only one comment, last / performs division *//1; } } {PASS}
The parser must consume the largest tokenExpected Result: PASS
Regression Test:
tcltest::test 3.2-valid-3 { The parser must consume the largest token } { empty_main T32v3 { int i = 1; boolean b = i >= 1; i >>= i >> 1; i >>>= i >>> 1; } } {PASS}
tests/jls/lexical-structure/unicode-escapes
A unicode sequence must have four hex digitsTest Case: 3.3-invalid-2Expected Result: FAIL
Regression Test:
tcltest::test 3.3-invalid-1 { A unicode sequence must have four hex digits } { compile [saveas T33i1.java {class T33i1 { char c = '\u20'; }}] } {FAIL}
A unicode sequence does not recursively form more unicode sequencesTest Case: 3.3-invalid-3Expected Result: FAIL
Regression Test:
tcltest::test 3.3-invalid-2 { A unicode sequence does not recursively form more unicode sequences } { compile [saveas T33i2.java { class T33i2 { String s = "\u005cu005a"; // this sequence is not 'z' } }] } {FAIL}
An even number of \ never form a unicode escapeTest Case: 3.3-invalid-4Expected Result: FAIL
Regression Test:
tcltest::test 3.3-invalid-3 { An even number of \ never form a unicode escape } { compile [saveas T33i3.java {class T33i3 {}/* \\u002a/}] } {FAIL}
Unicode escapes begin with 'u' onlyTest Case: 3.3-invalid-5Expected Result: FAIL
Regression Test:
tcltest::test 3.3-invalid-4 { Unicode escapes begin with 'u' only } { compile [saveas T33i4.java {class T33i4{ char c = '\Uabcd'; }}] } {FAIL}
Test unicode escape cut short by file endTest Case: 3.3-invalid-6Expected Result: FAIL
Regression Test:
tcltest::test 3.3-invalid-5 { Test unicode escape cut short by file end } { compile [saveas T33i5.java {class T33i5{} \u}] } {FAIL}
Test unicode escape cut short by file endTest Case: 3.3-invalid-7Expected Result: FAIL
Regression Test:
tcltest::test 3.3-invalid-6 { Test unicode escape cut short by file end } { compile [saveas T33i6.java {class T33i6{} \uuuua}] } {FAIL}
Test unicode escape cut short by file endTest Case: 3.3-invalid-8Expected Result: FAIL
Regression Test:
tcltest::test 3.3-invalid-7 { Test unicode escape cut short by file end } { compile [saveas T33i7.java {class T33i7{} \u0a}] } {FAIL}
Test unicode escape cut short by file endTest Case: 3.3-valid-1Expected Result: FAIL
Regression Test:
tcltest::test 3.3-invalid-8 { Test unicode escape cut short by file end } { compile [saveas T33i8.java {class T33i8{} \u00a}] } {FAIL}
Multiple u's are allowed in unicode escapesTest Case: 3.3-valid-2Expected Result: PASS
Regression Test:
tcltest::test 3.3-valid-1 { Multiple u's are allowed in unicode escapes } { compile [saveas T33v1.java {class T33v1 { char c = '\uuuuuuuuuuabcd'; }}] } {PASS}
Unicode sequences are case insensitiveTest Case: 3.3-valid-3Expected Result: PASS
Regression Test:
tcltest::test 3.3-valid-2 { Unicode sequences are case insensitive } { compile [saveas T33v2.java { class T33v2 { void foo(int i) { switch (i) { case 0: case (('\uABcD' == '\uabCd') ? 1 : 0): } } } }] } {PASS}
Check that \u replacement matches single quoted charTest Case: 3.3-valid-4Expected Result: PASS
Regression Test:
tcltest::test 3.3-valid-3 { Check that \u replacement matches single quoted char } { compile [saveas T33v3.java { class T33v3 { void foo(int i) { switch (i) { case 0: case (('\u0061' == 'a') ? 1 : 0): } } } }] } {PASS}
Check \u replacements in the ASCII rangeTest Case: 3.3-valid-5Expected Result: PASS
Regression Test:
tcltest::test 3.3-valid-4 { Check \u replacements in the ASCII range } { set class " class T33v4 \{ void foo(int i) \{ switch (i) \{ case 0: " set total_cases 0 # Avoid 10 (\n), 13 (\r), 39 ('), and 92 (\) foreach {low high} {0 9 11 12 14 38 40 91 93 127} { for {set i $low} {$i <= $high} {incr i} { incr total_cases append class [format "%scase ((%d == '\\u%04x') ? %d : 0): // '%c'\n" " " $i $i $total_cases $i] } } append class " \}\n \}\n\}\n" compile [saveas T33v4.java $class] } {PASS}
Unicode \u005c ('\') does not suppress next \Expected Result: PASS
Regression Test:
tcltest::test 3.3-valid-5 { Unicode \u005c ('\') does not suppress next \ } { constant_expression T33v5 {'\u005c\u0030' == 0} } {PASS}
tests/jls/lexical-structure/line-terminators
If this passes, the remaining tests are shotTest Case: 3.4-valid-1Expected Result: FAIL
Regression Test:
tcltest::test 3.4-sanity-1 { If this passes, the remaining tests are shot } { compile [saveas T34s1.java "class T34s1 { // }"] } {FAIL}
CR (\r) is a LineTerminatorTest Case: 3.4-valid-2Expected Result: PASS
Regression Test:
tcltest::test 3.4-valid-1 { CR (\r) is a LineTerminator } { set S \r compile [saveas T34v1.java "class T34v1 { // $S}"] } {PASS}
LF (\n) is a LineTerminatorTest Case: 3.4-valid-3Expected Result: PASS
Regression Test:
tcltest::test 3.4-valid-2 { LF (\n) is a LineTerminator } { set S \n compile [saveas T34v2.java "class T34v2 { // $S}"] } {PASS}
CR (\u000d) is a LineTerminatorTest Case: 3.4-valid-4Expected Result: PASS
Regression Test:
tcltest::test 3.4-valid-3 { CR (\u000d) is a LineTerminator } { set S \\u000d compile [saveas T34v3.java "class T34v3 { // $S}"] } {PASS}
LF (\u000a) is a LineTerminatorTest Case: 3.4-valid-5Expected Result: PASS
Regression Test:
tcltest::test 3.4-valid-4 { LF (\u000a) is a LineTerminator } { set S \\u000a compile [saveas T34v4.java "class T34v4 { // $S}"] } {PASS}
CR (\u000D) is a LineTerminatorTest Case: 3.4-valid-6Expected Result: PASS
Regression Test:
tcltest::test 3.4-valid-5 { CR (\u000D) is a LineTerminator } { set S \\u000D compile [saveas T34v5.java "class T34v5 { // $S}"] } {PASS}
LF (\u000A) is a LineTerminatorTest Case: 3.4-valid-7Expected Result: PASS
Regression Test:
tcltest::test 3.4-valid-6 { LF (\u000A) is a LineTerminator } { set S \\u000A compile [saveas T34v6.java "class T34v6 { // $S}"] } {PASS}
CRLF (\r\n) is a LineTerminatorTest Case: 3.4-valid-8Expected Result: PASS
Regression Test:
tcltest::test 3.4-valid-7 { CRLF (\r\n) is a LineTerminator } { set S \r\n compile [saveas T34v7.java "class T34v7 { // $S}"] } {PASS}
CRLF (\r\u000a) is a LineTerminatorTest Case: 3.4-valid-9Expected Result: PASS
Regression Test:
tcltest::test 3.4-valid-8 { CRLF (\r\u000a) is a LineTerminator } { set S \r\\u000a compile [saveas T34v8.java "class T34v8 { // $S}"] } {PASS}
CRLF (\u000d\n) is a LineTerminatorTest Case: 3.4-valid-10Expected Result: PASS
Regression Test:
tcltest::test 3.4-valid-9 { CRLF (\u000d\n) is a LineTerminator } { set S \\u000d\n compile [saveas T34v9.java "class T34v9 { // $S}"] } {PASS}
CRLF (\r\u000A) is a LineTerminatorTest Case: 3.4-valid-11Expected Result: PASS
Regression Test:
tcltest::test 3.4-valid-10 { CRLF (\r\u000A) is a LineTerminator } { set S \r\\u000A compile [saveas T34v10.java "class T34v10 { // $S}"] } {PASS}
CRLF (\u000D\n) is a LineTerminatorTest Case: 3.4-valid-12Expected Result: PASS
Regression Test:
tcltest::test 3.4-valid-11 { CRLF (\u000D\n) is a LineTerminator } { set S \\u000D\n compile [saveas T34v11.java "class T34v11 { // $S}"] } {PASS}
CRLF (\u000d\u000a) is a LineTerminatorTest Case: 3.4-valid-13Expected Result: PASS
Regression Test:
tcltest::test 3.4-valid-12 { CRLF (\u000d\u000a) is a LineTerminator } { set S \\u000d\\u000a compile [saveas T34v12.java "class T34v12 { // $S}"] } {PASS}
CRLF (\u000d\u000A) is a LineTerminatorTest Case: 3.4-valid-14Expected Result: PASS
Regression Test:
tcltest::test 3.4-valid-13 { CRLF (\u000d\u000A) is a LineTerminator } { set S \\u000d\\u000A compile [saveas T34v13.java "class T34v13 { // $S}"] } {PASS}
CRLF (\u000D\u000a) is a LineTerminatorTest Case: 3.4-valid-15Expected Result: PASS
Regression Test:
tcltest::test 3.4-valid-14 { CRLF (\u000D\u000a) is a LineTerminator } { set S \\u000D\\u000a compile [saveas T34v14.java "class T34v14 { // $S}"] } {PASS}
CRLF (\u000D\u000A) is a LineTerminatorTest Case: 3.4-valid-16Expected Result: PASS
Regression Test:
tcltest::test 3.4-valid-15 { CRLF (\u000D\u000A) is a LineTerminator } { set S \\u000D\\u000A compile [saveas T34v15.java "class T34v15 { // $S}"] } {PASS}
CR (\uuuuu000d) is a LineTerminatorTest Case: 3.4-valid-17Expected Result: PASS
Regression Test:
tcltest::test 3.4-valid-16 { CR (\uuuuu000d) is a LineTerminator } { set S \\uuuuu000d compile [saveas T34v16.java "class T34v16 { // $S}"] } {PASS}
LF (\uuuuu000a) is a LineTerminatorTest Case: 3.4-valid-18Expected Result: PASS
Regression Test:
tcltest::test 3.4-valid-17 { LF (\uuuuu000a) is a LineTerminator } { set S \\uuuuu000a compile [saveas T34v17.java "class T34v17 { // $S}"] } {PASS}
CR (\uuuuu000D) is a LineTerminatorTest Case: 3.4-valid-19Expected Result: PASS
Regression Test:
tcltest::test 3.4-valid-18 { CR (\uuuuu000D) is a LineTerminator } { set S \\uuuuu000D compile [saveas T34v18.java "class T34v18 { // $S}"] } {PASS}
LF (\uuuuu000A) is a LineTerminatorTest Case: 3.4-valid-20Expected Result: PASS
Regression Test:
tcltest::test 3.4-valid-19 { LF (\uuuuu000A) is a LineTerminator } { set S \\uuuuu000A compile [saveas T34v19.java "class T34v19 { // $S}"] } {PASS}
CRLF (\r\uuuuu000a) is a LineTerminatorTest Case: 3.4-valid-21Expected Result: PASS
Regression Test:
tcltest::test 3.4-valid-20 { CRLF (\r\uuuuu000a) is a LineTerminator } { set S \r\\uuuuu000a compile [saveas T34v20.java "class T34v20 { // $S}"] } {PASS}
CRLF (\uuuuu000d\n) is a LineTerminatorTest Case: 3.4-valid-22Expected Result: PASS
Regression Test:
tcltest::test 3.4-valid-21 { CRLF (\uuuuu000d\n) is a LineTerminator } { set S \\uuuuu000d\n compile [saveas T34v21.java "class T34v21 { // $S}"] } {PASS}
CRLF (\r\uuuuu000A) is a LineTerminatorTest Case: 3.4-valid-23Expected Result: PASS
Regression Test:
tcltest::test 3.4-valid-22 { CRLF (\r\uuuuu000A) is a LineTerminator } { set S \r\\uuuuu000A compile [saveas T34v22.java "class T34v22 { // $S}"] } {PASS}
CRLF (\uuuuu000D\n) is a LineTerminatorTest Case: 3.4-valid-24Expected Result: PASS
Regression Test:
tcltest::test 3.4-valid-23 { CRLF (\uuuuu000D\n) is a LineTerminator } { set S \\uuuuu000D\n compile [saveas T34v23.java "class T34v23 { // $S}"] } {PASS}
CRLF (\uuuuu000d\u000a) is a LineTerminatorTest Case: 3.4-valid-25Expected Result: PASS
Regression Test:
tcltest::test 3.4-valid-24 { CRLF (\uuuuu000d\u000a) is a LineTerminator } { set S \\uuuuu000d\\u000a compile [saveas T34v24.java "class T34v24 { // $S}"] } {PASS}
CRLF (\uuuuu000d\u000A) is a LineTerminatorTest Case: 3.4-valid-26Expected Result: PASS
Regression Test:
tcltest::test 3.4-valid-25 { CRLF (\uuuuu000d\u000A) is a LineTerminator } { set S \\uuuuu000d\\u000A compile [saveas T34v25.java "class T34v25 { // $S}"] } {PASS}
CRLF (\uuuuu000D\u000a) is a LineTerminatorTest Case: 3.4-valid-27Expected Result: PASS
Regression Test:
tcltest::test 3.4-valid-26 { CRLF (\uuuuu000D\u000a) is a LineTerminator } { set S \\uuuuu000D\\u000a compile [saveas T34v26.java "class T34v26 { // $S}"] } {PASS}
CRLF (\uuuuu000D\u000A) is a LineTerminatorTest Case: 3.4-valid-28Expected Result: PASS
Regression Test:
tcltest::test 3.4-valid-27 { CRLF (\uuuuu000D\u000A) is a LineTerminator } { set S \\uuuuu000D\\u000A compile [saveas T34v27.java "class T34v27 { // $S}"] } {PASS}
CRLF (\u000d\uuuuu000a) is a LineTerminatorTest Case: 3.4-valid-29Expected Result: PASS
Regression Test:
tcltest::test 3.4-valid-28 { CRLF (\u000d\uuuuu000a) is a LineTerminator } { set S \\u000d\\uuuuu000a compile [saveas T34v28.java "class T34v28 { // $S}"] } {PASS}
CRLF (\u000d\uuuuu000A) is a LineTerminatorTest Case: 3.4-valid-30Expected Result: PASS
Regression Test:
tcltest::test 3.4-valid-29 { CRLF (\u000d\uuuuu000A) is a LineTerminator } { set S \\u000d\\uuuuu000A compile [saveas T34v29.java "class T34v29 { // $S}"] } {PASS}
CRLF (\u000D\uuuuu000a) is a LineTerminatorTest Case: 3.4-valid-31Expected Result: PASS
Regression Test:
tcltest::test 3.4-valid-30 { CRLF (\u000D\uuuuu000a) is a LineTerminator } { set S \\u000D\\uuuuu000a compile [saveas T34v30.java "class T34v30 { // $S}"] } {PASS}
CRLF (\u000D\uuuuu000A) is a LineTerminatorTest Case: 3.4-valid-32Expected Result: PASS
Regression Test:
tcltest::test 3.4-valid-31 { CRLF (\u000D\uuuuu000A) is a LineTerminator } { set S \\u000D\\uuuuu000A compile [saveas T34v31.java "class T34v31 { // $S}"] } {PASS}
CRLF (\uuuuu000d\uuuuu000a) is a LineTerminatorTest Case: 3.4-valid-33Expected Result: PASS
Regression Test:
tcltest::test 3.4-valid-32 { CRLF (\uuuuu000d\uuuuu000a) is a LineTerminator } { set S \\uuuuu000d\\uuuuu000a compile [saveas T34v32.java "class T34v32 { // $S}"] } {PASS}
CRLF (\uuuuu000d\uuuuu000A) is a LineTerminatorTest Case: 3.4-valid-34Expected Result: PASS
Regression Test:
tcltest::test 3.4-valid-33 { CRLF (\uuuuu000d\uuuuu000A) is a LineTerminator } { set S \\uuuuu000d\\uuuuu000A compile [saveas T34v33.java "class T34v33 { // $S}"] } {PASS}
CRLF (\uuuuu000D\uuuuu000a) is a LineTerminatorTest Case: 3.4-valid-35Expected Result: PASS
Regression Test:
tcltest::test 3.4-valid-34 { CRLF (\uuuuu000D\uuuuu000a) is a LineTerminator } { set S \\uuuuu000D\\uuuuu000a compile [saveas T34v34.java "class T34v34 { // $S}"] } {PASS}
CRLF (\uuuuu000D\uuuuu000A) is a LineTerminatorTest Case: 3.4-line-number-1Expected Result: PASS
Regression Test:
tcltest::test 3.4-valid-35 { CRLF (\uuuuu000D\uuuuu000A) is a LineTerminator } { set S \\uuuuu000D\\uuuuu000A compile [saveas T34v35.java "class T34v35 { // $S}"] } {PASS}
CR (\r) is a LineTerminatorTest Case: 3.4-line-number-2Expected Result: 1
Regression Test:
tcltest::test 3.4-line-number-1 { CR (\r) is a LineTerminator } { set S \r compile [saveas T34ln1.java "${S}class T34ln1 {}oops"] match_err_or_warn {*.java*2*} } {1}
LF (\n) is a LineTerminatorTest Case: 3.4-line-number-3Expected Result: 1
Regression Test:
tcltest::test 3.4-line-number-2 { LF (\n) is a LineTerminator } { set S \n compile [saveas T34ln2.java "${S}class T34ln2 {}oops"] match_err_or_warn {*.java*2*} } {1}
CR (\u000d) is a LineTerminatorTest Case: 3.4-line-number-4Expected Result: 1
Regression Test:
tcltest::test 3.4-line-number-3 { CR (\u000d) is a LineTerminator } { set S \\u000d compile [saveas T34ln3.java "${S}class T34ln3 {}oops"] match_err_or_warn {*.java*2*} } {1}
LF (\u000a) is a LineTerminatorTest Case: 3.4-line-number-5Expected Result: 1
Regression Test:
tcltest::test 3.4-line-number-4 { LF (\u000a) is a LineTerminator } { set S \\u000a compile [saveas T34ln4.java "${S}class T34ln4 {}oops"] match_err_or_warn {*.java*2*} } {1}
CR (\u000D) is a LineTerminatorTest Case: 3.4-line-number-6Expected Result: 1
Regression Test:
tcltest::test 3.4-line-number-5 { CR (\u000D) is a LineTerminator } { set S \\u000D compile [saveas T34ln5.java "${S}class T34ln5 {}oops"] match_err_or_warn {*.java*2*} } {1}
LF (\u000A) is a LineTerminatorTest Case: 3.4-line-number-7Expected Result: 1
Regression Test:
tcltest::test 3.4-line-number-6 { LF (\u000A) is a LineTerminator } { set S \\u000A compile [saveas T34ln6.java "${S}class T34ln6 {}oops"] match_err_or_warn {*.java*2*} } {1}
CRLF (\r\n) is a LineTerminatorTest Case: 3.4-line-number-8Expected Result: 1
Regression Test:
tcltest::test 3.4-line-number-7 { CRLF (\r\n) is a LineTerminator } { set S \r\n compile [saveas T34ln7.java "${S}class T34ln7 {}oops"] match_err_or_warn {*.java*2*} } {1}
CRLF (\r\u000a) is a LineTerminatorTest Case: 3.4-line-number-9Expected Result: 1
Regression Test:
tcltest::test 3.4-line-number-8 { CRLF (\r\u000a) is a LineTerminator } { set S \r\\u000a compile [saveas T34ln8.java "${S}class T34ln8 {}oops"] match_err_or_warn {*.java*2*} } {1}
CRLF (\u000d\n) is a LineTerminatorTest Case: 3.4-line-number-10Expected Result: 1
Regression Test:
tcltest::test 3.4-line-number-9 { CRLF (\u000d\n) is a LineTerminator } { set S \\u000d\n compile [saveas T34ln9.java "${S}class T34ln9 {}oops"] match_err_or_warn {*.java*2*} } {1}
CRLF (\r\u000A) is a LineTerminatorTest Case: 3.4-line-number-11Expected Result: 1
Regression Test:
tcltest::test 3.4-line-number-10 { CRLF (\r\u000A) is a LineTerminator } { set S \r\\u000A compile [saveas T34ln10.java "${S}class T34ln10{}oops"] match_err_or_warn {*.java*2*} } {1}
CRLF (\u000D\n) is a LineTerminatorTest Case: 3.4-line-number-12Expected Result: 1
Regression Test:
tcltest::test 3.4-line-number-11 { CRLF (\u000D\n) is a LineTerminator } { set S \\u000D\n compile [saveas T34ln11.java "${S}class T34ln11{}oops"] match_err_or_warn {*.java*2*} } {1}
CRLF (\u000d\u000a) is a LineTerminatorTest Case: 3.4-line-number-13Expected Result: 1
Regression Test:
tcltest::test 3.4-line-number-12 { CRLF (\u000d\u000a) is a LineTerminator } { set S \\u000d\\u000a compile [saveas T34ln12.java "${S}class T34ln12{}oops"] match_err_or_warn {*.java*2*} } {1}
CRLF (\u000d\u000A) is a LineTerminatorTest Case: 3.4-line-number-14Expected Result: 1
Regression Test:
tcltest::test 3.4-line-number-13 { CRLF (\u000d\u000A) is a LineTerminator } { set S \\u000d\\u000A compile [saveas T34ln13.java "${S}class T34ln13{}oops"] match_err_or_warn {*.java*2*} } {1}
CRLF (\u000D\u000a) is a LineTerminatorTest Case: 3.4-line-number-15Expected Result: 1
Regression Test:
tcltest::test 3.4-line-number-14 { CRLF (\u000D\u000a) is a LineTerminator } { set S \\u000D\\u000a compile [saveas T34ln14.java "${S}class T34ln14{}oops"] match_err_or_warn {*.java*2*} } {1}
CRLF (\u000D\u000A) is a LineTerminatorTest Case: 3.4-line-number-16Expected Result: 1
Regression Test:
tcltest::test 3.4-line-number-15 { CRLF (\u000D\u000A) is a LineTerminator } { set S \\u000D\\u000A compile [saveas T34ln15.java "${S}class T34ln15{}oops"] match_err_or_warn {*.java*2*} } {1}
CRCR (\r\r) is two LineTerminatorsTest Case: 3.4-line-number-17Expected Result: 1
Regression Test:
tcltest::test 3.4-line-number-16 { CRCR (\r\r) is two LineTerminators } { set S \r\r compile [saveas T34ln16.java "${S}class T34ln16{}oops"] match_err_or_warn {*.java*3*} } {1}
CRCR (\u000d\u000d) is two LineTerminatorsTest Case: 3.4-line-number-18Expected Result: 1
Regression Test:
tcltest::test 3.4-line-number-17 { CRCR (\u000d\u000d) is two LineTerminators } { set S \\u000d\\u000d compile [saveas T34ln17.java "${S}class T34ln17{}oops"] match_err_or_warn {*.java*3*} } {1}
LFLF (\n\n) is two LineTerminatorsTest Case: 3.4-line-number-19Expected Result: 1
Regression Test:
tcltest::test 3.4-line-number-18 { LFLF (\n\n) is two LineTerminators } { set S \n\n compile [saveas T34ln18.java "${S}class T34ln18{}oops"] match_err_or_warn {*.java*3*} } {1}
LFLF (\u000a\u000a) is two LineTerminatorsTest Case: 3.4-line-number-20Expected Result: 1
Regression Test:
tcltest::test 3.4-line-number-19 { LFLF (\u000a\u000a) is two LineTerminators } { set S \\u000a\\u000a compile [saveas T34ln19.java "${S}class T34ln19{}oops"] match_err_or_warn {*.java*3*} } {1}
LFCR (\n\r) is two LineTerminatorsTest Case: 3.4-line-number-21Expected Result: 1
Regression Test:
tcltest::test 3.4-line-number-20 { LFCR (\n\r) is two LineTerminators } { set S \n\r compile [saveas T34ln20.java "${S}class T34ln20{}oops"] match_err_or_warn {*.java*3*} } {1}
LFCR (\u000a\u000d) is two LineTerminatorsTest Case: 3.4-line-number-22Expected Result: 1
Regression Test:
tcltest::test 3.4-line-number-21 { LFCR (\u000a\u000d) is two LineTerminators } { set S \\u000a\\u000d compile [saveas T34ln21.java "${S}class T34ln21{}oops"] match_err_or_warn {*.java*3*} } {1}
CRLFCRLF (\r\n\r\n) is two LineTerminatorsTest Case: 3.4-line-number-23Expected Result: 1
Regression Test:
tcltest::test 3.4-line-number-22 { CRLFCRLF (\r\n\r\n) is two LineTerminators } { set S \r\n\r\n compile [saveas T34ln22.java "${S}class T34ln22{}oops"] match_err_or_warn {*.java*3*} } {1}
CRLFCRLF (\u000d\u000a\u000d\u000a) is two LineTerminatorsTest Case: 3.4-line-number-24Expected Result: 1
Regression Test:
tcltest::test 3.4-line-number-23 { CRLFCRLF (\u000d\u000a\u000d\u000a) is two LineTerminators } { set S \\u000d\\u000a\\u000d\\u000a compile [saveas T34ln23.java "${S}class T34ln23{}oops"] match_err_or_warn {*.java*3*} } {1}
CRCRLFLF (\r\r\n\n) is three LineTerminatorsTest Case: 3.4-line-number-25Expected Result: 1
Regression Test:
tcltest::test 3.4-line-number-24 { CRCRLFLF (\r\r\n\n) is three LineTerminators } { set S \r\r\n\n compile [saveas T34ln24.java "${S}class T34ln24{}oops"] match_err_or_warn {*.java*4*} } {1}
CRCRLFLF (\u000d\u000d\u000a\u000a) is three LineTerminatorsExpected Result: 1
Regression Test:
tcltest::test 3.4-line-number-25 { CRCRLFLF (\u000d\u000d\u000a\u000a) is three LineTerminators } { set S \\u000d\\u000d\\u000a\\u000a compile [saveas T34ln25.java "${S}class T34ln25{}oops"] match_err_or_warn {*.java*4*} } {1}
tests/jls/lexical-structure/input-elements-and-tokens
The input sequence CRCR (0x0d0d) should be treated as two line terminators with an empty collection of input elements between them.Test Case: 3.5-2Expected Result: PASS
Regression Test:
tcltest::test 3.5-1 { The input sequence CRCR (0x0d0d) should be treated as two line terminators with an empty collection of input elements between them.} { set S \r\r compile [saveas T351.java "class T351 {$S$S}"] } {PASS}
The input sequence LFLF (0x0a0a) should be treated as two line terminators with an empty collection of input elements between them.Test Case: 3.5-3Expected Result: PASS
Regression Test:
tcltest::test 3.5-2 { The input sequence LFLF (0x0a0a) should be treated as two line terminators with an empty collection of input elements between them.} { set S \n\n compile [saveas T352.java "class T352 {$S$S}"] } {PASS}
The input sequence LFCR (0x0a0d) should be treated as two line terminators with an empty collection of input elements between them.Test Case: 3.5-4Expected Result: PASS
Regression Test:
tcltest::test 3.5-3 { The input sequence LFCR (0x0a0d) should be treated as two line terminators with an empty collection of input elements between them.} { set S \n\r compile [saveas T353.java "class T353 {$S$S}"] } {PASS}
The input sequence CRLFCRLF (0x0d0a0d0a) should be treated as two line terminators with an empty collection of input elements between them.Test Case: 3.5-5Expected Result: PASS
Regression Test:
tcltest::test 3.5-4 { The input sequence CRLFCRLF (0x0d0a0d0a) should be treated as two line terminators with an empty collection of input elements between them.} { set S \r\n\r\n compile [saveas T354.java "class T354 {$S$S}"] } {PASS}
The input sequence CRCRLF (0x0d0d0a) should be treated as two line terminators with an empty collection of input elements between them.Test Case: 3.5-6Expected Result: PASS
Regression Test:
tcltest::test 3.5-5 { The input sequence CRCRLF (0x0d0d0a) should be treated as two line terminators with an empty collection of input elements between them.} { set S \r\r\n compile [saveas T355.java "class T355 {$S$S}"] } {PASS}
The input sequence LFCRLF (0x0a0d0a) should be treated as two line terminators with an empty collection of input elements between them.Test Case: 3.5-7Expected Result: PASS
Regression Test:
tcltest::test 3.5-6 { The input sequence LFCRLF (0x0a0d0a) should be treated as two line terminators with an empty collection of input elements between them.} { set S \n\r\n compile [saveas T356.java "class T356 {$S$S}"] } {PASS}
The input sequence CRLFCR (0x0d0a0d) should be treated as two line terminators with an empty collection of input elements between them.Test Case: 3.5-8Expected Result: PASS
Regression Test:
tcltest::test 3.5-7 { The input sequence CRLFCR (0x0d0a0d) should be treated as two line terminators with an empty collection of input elements between them.} { set S \r\n\r compile [saveas T357.java "class T357 {$S$S}"] } {PASS}
The input sequence CRLFLF (0x0d0a0a) should be treated as two line terminators with an empty collection of input elements between them.Test Case: 3.5-9Expected Result: PASS
Regression Test:
tcltest::test 3.5-8 { The input sequence CRLFLF (0x0d0a0a) should be treated as two line terminators with an empty collection of input elements between them.} { set S \r\n\n compile [saveas T358.java "class T358 {$S$S}"] } {PASS}
The ASCII SUB character (0x1a) should be ignored if it is the last character in the escaped stream.Test Case: 3.5-10Expected Result: PASS
Regression Test:
tcltest::test 3.5-9 { The ASCII SUB character (0x1a) should be ignored if it is the last character in the escaped stream. } { set S \x1a compile [saveas T359.java "class T359 { }$S"] } {PASS}
The ASCII SUB character (0x1a) should be ignored if it is the last character in the escaped stream.Test Case: 3.5-11Expected Result: PASS
Regression Test:
tcltest::test 3.5-10 { The ASCII SUB character (0x1a) should be ignored if it is the last character in the escaped stream. } { set S \\u001a compile [saveas T3510.java "class T3510 { }$S"] } {PASS}
The ASCII SUB character (0x1a) should be ignored if it is the last character in the escaped stream.Test Case: 3.5-12Expected Result: FAIL
Regression Test:
tcltest::test 3.5-11 { The ASCII SUB character (0x1a) should be ignored if it is the last character in the escaped stream. } { set S \x1a compile [saveas T3511.java "class T3511 { $S }"] } {FAIL}
The ASCII SUB character (0x1a) may not be duplicated as the last ignored character in the stream.Test Case: 3.5-13Expected Result: FAIL
Regression Test:
tcltest::test 3.5-12 { The ASCII SUB character (0x1a) may not be duplicated as the last ignored character in the stream. } { set S \x1a compile [saveas T3512.java "class T3512 {} $S$S"] } {FAIL}
The ASCII SUB character (0x1a) may not be duplicated as the last ignored character in the stream.Test Case: 3.5-14Expected Result: FAIL
Regression Test:
tcltest::test 3.5-13 { The ASCII SUB character (0x1a) may not be duplicated as the last ignored character in the stream. } { set S \\u001a compile [saveas T3513.java "class T3513 {} $S$S"] } {FAIL}
The ASCII SUB character (0x1a) may not be duplicated as the last ignored character in the stream.Test Case: 3.5-15Expected Result: FAIL
Regression Test:
tcltest::test 3.5-14 { The ASCII SUB character (0x1a) may not be duplicated as the last ignored character in the stream. } { set S \x1a\\u001a compile [saveas T3514.java "class T3514 {} $S"] } {FAIL}
The ASCII SUB character (0x1a) may not be duplicated as the last ignored character in the stream.Test Case: 3.5-16Expected Result: FAIL
Regression Test:
tcltest::test 3.5-15 { The ASCII SUB character (0x1a) may not be duplicated as the last ignored character in the stream. } { set S \\u001a\x1a compile [saveas T3515.java "class T3515 {} $S"] } {FAIL}
Unicode byte-order-mark is not valid after decoding (however, it may be first character, but not \u escape, if file is Unicode encoded; as Unicode requires that character to be skipped)Test Case: 3.5-17Expected Result: FAIL
Regression Test:
tcltest::test 3.5-16 { Unicode byte-order-mark is not valid after decoding (however, it may be first character, but not \u escape, if file is Unicode encoded; as Unicode requires that character to be skipped) } { compile [saveas T3516.java "\ufeff class T3616 {}"] } {FAIL}
Unicode reverse-bom is not valid after decoding (however, it may be first character, but not \u escape, if file is Unicode encoded; as Unicode requires that character to be skipped)Expected Result: FAIL
Regression Test:
tcltest::test 3.5-17 { Unicode reverse-bom is not valid after decoding (however, it may be first character, but not \u escape, if file is Unicode encoded; as Unicode requires that character to be skipped) } { compile [saveas T3517.java "\ufffe class T3617 {}"] } {FAIL}
tests/jls/lexical-structure/white-space
Vertical tab (Ctrl-K) '\v' is not whitespaceTest Case: 3.6-invalid-2Expected Result: FAIL
Regression Test:
tcltest::test 3.6-invalid-1 { Vertical tab (Ctrl-K) '\v' is not whitespace } { whitespace T36i1 \v } {FAIL}
Vertical tab (Ctrl-K) '\u000b' is not whitespaceTest Case: 3.6-invalid-3Expected Result: FAIL
Regression Test:
tcltest::test 3.6-invalid-2 { Vertical tab (Ctrl-K) '\u000b' is not whitespace } { whitespace T36i2 {\u000b} } {FAIL}
Backspace (Ctrl-H) '\b' is not whitespaceTest Case: 3.6-invalid-4Expected Result: FAIL
Regression Test:
tcltest::test 3.6-invalid-3 { Backspace (Ctrl-H) '\b' is not whitespace } { whitespace T36i3 \b } {FAIL}
Backspace (Ctrl-H) '\u0008' is not whitespaceTest Case: 3.6-invalid-5Expected Result: FAIL
Regression Test:
tcltest::test 3.6-invalid-4 { Backspace (Ctrl-H) '\u0008' is not whitespace } { whitespace T36i4 {\u0008} } {FAIL}
Alert (Ctrl-G) '\a' is not whitespaceTest Case: 3.6-invalid-6Expected Result: FAIL
Regression Test:
tcltest::test 3.6-invalid-5 { Alert (Ctrl-G) '\a' is not whitespace } { whitespace T36i5 \a } {FAIL}
Alert (Ctrl-G) '\u0007' is not whitespaceTest Case: 3.6-invalid-7Expected Result: FAIL
Regression Test:
tcltest::test 3.6-invalid-6 { Alert (Ctrl-G) '\u0007' is not whitespace } { whitespace T36i6 {\u0007} } {FAIL}
Null '\0' is not whitespaceTest Case: 3.6-invalid-8Expected Result: FAIL
Regression Test:
tcltest::test 3.6-invalid-7 { Null '\0' is not whitespace } { whitespace T36i7 \0 } {FAIL}
Null '\u0000' is not whitespaceTest Case: 3.6-invalid-9Expected Result: FAIL
Regression Test:
tcltest::test 3.6-invalid-8 { Null '\u0000' is not whitespace } { whitespace T36i8 {\u0000} } {FAIL}
Sub (Ctrl-Z) '\u001a' is not whitespaceTest Case: 3.6-invalid-10Expected Result: FAIL
Regression Test:
tcltest::test 3.6-invalid-9 { Sub (Ctrl-Z) '\u001a' is not whitespace } { whitespace T36i9 {\u001a} } {FAIL}
Ascii separators '\u001c'-'\u001f' are not whitespaceTest Case: 3.6-invalid-11Expected Result: FAIL
Regression Test:
tcltest::test 3.6-invalid-10 { Ascii separators '\u001c'-'\u001f' are not whitespace } { whitespace T36i10 {\u001c} } {FAIL}
Unicode whitespace is not always Java whitespaceTest Case: 3.6-invalid-12Expected Result: FAIL
Regression Test:
tcltest::test 3.6-invalid-11 { Unicode whitespace is not always Java whitespace } { whitespace T36i11 {\u00a1} } {FAIL}
Unicode whitespace is not always Java whitespaceTest Case: 3.6-invalid-13Expected Result: FAIL
Regression Test:
tcltest::test 3.6-invalid-12 { Unicode whitespace is not always Java whitespace } { whitespace T36i12 {\u2008} } {FAIL}
Unicode line separators are not whitespaceTest Case: 3.6-invalid-14Expected Result: FAIL
Regression Test:
tcltest::test 3.6-invalid-13 { Unicode line separators are not whitespace } { whitespace T36i13 {\u2028} } {FAIL}
Unicode paragraph separators are not whitespaceTest Case: 3.6-valid-1Expected Result: FAIL
Regression Test:
tcltest::test 3.6-invalid-14 { Unicode paragraph separators are not whitespace } { whitespace T36i14 {\u2029} } {FAIL}
Linefeed (Ctrl-J) '\n' is whitespaceTest Case: 3.6-valid-2Expected Result: PASS
Regression Test:
tcltest::test 3.6-valid-1 { Linefeed (Ctrl-J) '\n' is whitespace } { whitespace T36v1 \n } {PASS}
Linefeed (Ctrl-J) '\u000a' is whitespaceTest Case: 3.6-valid-3Expected Result: PASS
Regression Test:
tcltest::test 3.6-valid-2 { Linefeed (Ctrl-J) '\u000a' is whitespace } { whitespace T36v2 {\u000a} } {PASS}
Carriage Return (Ctrl-M) '\r' is whitespaceTest Case: 3.6-valid-4Expected Result: PASS
Regression Test:
tcltest::test 3.6-valid-3 { Carriage Return (Ctrl-M) '\r' is whitespace } { whitespace T36v3 \r } {PASS}
Carriage Return (Ctrl-M) '\u000d' is whitespaceTest Case: 3.6-valid-5Expected Result: PASS
Regression Test:
tcltest::test 3.6-valid-4 { Carriage Return (Ctrl-M) '\u000d' is whitespace } { whitespace T36v4 {\u000d} } {PASS}
CR/LF '\r\n' is whitespaceTest Case: 3.6-valid-6Expected Result: PASS
Regression Test:
tcltest::test 3.6-valid-5 { CR/LF '\r\n' is whitespace } { whitespace T36v5 \r\n } {PASS}
CR/LF '\u000d\u000a' is whitespaceTest Case: 3.6-valid-7Expected Result: PASS
Regression Test:
tcltest::test 3.6-valid-6 { CR/LF '\u000d\u000a' is whitespace } { whitespace T36v6 {\u000d\u000a} } {PASS}
Space ' ' is whitespaceTest Case: 3.6-valid-8Expected Result: PASS
Regression Test:
tcltest::test 3.6-valid-7 { Space ' ' is whitespace } { whitespace T36v7 " " } {PASS}
Space '\u0020' is whitespaceTest Case: 3.6-valid-9Expected Result: PASS
Regression Test:
tcltest::test 3.6-valid-8 { Space '\u0020' is whitespace } { whitespace T36v8 {\u0020} } {PASS}
Tab (Ctrl-I) '\t' is whitespaceTest Case: 3.6-valid-10Expected Result: PASS
Regression Test:
tcltest::test 3.6-valid-9 { Tab (Ctrl-I) '\t' is whitespace } { whitespace T36v9 \t } {PASS}
Tab (Ctrl-I) '\u0009' is whitespaceTest Case: 3.6-valid-11Expected Result: PASS
Regression Test:
tcltest::test 3.6-valid-10 { Tab (Ctrl-I) '\u0009' is whitespace } { whitespace T36v10 {\u0009} } {PASS}
Form Feed (Ctrl-L) '\f' is whitespaceTest Case: 3.6-valid-12Expected Result: PASS
Regression Test:
tcltest::test 3.6-valid-11 { Form Feed (Ctrl-L) '\f' is whitespace } { whitespace T36v11 \f } {PASS}
Form Feed (Ctrl-L) '\u000c' is whitespaceExpected Result: PASS
Regression Test:
tcltest::test 3.6-valid-12 { Form Feed (Ctrl-L) '\u000c' is whitespace } { whitespace T36v12 {\u000c} } {PASS}
tests/jls/lexical-structure/comments
/* anything */ is a commentTest Case: 3.7-2Expected Result: PASS
Regression Test:
tcltest::test 3.7-1 { /* anything */ is a comment } { compile [saveas T371.java "class T371 {/* / * // * / exit */}"] } {PASS}
/* */ comment can span multiple linesTest Case: 3.7-3Expected Result: PASS
Regression Test:
tcltest::test 3.7-2 { /* */ comment can span multiple lines } { compile [saveas T372.java "class T372 {/* hello\n bye \n*/}"] } {PASS}
// comment inside /* */ comment is ignoredTest Case: 3.7-4Expected Result: PASS
Regression Test:
tcltest::test 3.7-3 { // comment inside /* */ comment is ignored } { compile [saveas T373.java "class T373 {/* hello\n // */}"] } {PASS}
// comment inside // comment is ignoredTest Case: 3.7-5Expected Result: PASS
Regression Test:
tcltest::test 3.7-4 { // comment inside // comment is ignored } { compile [saveas T374.java "class T374 {// //\n}"] } {PASS}
/* */ comment inside // comment is ignoredTest Case: 3.7-6Expected Result: PASS
Regression Test:
tcltest::test 3.7-5 { /* */ comment inside // comment is ignored } { compile [saveas T375.java "class T375 {// /*\n//*/\n}"] } {PASS}
/* or // inside /* */ comment is ignoredTest Case: 3.7-7Expected Result: PASS
Regression Test:
tcltest::test 3.7-6 { /* or // inside /* */ comment is ignored } { compile [saveas T376.java "class T376 {/* comment /* // /* */}"] } {PASS}
/* or // inside /** */ comment is ignoredTest Case: 3.7-8Expected Result: PASS
Regression Test:
tcltest::test 3.7-7 { /* or // inside /** */ comment is ignored } { compile [saveas T377.java "class T377 {/** comment /* // /* */}"] } {PASS}
/**/ is a documentaiton commentTest Case: 3.7-9Expected Result: PASS
Regression Test:
tcltest::test 3.7-8 { /**/ is a documentaiton comment } { compile [saveas T378.java "class T378 {/**/}"] } {PASS}
// comment separates tokensTest Case: 3.7-10Expected Result: PASS
Regression Test:
tcltest::test 3.7-9 { // comment separates tokens } { compile [saveas T379.java "class T379 {int//\ni;}"] } {PASS}
/**/ comment separates tokensTest Case: 3.7-11Expected Result: PASS
Regression Test:
tcltest::test 3.7-10 { /**/ comment separates tokens } { compile [saveas T3710.java "class T3710 {int/* */i;}"] } {PASS}
// comment cannot appear in literalTest Case: 3.7-12Expected Result: FAIL
Regression Test:
tcltest::test 3.7-11 { // comment cannot appear in literal } { compile [saveas T3711.java "class T3711 {float f = 1.//\n0;}"] } {FAIL}
/**/ comment cannot appear in literalTest Case: 3.7-13Expected Result: FAIL
Regression Test:
tcltest::test 3.7-12 { /**/ comment cannot appear in literal } { compile [saveas T3712.java "class T3712 {float f = 1./* */0;}"] } {FAIL}
// comment cannot appear in literalTest Case: 3.7-14Expected Result: FAIL
Regression Test:
tcltest::test 3.7-13 { // comment cannot appear in literal } { compile [saveas T3713.java "class T3713 {char c = 'a//\n';}"] } {FAIL}
/**/ comment cannot appear in literalTest Case: 3.7-15Expected Result: FAIL
Regression Test:
tcltest::test 3.7-14 { /**/ comment cannot appear in literal } { compile [saveas T3714.java "class T3714 {char c = 'a/* */';}"] } {FAIL}
/* must have matching */Test Case: 3.7-16Expected Result: FAIL
Regression Test:
tcltest::test 3.7-15 { /* must have matching */ } { compile [saveas T3715.java "class T3715 {} /*"] } {FAIL}
// may end at EOF. See Sun bug 4386773: the grammar given in the JLS will (most likely) be clarified to allow this, since virtually every previous compiler has done soTest Case: 3.7-17Expected Result: PASS
Regression Test:
tcltest::test 3.7-16 { // may end at EOF. See Sun bug 4386773: the grammar given in the JLS will (most likely) be clarified to allow this, since virtually every previous compiler has done so } { compile [saveas T3716.java "class T3716 {} //"] } {PASS}
/**/ comment can contain any characters, including \0, unterminated quotesTest Case: 3.7-18Expected Result: PASS
Regression Test:
tcltest::test 3.7-17 { /**/ comment can contain any characters, including \0, unterminated quotes } { empty_class T3717 "/*\0'\"*/" } {PASS}
/**/ comment can contain any characters, including \0, unterminated quotesTest Case: 3.7-19Expected Result: PASS
Regression Test:
tcltest::test 3.7-18 { /**/ comment can contain any characters, including \0, unterminated quotes } { empty_class T3718 {/*\u0000\u0027\u0022*/} } {PASS}
// comment can contain any characters, including \0, unterminated quotesTest Case: 3.7-20Expected Result: PASS
Regression Test:
tcltest::test 3.7-19 { // comment can contain any characters, including \0, unterminated quotes } { empty_class T3719 "//\0'\"" } {PASS}
// comment can contain any characters, including \0, unterminated quotesTest Case: 3.7-21Expected Result: PASS
Regression Test:
tcltest::test 3.7-20 { // comment can contain any characters, including \0, unterminated quotes } { empty_class T3720 {//\u0000\u0027\u0022} } {PASS}
/**/ comment can contain any characters, including ASCII SUBTest Case: 3.7-22Expected Result: PASS
Regression Test:
tcltest::test 3.7-21 { /**/ comment can contain any characters, including ASCII SUB } { empty_class T3721 "/*\x1a*/" } {PASS}
/**/ comment can contain any characters, including ASCII SUBTest Case: 3.7-23Expected Result: PASS
Regression Test:
tcltest::test 3.7-22 { /**/ comment can contain any characters, including ASCII SUB } { empty_class T3722 {/*\u001a*/} } {PASS}
// comment can contain any characters, including ASCII SUBTest Case: 3.7-24Expected Result: PASS
Regression Test:
tcltest::test 3.7-23 { // comment can contain any characters, including ASCII SUB } { empty_class T3723 "//\x1a" } {PASS}
// comment can contain any characters, including ASCII SUBTest Case: 3.7-25Expected Result: PASS
Regression Test:
tcltest::test 3.7-24 { // comment can contain any characters, including ASCII SUB } { empty_class T3724 {//\u001a} } {PASS}
comments may be unicodeTest Case: 3.7-26Expected Result: PASS
Regression Test:
tcltest::test 3.7-25 { comments may be unicode } { empty_main T3725 { \u002f\u002f This is a comment\u000a int i; \u002f\u002a So's this \u002a\u002f i = 1; } } {PASS}
/*/ is not a comment, but an opening for /* */Test Case: 3.7-27Expected Result: FAIL
Regression Test:
tcltest::test 3.7-26 { /*/ is not a comment, but an opening for /* */ } { empty_class T3726 "/*/" } {FAIL}
/*/ is not a comment, but an opening for /* */Test Case: 3.7-28Expected Result: PASS
Regression Test:
tcltest::test 3.7-27 { /*/ is not a comment, but an opening for /* */ } { empty_class T3727 { /*/ */ } } {PASS}
/** */ doc comments are legal, in spite of a bug in the grammar which doesn't allow themTest Case: 3.7-29Expected Result: PASS
Regression Test:
tcltest::test 3.7-28 { /** */ doc comments are legal, in spite of a bug in the grammar which doesn't allow them } { empty_class T3728 "/** */" } {PASS}
/**/ is a legal, degenerate doc comment, in spite of a bug in the grammar which doesn't allow itTest Case: 3.7-30Expected Result: PASS
Regression Test:
tcltest::test 3.7-29 { /**/ is a legal, degenerate doc comment, in spite of a bug in the grammar which doesn't allow it } { empty_class T3729 "/**/" } {PASS}
/* */ comments don't nestTest Case: 3.7-31Expected Result: FAIL
Regression Test:
tcltest::test 3.7-30 { /* */ comments don't nest } { empty_class T3730 "/* /* */ */" } {FAIL}
/* */ comments don't nest in //Test Case: 3.7-32Expected Result: FAIL
Regression Test:
tcltest::test 3.7-31 { /* */ comments don't nest in // } { empty_class T3731 "// /* \n */" } {FAIL}
/** */ comment separates tokensTest Case: 3.7-33Expected Result: PASS
Regression Test:
tcltest::test 3.7-32 { /** */ comment separates tokens } { compile [saveas T3732.java "class T3732 {int/** */i;}"] } {PASS}
/** */ comment separates tokensTest Case: 3.7-34Expected Result: FAIL
Regression Test:
tcltest::test 3.7-33 { /** */ comment separates tokens } { compile [saveas T3733.java "class T3733 {float f = 1./** */0;}"] } {FAIL}
/**/ comment cannot appear in literalTest Case: 3.7-35Expected Result: FAIL
Regression Test:
tcltest::test 3.7-34 { /**/ comment cannot appear in literal } { compile [saveas T3734.java "class T3734 {char c = 'a/** */';}"] } {FAIL}
/** must have matching */Test Case: 3.7-36Expected Result: FAIL
Regression Test:
tcltest::test 3.7-35 { /** must have matching */ } { compile [saveas T3735.java "class T3735 {} /**"] } {FAIL}
/* must have matching */Test Case: 3.7-37Expected Result: FAIL
Regression Test:
tcltest::test 3.7-36 { /* must have matching */ } { compile [saveas T3736.java "class T3736 {} /* "] } {FAIL}
/** must have matching */Test Case: 3.7-38Expected Result: FAIL
Regression Test:
tcltest::test 3.7-37 { /** must have matching */ } { compile [saveas T3737.java "class T3737 {} /** "] } {FAIL}
/* must have matching */Test Case: 3.7-39Expected Result: FAIL
Regression Test:
tcltest::test 3.7-38 { /* must have matching */ } { compile [saveas T3738.java "class T3738 {} /* *"] } {FAIL}
/** must have matching */Test Case: 3.7-line-number-1Expected Result: FAIL
Regression Test:
tcltest::test 3.7-39 { /** must have matching */ } { compile [saveas T3739.java "class T3739 {} /** *"] } {FAIL}
test line counts in commentsTest Case: 3.7-line-number-2Expected Result: 1
Regression Test:
tcltest::test 3.7-line-number-1 { test line counts in comments } { compile [saveas T37ln1.java "class T37ln1 { // \n } oops"] match_err_or_warn {*.java*2*} } {1}
test line counts in commentsTest Case: 3.7-line-number-3Expected Result: 1
Regression Test:
tcltest::test 3.7-line-number-2 { test line counts in comments } { compile [saveas T37ln2.java "class T37ln2 { // \\u000a } oops"] match_err_or_warn {*.java*2*} } {1}
test line counts in commentsTest Case: 3.7-line-number-4Expected Result: 1
Regression Test:
tcltest::test 3.7-line-number-3 { test line counts in comments } { compile [saveas T37ln3.java "class T37ln3 { /* \n */ }oops"] match_err_or_warn {*.java*2*} } {1}
test line counts in commentsTest Case: 3.7-line-number-5Expected Result: 1
Regression Test:
tcltest::test 3.7-line-number-4 { test line counts in comments } { compile [saveas T37ln4.java "class T37ln4 { /* \\u000a */ }oops"] match_err_or_warn {*.java*2*} } {1}
test line counts in commentsTest Case: 3.7-line-number-6Expected Result: 1
Regression Test:
tcltest::test 3.7-line-number-5 { test line counts in comments } { compile [saveas T37ln5.java "class T37ln5 { /*\n */ }oops"] match_err_or_warn {*.java*2*} } {1}
test line counts in commentsTest Case: 3.7-line-number-7Expected Result: 1
Regression Test:
tcltest::test 3.7-line-number-6 { test line counts in comments } { compile [saveas T37ln6.java "class T37ln6 { /*\\u000a */ }oops"] match_err_or_warn {*.java*2*} } {1}
test line counts in commentsTest Case: 3.7-line-number-8Expected Result: 1
Regression Test:
tcltest::test 3.7-line-number-7 { test line counts in comments } { compile [saveas T37ln7.java "class T37ln7 { /* *\n */ }oops"] match_err_or_warn {*.java*2*} } {1}
test line counts in commentsTest Case: 3.7-line-number-9Expected Result: 1
Regression Test:
tcltest::test 3.7-line-number-8 { test line counts in comments } { compile [saveas T37ln8.java "class T37ln8 { /* *\\u000a */ }oops"] match_err_or_warn {*.java*2*} } {1}
test line counts in commentsTest Case: 3.7-line-number-10Expected Result: 1
Regression Test:
tcltest::test 3.7-line-number-9 { test line counts in comments } { compile [saveas T37ln9.java "class T37ln9 { /** \n */ }oops"] match_err_or_warn {*.java*2*} } {1}
test line counts in commentsTest Case: 3.7-line-number-11Expected Result: 1
Regression Test:
tcltest::test 3.7-line-number-10 { test line counts in comments } { compile [saveas T37ln10.java "class T37ln10 { /** \\u000a */ }oops"] match_err_or_warn {*.java*2*} } {1}
test line counts in commentsTest Case: 3.7-line-number-12Expected Result: 1
Regression Test:
tcltest::test 3.7-line-number-11 { test line counts in comments } { compile [saveas T37ln11.java "class T37ln11 { /**\n */ }oops"] match_err_or_warn {*.java*2*} } {1}
test line counts in commentsTest Case: 3.7-line-number-13Expected Result: 1
Regression Test:
tcltest::test 3.7-line-number-12 { test line counts in comments } { compile [saveas T37ln12.java "class T37ln12 { /**\\u000a */ }oops"] match_err_or_warn {*.java*2*} } {1}
test line counts in commentsTest Case: 3.7-line-number-14Expected Result: 1
Regression Test:
tcltest::test 3.7-line-number-13 { test line counts in comments } { compile [saveas T37ln13.java "class T37ln13 { /** *\n */ }oops"] match_err_or_warn {*.java*2*} } {1}
test line counts in commentsExpected Result: 1
Regression Test:
tcltest::test 3.7-line-number-14 { test line counts in comments } { compile [saveas T37ln14.java "class T37ln14 { /** *\\u000a */ }oops"] match_err_or_warn {*.java*2*} } {1}
tests/jls/lexical-structure/identifiers
A keyword cannot be an identifierTest Case: 3.8-invalid-2Expected Result: FAIL
Regression Test:
tcltest::test 3.8-invalid-1 { A keyword cannot be an identifier } { identifier T38i1 int } {FAIL}
A keyword cannot be an identifierTest Case: 3.8-invalid-3Expected Result: FAIL
Regression Test:
tcltest::test 3.8-invalid-2 { A keyword cannot be an identifier } { identifier T38i2 {\u0069\u006e\u0074} } {FAIL}
A boolean literal cannot be an identifierTest Case: 3.8-invalid-4Expected Result: FAIL
Regression Test:
tcltest::test 3.8-invalid-3 { A boolean literal cannot be an identifier } { identifier T38i3 true } {FAIL}
A boolean literal cannot be an identifierTest Case: 3.8-invalid-5Expected Result: FAIL
Regression Test:
tcltest::test 3.8-invalid-4 { A boolean literal cannot be an identifier } { identifier T38i4 {\u0074\u0072\u0075\u0065} } {FAIL}
A null literal cannot be an identifierTest Case: 3.8-invalid-6Expected Result: FAIL
Regression Test:
tcltest::test 3.8-invalid-5 { A null literal cannot be an identifier } { identifier T38i5 null } {FAIL}
A unicode null literal cannot be an identifierTest Case: 3.8-invalid-7Expected Result: FAIL
Regression Test:
tcltest::test 3.8-invalid-6 { A unicode null literal cannot be an identifier } { identifier T38i6 {\u006e\u0075\u006c\u006c} } {FAIL}
The first character of an identifier must satisfy Character.isJavaIdentifierStartTest Case: 3.8-invalid-8Expected Result: FAIL
Regression Test:
tcltest::test 3.8-invalid-7 { The first character of an identifier must satisfy Character.isJavaIdentifierStart } { identifier T38i7 1 } {FAIL}
Trailing characters in an identifier must satisfy Character.isJavaIdentifierPartTest Case: 3.8-invalid-9Expected Result: FAIL
Regression Test:
tcltest::test 3.8-invalid-8 { Trailing characters in an identifier must satisfy Character.isJavaIdentifierPart } { identifier T38i8 i\\uffff } {FAIL}
Invalid, as \0 is not short for \u0000Test Case: 3.8-valid-1Expected Result: FAIL
Regression Test:
tcltest::test 3.8-invalid-9 { Invalid, as \0 is not short for \u0000 } { identifier T38i9 i\\0 } {FAIL}
example identifierTest Case: 3.8-valid-2Expected Result: PASS
Regression Test:
tcltest::test 3.8-valid-1 { example identifier } { identifier T38v1 String } {PASS}
example identifierTest Case: 3.8-valid-3Expected Result: PASS
Regression Test:
tcltest::test 3.8-valid-2 { example identifier } { identifier T38v2 i3 } {PASS}
example identifierTest Case: 3.8-valid-4Expected Result: PASS
Regression Test:
tcltest::test 3.8-valid-3 { example identifier } { identifier T38v3 MAX_VALUE } {PASS}
example identifierTest Case: 3.8-valid-5Expected Result: PASS
Regression Test:
tcltest::test 3.8-valid-4 { example identifier } { identifier T38v4 isLetterOrDigit } {PASS}
valid identifierTest Case: 3.8-valid-6Expected Result: PASS
Regression Test:
tcltest::test 3.8-valid-5 { valid identifier } { identifier T38v5 _ } {PASS}
valid identifier, although discouragedTest Case: 3.8-valid-7Expected Result: OK
Regression Test:
tcltest::test 3.8-valid-6 { valid identifier, although discouraged } { ok_pass_or_warn [identifier T38v6 \$] } {OK}
valid identifier, although discouragedTest Case: 3.8-valid-8Expected Result: OK
Regression Test:
tcltest::test 3.8-valid-7 { valid identifier, although discouraged } { ok_pass_or_warn [identifier T38v7 a_\$1] } {OK}
valid identifier, as \ufeff satisfies Character.isJavaIdentifierPartTest Case: 3.8-valid-9Expected Result: PASS
Regression Test:
tcltest::test 3.8-valid-8 { valid identifier, as \ufeff satisfies Character.isJavaIdentifierPart } { identifier T38v8 i\\ufeff } {PASS}
valid identifier, as \u0000 satisfies Character.isJavaIdentifierPartTest Case: 3.8-valid-10Expected Result: PASS
Regression Test:
tcltest::test 3.8-valid-9 { valid identifier, as \u0000 satisfies Character.isJavaIdentifierPart } { identifier T38v9 i\\u0000 } {PASS}
example of unique identifiersTest Case: 3.8-valid-11Expected Result: PASS
Regression Test:
tcltest::test 3.8-valid-10 { example of unique identifiers } { compile [saveas T38v10.java { class T38v10 { int \u0041; // LATIN CAPITAL A int \u0061; // LATIN SMALL A int \u0391; // GREEK CAPITAL ALPHA int \u0480; // CYRILLIC SMALL A } }] } {PASS}
example of unique identifiersTest Case: 3.8-valid-12Expected Result: PASS
Regression Test:
tcltest::test 3.8-valid-11 { example of unique identifiers } { compile [saveas T38v11.java { class T38v11 { int \u00c1; // LATIN CAPITAL A ACUTE int \u0041\u0301; // LATIN CAPITAL A, followed by NON-SPACING ACUTE } }] } {PASS}
valid identifier, as \u001a satisfies Character.isJavaIdentifierPartTest Case: 3.8-ignorable-1Expected Result: PASS
Regression Test:
tcltest::test 3.8-valid-12 { valid identifier, as \u001a satisfies Character.isJavaIdentifierPart } { identifier T38v12 i\\u001a } {PASS}
JCL docs refer to 200a, but this is a typoTest Case: 3.8-ignorable-2Expected Result: FAIL
Regression Test:
tcltest::test 3.8-ignorable-1 { JCL docs refer to 200a, but this is a typo } { compile [saveas T38ignoreable1.java { class T38ignoreable1 { int i\u200a; } }] } {FAIL}
JCL docs refer to 200a, but real value is 202aExpected Result: PASS
Regression Test:
tcltest::test 3.8-ignorable-2 { JCL docs refer to 200a, but real value is 202a } { compile [saveas T38ignoreable2.java { class T38ignoreable2 { int i\u202a; } }] } {PASS}
tests/jls/lexical-structure/keywords
abstract is a keywordTest Case: 3.9-2Expected Result: FAIL
Regression Test:
tcltest::test 3.9-1 { abstract is a keyword } { keyword T391 abstract } {FAIL}
boolean is a keywordTest Case: 3.9-3Expected Result: FAIL
Regression Test:
tcltest::test 3.9-2 { boolean is a keyword } { keyword T392 boolean } {FAIL}
break is a keywordTest Case: 3.9-4Expected Result: FAIL
Regression Test:
tcltest::test 3.9-3 { break is a keyword } { keyword T393 break } {FAIL}
byte is a keywordTest Case: 3.9-5Expected Result: FAIL
Regression Test:
tcltest::test 3.9-4 { byte is a keyword } { keyword T394 byte } {FAIL}
case is a keywordTest Case: 3.9-6Expected Result: FAIL
Regression Test:
tcltest::test 3.9-5 { case is a keyword } { keyword T395 case } {FAIL}
catch is a keywordTest Case: 3.9-7Expected Result: FAIL
Regression Test:
tcltest::test 3.9-6 { catch is a keyword } { keyword T396 catch } {FAIL}
char is a keywordTest Case: 3.9-8Expected Result: FAIL
Regression Test:
tcltest::test 3.9-7 { char is a keyword } { keyword T397 char } {FAIL}
class is a keywordTest Case: 3.9-9Expected Result: FAIL
Regression Test:
tcltest::test 3.9-8 { class is a keyword } { keyword T398 class } {FAIL}
const is a keywordTest Case: 3.9-10Expected Result: FAIL
Regression Test:
tcltest::test 3.9-9 { const is a keyword } { keyword T399 const } {FAIL}
continue is a keywordTest Case: 3.9-11Expected Result: FAIL
Regression Test:
tcltest::test 3.9-10 { continue is a keyword } { keyword T3910 continue } {FAIL}
default is a keywordTest Case: 3.9-12Expected Result: FAIL
Regression Test:
tcltest::test 3.9-11 { default is a keyword } { keyword T3911 default } {FAIL}
do is a keywordTest Case: 3.9-13Expected Result: FAIL
Regression Test:
tcltest::test 3.9-12 { do is a keyword } { keyword T3912 do } {FAIL}
double is a keywordTest Case: 3.9-14Expected Result: FAIL
Regression Test:
tcltest::test 3.9-13 { double is a keyword } { keyword T3913 double } {FAIL}
else is a keywordTest Case: 3.9-15Expected Result: FAIL
Regression Test:
tcltest::test 3.9-14 { else is a keyword } { keyword T3914 else } {FAIL}
extends is a keywordTest Case: 3.9-16Expected Result: FAIL
Regression Test:
tcltest::test 3.9-15 { extends is a keyword } { keyword T3915 extends } {FAIL}
final is a keywordTest Case: 3.9-17Expected Result: FAIL
Regression Test:
tcltest::test 3.9-16 { final is a keyword } { keyword T3916 final } {FAIL}
finally is a keywordTest Case: 3.9-18Expected Result: FAIL
Regression Test:
tcltest::test 3.9-17 { finally is a keyword } { keyword T3917 finally } {FAIL}
float is a keywordTest Case: 3.9-19Expected Result: FAIL
Regression Test:
tcltest::test 3.9-18 { float is a keyword } { keyword T3918 float } {FAIL}
for is a keywordTest Case: 3.9-20Expected Result: FAIL
Regression Test:
tcltest::test 3.9-19 { for is a keyword } { keyword T3919 for } {FAIL}
goto is a keywordTest Case: 3.9-21Expected Result: FAIL
Regression Test:
tcltest::test 3.9-20 { goto is a keyword } { keyword T3920 goto } {FAIL}
if is a keywordTest Case: 3.9-22Expected Result: FAIL
Regression Test:
tcltest::test 3.9-21 { if is a keyword } { keyword T3921 if } {FAIL}
implements is a keywordTest Case: 3.9-23Expected Result: FAIL
Regression Test:
tcltest::test 3.9-22 { implements is a keyword } { keyword T3922 implements } {FAIL}
import is a keywordTest Case: 3.9-24Expected Result: FAIL
Regression Test:
tcltest::test 3.9-23 { import is a keyword } { keyword T3923 import } {FAIL}
instanceof is a keywordTest Case: 3.9-25Expected Result: FAIL
Regression Test:
tcltest::test 3.9-24 { instanceof is a keyword } { keyword T3924 instanceof } {FAIL}
int is a keywordTest Case: 3.9-26Expected Result: FAIL
Regression Test:
tcltest::test 3.9-25 { int is a keyword } { keyword T3925 int } {FAIL}
interface is a keywordTest Case: 3.9-27Expected Result: FAIL
Regression Test:
tcltest::test 3.9-26 { interface is a keyword } { keyword T3926 interface } {FAIL}
long is a keywordTest Case: 3.9-28Expected Result: FAIL
Regression Test:
tcltest::test 3.9-27 { long is a keyword } { keyword T3927 long } {FAIL}
native is a keywordTest Case: 3.9-29Expected Result: FAIL
Regression Test:
tcltest::test 3.9-28 { native is a keyword } { keyword T3928 native } {FAIL}
new is a keywordTest Case: 3.9-30Expected Result: FAIL
Regression Test:
tcltest::test 3.9-29 { new is a keyword } { keyword T3929 new } {FAIL}
package is a keywordTest Case: 3.9-31Expected Result: FAIL
Regression Test:
tcltest::test 3.9-30 { package is a keyword } { keyword T3930 package } {FAIL}
private is a keywordTest Case: 3.9-32Expected Result: FAIL
Regression Test:
tcltest::test 3.9-31 { private is a keyword } { keyword T3931 private } {FAIL}
protected is a keywordTest Case: 3.9-33Expected Result: FAIL
Regression Test:
tcltest::test 3.9-32 { protected is a keyword } { keyword T3932 protected } {FAIL}
public is a keywordTest Case: 3.9-34Expected Result: FAIL
Regression Test:
tcltest::test 3.9-33 { public is a keyword } { keyword T3933 public } {FAIL}
return is a keywordTest Case: 3.9-35Expected Result: FAIL
Regression Test:
tcltest::test 3.9-34 { return is a keyword } { keyword T3934 return } {FAIL}
short is a keywordTest Case: 3.9-36Expected Result: FAIL
Regression Test:
tcltest::test 3.9-35 { short is a keyword } { keyword T3935 short } {FAIL}
static is a keywordTest Case: 3.9-37Expected Result: FAIL
Regression Test:
tcltest::test 3.9-36 { static is a keyword } { keyword T3936 static } {FAIL}
strictfp is a keyword, it is new to version 2 of the JLS specTest Case: 3.9-38Expected Result: FAIL
Regression Test:
tcltest::test 3.9-37 { strictfp is a keyword, it is new to version 2 of the JLS spec } { keyword T3937 strictfp } {FAIL}
super is a keywordTest Case: 3.9-39Expected Result: FAIL
Regression Test:
tcltest::test 3.9-38 { super is a keyword } { keyword T3938 super } {FAIL}
switch is a keywordTest Case: 3.9-40Expected Result: FAIL
Regression Test:
tcltest::test 3.9-39 { switch is a keyword } { keyword T3939 switch } {FAIL}
synchronized is a keywordTest Case: 3.9-41Expected Result: FAIL
Regression Test:
tcltest::test 3.9-40 { synchronized is a keyword } { keyword T3940 synchronized } {FAIL}
this is a keywordTest Case: 3.9-42Expected Result: FAIL
Regression Test:
tcltest::test 3.9-41 { this is a keyword } { keyword T3941 this } {FAIL}
throw is a keywordTest Case: 3.9-43Expected Result: FAIL
Regression Test:
tcltest::test 3.9-42 { throw is a keyword } { keyword T3942 throw } {FAIL}
throws is a keywordTest Case: 3.9-44Expected Result: FAIL
Regression Test:
tcltest::test 3.9-43 { throws is a keyword } { keyword T3943 throws } {FAIL}
transient is a keywordTest Case: 3.9-45Expected Result: FAIL
Regression Test:
tcltest::test 3.9-44 { transient is a keyword } { keyword T3944 transient } {FAIL}
try is a keywordTest Case: 3.9-46Expected Result: FAIL
Regression Test:
tcltest::test 3.9-45 { try is a keyword } { keyword T3945 try } {FAIL}
void is a keywordTest Case: 3.9-47Expected Result: FAIL
Regression Test:
tcltest::test 3.9-46 { void is a keyword } { keyword T3946 void } {FAIL}
volatile is a keywordTest Case: 3.9-48Expected Result: FAIL
Regression Test:
tcltest::test 3.9-47 { volatile is a keyword } { keyword T3947 volatile } {FAIL}
while is a keywordTest Case: 3.9-valid-1Expected Result: FAIL
Regression Test:
tcltest::test 3.9-48 { while is a keyword } { keyword T3948 while } {FAIL}
asm is not a keywordTest Case: 3.9-valid-2Expected Result: PASS
Regression Test:
tcltest::test 3.9-valid-1 { asm is not a keyword } { keyword T39v1 asm } {PASS}
auto is not a keywordTest Case: 3.9-valid-3Expected Result: PASS
Regression Test:
tcltest::test 3.9-valid-2 { auto is not a keyword } { keyword T39v2 auto } {PASS}
bool is not a keywordTest Case: 3.9-valid-4Expected Result: PASS
Regression Test:
tcltest::test 3.9-valid-3 { bool is not a keyword } { keyword T39v3 bool } {PASS}
const_cast is not a keywordTest Case: 3.9-valid-5Expected Result: PASS
Regression Test:
tcltest::test 3.9-valid-4 { const_cast is not a keyword } { keyword T39v4 const_cast } {PASS}
delete is not a keywordTest Case: 3.9-valid-6Expected Result: PASS
Regression Test:
tcltest::test 3.9-valid-5 { delete is not a keyword } { keyword T39v5 delete } {PASS}
dynamic_cast is not a keywordTest Case: 3.9-valid-7Expected Result: PASS
Regression Test:
tcltest::test 3.9-valid-6 { dynamic_cast is not a keyword } { keyword T39v6 dynamic_cast } {PASS}
enum is not a keywordTest Case: 3.9-valid-8Expected Result: PASS
Regression Test:
tcltest::test 3.9-valid-7 { enum is not a keyword } { keyword T39v7 enum } {PASS}
explicit is not a keywordTest Case: 3.9-valid-9Expected Result: PASS
Regression Test:
tcltest::test 3.9-valid-8 { explicit is not a keyword } { keyword T39v8 explicit } {PASS}
extern is not a keywordTest Case: 3.9-valid-10Expected Result: PASS
Regression Test:
tcltest::test 3.9-valid-9 { extern is not a keyword } { keyword T39v9 extern } {PASS}
friend is not a keywordTest Case: 3.9-valid-11Expected Result: PASS
Regression Test:
tcltest::test 3.9-valid-10 { friend is not a keyword } { keyword T39v10 friend } {PASS}
inline is not a keywordTest Case: 3.9-valid-12Expected Result: PASS
Regression Test:
tcltest::test 3.9-valid-11 { inline is not a keyword } { keyword T39v11 inline } {PASS}
mutable is not a keywordTest Case: 3.9-valid-13Expected Result: PASS
Regression Test:
tcltest::test 3.9-valid-12 { mutable is not a keyword } { keyword T39v12 mutable } {PASS}
namespace is not a keywordTest Case: 3.9-valid-14Expected Result: PASS
Regression Test:
tcltest::test 3.9-valid-13 { namespace is not a keyword } { keyword T39v13 namespace } {PASS}
operator is not a keywordTest Case: 3.9-valid-15Expected Result: PASS
Regression Test:
tcltest::test 3.9-valid-14 { operator is not a keyword } { keyword T39v14 operator } {PASS}
register is not a keywordTest Case: 3.9-valid-16Expected Result: PASS
Regression Test:
tcltest::test 3.9-valid-15 { register is not a keyword } { keyword T39v15 register } {PASS}
reinterpret_cast is not a keywordTest Case: 3.9-valid-17Expected Result: PASS
Regression Test:
tcltest::test 3.9-valid-16 { reinterpret_cast is not a keyword } { keyword T39v16 reinterpret_cast } {PASS}
signed is not a keywordTest Case: 3.9-valid-18Expected Result: PASS
Regression Test:
tcltest::test 3.9-valid-17 { signed is not a keyword } { keyword T39v17 signed } {PASS}
sizeof is not a keywordTest Case: 3.9-valid-19Expected Result: PASS
Regression Test:
tcltest::test 3.9-valid-18 { sizeof is not a keyword } { keyword T39v18 sizeof } {PASS}
static_cast is not a keywordTest Case: 3.9-valid-20Expected Result: PASS
Regression Test:
tcltest::test 3.9-valid-19 { static_cast is not a keyword } { keyword T39v19 static_cast } {PASS}
struct is not a keywordTest Case: 3.9-valid-21Expected Result: PASS
Regression Test:
tcltest::test 3.9-valid-20 { struct is not a keyword } { keyword T39v20 struct } {PASS}
template is not a keywordTest Case: 3.9-valid-22Expected Result: PASS
Regression Test:
tcltest::test 3.9-valid-21 { template is not a keyword } { keyword T39v21 template } {PASS}
typedef is not a keywordTest Case: 3.9-valid-23Expected Result: PASS
Regression Test:
tcltest::test 3.9-valid-22 { typedef is not a keyword } { keyword T39v22 typedef } {PASS}
typeid is not a keywordTest Case: 3.9-valid-24Expected Result: PASS
Regression Test:
tcltest::test 3.9-valid-23 { typeid is not a keyword } { keyword T39v23 typeid } {PASS}
typename is not a keywordTest Case: 3.9-valid-25Expected Result: PASS
Regression Test:
tcltest::test 3.9-valid-24 { typename is not a keyword } { keyword T39v24 typename } {PASS}
union is not a keywordTest Case: 3.9-valid-26Expected Result: PASS
Regression Test:
tcltest::test 3.9-valid-25 { union is not a keyword } { keyword T39v25 union } {PASS}
unsigned is not a keywordTest Case: 3.9-valid-27Expected Result: PASS
Regression Test:
tcltest::test 3.9-valid-26 { unsigned is not a keyword } { keyword T39v26 unsigned } {PASS}
using is not a keywordTest Case: 3.9-valid-28Expected Result: PASS
Regression Test:
tcltest::test 3.9-valid-27 { using is not a keyword } { keyword T39v27 using } {PASS}
virtual is not a keywordTest Case: 3.9-valid-29Expected Result: PASS
Regression Test:
tcltest::test 3.9-valid-28 { virtual is not a keyword } { keyword T39v28 virtual } {PASS}
wchar_t is not a keywordExpected Result: PASS
Regression Test:
tcltest::test 3.9-valid-29 { wchar_t is not a keyword } { keyword T39v29 wchar_t } {PASS}
tests/jls/lexical-structure/literals/integer-literals
2147483648 may appear only as the operand of unary -Test Case: 3.10.1-invalid-2Expected Result: FAIL
Regression Test:
tcltest::test 3.10.1-invalid-1 { 2147483648 may appear only as the operand of unary - } { literal T3101i1 2147483648 } {FAIL}
decimal larger than 2147483648 is not an intTest Case: 3.10.1-invalid-3Expected Result: FAIL
Regression Test:
tcltest::test 3.10.1-invalid-2 { decimal larger than 2147483648 is not an int } { literal T3101i2 12345678901 } {FAIL}
octal larger than 037777777777 is not an intTest Case: 3.10.1-invalid-4Expected Result: FAIL
Regression Test:
tcltest::test 3.10.1-invalid-3 { octal larger than 037777777777 is not an int } { literal T3101i3 040000000000 } {FAIL}
hex larger than 0xffffffff is not an intTest Case: 3.10.1-invalid-5Expected Result: FAIL
Regression Test:
tcltest::test 3.10.1-invalid-4 { hex larger than 0xffffffff is not an int } { literal T3101i4 0x123456789 } {FAIL}
9223372036854775808L may appear only as the operand of unary -Test Case: 3.10.1-invalid-6Expected Result: FAIL
Regression Test:
tcltest::test 3.10.1-invalid-5 { 9223372036854775808L may appear only as the operand of unary - } { literal T3101i5 9223372036854775808L } {FAIL}
decimal larger than 9223372036854775808L is not an intTest Case: 3.10.1-invalid-7Expected Result: FAIL
Regression Test:
tcltest::test 3.10.1-invalid-6 { decimal larger than 9223372036854775808L is not an int } { literal T3101i6 12345678901234567890L } {FAIL}
octal larger than 01777777777777777777777L is not an intTest Case: 3.10.1-invalid-8Expected Result: FAIL
Regression Test:
tcltest::test 3.10.1-invalid-7 { octal larger than 01777777777777777777777L is not an int } { literal T3101i7 02000000000000000000000L } {FAIL}
hex larger than 0xffffffffffffffffL is not an intTest Case: 3.10.1-invalid-9Expected Result: FAIL
Regression Test:
tcltest::test 3.10.1-invalid-8 { hex larger than 0xffffffffffffffffL is not an int } { literal T3101i8 0x123456789abcdef01L } {FAIL}
octal cannot contain '9'Test Case: 3.10.1-invalid-10Expected Result: FAIL
Regression Test:
tcltest::test 3.10.1-invalid-9 { octal cannot contain '9' } { literal T3101i9 09 } {FAIL}
2147483648 may appear only as the operand of unary -Test Case: 3.10.1-invalid-11Expected Result: FAIL
Regression Test:
tcltest::test 3.10.1-invalid-10 { 2147483648 may appear only as the operand of unary - } { literal T3101i10 0-2147483648 } {FAIL}
9223372036854775808L may appear only as the operand of unary -Test Case: 3.10.1-invalid-12Expected Result: FAIL
Regression Test:
tcltest::test 3.10.1-invalid-11 { 9223372036854775808L may appear only as the operand of unary - } { literal T3101i11 0-9223372036854775808L } {FAIL}
0x must be followed by digitsTest Case: 3.10.1-invalid-13Expected Result: FAIL
Regression Test:
tcltest::test 3.10.1-invalid-12 { 0x must be followed by digits } { literal T3101i12 0x } {FAIL}
0x must be followed by digitsTest Case: 3.10.1-valid-1Expected Result: FAIL
Regression Test:
tcltest::test 3.10.1-invalid-13 { 0x must be followed by digits } { literal T3101i13 0xL } {FAIL}
example decimal int literalTest Case: 3.10.1-valid-2Expected Result: PASS
Regression Test:
tcltest::test 3.10.1-valid-1 { example decimal int literal } { literal T3101v1 0 } {PASS}
example octal int literalTest Case: 3.10.1-valid-3Expected Result: PASS
Regression Test:
tcltest::test 3.10.1-valid-2 { example octal int literal } { literal T3101v2 0372 } {PASS}
example hex int literalTest Case: 3.10.1-valid-4Expected Result: PASS
Regression Test:
tcltest::test 3.10.1-valid-3 { example hex int literal } { literal T3101v3 0xDadaCafe } {PASS}
example hex int literalTest Case: 3.10.1-valid-5Expected Result: PASS
Regression Test:
tcltest::test 3.10.1-valid-4 { example hex int literal } { literal T3101v4 0X00FF00FF } {PASS}
decimal 0, octal 00, and hex 0x0 are equalTest Case: 3.10.1-valid-6Expected Result: PASS
Regression Test:
tcltest::test 3.10.1-valid-5 { decimal 0, octal 00, and hex 0x0 are equal } { compile [saveas T3101v5.java { class T3101v5 { void foo(int i) { switch (i) { case 0: case ((0 == 00) ? 1 : 0): case ((0 == 0x0) ? 2 : 0): case ((00 == 0x0) ? 3 : 0): } } } }] } {PASS}
2147483648 is valid when negativeTest Case: 3.10.1-valid-7Expected Result: PASS
Regression Test:
tcltest::test 3.10.1-valid-6 { 2147483648 is valid when negative } { literal T3101v6 -2147483648 } {PASS}
example long literal, suffix l (ell) == LTest Case: 3.10.1-valid-8Expected Result: PASS
Regression Test:
tcltest::test 3.10.1-valid-7 { example long literal, suffix l (ell) == L } { literal T3101v7 0l } {PASS}
example long literalTest Case: 3.10.1-valid-9Expected Result: PASS
Regression Test:
tcltest::test 3.10.1-valid-8 { example long literal } { literal T3101v8 0777L } {PASS}
example long literalTest Case: 3.10.1-valid-10Expected Result: PASS
Regression Test:
tcltest::test 3.10.1-valid-9 { example long literal } { literal T3101v9 0X100000000L } {PASS}
example long literalTest Case: 3.10.1-valid-11Expected Result: PASS
Regression Test:
tcltest::test 3.10.1-valid-10 { example long literal } { literal T3101v10 2147483648L } {PASS}
example long literalTest Case: 3.10.1-valid-12Expected Result: PASS
Regression Test:
tcltest::test 3.10.1-valid-11 { example long literal } { literal T3101v11 0xC0B0L } {PASS}
9223372036854775807L is valid when negativeTest Case: 3.10.1-valid-13Expected Result: PASS
Regression Test:
tcltest::test 3.10.1-valid-12 { 9223372036854775807L is valid when negative } { literal T3101v12 -9223372036854775807L } {PASS}
An octal that fits in 32 bits is legal intTest Case: 3.10.1-valid-14Expected Result: PASS
Regression Test:
tcltest::test 3.10.1-valid-13 { An octal that fits in 32 bits is legal int } { literal T3101v13 0000000000000000000000000001 } {PASS}
A hex literal that fits in 64 bits is a legal longExpected Result: PASS
Regression Test:
tcltest::test 3.10.1-valid-14 { A hex literal that fits in 64 bits is a legal long } { literal T3101v14 0x000012345678CAFEBABEL } {PASS}
tests/jls/lexical-structure/literals/floating-point-literals
Whole or fractional part must have a digitTest Case: 3.10.2-invalid-2Expected Result: FAIL
Regression Test:
tcltest::test 3.10.2-invalid-1 { Whole or fractional part must have a digit } { literal T3102i1 .e2 } {FAIL}
Whole or fractional part must have a digitTest Case: 3.10.2-invalid-3Expected Result: FAIL
Regression Test:
tcltest::test 3.10.2-invalid-2 { Whole or fractional part must have a digit } { literal T3102i2 .F } {FAIL}
Invalid DigitsTest Case: 3.10.2-invalid-4Expected Result: FAIL
Regression Test:
tcltest::test 3.10.2-invalid-3 { Invalid Digits } { literal T3102i3 E.1e20 } {FAIL}
ExponentPart must include a SignedIntegerTest Case: 3.10.2-invalid-5Expected Result: FAIL
Regression Test:
tcltest::test 3.10.2-invalid-4 { ExponentPart must include a SignedInteger } { literal T3102i4 1.E } {FAIL}
ExponentPart must include a SignedIntegerTest Case: 3.10.2-invalid-6Expected Result: FAIL
Regression Test:
tcltest::test 3.10.2-invalid-5 { ExponentPart must include a SignedInteger } { literal T3102i5 1.e } {FAIL}
ExponentPart must include a SignedIntegerTest Case: 3.10.2-invalid-7Expected Result: FAIL
Regression Test:
tcltest::test 3.10.2-invalid-6 { ExponentPart must include a SignedInteger } { literal T3102i6 1.E+ } {FAIL}
ExponentPart must include a SignedIntegerTest Case: 3.10.2-invalid-8Expected Result: FAIL
Regression Test:
tcltest::test 3.10.2-invalid-7 { ExponentPart must include a SignedInteger } { literal T3102i7 1.E- } {FAIL}
ExponentPart must include a SignedIntegerTest Case: 3.10.2-invalid-9Expected Result: FAIL
Regression Test:
tcltest::test 3.10.2-invalid-8 { ExponentPart must include a SignedInteger } { literal T3102i8 .1eF } {FAIL}
ExponentPart must include a SignedIntegerTest Case: 3.10.2-invalid-10Expected Result: FAIL
Regression Test:
tcltest::test 3.10.2-invalid-9 { ExponentPart must include a SignedInteger } { literal T3102i9 .1e-D } {FAIL}
ExponentPart must include a SignedIntegerTest Case: 3.10.2-invalid-11Expected Result: FAIL
Regression Test:
tcltest::test 3.10.2-invalid-10 { ExponentPart must include a SignedInteger } { literal T3102i10 1e-d } {FAIL}
ExponentPart must include a SignedIntegerTest Case: 3.10.2-round-1Expected Result: FAIL
Regression Test:
tcltest::test 3.10.2-invalid-11 { ExponentPart must include a SignedInteger } { literal T3102i11 .1e+F } {FAIL}
It is an error for a floating-point literal to round to an infinityTest Case: 3.10.2-round-2Expected Result: FAIL
Regression Test:
tcltest::test 3.10.2-round-1 { It is an error for a floating-point literal to round to an infinity } { literal T3102r1 1e39f } {FAIL}
It is an error for a floating-point literal to round to an infinityTest Case: 3.10.2-round-3Expected Result: FAIL
Regression Test:
tcltest::test 3.10.2-round-2 { It is an error for a floating-point literal to round to an infinity } { literal T3102r2 -1e310 } {FAIL}
It is an error for a nonzero floating-point to round to zeroTest Case: 3.10.2-round-4Expected Result: FAIL
Regression Test:
tcltest::test 3.10.2-round-3 { It is an error for a nonzero floating-point to round to zero } { literal T3102r3 1e-47f } {FAIL}
It is an error for a nonzero floating-point to round to zeroTest Case: 3.10.2-round-5Expected Result: FAIL
Regression Test:
tcltest::test 3.10.2-round-4 { It is an error for a nonzero floating-point to round to zero } { literal T3102r4 -1e-326 } {FAIL}
It is an error for a floating-point literal to round to an infinityTest Case: 3.10.2-round-6Expected Result: FAIL
Regression Test:
tcltest::test 3.10.2-round-5 { It is an error for a floating-point literal to round to an infinity } { literal T3102r5 340282356779733661637539395458142568448f } {FAIL}
It is an error for a floating-point literal to round to an infinityTest Case: 3.10.2-round-7Expected Result: FAIL
Regression Test:
tcltest::test 3.10.2-round-6 { It is an error for a floating-point literal to round to an infinity } { literal T3102r6 179769313486231580793728971405303415079934132710037826936173778980444968292764750946649017977587207096330286416692887910946555547851940402630657488671505820681908902000708383676273854845817711531764475730270069855571366959622842914819860834936475292719074168444365510704342711559699508093042880177904174497792.0 } {FAIL}
It is an error for a nonzero floating-point to round to zeroTest Case: 3.10.2-round-8Expected Result: FAIL
Regression Test:
tcltest::test 3.10.2-round-7 { It is an error for a nonzero floating-point to round to zero } { literal T3102r7 0.000000000000000000000000000000000000000000000700649232162408535461864791644958065640130970938257885878534141944895541342930300743319094181060791015625f } {FAIL}
It is an error for a nonzero floating-point to round to zeroTest Case: 3.10.2-round-9Expected Result: FAIL
Regression Test:
tcltest::test 3.10.2-round-8 { It is an error for a nonzero floating-point to round to zero } { literal T3102r8 0.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024703282292062327208828439643411068618252990130716238221279284125033775363510437593264991818081799618989828234772285886546332835517796989819938739800539093906315035659515570226392290858392449105184435931802849936536152500319370457678249219365623669863658480757001585769269903706311928279558551332927834338409351978015531246597263579574622766465272827220056374006485499977096599470454020828166226237857393450736339007967761930577506740176324673600968951340535537458516661134223766678604162159680461914467291840300530057530849048765391711386591646239524912623653881879636239373280423891018672348497668235089863388587925628302755995657524455507255189313690836254779186948667994968324049705821028513185451396213837722826145437693412532098591327667236328125 } {FAIL}
test rounding at border of float denormsTest Case: 3.10.2-round-10Expected Result: PASS
Regression Test:
tcltest::test 3.10.2-round-9 { test rounding at border of float denorms } { constant_expression T3102r9 {0.00000000000000000000000000000000000001175494280757364291727882991035766513322858992758990427682963118425003064965173038558532425668090581893920898437499999f == 1.1754942e-38f} {0.000000000000000000000000000000000000011754942807573642917278829910357665133228589927589904276829631184250030649651730385585324256680905818939208984375f == 1.1754944e-38f} {0.00000000000000000000000000000000000001175494280757364291727882991035766513322858992758990427682963118425003064965173038558532425668090581893920898437500001f == 1.1754944e-38f} } {PASS}
test rounding at border of double denorms. Note that Javac 1.3 enters an infinite loop on this test.Test Case: 3.10.2-round-11Expected Result: PASS
Regression Test:
tcltest::test 3.10.2-round-10 { test rounding at border of double denorms. Note that Javac 1.3 enters an infinite loop on this test. } { constant_expression T3102r10 {0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000022250738585072011360574097967091319759348195463516456480234261097248222220210769455165295239081350879141491589130396211068700864386945946455276572074078206217433799881410632673292535522868813721490129811224514518898490572223072852551331557550159143974763979834118019993239625482890171070818506906306666559949382757725720157630626906633326475653000092458883164330377797918696120494973903778297049050510806099407302629371289589500035837999672072543043602840788957717961509455167482434710307026091446215722898802581825451803257070188608721131280795122334262883686223215037756666225039825343359745688844239002654981983854879482922068947216898310996983658468140228542433306603398508864458040010349339704275671864433837704860378616227717385456230658746790140867233276367187499999 == 2.225073858507201e-308} {0.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000222507385850720113605740979670913197593481954635164564802342610972482222202107694551652952390813508791414915891303962110687008643869459464552765720740782062174337998814106326732925355228688137214901298112245145188984905722230728525513315575501591439747639798341180199932396254828901710708185069063066665599493827577257201576306269066333264756530000924588831643303777979186961204949739037782970490505108060994073026293712895895000358379996720725430436028407889577179615094551674824347103070260914462157228988025818254518032570701886087211312807951223342628836862232150377566662250398253433597456888442390026549819838548794829220689472168983109969836584681402285424333066033985088644580400103493397042756718644338377048603786162277173854562306587467901408672332763671875 == 2.2250738585072014e-308} {0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000022250738585072011360574097967091319759348195463516456480234261097248222220210769455165295239081350879141491589130396211068700864386945946455276572074078206217433799881410632673292535522868813721490129811224514518898490572223072852551331557550159143974763979834118019993239625482890171070818506906306666559949382757725720157630626906633326475653000092458883164330377797918696120494973903778297049050510806099407302629371289589500035837999672072543043602840788957717961509455167482434710307026091446215722898802581825451803257070188608721131280795122334262883686223215037756666225039825343359745688844239002654981983854879482922068947216898310996983658468140228542433306603398508864458040010349339704275671864433837704860378616227717385456230658746790140867233276367187500001 == 2.2250738585072014e-308} } {PASS}
test rounding at largest float where Float.MIN_VALUE is 1 ulpTest Case: 3.10.2-round-12Expected Result: PASS
Regression Test:
tcltest::test 3.10.2-round-11 { test rounding at largest float where Float.MIN_VALUE is 1 ulp } { constant_expression T3102r11 {0.00000000000000000000000000000000000002350988491449805367214912435885053862149911421504883761540137648996591935440791942824034777004271745681762695312499999999f == 2.3509884e-38f} {0.00000000000000000000000000000000000002350988491449805367214912435885053862149911421504883761540137648996591935440791942824034777004271745681762695312500000000f == 2.3509884e-38f} {0.00000000000000000000000000000000000002350988491449805367214912435885053862149911421504883761540137648996591935440791942824034777004271745681762695312500000001f == 2.3509886e-38f} {0.00000000000000000000000000000000000002350988631579651799696619528258012191141524549531077949191714824703420324419900211410094925668090581893920898437499999999f == 2.3509886e-38f} {0.00000000000000000000000000000000000002350988631579651799696619528258012191141524549531077949191714824703420324419900211410094925668090581893920898437500000000f == 2.3509887e-38f} {0.00000000000000000000000000000000000002350988631579651799696619528258012191141524549531077949191714824703420324419900211410094925668090581893920898437500000001f == 2.3509887e-38f} } {PASS}
test rounding at largest double where Double.MIN_VALUE is 1 ulpTest Case: 3.10.2-float-1Expected Result: PASS
Regression Test:
tcltest::test 3.10.2-round-12 { test rounding at largest double where Double.MIN_VALUE is 1 ulp } { constant_expression T3102r12 {0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044501477170144020250819966727949918635852426585926051135169509122872622312493126406953054127118942431783801370080830523154578251545303238277269592368457430440993619708911874715081505094180604803751173783204118519353387964161152051487413083163272520124606023105869053620631175265621765214646643181420505164043632222668006474326056011713528291579642227455489682133472873831754840341397809846934151055619529382191981473003234105366170879223151087335413188049110555339027884856781219017754500629806224571029581637117459456877330110324211689177656713705497387108207822477584250967061891687062782163335299376138075114200886249979505279101870966346394401564490729731565935244123171539810221213221201847003580761626016356864581135848683152156368691976240370422601699829101562499999 == 4.450147717014402e-308} {0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044501477170144020250819966727949918635852426585926051135169509122872622312493126406953054127118942431783801370080830523154578251545303238277269592368457430440993619708911874715081505094180604803751173783204118519353387964161152051487413083163272520124606023105869053620631175265621765214646643181420505164043632222668006474326056011713528291579642227455489682133472873831754840341397809846934151055619529382191981473003234105366170879223151087335413188049110555339027884856781219017754500629806224571029581637117459456877330110324211689177656713705497387108207822477584250967061891687062782163335299376138075114200886249979505279101870966346394401564490729731565935244123171539810221213221201847003580761626016356864581135848683152156368691976240370422601699829101562500000 == 4.450147717014402e-308} {0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044501477170144020250819966727949918635852426585926051135169509122872622312493126406953054127118942431783801370080830523154578251545303238277269592368457430440993619708911874715081505094180604803751173783204118519353387964161152051487413083163272520124606023105869053620631175265621765214646643181420505164043632222668006474326056011713528291579642227455489682133472873831754840341397809846934151055619529382191981473003234105366170879223151087335413188049110555339027884856781219017754500629806224571029581637117459456877330110324211689177656713705497387108207822477584250967061891687062782163335299376138075114200886249979505279101870966346394401564490729731565935244123171539810221213221201847003580761626016356864581135848683152156368691976240370422601699829101562500001 == 4.4501477170144023e-308} {0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044501477170144025191476425140415360401540355268139774785767535266120266568349951413708126829206461084782164986440754321120225206002480547543836695927855394428741579816730655978088636997294650082209345461693939556240574324731139358717913147037364055774449896230603026352327326665938919068627384443806161075753898808234874156196451614819777611032358142380042975188038317843029641638497805266254045146423695015437229044481924252633972472775537202836761223314045275532818152963888710721086727474559560291862013573209842350335698170430223195347466466783839664426537070382566775697838267614310656819420077579872544813734533267952182996686996626897593533069381831182603797982290422495647610946820195511813521925831718993954860378616227717385456230658746790140867233276367187499999 == 4.4501477170144023e-308} {0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044501477170144025191476425140415360401540355268139774785767535266120266568349951413708126829206461084782164986440754321120225206002480547543836695927855394428741579816730655978088636997294650082209345461693939556240574324731139358717913147037364055774449896230603026352327326665938919068627384443806161075753898808234874156196451614819777611032358142380042975188038317843029641638497805266254045146423695015437229044481924252633972472775537202836761223314045275532818152963888710721086727474559560291862013573209842350335698170430223195347466466783839664426537070382566775697838267614310656819420077579872544813734533267952182996686996626897593533069381831182603797982290422495647610946820195511813521925831718993954860378616227717385456230658746790140867233276367187500000 == 4.450147717014403e-308} {0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044501477170144025191476425140415360401540355268139774785767535266120266568349951413708126829206461084782164986440754321120225206002480547543836695927855394428741579816730655978088636997294650082209345461693939556240574324731139358717913147037364055774449896230603026352327326665938919068627384443806161075753898808234874156196451614819777611032358142380042975188038317843029641638497805266254045146423695015437229044481924252633972472775537202836761223314045275532818152963888710721086727474559560291862013573209842350335698170430223195347466466783839664426537070382566775697838267614310656819420077579872544813734533267952182996686996626897593533069381831182603797982290422495647610946820195511813521925831718993954860378616227717385456230658746790140867233276367187500001 == 4.450147717014403e-308} } {PASS}
example float literalTest Case: 3.10.2-float-2Expected Result: PASS
Regression Test:
tcltest::test 3.10.2-float-1 { example float literal } { literal T3102f1 1e1f } {PASS}
example float literalTest Case: 3.10.2-float-3Expected Result: PASS
Regression Test:
tcltest::test 3.10.2-float-2 { example float literal } { literal T3102f2 2.f } {PASS}
example float literalTest Case: 3.10.2-float-4Expected Result: PASS
Regression Test:
tcltest::test 3.10.2-float-3 { example float literal } { literal T3102f3 1.e-1 } {PASS}
example float literalTest Case: 3.10.2-float-5Expected Result: PASS
Regression Test:
tcltest::test 3.10.2-float-4 { example float literal } { literal T3102f4 .3F } {PASS}
example float literalTest Case: 3.10.2-float-6Expected Result: PASS
Regression Test:
tcltest::test 3.10.2-float-5 { example float literal } { literal T3102f5 0f } {PASS}
example float literalTest Case: 3.10.2-float-7Expected Result: PASS
Regression Test:
tcltest::test 3.10.2-float-6 { example float literal } { literal T3102f6 3.14f } {PASS}
example float literalTest Case: 3.10.2-float-8Expected Result: PASS
Regression Test:
tcltest::test 3.10.2-float-7 { example float literal } { literal T3102f7 6.022137e+23f } {PASS}
largest finite float, by JLSTest Case: 3.10.2-float-9Expected Result: PASS
Regression Test:
tcltest::test 3.10.2-float-8 { largest finite float, by JLS } { literal T3102f8 3.40282347e+38f } {PASS}
smallest finite floatTest Case: 3.10.2-float-10Expected Result: PASS
Regression Test:
tcltest::test 3.10.2-float-9 { smallest finite float } { literal T3102f9 1.40239846e-45f } {PASS}
extra 0s don't affect floating point parsingTest Case: 3.10.2-float-11Expected Result: PASS
Regression Test:
tcltest::test 3.10.2-float-10 { extra 0s don't affect floating point parsing } { literal T3102f10 000000000000000000000000000000000000000000000000000000000000000000000000.000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000e00000000000000000000000000000000050f } {PASS}
unicode 1e0FTest Case: 3.10.2-float-12Expected Result: PASS
Regression Test:
tcltest::test 3.10.2-float-11 { unicode 1e0F } { literal T3102f11 {\u0031\u0065\u0030\u0046} } {PASS}
largest finite float, by roundingTest Case: 3.10.2-float-13Expected Result: PASS
Regression Test:
tcltest::test 3.10.2-float-12 { largest finite float, by rounding } { constant_expression T3102f12 {340282356779733661637539395458142568447.99999f == Float.MAX_VALUE} } {PASS}
smallest finite float, by rounding. errors: fail to parse number, round number to zero note: We can't compare to Float.MIN_VALUE because some stupid JDK versions don't use a constant valueTest Case: 3.10.2-float-14Expected Result: PASS
Regression Test:
tcltest::test 3.10.2-float-13 { smallest finite float, by rounding. errors: fail to parse number, round number to zero note: We can't compare to Float.MIN_VALUE because some stupid JDK versions don't use a constant value } { constant_expression T3102f13 {0.00000000000000000000000000000000000000000000070064923216240853546186479164495806564013097093825788587853414194489554134293030074331909418106079101562500001f != 0} } {PASS}
valid float overrides invalid octalTest Case: 3.10.2-float-15Expected Result: PASS
Regression Test:
tcltest::test 3.10.2-float-14 { valid float overrides invalid octal } { constant_expression T3102f14 {08.f == 8} {09.f == 9} {08e0f == 8} {09e0f == 9} {08f == 8} {09f == 9} {08.F == 8} {09.F == 9} {08e0F == 8} {09e0F == 9} {08F == 8} {09F == 9} } {PASS}
valid float overrides invalid octalTest Case: 3.10.2-float-16Expected Result: PASS
Regression Test:
tcltest::test 3.10.2-float-15 { valid float overrides invalid octal } { constant_expression T3102f15 {0180.f == 180} {0190.f == 190} {0180e0f == 180} {0190e0f == 190} {0180f == 180} {0190f == 190} {0180.F == 180} {0190.F == 190} {0180e0F == 180} {0190e0F == 190} {0180F == 180} {0190F == 190} } {PASS}
check for 0 followed by letterTest Case: 3.10.2-double-1Expected Result: PASS
Regression Test:
tcltest::test 3.10.2-float-16 { check for 0 followed by letter } { constant_expression T3102f16 {0e+0f == 0e-0f} {0E1f == 0} {0f == 0F} } {PASS}
example double literalTest Case: 3.10.2-double-2Expected Result: PASS
Regression Test:
tcltest::test 3.10.2-double-1 { example double literal } { literal T3102d1 1E1D } {PASS}
example double literalTest Case: 3.10.2-double-3Expected Result: PASS
Regression Test:
tcltest::test 3.10.2-double-2 { example double literal } { literal T3102d2 2. } {PASS}
example double literalTest Case: 3.10.2-double-4Expected Result: PASS
Regression Test:
tcltest::test 3.10.2-double-3 { example double literal } { literal T3102d3 .3 } {PASS}
example double literalTest Case: 3.10.2-double-5Expected Result: PASS
Regression Test:
tcltest::test 3.10.2-double-4 { example double literal } { literal T3102d4 0.0 } {PASS}
example double literalTest Case: 3.10.2-double-6Expected Result: PASS
Regression Test:
tcltest::test 3.10.2-double-5 { example double literal } { literal T3102d5 3.14 } {PASS}
example double literalTest Case: 3.10.2-double-7Expected Result: PASS
Regression Test:
tcltest::test 3.10.2-double-6 { example double literal } { literal T3102d6 1e-9d } {PASS}
example double literalTest Case: 3.10.2-double-8Expected Result: PASS
Regression Test:
tcltest::test 3.10.2-double-7 { example double literal } { literal T3102d7 1e137 } {PASS}
largest finite double, by JLSTest Case: 3.10.2-double-9Expected Result: PASS
Regression Test:
tcltest::test 3.10.2-double-8 { largest finite double, by JLS } { literal T3102d8 1.79769313486231570e+308 } {PASS}
smallest finite doubleTest Case: 3.10.2-double-10Expected Result: PASS
Regression Test:
tcltest::test 3.10.2-double-9 { smallest finite double } { literal T3102d9 4.94065645841246544e-324 } {PASS}
the compiler should correctly round denormalized literalsTest Case: 3.10.2-double-11Expected Result: PASS
Regression Test:
tcltest::test 3.10.2-double-10 { the compiler should correctly round denormalized literals } { constant_expression T3102d10 {.0000000000012345678901234567890e+10 == 1.2345678901234568e-2} } {PASS}
extra 0s don't affect floating point parsingTest Case: 3.10.2-double-12Expected Result: PASS
Regression Test:
tcltest::test 3.10.2-double-11 { extra 0s don't affect floating point parsing } { literal T3102d11 000000000000000000000000000000000000000000000000000000000000000000000000.000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000e00000000000000000000000000000000050 } {PASS}
unicode escape the . in float 1.0Test Case: 3.10.2-double-13Expected Result: PASS
Regression Test:
tcltest::test 3.10.2-double-12 { unicode escape the . in float 1.0 } { literal T3102d12 1\u002e0 } {PASS}
largest finite double, by roundingTest Case: 3.10.2-double-14Expected Result: PASS
Regression Test:
tcltest::test 3.10.2-double-13 { largest finite double, by rounding } { constant_expression T3102d13 {179769313486231580793728971405303415079934132710037826936173778980444968292764750946649017977587207096330286416692887910946555547851940402630657488671505820681908902000708383676273854845817711531764475730270069855571366959622842914819860834936475292719074168444365510704342711559699508093042880177904174497791.999999 == Double.MAX_VALUE} } {PASS}
smallest finite double, by rounding errors: fail to parse number, round number to zero note: We can't compare to Double.MIN_VALUE because some stupid JDK versions don't use a constant valueTest Case: 3.10.2-double-15Expected Result: PASS
Regression Test:
tcltest::test 3.10.2-double-14 { smallest finite double, by rounding errors: fail to parse number, round number to zero note: We can't compare to Double.MIN_VALUE because some stupid JDK versions don't use a constant value } { constant_expression T3102d14 {0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002470328229206232720882843964341106861825299013071623822127928412503377536351043759326499181808179961898982823477228588654633283551779698981993873980053909390631503565951557022639229085839244910518443593180284993653615250031937045767824921936562366986365848075700158576926990370631192827955855133292783433840935197801553124659726357957462276646527282722005637400648549997709659947045402082816622623785739345073633900796776193057750674017632467360096895134053553745851666113422376667860416215968046191446729184030053005753084904876539171138659164623952491262365388187963623937328042389101867234849766823508986338858792562830275599565752445550725518931369083625477918694866799496832404970582102851318545139621383772282614543769341253209859132766723632812500001 != 0} } {PASS}
valid double overrides invalid octalTest Case: 3.10.2-double-16Expected Result: PASS
Regression Test:
tcltest::test 3.10.2-double-15 { valid double overrides invalid octal } { constant_expression T3102d15 {08. == 8} {09. == 9} {08e0 == 8} {09e0 == 9} {08.d == 8} {09.d == 9} {08e0d == 8} {09e0d == 9} {08d == 8} {09d == 9} {08.D == 8} {09.D == 9} {08e0D == 8} {09e0D == 9} {08D == 8} {09D == 9} } {PASS}
valid double overrides invalid octalTest Case: 3.10.2-double-17Expected Result: PASS
Regression Test:
tcltest::test 3.10.2-double-16 { valid double overrides invalid octal } { constant_expression T3102d16 {0180. == 180} {0190. == 190} {0180e0 == 180} {0190e0 == 190} {0180.d == 180} {0190.d == 190} {0180e0d == 180} {0190e0d == 190} {0180d == 180} {0190d == 190} {0180.D == 180} {0190.D == 190} {0180e0D == 180} {0190e0D == 190} {0180D == 180} {0190D == 190} } {PASS}
check for 0 followed by letterExpected Result: PASS
Regression Test:
tcltest::test 3.10.2-double-17 { check for 0 followed by letter } { constant_expression T3102d17 {0e+0d == 0e-0d} {0E1 == 0} {0d == 0D} } {PASS}
tests/jls/lexical-structure/literals/character-literals
A SingleCharacter cannot be 'Test Case: 3.10.4-invalid-2Expected Result: FAIL
Regression Test:
tcltest::test 3.10.4-invalid-1 { A SingleCharacter cannot be ' } { literal T3104i1 ' } {FAIL}
A SingleCharacter cannot be 'Test Case: 3.10.4-invalid-3Expected Result: FAIL
Regression Test:
tcltest::test 3.10.4-invalid-2 { A SingleCharacter cannot be ' } { literal T3104i2 {\u0027} } {FAIL}
A SingleCharacter cannot be \Test Case: 3.10.4-invalid-4Expected Result: FAIL
Regression Test:
tcltest::test 3.10.4-invalid-3 { A SingleCharacter cannot be \ } { literal T3104i3 \\ } {FAIL}
A SingleCharacter cannot be \Test Case: 3.10.4-invalid-5Expected Result: FAIL
Regression Test:
tcltest::test 3.10.4-invalid-4 { A SingleCharacter cannot be \ } { literal T3104i4 {\u005c} } {FAIL}
A LineTerminator is not an InputCharacterTest Case: 3.10.4-invalid-6Expected Result: FAIL
Regression Test:
tcltest::test 3.10.4-invalid-5 { A LineTerminator is not an InputCharacter } { literal T3104i5 \r } {FAIL}
A LineTerminator is not an InputCharacterTest Case: 3.10.4-invalid-7Expected Result: FAIL
Regression Test:
tcltest::test 3.10.4-invalid-6 { A LineTerminator is not an InputCharacter } { literal T3104i6 \n } {FAIL}
A LineTerminator is not an InputCharacterTest Case: 3.10.4-invalid-8Expected Result: FAIL
Regression Test:
tcltest::test 3.10.4-invalid-7 { A LineTerminator is not an InputCharacter } { literal T3104i7 \r\n } {FAIL}
A LineTerminator is not an InputCharacterTest Case: 3.10.4-invalid-9Expected Result: FAIL
Regression Test:
tcltest::test 3.10.4-invalid-8 { A LineTerminator is not an InputCharacter } { literal T3104i8 {\u000d} } {FAIL}
A LineTerminator is not an InputCharacterTest Case: 3.10.4-invalid-10Expected Result: FAIL
Regression Test:
tcltest::test 3.10.4-invalid-9 { A LineTerminator is not an InputCharacter } { literal T3104i9 {\u000a} } {FAIL}
A LineTerminator is not an InputCharacterTest Case: 3.10.4-invalid-11Expected Result: FAIL
Regression Test:
tcltest::test 3.10.4-invalid-10 { A LineTerminator is not an InputCharacter } { literal T3104i10 {\u000d\u000a} } {FAIL}
' must be terminated with 'Test Case: 3.10.4-invalid-12Expected Result: FAIL
Regression Test:
tcltest::test 3.10.4-invalid-11 { ' must be terminated with ' } { literal T3104i11 AB } {FAIL}
empty character literal is not allowedTest Case: 3.10.4-invalid-13Expected Result: FAIL
Regression Test:
tcltest::test 3.10.4-invalid-12 { empty character literal is not allowed } { literal T3104i12 "" } {FAIL}
\r\n is two character literalsTest Case: 3.10.4-invalid-14Expected Result: FAIL
Regression Test:
tcltest::test 3.10.4-invalid-13 { \r\n is two character literals } { literal T3104i13 {\r\n} } {FAIL}
' must be terminated with 'Test Case: 3.10.4-invalid-15Expected Result: FAIL
Regression Test:
tcltest::test 3.10.4-invalid-14 { ' must be terminated with ' } { compile [saveas T3104i14.java "class T3104i14 {char c = 'a;}"] } {FAIL}
EOF inside ''Test Case: 3.10.4-invalid-16Expected Result: FAIL
Regression Test:
tcltest::test 3.10.4-invalid-15 { EOF inside '' } { compile [saveas T3104i15.java "class T3104i15 \{char c = '"] } {FAIL}
EOF inside ''Test Case: 3.10.4-invalid-17Expected Result: FAIL
Regression Test:
tcltest::test 3.10.4-invalid-16 { EOF inside '' } { compile [saveas T3104i16.java "class T3104i16 \{char c = 'a"] } {FAIL}
EOF inside ''Test Case: 3.10.4-valid-1Expected Result: FAIL
Regression Test:
tcltest::test 3.10.4-invalid-17 { EOF inside '' } { compile [saveas T3104i17.java "class T3104i17 \{char c = '\\"] } {FAIL}
example character literalTest Case: 3.10.4-valid-2Expected Result: PASS
Regression Test:
tcltest::test 3.10.4-valid-1 { example character literal } { literal T3104v1 a } {PASS}
example character literalTest Case: 3.10.4-valid-3Expected Result: PASS
Regression Test:
tcltest::test 3.10.4-valid-2 { example character literal } { literal T3104v2 % } {PASS}
example character literalTest Case: 3.10.4-valid-4Expected Result: PASS
Regression Test:
tcltest::test 3.10.4-valid-3 { example character literal } { literal T3104v3 {\t} } {PASS}
example character literalTest Case: 3.10.4-valid-5Expected Result: PASS
Regression Test:
tcltest::test 3.10.4-valid-4 { example character literal } { literal T3104v4 {\\} } {PASS}
example character literalTest Case: 3.10.4-valid-6Expected Result: PASS
Regression Test:
tcltest::test 3.10.4-valid-5 { example character literal } { literal T3104v5 {\'} } {PASS}
example character literalTest Case: 3.10.4-valid-7Expected Result: PASS
Regression Test:
tcltest::test 3.10.4-valid-6 { example character literal } { literal T3104v6 {\u03a9} } {PASS}
example character literalTest Case: 3.10.4-valid-8Expected Result: PASS
Regression Test:
tcltest::test 3.10.4-valid-7 { example character literal } { literal T3104v7 {\uFFFF} } {PASS}
example character literalTest Case: 3.10.4-valid-9Expected Result: PASS
Regression Test:
tcltest::test 3.10.4-valid-8 { example character literal } { literal T3104v8 {\177} } {PASS}
example character literalTest Case: 3.10.4-valid-10Expected Result: PASS
Regression Test:
tcltest::test 3.10.4-valid-9 { example character literal } { literal T3104v9 {\r} } {PASS}
example character literalTest Case: 3.10.4-valid-11Expected Result: PASS
Regression Test:
tcltest::test 3.10.4-valid-10 { example character literal } { literal T3104v10 {\n} } {PASS}
valid character literalTest Case: 3.10.4-valid-12Expected Result: PASS
Regression Test:
tcltest::test 3.10.4-valid-11 { valid character literal } { literal T3104v11 {\"} } {PASS}
valid character literalTest Case: 3.10.4-valid-13Expected Result: PASS
Regression Test:
tcltest::test 3.10.4-valid-12 { valid character literal } { literal T3104v12 {"} } {PASS}
valid character literalTest Case: 3.10.4-valid-14Expected Result: PASS
Regression Test:
tcltest::test 3.10.4-valid-13 { valid character literal } { literal T3104v13 {\u001a} } {PASS}
valid character literalExpected Result: PASS
Regression Test:
tcltest::test 3.10.4-valid-14 { valid character literal } { literal T3104v14 \x1a } {PASS}
tests/jls/lexical-structure/literals/string-literals
A StringCharacter cannot be "Test Case: 3.10.5-invalid-2Expected Result: FAIL
Regression Test:
tcltest::test 3.10.5-invalid-1 { A StringCharacter cannot be " } { literal T3105i1 {"} } {FAIL}
A StringCharacter cannot be "Test Case: 3.10.5-invalid-3Expected Result: FAIL
Regression Test:
tcltest::test 3.10.5-invalid-2 { A StringCharacter cannot be " } { literal T3105i2 {\u0022} } {FAIL}
A StringCharacter cannot be \Test Case: 3.10.5-invalid-4Expected Result: FAIL
Regression Test:
tcltest::test 3.10.5-invalid-3 { A StringCharacter cannot be \ } { literal T3105i3 \\ } {FAIL}
A StringCharacter cannot be \Test Case: 3.10.5-invalid-5Expected Result: FAIL
Regression Test:
tcltest::test 3.10.5-invalid-4 { A StringCharacter cannot be \ } { literal T3105i4 {\u005c} } {FAIL}
A LineTerminator is not an InputCharacterTest Case: 3.10.5-invalid-6Expected Result: FAIL
Regression Test:
tcltest::test 3.10.5-invalid-5 { A LineTerminator is not an InputCharacter } { literal T3105i5 \r } {FAIL}
A LineTerminator is not an InputCharacterTest Case: 3.10.5-invalid-7Expected Result: FAIL
Regression Test:
tcltest::test 3.10.5-invalid-6 { A LineTerminator is not an InputCharacter } { literal T3105i6 \n } {FAIL}
A LineTerminator is not an InputCharacterTest Case: 3.10.5-invalid-8Expected Result: FAIL
Regression Test:
tcltest::test 3.10.5-invalid-7 { A LineTerminator is not an InputCharacter } { literal T3105i7 \r\n } {FAIL}
A LineTerminator is not an InputCharacterTest Case: 3.10.5-invalid-9Expected Result: FAIL
Regression Test:
tcltest::test 3.10.5-invalid-8 { A LineTerminator is not an InputCharacter } { literal T3105i8 {\u000d} } {FAIL}
A LineTerminator is not an InputCharacterTest Case: 3.10.5-invalid-10Expected Result: FAIL
Regression Test:
tcltest::test 3.10.5-invalid-9 { A LineTerminator is not an InputCharacter } { literal T3105i9 {\u000a} } {FAIL}
A LineTerminator is not an InputCharacterTest Case: 3.10.5-invalid-11Expected Result: FAIL
Regression Test:
tcltest::test 3.10.5-invalid-10 { A LineTerminator is not an InputCharacter } { literal T3105i10 {\u000d\u000a} } {FAIL}
" must be terminated with "Test Case: 3.10.5-invalid-12Expected Result: FAIL
Regression Test:
tcltest::test 3.10.5-invalid-11 { " must be terminated with " } { compile [saveas T3105i11.java {class T3105i11 {String s = ";}}] } {FAIL}
EOF inside ""Test Case: 3.10.5-invalid-13Expected Result: FAIL
Regression Test:
tcltest::test 3.10.5-invalid-12 { EOF inside "" } { compile [saveas T3105i12.java "class T3105i12 \{String s = \""] } {FAIL}
EOF inside ""Test Case: 3.10.5-valid-1Expected Result: FAIL
Regression Test:
tcltest::test 3.10.5-invalid-13 { EOF inside "" } { compile [saveas T3105i13.java "class T3105i13 \{String s = \"\\"] } {FAIL}
example string literalTest Case: 3.10.5-valid-2Expected Result: PASS
Regression Test:
tcltest::test 3.10.5-valid-1 { example string literal } { literal T3105v1 "" } {PASS}
example string literalTest Case: 3.10.5-valid-3Expected Result: PASS
Regression Test:
tcltest::test 3.10.5-valid-2 { example string literal } { literal T3105v2 {This is a string} } {PASS}
example string literalTest Case: 3.10.5-valid-4Expected Result: PASS
Regression Test:
tcltest::test 3.10.5-valid-3 { example string literal } { literal T3105v3 {This is a " + "two-line string} } {PASS}
valid string literalTest Case: 3.10.5-valid-5Expected Result: PASS
Regression Test:
tcltest::test 3.10.5-valid-4 { valid string literal } { literal T3105v4 {\\} } {PASS}
valid string literalTest Case: 3.10.5-valid-6Expected Result: PASS
Regression Test:
tcltest::test 3.10.5-valid-5 { valid string literal } { literal T3105v5 {\'} } {PASS}
valid string literalTest Case: 3.10.5-valid-7Expected Result: PASS
Regression Test:
tcltest::test 3.10.5-valid-6 { valid string literal } { literal T3105v6 {\u03a9} } {PASS}
valid string literalTest Case: 3.10.5-valid-8Expected Result: PASS
Regression Test:
tcltest::test 3.10.5-valid-7 { valid string literal } { literal T3105v7 {\uFFFF} } {PASS}
valid string literalTest Case: 3.10.5-valid-9Expected Result: PASS
Regression Test:
tcltest::test 3.10.5-valid-8 { valid string literal } { literal T3105v8 {\177} } {PASS}
valid string literalTest Case: 3.10.5-valid-10Expected Result: PASS
Regression Test:
tcltest::test 3.10.5-valid-9 { valid string literal } { literal T3105v9 {\r} } {PASS}
valid string literalTest Case: 3.10.5-valid-11Expected Result: PASS
Regression Test:
tcltest::test 3.10.5-valid-10 { valid string literal } { literal T3105v10 {\n} } {PASS}
valid string literalTest Case: 3.10.5-valid-12Expected Result: PASS
Regression Test:
tcltest::test 3.10.5-valid-11 { valid string literal } { literal T3105v11 {\"} } {PASS}
valid string literalTest Case: 3.10.5-valid-13Expected Result: PASS
Regression Test:
tcltest::test 3.10.5-valid-12 { valid string literal } { literal T3105v12 ' } {PASS}
valid string literalTest Case: 3.10.5-valid-14Expected Result: PASS
Regression Test:
tcltest::test 3.10.5-valid-13 { valid string literal } { literal T3105v13 {\u001a} } {PASS}
valid string literalExpected Result: PASS
Regression Test:
tcltest::test 3.10.5-valid-14 { valid string literal } { literal T3105v14 \x1a } {PASS}
tests/jls/lexical-structure/literals/escape-sequences
\a (Alert, Ctrl-G) is not an escape sequenceTest Case: 3.10.7-invalid-2Expected Result: FAIL
Regression Test:
tcltest::test 3.10.7-invalid-1 { \a (Alert, Ctrl-G) is not an escape sequence } { sequence T3107i1 {\a} } {FAIL}
\v (Vertical tab, Ctrl-K) is not an escape sequenceTest Case: 3.10.7-invalid-3Expected Result: FAIL
Regression Test:
tcltest::test 3.10.7-invalid-2 { \v (Vertical tab, Ctrl-K) is not an escape sequence } { sequence T3107i2 {\v} } {FAIL}
\x (hex sequence) is not an escape sequenceTest Case: 3.10.7-invalid-4Expected Result: FAIL
Regression Test:
tcltest::test 3.10.7-invalid-3 { \x (hex sequence) is not an escape sequence } { sequence T3107i3 {\x0} } {FAIL}
\LineTerminator is not a valid line continuationTest Case: 3.10.7-invalid-5Expected Result: FAIL
Regression Test:
tcltest::test 3.10.7-invalid-4 { \LineTerminator is not a valid line continuation } { sequence T3107i4 a\\\n } {FAIL}
\u is not an escape sequence, since unicode is already expandedTest Case: 3.10.7-invalid-6Expected Result: FAIL
Regression Test:
tcltest::test 3.10.7-invalid-5 { \u is not an escape sequence, since unicode is already expanded } { sequence T3107i5 {\u005cu} } {FAIL}
octal escape sequences are limited at 0377Test Case: 3.10.7-invalid-7Expected Result: FAIL
Regression Test:
tcltest::test 3.10.7-invalid-6 { octal escape sequences are limited at 0377 } { sequence T3107i6 {\400} } {FAIL}
escape sequences are case-sensitiveTest Case: 3.10.7-invalid-8Expected Result: FAIL
Regression Test:
tcltest::test 3.10.7-invalid-7 { escape sequences are case-sensitive } { sequence T3107i7 {\N} } {FAIL}
escape sequences only occur within character and string literalsTest Case: 3.10.7-invalid-9Expected Result: FAIL
Regression Test:
tcltest::test 3.10.7-invalid-8 { escape sequences only occur within character and string literals } { compile [saveas T3107i8.java "class T3107i8 { \\t }"] } {FAIL}
octal escape sequences are limited at 0377Test Case: 3.10.7-invalid-10Expected Result: FAIL
Regression Test:
tcltest::test 3.10.7-invalid-9 { octal escape sequences are limited at 0377 } { sequence T3107i9 {\0000} } {FAIL}
\LineTerminator is not a valid sequenceTest Case: 3.10.7-invalid-11Expected Result: FAIL
Regression Test:
tcltest::test 3.10.7-invalid-10 { \LineTerminator is not a valid sequence } { sequence T3107i10 \\\n } {FAIL}
\LineTerminator is not a valid sequenceTest Case: 3.10.7-invalid-12Expected Result: FAIL
Regression Test:
tcltest::test 3.10.7-invalid-11 { \LineTerminator is not a valid sequence } { sequence T3107i11 \\\r } {FAIL}
\u is not an escape sequence, since unicode is already expandedTest Case: 3.10.7-invalid-13Expected Result: FAIL
Regression Test:
tcltest::test 3.10.7-invalid-12 { \u is not an escape sequence, since unicode is already expanded } { sequence T3107i12 {\u005cu0000} } {FAIL}
escape sequences only occur within character and string literalsTest Case: 3.10.7-invalid-14Expected Result: FAIL
Regression Test:
tcltest::test 3.10.7-invalid-13 { escape sequences only occur within character and string literals } { compile [saveas T3107i13.java "class T3107i13 {} \\\\"] } {FAIL}
escape sequences only occur within character and string literalsTest Case: 3.10.7-invalid-15Expected Result: FAIL
Regression Test:
tcltest::test 3.10.7-invalid-14 { escape sequences only occur within character and string literals } { compile [saveas T3107i14.java "class T3107i14 {} \\"] } {FAIL}
\LineTerminator is not a valid sequenceTest Case: 3.10.7-invalid-16Expected Result: FAIL
Regression Test:
tcltest::test 3.10.7-invalid-15 { \LineTerminator is not a valid sequence } { empty_class T3107i15 "class T3107i15 { String s = \"\\\n\";}" } {FAIL}
\LineTerminator is not a valid sequenceTest Case: 3.10.7-valid-1Expected Result: FAIL
Regression Test:
tcltest::test 3.10.7-invalid-16 { \LineTerminator is not a valid sequence } { empty_class T3107i16 "class T3107i16 { String s = \"\\\r\";}" } {FAIL}
\b (Backspace, Ctrl-H, \u0008) is an escape sequenceTest Case: 3.10.7-valid-2Expected Result: PASS
Regression Test:
tcltest::test 3.10.7-valid-1 { \b (Backspace, Ctrl-H, \u0008) is an escape sequence } { sequence T3107v1 {\b} } {PASS}
\t (Tab, Ctrl-I, \u0009) is an escape sequenceTest Case: 3.10.7-valid-3Expected Result: PASS
Regression Test:
tcltest::test 3.10.7-valid-2 { \t (Tab, Ctrl-I, \u0009) is an escape sequence } { sequence T3107v2 {\t} } {PASS}
\n (Linefeed, Ctrl-J, \u000a) is an escape sequenceTest Case: 3.10.7-valid-4Expected Result: PASS
Regression Test:
tcltest::test 3.10.7-valid-3 { \n (Linefeed, Ctrl-J, \u000a) is an escape sequence } { sequence T3107v3 {\n} } {PASS}
\f (Formfeed, Ctrl-L, \u000c) is an escape sequenceTest Case: 3.10.7-valid-5Expected Result: PASS
Regression Test:
tcltest::test 3.10.7-valid-4 { \f (Formfeed, Ctrl-L, \u000c) is an escape sequence } { sequence T3107v4 {\f} } {PASS}
\r (Carriage Return, Ctrl-M, \u000d) is an escape sequenceTest Case: 3.10.7-valid-6Expected Result: PASS
Regression Test:
tcltest::test 3.10.7-valid-5 { \r (Carriage Return, Ctrl-M, \u000d) is an escape sequence } { sequence T3107v5 {\r} } {PASS}
\" (\u0022) is an escape sequenceTest Case: 3.10.7-valid-7Expected Result: PASS
Regression Test:
tcltest::test 3.10.7-valid-6 { \" (\u0022) is an escape sequence } { sequence T3107v6 {\"} } {PASS}
\' (\u0027) is an escape sequenceTest Case: 3.10.7-valid-8Expected Result: PASS
Regression Test:
tcltest::test 3.10.7-valid-7 { \' (\u0027) is an escape sequence } { sequence T3107v7 {\'} } {PASS}
\\ (\u005c) is an escape sequenceTest Case: 3.10.7-valid-9Expected Result: PASS
Regression Test:
tcltest::test 3.10.7-valid-8 { \\ (\u005c) is an escape sequence } { sequence T3107v8 {\\} } {PASS}
octal sequences can have one digitTest Case: 3.10.7-valid-10Expected Result: PASS
Regression Test:
tcltest::test 3.10.7-valid-9 { octal sequences can have one digit } { sequence T3107v9 {\5} } {PASS}
octal sequences can have two digitsTest Case: 3.10.7-valid-11Expected Result: PASS
Regression Test:
tcltest::test 3.10.7-valid-10 { octal sequences can have two digits } { sequence T3107v10 {\40} } {PASS}
octal sequences can have three digits, if the first is < 4Test Case: 3.10.7-valid-12Expected Result: PASS
Regression Test:
tcltest::test 3.10.7-valid-11 { octal sequences can have three digits, if the first is < 4 } { sequence T3107v11 {\012} } {PASS}
escape sequences may be written in unicodeTest Case: 3.10.7-valid-13Expected Result: PASS
Regression Test:
tcltest::test 3.10.7-valid-12 { escape sequences may be written in unicode } { sequence T3107v12 {\u005c\u005c} } {PASS}
an octal sequence with the first digit >= 4 has at most two digitsTest Case: 3.10.7-valid-14Expected Result: PASS
Regression Test:
tcltest::test 3.10.7-valid-13 { an octal sequence with the first digit >= 4 has at most two digits } { compile [saveas T3107v13.java { class T3107v13 { void foo(int i) { switch (i) { case 0: case (("\477" == "'7") ? 1 : 0): } } } }] } {PASS}
escape sequences represent characters with identical valueTest Case: 3.10.7-valid-15Expected Result: PASS
Regression Test:
tcltest::test 3.10.7-valid-14 { escape sequences represent characters with identical value } { compile [saveas T3107v14.java { class T3107v14 { void foo(int i) { switch (i) { case 0: case (('\t' == 9) ? 1 : 0): case (('\t' == '\011') ? 2 : 0): } } } }] } {PASS}
escape sequences represent the same character in a StringTest Case: 3.10.7-valid-16Expected Result: PASS
Regression Test:
tcltest::test 3.10.7-valid-15 { escape sequences represent the same character in a String } { compile [saveas T3107v15.java { class T3107v15 { void foo(int i) { switch (i) { case 0: case (("\b" == "\u0008") ? 1 : 0): case (("\10" == "\u0008") ? 2 : 0): } } } }] } {PASS}
escape sequences only occur within character and string literalsTest Case: 3.10.7-valid-17Expected Result: PASS
Regression Test:
tcltest::test 3.10.7-valid-16 { escape sequences only occur within character and string literals } { compile [saveas T3107v16.java { class T3107v16 { // Comment not ended here: \n int i = } }] } {PASS}
an octal sequence with the first digit < 4 has at most three digitsExpected Result: PASS
Regression Test:
tcltest::test 3.10.7-valid-17 { an octal sequence with the first digit < 4 has at most three digits } { compile [saveas T3107v17.java { class T3107v17 { void foo(int i) { switch (i) { case 0: case (("\0000" == '\u0000' + "0") ? 1 : 0): } } } }] } {PASS}
tests/jls/types-values-and-variables/variables/final-variables
final variable must be definitely assignedTest Case: 4.5.4-instance-2Expected Result: FAIL
Regression Test:
tcltest::test 4.5.4-instance-1 { final variable must be definitely assigned } { empty_class T454i1 { final int val; } } {FAIL}
final variable must be definitely assignedTest Case: 4.5.4-instance-3Expected Result: PASS
Regression Test:
tcltest::test 4.5.4-instance-2 { final variable must be definitely assigned } { empty_class T454i2 { final int val = 0; final String str = null; } } {PASS}
final variable must be definitely assignedTest Case: 4.5.4-instance-4Expected Result: PASS
Regression Test:
tcltest::test 4.5.4-instance-3 { final variable must be definitely assigned } { empty_class T454i3 { final int val; final String str; T454i3() { val = 0; str = null; } } } {PASS}
final variable must be definitely assignedTest Case: 4.5.4-instance-5Expected Result: PASS
Regression Test:
tcltest::test 4.5.4-instance-4 { final variable must be definitely assigned } { empty_class T454i4 { final int val; final String str; { val = 0; str = null; } } } {PASS}
final variable can only be assigned to onceTest Case: 4.5.4-instance-6Expected Result: FAIL
Regression Test:
tcltest::test 4.5.4-instance-5 { final variable can only be assigned to once } { empty_class T454i5 { final int val = 0; final String str = null; T454i5() { val = 1; str = ""; } } } {FAIL}
final variable can only be assigned to onceTest Case: 4.5.4-instance-7Expected Result: FAIL
Regression Test:
tcltest::test 4.5.4-instance-6 { final variable can only be assigned to once } { empty_class T454i6 { final int val = 0; final String str = null; { val = 1; str = ""; } } } {FAIL}
final variable can only be assigned to onceTest Case: 4.5.4-instance-8Expected Result: FAIL
Regression Test:
tcltest::test 4.5.4-instance-7 { final variable can only be assigned to once } { empty_class T454i7 { final int val; final String str; { val = 0; str = null; } T454i7() { val = 1; str = ""; } } } {FAIL}
final variable must be assigned before it can be usedTest Case: 4.5.4-instance-9Expected Result: FAIL
Regression Test:
tcltest::test 4.5.4-instance-8 { final variable must be assigned before it can be used } { empty_class T454i8 { final int val; T454i8() { int tmp = val; val = 1; } } } {FAIL}
blank final variable must be assigned in every constructorTest Case: 4.5.4-instance-10Expected Result: FAIL
Regression Test:
tcltest::test 4.5.4-instance-9 { blank final variable must be assigned in every constructor } { empty_class T454i9 { final int val; final String str; T454i9() { val = 0; } T454i9(int foo) { str = null; } } } {FAIL}
final variable can only be assigned to onceTest Case: 4.5.4-static-1Expected Result: FAIL
Regression Test:
tcltest::test 4.5.4-instance-10 { final variable can only be assigned to once } { empty_class T454i10 { final int val = 0; final String str = null; T454i10() { val = 1 + val; str = "foo" + str; } } } {FAIL}
final variable must be definitely assignedTest Case: 4.5.4-static-2Expected Result: FAIL
Regression Test:
tcltest::test 4.5.4-static-1 { final variable must be definitely assigned } { empty_class T454s1 { static final int val; static final String str; } } {FAIL}
final variable must be definitely assignedTest Case: 4.5.4-static-3Expected Result: PASS
Regression Test:
tcltest::test 4.5.4-static-2 { final variable must be definitely assigned } { empty_class T454s2 { static final int val = 0; static final String str = null; } } {PASS}
final variable must be definitely assignedTest Case: 4.5.4-static-4Expected Result: PASS
Regression Test:
tcltest::test 4.5.4-static-3 { final variable must be definitely assigned } { empty_class T454s3 { static final int val; static final String str; static { val = 0; str = null; } } } {PASS}
final variable can only be assigned to onceTest Case: 4.5.4-static-5Expected Result: FAIL
Regression Test:
tcltest::test 4.5.4-static-4 { final variable can only be assigned to once } { empty_class T454s4 { static final int val = 0; static final String str = null; static { val = 1; str = ""; } } } {FAIL}
final variable must be assigned before it can be usedTest Case: 4.5.4-static-6Expected Result: FAIL
Regression Test:
tcltest::test 4.5.4-static-5 { final variable must be assigned before it can be used } { empty_class T454i5 { static final int val; static { int i = val; val = 1; } } } {FAIL}
final variable can only be assigned to onceTest Case: 4.5.4-reference-1Expected Result: FAIL
Regression Test:
tcltest::test 4.5.4-static-6 { final variable can only be assigned to once } { empty_class T454s6 { static final int val = 0; static final String str = null; static void main(String args[]) { val = 1 + val; str = "foo" + str; } } } {FAIL}
a final variable can reference an Object, the reference can not change but the object being referenced can changeTest Case: 4.5.4-reference-2Expected Result: PASS
Regression Test:
tcltest::test 4.5.4-reference-1 { a final variable can reference an Object, the reference can not change but the object being referenced can change } { empty_class T454r1 { final StringBuffer sbuf = new StringBuffer(); void append() { sbuf.append("nuggy"); } } } {PASS}
a final variable can reference an array, the elements of the array can be modifiedTest Case: 4.5.4-9Expected Result: PASS
Regression Test:
tcltest::test 4.5.4-reference-2 { a final variable can reference an array, the elements of the array can be modified } { empty_class T454r2 { final Object[] objarr = {new Object(), new Object()}; void swap() { Object tmp = objarr[0]; objarr[0] = objarr[1]; objarr[1] = tmp; } } } {PASS}
blank final variable must be assigned in every constructorTest Case: 4.5.4-10Expected Result: PASS
Regression Test:
tcltest::test 4.5.4-9 { blank final variable must be assigned in every constructor } { empty_class T4549 { final int val; T4549() { val = 0; } T4549(int foo) { this(); } } } {PASS}
blank final variable must be assigned in every constructorTest Case: 4.5.4-local-1Expected Result: FAIL
Regression Test:
tcltest::test 4.5.4-10 { blank final variable must be assigned in every constructor } { empty_class T45410 { final int val; T45410() { val = 0; } T45410(int foo) { this(); val = 1;} } } {FAIL}
final may only be assigned onceTest Case: 4.5.4-local-2Expected Result: FAIL
Regression Test:
tcltest::test 4.5.4-local-1 { final may only be assigned once } { empty_main T454l1 { final int i; i = 1; i = 2; } } {FAIL}
final may only be assigned onceTest Case: 4.5.4-local-3Expected Result: FAIL
Regression Test:
tcltest::test 4.5.4-local-2 { final may only be assigned once } { empty_main T454l2 { final int i = 1; i = 2; } } {FAIL}
final variable can only be assigned to onceTest Case: 4.5.4-parameter-1Expected Result: FAIL
Regression Test:
tcltest::test 4.5.4-local-3 { final variable can only be assigned to once } { empty_main T454l3 { final int val = 0; final String str = null; val = 1 + val; str = "foo" + str; } } {FAIL}
final parameter may not be assignedTest Case: 4.5.4-parameter-2Expected Result: FAIL
Regression Test:
tcltest::test 4.5.4-parameter-1 { final parameter may not be assigned } { empty_class T454p1 { void foo(final int i) { i = 1; } } } {FAIL}
final parameter may not be assignedTest Case: 4.5.4-parameter-3Expected Result: FAIL
Regression Test:
tcltest::test 4.5.4-parameter-2 { final parameter may not be assigned } { empty_main T454p2 { try { throw new Exception(); } catch (final Exception e) { e = new Exception(); } } } {FAIL}
final parameter may not be assignedExpected Result: FAIL
Regression Test:
tcltest::test 4.5.4-parameter-3 { final parameter may not be assigned } { empty_class T454p3 { void foo(final int i) { new Object() { int j = i = 0; }; } } } {FAIL}
tests/jls/conversions-and-promotions/kinds-of-conversion/identity-conversions
boolean identity conversionTest Case: 5.1.1-primitive-2Expected Result: PASS
Regression Test:
tcltest::test 5.1.1-primitive-1 { boolean identity conversion } { empty_class T511p1 { boolean b1 = (boolean) true; boolean b2 = (boolean) b1; boolean b3 = (boolean) (false != false); boolean b4 = (boolean) Boolean.TRUE.booleanValue(); } } {PASS}
byte identity conversionTest Case: 5.1.1-primitive-3Expected Result: PASS
Regression Test:
tcltest::test 5.1.1-primitive-2 { byte identity conversion } { empty_class T511p2 { static final byte b1 = 1; byte b2 = (byte) b1; byte b3 = (byte) (new Byte(Byte.MAX_VALUE).byteValue()); } } {PASS}
short identity conversionTest Case: 5.1.1-primitive-4Expected Result: PASS
Regression Test:
tcltest::test 5.1.1-primitive-3 { short identity conversion } { empty_class T511p3 { static final short s1 = 1; short s2 = (short) s1; short s3 = (short) (new Short(Short.MAX_VALUE).shortValue()); } } {PASS}
char identity conversionTest Case: 5.1.1-primitive-5Expected Result: PASS
Regression Test:
tcltest::test 5.1.1-primitive-4 { char identity conversion } { empty_class T511p4 { char c1 = (char) '1'; char c2 = (char) c1; char c3 = (char) (new Character(Character.MAX_VALUE).charValue()); } } {PASS}
int identity conversionTest Case: 5.1.1-primitive-6Expected Result: PASS
Regression Test:
tcltest::test 5.1.1-primitive-5 { int identity conversion } { empty_class T511p5 { int i1 = (int) 1; int i2 = (int) i1; int i3 = (int) (1 + 2); int i4 = (int) (new Integer(Integer.MAX_VALUE).intValue()); } } {PASS}
long identity conversionTest Case: 5.1.1-primitive-7Expected Result: PASS
Regression Test:
tcltest::test 5.1.1-primitive-6 { long identity conversion } { empty_class T511p6 { long l1 = (long) 1L; long l2 = (long) l1; long l3 = (long) (1L + 2L); long l4 = (long) (new Long(Long.MAX_VALUE).longValue()); } } {PASS}
float identity conversionTest Case: 5.1.1-primitive-8Expected Result: PASS
Regression Test:
tcltest::test 5.1.1-primitive-7 { float identity conversion } { empty_class T511p7 { float f1 = (float) 1.0f; float f2 = (float) f1; float f3 = (float) (1f + 2f); float f4 = (float) (new Float(Float.MAX_VALUE).floatValue()); } } {PASS}
double identity conversionTest Case: 5.1.1-reference-1Expected Result: PASS
Regression Test:
tcltest::test 5.1.1-primitive-8 { double identity conversion } { empty_class T511p8 { double d1 = (double) 1.0; double d2 = (double) d1; double d3 = (double) (1.0 + 2.0); double d4 = (double) (new Double(Double.MAX_VALUE).doubleValue()); } } {PASS}
reference identity conversion: ObjectTest Case: 5.1.1-reference-2Expected Result: PASS
Regression Test:
tcltest::test 5.1.1-reference-1 { reference identity conversion: Object } { empty_class T511r1 { Object o1 = (Object) new Object(); Object o2 = (Object) null; Object o3 = (Object) o1; Object o4 = (Object) o2; Object foo() { return new Object(); } Object o5 = (Object) foo(); } } {PASS}
reference identity conversion: StringTest Case: 5.1.1-reference-3Expected Result: PASS
Regression Test:
tcltest::test 5.1.1-reference-2 { reference identity conversion: String } { empty_class T511r2 { String s1 = (String) ""; String s2 = (String) null; String s3 = (String) s1; String s4 = (String) s2; String s5 = (String) ("1" + "2"); String s6 = (String) "1".concat("2"); } } {PASS}
reference identity conversion: this classTest Case: 5.1.1-reference-4Expected Result: PASS
Regression Test:
tcltest::test 5.1.1-reference-3 { reference identity conversion: this class } { empty_class T511r3 { T511r3 t1 = (T511r3) new T511r3(); T511r3 t2 = (T511r3) null; T511r3 t3 = (T511r3) t1; T511r3 t4 = (T511r3) t2; } } {PASS}
reference identity conversion: primitive arrayTest Case: 5.1.1-reference-5Expected Result: PASS
Regression Test:
tcltest::test 5.1.1-reference-4 { reference identity conversion: primitive array } { empty_class T511r4 { int[] ia1 = {1, 2}; int[] ia2 = (int[]) null; int[] ia3 = (int[]) ia1; int[] ia4 = (int[]) ia2; int[] foo() { return new int[0]; } int[] ia5 = (int[]) foo(); } } {PASS}
reference identity conversion: Object arrayTest Case: 5.1.1-null-1Expected Result: PASS
Regression Test:
tcltest::test 5.1.1-reference-5 { reference identity conversion: Object array } { empty_class T511r5 { Object[] oa1 = {new Object[1]}; Object[] oa2 = (Object[]) null; Object[] oa3 = (Object[]) oa1; Object[] oa4 = (Object[]) oa2; Object[] foo() { return new Object[0]; } Object[] oa5 = (Object[]) foo(); } } {PASS}
there is no such thing as null identity conversionExpected Result: FAIL
Regression Test:
tcltest::test 5.1.1-null-1 { there is no such thing as null identity conversion } { empty_class T511n1 { Object n = (null) null; } } {FAIL}
tests/jls/conversions-and-promotions/kinds-of-conversion/widening-primitive-conversions
byte to short conversion never loses informationTest Case: 5.1.2-bts-2Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-bts-1 { byte to short conversion never loses information } { empty_main T512bts1 { final byte b = 72; final short s = 72; switch (args.length) { case 0: case (((short)b == s) ? 1 : 0): } } } {PASS}
byte to short boundary caseTest Case: 5.1.2-bts-3Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-bts-2 { byte to short boundary case } { empty_main T512bts2 { final byte b = Byte.MAX_VALUE; final short s = 127; switch (args.length) { case 0: case (((short)b == s) ? 1 : 0): } } } {PASS}
byte to short boundary caseTest Case: 5.1.2-bts-4Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-bts-3 { byte to short boundary case } { empty_main T512bts3 { final byte b = 0; final short s = 0; switch (args.length) { case 0: case (((short)b == s) ? 1 : 0): } } } {PASS}
byte to short boundary caseTest Case: 5.1.2-bts-5Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-bts-4 { byte to short boundary case } { empty_main T512bts4 { final byte b = Byte.MIN_VALUE; final short s = -128; switch (args.length) { case 0: case (((short)b == s) ? 1 : 0): } } } {PASS}
byte to short boundary caseTest Case: 5.1.2-bti-1Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-bts-5 { byte to short boundary case } { empty_main T512bts5 { final byte b = -1; final short s = -1; switch (args.length) { case 0: case (((short)b == s) ? 1 : 0): } } } {PASS}
byte to int conversion never loses informationTest Case: 5.1.2-bti-2Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-bti-1 { byte to int conversion never loses information } { empty_main T512bti1 { final byte b = 72; switch (args.length) { case 0: case (((int)b == 72) ? 1 : 0): } } } {PASS}
byte to int boundary caseTest Case: 5.1.2-bti-3Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-bti-2 { byte to int boundary case } { constant_expression T512bti2 {(int)Byte.MAX_VALUE == 127} } {PASS}
byte to int boundary caseTest Case: 5.1.2-bti-4Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-bti-3 { byte to int boundary case } { empty_main T512bti3 { final byte b = 0; switch (args.length) { case 0: case (((int)b == 0) ? 1 : 0): } } } {PASS}
byte to int boundary caseTest Case: 5.1.2-bti-5Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-bti-4 { byte to int boundary case } { constant_expression T512bti4 {(int)Byte.MIN_VALUE == -128} } {PASS}
byte to int boundary caseTest Case: 5.1.2-btl-1Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-bti-5 { byte to int boundary case } { empty_main T512bti5 { final byte b = -1; switch (args.length) { case 0: case (((int)b == -1) ? 1 : 0): } } } {PASS}
byte to long conversion never loses informationTest Case: 5.1.2-btl-2Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-btl-1 { byte to long conversion never loses information } { empty_main T512btl1 { final byte b = 72; switch (args.length) { case 0: case (((long)b == 72L) ? 1 : 0): } } } {PASS}
byte to long boundary caseTest Case: 5.1.2-btl-3Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-btl-2 { byte to long boundary case } { constant_expression T512btl2 {(long)Byte.MAX_VALUE == 127L} } {PASS}
byte to long boundary caseTest Case: 5.1.2-btl-4Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-btl-3 { byte to long boundary case } { empty_main T512btl3 { final byte b = 0; switch (args.length) { case 0: case (((long)b == 0L) ? 1 : 0): } } } {PASS}
byte to long boundary caseTest Case: 5.1.2-btl-5Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-btl-4 { byte to long boundary case } { constant_expression T512btl4 {(long)Byte.MIN_VALUE == -128L} } {PASS}
byte to long boundary caseTest Case: 5.1.2-btf-1Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-btl-5 { byte to long boundary case } { empty_main T512btl5 { final byte b = -1; switch (args.length) { case 0: case (((long)b == -1L) ? 1 : 0): } } } {PASS}
byte to float conversion never loses informationTest Case: 5.1.2-btf-2Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-btf-1 { byte to float conversion never loses information } { empty_main T512btf1 { final byte b = 72; switch (args.length) { case 0: case (((float)b == 72.0f) ? 1 : 0): } } } {PASS}
byte to float boundary caseTest Case: 5.1.2-btf-3Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-btf-2 { byte to float boundary case } { constant_expression T512btf2 {(float)Byte.MAX_VALUE == 127.0f} } {PASS}
byte to float boundary caseTest Case: 5.1.2-btf-4Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-btf-3 { byte to float boundary case } { empty_main T512btf3 { final byte b = 0; switch (args.length) { case 0: case (((float)b == 0.0f) ? 1 : 0): case ((1/(float)b == Float.POSITIVE_INFINITY) ? 2 : 0): } } } {PASS}
byte to float boundary caseTest Case: 5.1.2-btf-5Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-btf-4 { byte to float boundary case } { constant_expression T512btf4 {(float)Byte.MIN_VALUE == -128.0f} } {PASS}
byte to float boundary caseTest Case: 5.1.2-btd-1Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-btf-5 { byte to float boundary case } { empty_main T512btf5 { final byte b = -1; switch (args.length) { case 0: case (((float)b == -1.0f) ? 1 : 0): } } } {PASS}
byte to double conversion never loses informationTest Case: 5.1.2-btd-2Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-btd-1 { byte to double conversion never loses information } { empty_main T512btd1 { final byte b = 72; switch (args.length) { case 0: case (((double)b == 72.0) ? 1 : 0): } } } {PASS}
byte to double boundary caseTest Case: 5.1.2-btd-3Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-btd-2 { byte to double boundary case } { constant_expression T512btd2 {(double)Byte.MAX_VALUE == 127.0} } {PASS}
byte to double boundary caseTest Case: 5.1.2-btd-4Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-btd-3 { byte to double boundary case } { empty_main T512btd3 { final byte b = 0; switch (args.length) { case 0: case (((double)b == 0.0) ? 1 : 0): case ((1/(double)b == Double.POSITIVE_INFINITY) ? 2 : 0): } } } {PASS}
byte to double boundary caseTest Case: 5.1.2-btd-5Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-btd-4 { byte to double boundary case } { constant_expression T512btd4 {(double)Byte.MIN_VALUE == -128.0} } {PASS}
byte to double boundary caseTest Case: 5.1.2-sti-1Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-btd-5 { byte to double boundary case } { empty_main T512btd5 { final byte b = -1; switch (args.length) { case 0: case (((double)b == -1.0) ? 1 : 0): } } } {PASS}
short to int conversion never loses informationTest Case: 5.1.2-sti-2Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-sti-1 { short to int conversion never loses information } { empty_main T512sti1 { final short s = 12345; switch (args.length) { case 0: case (((int)s == 12345) ? 1 : 0): } } } {PASS}
short to int boundary caseTest Case: 5.1.2-sti-3Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-sti-2 { short to int boundary case } { constant_expression T512sti2 {(int)Short.MAX_VALUE == 32767} } {PASS}
short to int boundary caseTest Case: 5.1.2-sti-4Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-sti-3 { short to int boundary case } { empty_main T512sti3 { final short s = 0; switch (args.length) { case 0: case (((int)s == 0) ? 1 : 0): } } constant_expression T512sti3 {(int)0 == 0L} } {PASS}
short to int boundary caseTest Case: 5.1.2-sti-5Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-sti-4 { short to int boundary case } { constant_expression T512sti4 {(int)Short.MIN_VALUE == -32768} } {PASS}
short to int boundary caseTest Case: 5.1.2-stl-1Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-sti-5 { short to int boundary case } { empty_main T512sti5 { final short s = -1; switch (args.length) { case 0: case (((int)s == -1) ? 1 : 0): } } } {PASS}
short to long conversion never loses informationTest Case: 5.1.2-stl-2Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-stl-1 { short to long conversion never loses information } { empty_main T512stl1 { final short s = 12345; switch (args.length) { case 0: case (((long)s == 12345L) ? 1 : 0): } } } {PASS}
short to long boundary caseTest Case: 5.1.2-stl-3Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-stl-2 { short to long boundary case } { constant_expression T512stl2 {(long)Short.MAX_VALUE == 32767L} } {PASS}
short to long boundary caseTest Case: 5.1.2-stl-4Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-stl-3 { short to long boundary case } { empty_main T512stl3 { final short s = 0; switch (args.length) { case 0: case (((long)s == 0L) ? 1 : 0): } } } {PASS}
short to long boundary caseTest Case: 5.1.2-stl-5Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-stl-4 { short to long boundary case } { constant_expression T512stl4 {(long)Short.MIN_VALUE == -32768L} } {PASS}
short to long boundary caseTest Case: 5.1.2-stf-1Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-stl-5 { short to long boundary case } { empty_main T512stl5 { final short s = -1; switch (args.length) { case 0: case (((long)s == -1L) ? 1 : 0): } } } {PASS}
short to float conversion never loses informationTest Case: 5.1.2-stf-2Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-stf-1 { short to float conversion never loses information } { empty_main T512stf3 { final short s = 12345; switch (args.length) { case 0: case (((float)s == 12345.0f) ? 1 : 0): } } } {PASS}
short to float boundary caseTest Case: 5.1.2-stf-3Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-stf-2 { short to float boundary case } { constant_expression T512stf2 {(float)Short.MAX_VALUE == 32767.0f} } {PASS}
short to float boundary caseTest Case: 5.1.2-stf-4Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-stf-3 { short to float boundary case } { empty_main T512stf3 { final short s = 0; switch (args.length) { case 0: case (((float)s == 0.0f) ? 1 : 0): case ((1/(float)s == Float.POSITIVE_INFINITY) ? 2 : 0): } } } {PASS}
short to float boundary caseTest Case: 5.1.2-stf-5Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-stf-4 { short to float boundary case } { constant_expression T512stf4 {(float)Short.MIN_VALUE == -32768.0f} } {PASS}
short to float boundary caseTest Case: 5.1.2-std-1Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-stf-5 { short to float boundary case } { empty_main T512stf5 { final short s = -1; switch (args.length) { case 0: case (((float)s == -1.0f) ? 1 : 0): } } } {PASS}
short to double conversion never loses informationTest Case: 5.1.2-std-2Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-std-1 { short to double conversion never loses information } { empty_main T512std1 { final short s = 12345; switch (args.length) { case 0: case (((double)s == 12345.0) ? 1 : 0): } } constant_expression T512std1 {(double)12345678 == 12345678L} } {PASS}
short to double boundary caseTest Case: 5.1.2-std-3Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-std-2 { short to double boundary case } { constant_expression T512std2 {(double)Short.MAX_VALUE == 32767.0} } {PASS}
short to double boundary caseTest Case: 5.1.2-std-4Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-std-3 { short to double boundary case } { empty_main T512std3 { final short s = 0; switch (args.length) { case 0: case (((double)s == 0.0) ? 1 : 0): case ((1/(double)s == Double.POSITIVE_INFINITY) ? 2 : 0): } } } {PASS}
short to double boundary caseTest Case: 5.1.2-std-5Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-std-4 { short to double boundary case } { constant_expression T512std4 {(double)Short.MIN_VALUE == -32768.0} } {PASS}
short to double boundary caseTest Case: 5.1.2-cti-1Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-std-5 { short to double boundary case } { empty_main T512std5 { final short s = -1; switch (args.length) { case 0: case (((double)s == -1.0) ? 1 : 0): } } } {PASS}
char to int conversion never loses informationTest Case: 5.1.2-cti-2Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-cti-1 { char to int conversion never loses information } { constant_expression T512cti1 {(int)'\u789a' == 0x789a} } {PASS}
char to int boundary caseTest Case: 5.1.2-cti-3Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-cti-2 { char to int boundary case } { constant_expression T512cti2 {(int)'\uffff' == 0xffff} } {PASS}
char to int boundary caseTest Case: 5.1.2-cti-4Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-cti-3 { char to int boundary case } { constant_expression T512cti3 {(int)'\0' == 0} } {PASS}
char to int boundary caseTest Case: 5.1.2-cti-5Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-cti-4 { char to int boundary case } { constant_expression T512cti4 {(int)'\u7fff' == 0x7fff} } {PASS}
char to int boundary caseTest Case: 5.1.2-cti-6Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-cti-5 { char to int boundary case } { constant_expression T512cti5 {(int)'\u8000' == 0x8000} } {PASS}
char to int boundary caseTest Case: 5.1.2-cti-7Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-cti-6 { char to int boundary case } { constant_expression T512cti6 {(int)'\177' == 0x7f} } {PASS}
char to int boundary caseTest Case: 5.1.2-cti-8Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-cti-7 { char to int boundary case } { constant_expression T512cti7 {(int)'\200' == 0x80} } {PASS}
char to int boundary caseTest Case: 5.1.2-cti-9Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-cti-8 { char to int boundary case } { constant_expression T512cti8 {(int)'\377' == 0xff} } {PASS}
char to int boundary caseTest Case: 5.1.2-ctl-1Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-cti-9 { char to int boundary case } { constant_expression T512cti9 {(int)'\u0100' == 0x100} } {PASS}
char to long conversion never loses informationTest Case: 5.1.2-ctl-2Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-ctl-1 { char to long conversion never loses information } { constant_expression T512ctl1 {(long)'\u789a' == 0x789aL} } {PASS}
char to long boundary caseTest Case: 5.1.2-ctl-3Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-ctl-2 { char to long boundary case } { constant_expression T512ctl2 {(long)'\uffff' == 0xffffL} } {PASS}
char to long boundary caseTest Case: 5.1.2-ctl-4Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-ctl-3 { char to long boundary case } { constant_expression T512ctl3 {(long)'\0' == 0L} } {PASS}
char to long boundary caseTest Case: 5.1.2-ctl-5Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-ctl-4 { char to long boundary case } { constant_expression T512ctl4 {(long)'\u7fff' == 0x7fffL} } {PASS}
char to long boundary caseTest Case: 5.1.2-ctl-6Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-ctl-5 { char to long boundary case } { constant_expression T512ctl5 {(long)'\u8000' == 0x8000L} } {PASS}
char to long boundary caseTest Case: 5.1.2-ctl-7Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-ctl-6 { char to long boundary case } { constant_expression T512ctl6 {(long)'\177' == 0x7fL} } {PASS}
char to long boundary caseTest Case: 5.1.2-ctl-8Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-ctl-7 { char to long boundary case } { constant_expression T512ctl7 {(long)'\200' == 0x80L} } {PASS}
char to long boundary caseTest Case: 5.1.2-ctl-9Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-ctl-8 { char to long boundary case } { constant_expression T512ctl8 {(long)'\377' == 0xffL} } {PASS}
char to long boundary caseTest Case: 5.1.2-ctf-1Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-ctl-9 { char to long boundary case } { constant_expression T512ctl9 {(int)'\u0100' == 0x100L} } {PASS}
char to float conversion never loses informationTest Case: 5.1.2-ctf-2Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-ctf-1 { char to float conversion never loses information } { constant_expression T512ctf1 {(float)'\u789a' == 30874.0f} } {PASS}
char to float boundary caseTest Case: 5.1.2-ctf-3Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-ctf-2 { char to float boundary case } { constant_expression T512ctf2 {(float)'\uffff' == 65535.0f} } {PASS}
char to float boundary caseTest Case: 5.1.2-ctf-4Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-ctf-3 { char to float boundary case } { constant_expression T512ctf3 {(float)'\0' == 0.0f} {1/(float)'\0' == Float.POSITIVE_INFINITY} } {PASS}
char to float boundary caseTest Case: 5.1.2-ctf-5Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-ctf-4 { char to float boundary case } { constant_expression T512ctf4 {(float)'\u7fff' == 32767.0f} } {PASS}
char to float boundary caseTest Case: 5.1.2-ctf-6Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-ctf-5 { char to float boundary case } { constant_expression T512ctf5 {(float)'\u8000' == 32768.0f} } {PASS}
char to float boundary caseTest Case: 5.1.2-ctf-7Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-ctf-6 { char to float boundary case } { constant_expression T512ctf6 {(float)'\177' == 127.0f} } {PASS}
char to float boundary caseTest Case: 5.1.2-ctf-8Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-ctf-7 { char to float boundary case } { constant_expression T512ctf7 {(float)'\200' == 128.0f} } {PASS}
char to float boundary caseTest Case: 5.1.2-ctf-9Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-ctf-8 { char to float boundary case } { constant_expression T512ctf8 {(float)'\377' == 255.0f} } {PASS}
char to float boundary caseTest Case: 5.1.2-ctd-1Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-ctf-9 { char to float boundary case } { constant_expression T512ctf9 {(float)'\u0100' == 256.0f} } {PASS}
char to double conversion never loses informationTest Case: 5.1.2-ctd-2Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-ctd-1 { char to double conversion never loses information } { constant_expression T512ctd1 {(double)'\u789a' == 30874.0} } {PASS}
char to double boundary caseTest Case: 5.1.2-ctd-3Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-ctd-2 { char to double boundary case } { constant_expression T512ctd2 {(double)'\uffff' == 65535.0} } {PASS}
char to double boundary caseTest Case: 5.1.2-ctd-4Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-ctd-3 { char to double boundary case } { constant_expression T512ctd3 {(double)'\0' == 0.0} {1/(double)'\0' == Double.POSITIVE_INFINITY} } {PASS}
char to double boundary caseTest Case: 5.1.2-ctd-5Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-ctd-4 { char to double boundary case } { constant_expression T512ctd4 {(double)'\u7fff' == 32767.0} } {PASS}
char to double boundary caseTest Case: 5.1.2-ctd-6Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-ctd-5 { char to double boundary case } { constant_expression T512ctd5 {(double)'\u8000' == 32768.0} } {PASS}
char to double boundary caseTest Case: 5.1.2-ctd-7Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-ctd-6 { char to double boundary case } { constant_expression T512ctd6 {(double)'\177' == 127.0} } {PASS}
char to double boundary caseTest Case: 5.1.2-ctd-8Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-ctd-7 { char to double boundary case } { constant_expression T512ctd7 {(double)'\200' == 128.0} } {PASS}
char to double boundary caseTest Case: 5.1.2-ctd-9Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-ctd-8 { char to double boundary case } { constant_expression T512ctd8 {(double)'\377' == 255.0} } {PASS}
char to double boundary caseTest Case: 5.1.2-itl-1Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-ctd-9 { char to double boundary case } { constant_expression T512ctd9 {(double)'\u0100' == 256.0} } {PASS}
int to long conversion never loses informationTest Case: 5.1.2-itl-2Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-itl-1 { int to long conversion never loses information } { constant_expression T512itl1 {(long)12345678 == 12345678L} } {PASS}
int to long boundary caseTest Case: 5.1.2-itl-3Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-itl-2 { int to long boundary case } { constant_expression T512itl2 {(long)Integer.MAX_VALUE == 0x7fffffffL} } {PASS}
int to long boundary caseTest Case: 5.1.2-itl-4Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-itl-3 { int to long boundary case } { constant_expression T512itl3 {(long)0 == 0L} } {PASS}
int to long boundary caseTest Case: 5.1.2-itl-5Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-itl-4 { int to long boundary case } { constant_expression T512itl4 {(long)Integer.MIN_VALUE == 0xffffffff80000000L} } {PASS}
int to long boundary caseTest Case: 5.1.2-itf-1Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-itl-5 { int to long boundary case } { constant_expression T512itl5 {(long)-1 == 0xffffffffffffffffL} } {PASS}
int to float conversion may lose precisionTest Case: 5.1.2-itf-2Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-itf-1 { int to float conversion may lose precision } { constant_expression T512itf1 {1.23456792e8f == (float)123456789} } {PASS}
int to float conversion rounds down to nearest if remainder < .5Test Case: 5.1.2-itf-3Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-itf-2 { int to float conversion rounds down to nearest if remainder < .5} { constant_expression T512itf2 {(float)0x7fffff3f == (float)0x7fffff00} } {PASS}
int to float conversion rounds up to nearest if remainder > .5Test Case: 5.1.2-itf-4Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-itf-3 { int to float conversion rounds up to nearest if remainder > .5} { constant_expression T512itf3 {(float)0x70ffffc1 == (float)0x71000000} } {PASS}
int to float conversion rounds to least significant bit 0 if remainder = .5Test Case: 5.1.2-itf-5Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-itf-4 { int to float conversion rounds to least significant bit 0 if remainder = .5} { constant_expression T512itf4 {(float)0x7fffff40 == (float)0x7fffff00} } {PASS}
int to float conversion rounds to least significant bit 0 if remainder = .5Test Case: 5.1.2-itf-6Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-itf-5 { int to float conversion rounds to least significant bit 0 if remainder = .5} { constant_expression T512itf5 {(float)0x70ffffc0 == (float)0x71000000} } {PASS}
int to float boundary caseTest Case: 5.1.2-itf-7Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-itf-6 { int to float boundary case } { constant_expression T512itf6 {(float)Integer.MAX_VALUE == 2.14748365E9f} } {PASS}
int to float boundary caseTest Case: 5.1.2-itf-8Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-itf-7 { int to float boundary case } { constant_expression T512itf7 {(float)0 == 0f} {1/(float)0 == Float.POSITIVE_INFINITY} } {PASS}
int to float boundary caseTest Case: 5.1.2-itf-9Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-itf-8 { int to float boundary case } { constant_expression T512itf8 {(float)Integer.MIN_VALUE == -2.14748365E9f} } {PASS}
int to float boundary caseTest Case: 5.1.2-itd-1Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-itf-9 { int to float boundary case } { constant_expression T512itf9 {(float)-1 == -1.0f} } {PASS}
int to double conversion never loses precisionTest Case: 5.1.2-itd-2Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-itd-1 { int to double conversion never loses precision } { constant_expression T512itd1 {123456789.0 == (double)123456789} } {PASS}
int to double boundary caseTest Case: 5.1.2-itd-3Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-itd-2 { int to double boundary case } { constant_expression T512itd2 {(double)Integer.MAX_VALUE == 2.147483647E9} } {PASS}
int to double boundary caseTest Case: 5.1.2-itd-4Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-itd-3 { int to double boundary case } { constant_expression T512itd3 {(double)0 == 0.0} {1/(double)0 == Double.POSITIVE_INFINITY} } {PASS}
int to double boundary caseTest Case: 5.1.2-itd-5Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-itd-4 { int to double boundary case } { constant_expression T512itd4 {(double)Integer.MIN_VALUE == -2.147483648e9} } {PASS}
int to double boundary caseTest Case: 5.1.2-ltf-1Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-itd-5 { int to double boundary case } { constant_expression T512itd5 {(double)-1 == -1.0} } {PASS}
long to float conversion may lose precisionTest Case: 5.1.2-ltf-2Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-ltf-1 { long to float conversion may lose precision } { constant_expression T512ltf1 {1.23456792e8f == (float)123456789L} } {PASS}
long to float conversion rounds down to nearest if remainder < .5Test Case: 5.1.2-ltf-3Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-ltf-2 { long to float conversion rounds down to nearest if remainder < .5} { constant_expression T512ltf2 {(float)0x7fffff3fL == (float)0x7fffff00L} } {PASS}
long to float conversion rounds up to nearest if remainder > .5Test Case: 5.1.2-ltf-4Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-ltf-3 { long to float conversion rounds up to nearest if remainder > .5} { constant_expression T512ltf3 {(float)0x7fffffc1L == (float)0x80000000L} } {PASS}
long to float conversion rounds to least significant bit 0 if remainder = .5Test Case: 5.1.2-ltf-5Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-ltf-4 { long to float conversion rounds to least significant bit 0 if remainder = .5} { constant_expression T512ltf4 {(float)0x7fffff40L == (float)0x7fffff00L} } {PASS}
long to float conversion rounds to least significant bit 0 if remainder = .5Test Case: 5.1.2-ltf-6Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-ltf-5 { long to float conversion rounds to least significant bit 0 if remainder = .5} { constant_expression T512ltf5 {(float)0x7fffffc0L == (float)0x80000000L} } {PASS}
long to float conversion rounds down to nearest if remainder < .5Test Case: 5.1.2-ltf-7Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-ltf-6 { long to float conversion rounds down to nearest if remainder < .5} { constant_expression T512ltf6 {(float)0xffffff7ffffffbfL == (float)0xffffff000000000L} } {PASS}
long to float conversion rounds down to nearest if remainder < .5. Hardware FP that rounds to 64-bit double precision before rounding to 32-bit single precision will fail for this test caseTest Case: 5.1.2-ltf-8Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-ltf-7 { long to float conversion rounds down to nearest if remainder < .5. Hardware FP that rounds to 64-bit double precision before rounding to 32-bit single precision will fail for this test case } { constant_expression T512ltf7 {(float)0xffffff7ffffffffL == (float)0xffffff000000000L} } {PASS}
long to float boundary caseTest Case: 5.1.2-ltf-9Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-ltf-8 { long to float boundary case } { constant_expression T512ltf8 {(float)Long.MAX_VALUE == 9.223372e18f} } {PASS}
long to float boundary caseTest Case: 5.1.2-ltf-10Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-ltf-9 { long to float boundary case } { constant_expression T512ltf9 {(float)0L == 0f} {1/(float)0L == Float.POSITIVE_INFINITY} } {PASS}
long to float boundary caseTest Case: 5.1.2-ltf-11Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-ltf-10 { long to float boundary case } { constant_expression T512ltf10 {(float)Long.MIN_VALUE == -9.223372e18f} } {PASS}
long to float boundary caseTest Case: 5.1.2-ltf-12Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-ltf-11 { long to float boundary case } { constant_expression T512ltf11 {(float)-1L == -1.0f} } {PASS}
long to float conversion rounds up to nearest if remainder > .5Test Case: 5.1.2-ltd-1Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-ltf-12 { long to float conversion rounds up to nearest if remainder > .5} { constant_expression T512ltf12 {(float)0x100000101L == (float)0x100000200L} {(float)0x100000101L == 4.294968e9f} } {PASS}
long to double conversion may lose precisionTest Case: 5.1.2-ltd-2Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-ltd-1 { long to double conversion may lose precision } { constant_expression T512ltd1 {0x123456789abcde0L == (double)0x123456789abcde7L} } {PASS}
long to double conversion rounds down to nearest if remainder < .5Test Case: 5.1.2-ltd-3Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-ltd-2 { long to double conversion rounds down to nearest if remainder < .5} { constant_expression T512ltd2 {(double)0xffffff7ffffffbfL == 0xffffff7ffffff80L} } {PASS}
long to double conversion rounds up to nearest if remainder > .5Test Case: 5.1.2-ltd-4Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-ltd-3 { long to double conversion rounds up to nearest if remainder > .5} { constant_expression T512ltd3 {(double)0xffffff7ffffffc1L == 0xffffff800000000L} } {PASS}
long to double conversion rounds to least significant bit 0 if remainder = .5Test Case: 5.1.2-ltd-5Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-ltd-4 { long to double conversion rounds to least significant bit 0 if remainder = .5} { constant_expression T512ltd4 {(double)0xffffff7ffffff40L == 0xffffff7ffffff00L} } {PASS}
long to double conversion rounds to least significant bit 0 if remainder = .5Test Case: 5.1.2-ltd-6Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-ltd-5 { long to double conversion rounds to least significant bit 0 if remainder = .5} { constant_expression T512ltd5 {(double)0xffffff7ffffffc0L == 0xffffff800000000L} } {PASS}
long to double boundary caseTest Case: 5.1.2-ltd-7Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-ltd-6 { long to double boundary case } { constant_expression T512ltd6 {(double)Long.MAX_VALUE == 9.223372036854776e18} } {PASS}
long to double boundary caseTest Case: 5.1.2-ltd-8Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-ltd-7 { long to double boundary case } { constant_expression T512ltd7 {(double)0L == 0f} {1/(double)0L == Double.POSITIVE_INFINITY} } {PASS}
long to float boundary caseTest Case: 5.1.2-ltd-9Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-ltd-8 { long to float boundary case } { constant_expression T512ltd8 {(double)Long.MIN_VALUE == -9.223372036854776e18} } {PASS}
long to float boundary caseTest Case: 5.1.2-ftd-1Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-ltd-9 { long to float boundary case } { constant_expression T512ltd9 {(double)-1L == -1.0} } {PASS}
float to double conversion never loses precisionTest Case: 5.1.2-ftd-2Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-ftd-1 { float to double conversion never loses precision } { constant_expression T512ftd1 {(double)1234567.75f == 1234567.75} } {PASS}
float to double boundary caseTest Case: 5.1.2-ftd-3Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-ftd-2 { float to double boundary case } { constant_expression T512ftd2 {(double)Float.MAX_VALUE == 3.4028234663852886e38} } {PASS}
float to double boundary caseTest Case: 5.1.2-ftd-4Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-ftd-3 { float to double boundary case } { constant_expression T512ftd3 {(double)Float.MIN_VALUE == 1.401298464324817e-45} } {PASS}
float to double boundary caseTest Case: 5.1.2-ftd-5Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-ftd-4 { float to double boundary case } { constant_expression T512ftd4 {(double)0f == 0.0} {1/(double)0f == Double.POSITIVE_INFINITY} } {PASS}
float to double boundary caseTest Case: 5.1.2-ftd-6Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-ftd-5 { float to double boundary case } { constant_expression T512ftd5 {(double)-0f == -0.0} {1/(double)-0f == Double.NEGATIVE_INFINITY} } {PASS}
float to double boundary caseTest Case: 5.1.2-ftd-7Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-ftd-6 { float to double boundary case } { constant_expression T512ftd6 {(double)Float.POSITIVE_INFINITY == Double.POSITIVE_INFINITY} } {PASS}
float to double boundary caseTest Case: 5.1.2-ftd-8Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-ftd-7 { float to double boundary case } { constant_expression T512ftd7 {(double)Float.NEGATIVE_INFINITY == Double.NEGATIVE_INFINITY} } {PASS}
float to double boundary caseTest Case: 5.1.2-ftd-9Expected Result: PASS
Regression Test:
tcltest::test 5.1.2-ftd-8 { float to double boundary case } { constant_expression T512ftd8 {(double)Float.NaN != Double.NaN} {(double)Float.NaN != (double)Float.NaN} } {PASS}
float to double on a negativeExpected Result: PASS
Regression Test:
tcltest::test 5.1.2-ftd-9 { float to double on a negative } { constant_expression T512ftd9 {(double)-12345.678f == -12345.677734375} } {PASS}
tests/jls/conversions-and-promotions/kinds-of-conversion/narrowing-primitive-conversions
narrowing from float NaN to int produces 0Test Case: 5.1.3-nan-2Expected Result: PASS
Regression Test:
tcltest::test 5.1.3-nan-1 { narrowing from float NaN to int produces 0 } { constant_expression T513nan1 {(int) Float.NaN == 0} {(int) -Float.NaN == 0} } {PASS}
narrowing from double NaN to int produces 0Test Case: 5.1.3-nan-3Expected Result: PASS
Regression Test:
tcltest::test 5.1.3-nan-2 { narrowing from double NaN to int produces 0 } { constant_expression T513nan2 {(int) Double.NaN == 0} {(int) -Double.NaN == 0} } {PASS}
narrowing from float NaN to long produces 0Test Case: 5.1.3-nan-4Expected Result: PASS
Regression Test:
tcltest::test 5.1.3-nan-3 { narrowing from float NaN to long produces 0 } { constant_expression T513nan3 {(long) Float.NaN == 0L} {(long) -Float.NaN == 0L} } {PASS}
narrowing from double NaN to long produces 0Test Case: 5.1.3-nan-5Expected Result: PASS
Regression Test:
tcltest::test 5.1.3-nan-4 { narrowing from double NaN to long produces 0 } { constant_expression T513nan4 {(long) Double.NaN == 0L} {(long) -Double.NaN == 0L} } {PASS}
narrowing from double NaN to float produces NaNTest Case: 5.1.3-dtf-1Expected Result: PASS
Regression Test:
tcltest::test 5.1.3-nan-5 { narrowing from double NaN to float produces NaN } { constant_expression T513nan5 {(float) Double.NaN != (float) Double.NaN} } {PASS}
narrowing from double to float can overflowTest Case: 5.1.3-dtf-2Expected Result: PASS
Regression Test:
tcltest::test 5.1.3-dtf-1 { narrowing from double to float can overflow } { constant_expression T513dtf1 {(float) 1e100 == Float.POSITIVE_INFINITY} } {PASS}
narrowing from double to float can underflowTest Case: 5.1.3-dtf-3Expected Result: PASS
Regression Test:
tcltest::test 5.1.3-dtf-2 { narrowing from double to float can underflow } { constant_expression T513dtf2 {(float) 1e-100 == 0.0f} } {PASS}
narrowing from double to float rounds down if remainder < .5Test Case: 5.1.3-dtf-4Expected Result: PASS
Regression Test:
tcltest::test 5.1.3-dtf-3 { narrowing from double to float rounds down if remainder < .5 } { constant_expression T513dtf3 {(float)(double)0x8000ff7ffffL == (float)0x8000ff00000L} } {PASS}
narrowing from double to float rounds up if remainder > .5Test Case: 5.1.3-dtf-5Expected Result: PASS
Regression Test:
tcltest::test 5.1.3-dtf-4 { narrowing from double to float rounds up if remainder > .5 } { constant_expression T513dtf4 {(float)(double)0x8000ff80001L == (float)0x80010000000L} } {PASS}
narrowing from double to float rounds to lsb 0 if remainder == .5Test Case: 5.1.3-dtf-6Expected Result: PASS
Regression Test:
tcltest::test 5.1.3-dtf-5 { narrowing from double to float rounds to lsb 0 if remainder == .5 } { constant_expression T513dtf5 {(float)(double)0x8000ff80000L == (float)0x80010000000L} } {PASS}
narrowing from double to float rounds to lsb 0 if remainder == .5Test Case: 5.1.3-dtf-7Expected Result: PASS
Regression Test:
tcltest::test 5.1.3-dtf-6 { narrowing from double to float rounds to lsb 0 if remainder == .5 } { constant_expression T513dtf6 {(float)(double)0x8000f080000L == (float)0x8000f000000L} } {PASS}
narrowing from double to denorm float rounds to nearestTest Case: 5.1.3-dtl-1Expected Result: PASS
Regression Test:
tcltest::test 5.1.3-dtf-7 { narrowing from double to denorm float rounds to nearest } { constant_expression T513dtf7 {(float)5.877475257357598E-39 == 5.877475e-39f} {(float)5.8774752573576E-39 == 5.877476e-39f} {(float)5.87747595800683E-39 == 5.877476e-39f} {(float)5.877476658656061E-39 == 5.877476e-39f} {(float)5.877476658656063E-39 == 5.877477e-39f} } {PASS}
narrowing from double to long truncatesTest Case: 5.1.3-dtl-2Expected Result: PASS
Regression Test:
tcltest::test 5.1.3-dtl-1 { narrowing from double to long truncates } { constant_expression T513dtl1 {(long)Double.POSITIVE_INFINITY == 0x7fffffffffffffffL} {(long)Double.NEGATIVE_INFINITY == 0x8000000000000000L} } {PASS}
narrowing from double to long truncatesTest Case: 5.1.3-dtl-3Expected Result: PASS
Regression Test:
tcltest::test 5.1.3-dtl-2 { narrowing from double to long truncates } { constant_expression T513dtl2 {(long)1e40 == 0x7fffffffffffffffL} {(long)-1e40 == 0x8000000000000000L} } {PASS}
narrowing from double to long truncatesTest Case: 5.1.3-dtl-4Expected Result: PASS
Regression Test:
tcltest::test 5.1.3-dtl-3 { narrowing from double to long truncates } { constant_expression T513dtl3 {(long)0.0 == 0L} {(long)-0.0 == 0L} } {PASS}
narrowing from double to long truncatesTest Case: 5.1.3-dti-1Expected Result: PASS
Regression Test:
tcltest::test 5.1.3-dtl-4 { narrowing from double to long truncates } { constant_expression T513dtl4 {(long)1.999 == 1L} {(long)-1.999 == -1L} } {PASS}
narrowing from double to int truncatesTest Case: 5.1.3-dti-2Expected Result: PASS
Regression Test:
tcltest::test 5.1.3-dti-1 { narrowing from double to int truncates } { constant_expression T513dti1 {(int)Double.POSITIVE_INFINITY == 0x7fffffff} {(int)Double.NEGATIVE_INFINITY == 0x80000000} } {PASS}
narrowing from double to int truncatesTest Case: 5.1.3-dti-3Expected Result: PASS
Regression Test:
tcltest::test 5.1.3-dti-2 { narrowing from double to int truncates } { constant_expression T513dti2 {(int)1e40 == 0x7fffffff} {(int)-1e40 == 0x80000000} } {PASS}
narrowing from double to int truncatesTest Case: 5.1.3-dti-4Expected Result: PASS
Regression Test:
tcltest::test 5.1.3-dti-3 { narrowing from double to int truncates } { constant_expression T513dti3 {(int)0.0 == 0L} {(int)-0.0 == 0L} } {PASS}
narrowing from double to int truncatesTest Case: 5.1.3-ftl-1Expected Result: PASS
Regression Test:
tcltest::test 5.1.3-dti-4 { narrowing from double to int truncates } { constant_expression T513dti4 {(int)1.999 == 1L} {(int)-1.999 == -1L} } {PASS}
narrowing from float to long truncatesTest Case: 5.1.3-ftl-2Expected Result: PASS
Regression Test:
tcltest::test 5.1.3-ftl-1 { narrowing from float to long truncates } { constant_expression T513ftl1 {(long)Float.POSITIVE_INFINITY == 0x7fffffffffffffffL} {(long)Float.NEGATIVE_INFINITY == 0x8000000000000000L} } {PASS}
narrowing from float to long truncatesTest Case: 5.1.3-ftl-3Expected Result: PASS
Regression Test:
tcltest::test 5.1.3-ftl-2 { narrowing from float to long truncates } { constant_expression T513ftl2 {(long)1e30f == 0x7fffffffffffffffL} {(long)-1e30f == 0x8000000000000000L} } {PASS}
narrowing from float to long truncatesTest Case: 5.1.3-ftl-4Expected Result: PASS
Regression Test:
tcltest::test 5.1.3-ftl-3 { narrowing from float to long truncates } { constant_expression T513ftl3 {(long)0.0f == 0L} {(long)-0.0f == 0L} } {PASS}
narrowing from float to long truncatesTest Case: 5.1.3-fti-1Expected Result: PASS
Regression Test:
tcltest::test 5.1.3-ftl-4 { narrowing from float to long truncates } { constant_expression T513ftl4 {(long)1.999f == 1L} {(long)-1.999f == -1L} } {PASS}
narrowing from float to int truncatesTest Case: 5.1.3-fti-2Expected Result: PASS
Regression Test:
tcltest::test 5.1.3-fti-1 { narrowing from float to int truncates } { constant_expression T513fti1 {(int)Float.POSITIVE_INFINITY == 0x7fffffff} {(int)Float.NEGATIVE_INFINITY == 0x80000000} } {PASS}
narrowing from float to int truncatesTest Case: 5.1.3-fti-3Expected Result: PASS
Regression Test:
tcltest::test 5.1.3-fti-2 { narrowing from float to int truncates } { constant_expression T513fti2 {(int)1e30f == 0x7fffffff} {(int)-1e30f == 0x80000000} } {PASS}
narrowing from float to int truncatesTest Case: 5.1.3-fti-4Expected Result: PASS
Regression Test:
tcltest::test 5.1.3-fti-3 { narrowing from float to int truncates } { constant_expression T513fti3 {(int)0.0f == 0} {(int)-0.0f == 0} } {PASS}
narrowing from float to int truncatesExpected Result: PASS
Regression Test:
tcltest::test 5.1.3-fti-4 { narrowing from float to int truncates } { constant_expression T513fti4 {(int)1.999f == 1} {(int)-1.999f == -1} } {PASS}
tests/jls/conversions-and-promotions/assignment-conversion
Assignment contexts allow the use of an identity conversionTest Case: 5.2-byte-widening-1Expected Result: PASS
Regression Test:
tcltest::test 5.2-byte-identity-1 { Assignment contexts allow the use of an identity conversion } { empty_main T52bi1 { byte b = (byte) 1; } } {PASS}
Assignment contexts allow the use of a widening primitive conversionTest Case: 5.2-byte-widening-2Expected Result: PASS
Regression Test:
tcltest::test 5.2-byte-widening-1 { Assignment contexts allow the use of a widening primitive conversion } { empty_main T52bw1 { short s = (byte) 1; } } {PASS}
Assignment contexts allow the use of a widening primitive conversionTest Case: 5.2-byte-widening-3Expected Result: PASS
Regression Test:
tcltest::test 5.2-byte-widening-2 { Assignment contexts allow the use of a widening primitive conversion } { empty_main T52bw2 { int i = (byte) 1; } } {PASS}
Assignment contexts allow the use of a widening primitive conversionTest Case: 5.2-byte-widening-4Expected Result: PASS
Regression Test:
tcltest::test 5.2-byte-widening-3 { Assignment contexts allow the use of a widening primitive conversion } { empty_main T52bw3 { long l = (byte) 1; } } {PASS}
Assignment contexts allow the use of a widening primitive conversionTest Case: 5.2-byte-widening-5Expected Result: PASS
Regression Test:
tcltest::test 5.2-byte-widening-4 { Assignment contexts allow the use of a widening primitive conversion } { empty_main T52bw4 { float f = (byte) 1; } } {PASS}
Assignment contexts allow the use of a widening primitive conversionTest Case: 5.2-byte-narrowing-1Expected Result: PASS
Regression Test:
tcltest::test 5.2-byte-widening-5 { Assignment contexts allow the use of a widening primitive conversion } { empty_main T52bw5 { double d = (byte) 1; } } {PASS}
Assignment conversion may narrow if a constant expression of type byte is assigned to a variable of type charTest Case: 5.2-byte-narrowing-error-1Expected Result: PASS
Regression Test:
tcltest::test 5.2-byte-narrowing-1 { Assignment conversion may narrow if a constant expression of type byte is assigned to a variable of type char } { empty_main T52bn1 { char c = (byte) 1; } } {PASS}
Assignment conversion may not narrow if the expression is non-constantTest Case: 5.2-byte-narrowing-error-2Expected Result: FAIL
Regression Test:
tcltest::test 5.2-byte-narrowing-error-1 { Assignment conversion may not narrow if the expression is non-constant } { empty_main T52bne1 { byte b = (byte) 1; char c = b; } } {FAIL}
Assignment conversion may not narrow if the expression is not representable in the type of the variableTest Case: 5.2-short-identity-1Expected Result: FAIL
Regression Test:
tcltest::test 5.2-byte-narrowing-error-2 { Assignment conversion may not narrow if the expression is not representable in the type of the variable } { empty_main T52bne2 { char c = (byte) -1; } } {FAIL}
Assignment contexts allow the use of an identity conversionTest Case: 5.2-short-widening-1Expected Result: PASS
Regression Test:
tcltest::test 5.2-short-identity-1 { Assignment contexts allow the use of an identity conversion } { empty_main T52si1 { short s = (short) 1; } } {PASS}
Assignment contexts allow the use of a widening primitive conversionTest Case: 5.2-short-widening-2Expected Result: PASS
Regression Test:
tcltest::test 5.2-short-widening-1 { Assignment contexts allow the use of a widening primitive conversion } { empty_main T52sw1 { int i = (short) 1; } } {PASS}
Assignment contexts allow the use of a widening primitive conversionTest Case: 5.2-short-widening-3Expected Result: PASS
Regression Test:
tcltest::test 5.2-short-widening-2 { Assignment contexts allow the use of a widening primitive conversion } { empty_main T52sw2 { long l = (short) 1; } } {PASS}
Assignment contexts allow the use of a widening primitive conversionTest Case: 5.2-short-widening-4Expected Result: PASS
Regression Test:
tcltest::test 5.2-short-widening-3 { Assignment contexts allow the use of a widening primitive conversion } { empty_main T52sw3 { float f = (short) 1; } } {PASS}
Assignment contexts allow the use of a widening primitive conversionTest Case: 5.2-short-narrowing-1Expected Result: PASS
Regression Test:
tcltest::test 5.2-short-widening-4 { Assignment contexts allow the use of a widening primitive conversion } { empty_main T52sw4 { double d = (short) 1; } } {PASS}
Assignment conversion may narrow if a constant expression of type short is assigned to a variable of type byteTest Case: 5.2-short-narrowing-2Expected Result: PASS
Regression Test:
tcltest::test 5.2-short-narrowing-1 { Assignment conversion may narrow if a constant expression of type short is assigned to a variable of type byte } { empty_main T52sn1 { byte b = (short) 1; } } {PASS}
Assignment conversion may narrow if a constant expression of type short is assigned to a variable of type charTest Case: 5.2-short-narrowing-error-1Expected Result: PASS
Regression Test:
tcltest::test 5.2-short-narrowing-2 { Assignment conversion may narrow if a constant expression of type short is assigned to a variable of type char } { empty_main T52sn2 { char c = (short) 1; } } {PASS}
Assignment conversion may not narrow if the expression is non-constantTest Case: 5.2-short-narrowing-error-2Expected Result: FAIL
Regression Test:
tcltest::test 5.2-short-narrowing-error-1 { Assignment conversion may not narrow if the expression is non-constant } { empty_main T52sne1 { short s = (short) 1; char c = s; } } {FAIL}
Assignment conversion may not narrow if the expression is not representable in the type of the variableTest Case: 5.2-short-narrowing-error-3Expected Result: FAIL
Regression Test:
tcltest::test 5.2-short-narrowing-error-2 { Assignment conversion may not narrow if the expression is not representable in the type of the variable } { empty_main T52sne2 { char c = (short) -1; } } {FAIL}
Assignment conversion may not narrow if the expression is not representable in the type of the variableTest Case: 5.2-char-identity-1Expected Result: FAIL
Regression Test:
tcltest::test 5.2-short-narrowing-error-3 { Assignment conversion may not narrow if the expression is not representable in the type of the variable } { empty_main T52sne3 { byte b = (short) 128; } } {FAIL}
Assignment contexts allow the use of an identity conversionTest Case: 5.2-char-widening-1Expected Result: PASS
Regression Test:
tcltest::test 5.2-char-identity-1 { Assignment contexts allow the use of an identity conversion } { empty_main T52ci1 { char c = '1'; } } {PASS}
Assignment contexts allow the use of a widening primitive conversionTest Case: 5.2-char-widening-2Expected Result: PASS
Regression Test:
tcltest::test 5.2-char-widening-1 { Assignment contexts allow the use of a widening primitive conversion } { empty_main T52cw1 { int i = '1'; } } {PASS}
Assignment contexts allow the use of a widening primitive conversionTest Case: 5.2-char-widening-3Expected Result: PASS
Regression Test:
tcltest::test 5.2-char-widening-2 { Assignment contexts allow the use of a widening primitive conversion } { empty_main T52cw2 { long l = '1'; } } {PASS}
Assignment contexts allow the use of a widening primitive conversionTest Case: 5.2-char-widening-4Expected Result: PASS
Regression Test:
tcltest::test 5.2-char-widening-3 { Assignment contexts allow the use of a widening primitive conversion } { empty_main T52cw3 { float f = '1'; } } {PASS}
Assignment contexts allow the use of a widening primitive conversionTest Case: 5.2-char-narrowing-1Expected Result: PASS
Regression Test:
tcltest::test 5.2-char-widening-4 { Assignment contexts allow the use of a widening primitive conversion } { empty_main T52cw4 { double d = '1'; } } {PASS}
Assignment conversion may narrow if a constant expression of type char is assigned to a variable of type byteTest Case: 5.2-char-narrowing-2Expected Result: PASS
Regression Test:
tcltest::test 5.2-char-narrowing-1 { Assignment conversion may narrow if a constant expression of type char is assigned to a variable of type byte } { empty_main T52cn1 { byte b = '1'; } } {PASS}
Assignment conversion may narrow if a constant expression of type char is assigned to a variable of type shortTest Case: 5.2-char-narrowing-error-1Expected Result: PASS
Regression Test:
tcltest::test 5.2-char-narrowing-2 { Assignment conversion may narrow if a constant expression of type char is assigned to a variable of type short } { empty_main T52cn2 { short s = '1'; } } {PASS}
Assignment conversion may not narrow if the expression is non-constantTest Case: 5.2-char-narrowing-error-2Expected Result: FAIL
Regression Test:
tcltest::test 5.2-char-narrowing-error-1 { Assignment conversion may not narrow if the expression is non-constant } { empty_main T52cne1 { char c = '1'; byte b = c; } } {FAIL}
Assignment conversion may not narrow if the expression is not representable in the type of the variableTest Case: 5.2-char-narrowing-error-3Expected Result: FAIL
Regression Test:
tcltest::test 5.2-char-narrowing-error-2 { Assignment conversion may not narrow if the expression is not representable in the type of the variable } { empty_main T52cne2 { byte b = '\u0080'; } } {FAIL}
Assignment conversion may not narrow if the expression is not representable in the type of the variableTest Case: 5.2-int-identity-1Expected Result: FAIL
Regression Test:
tcltest::test 5.2-char-narrowing-error-3 { Assignment conversion may not narrow if the expression is not representable in the type of the variable } { empty_main T52cne3 { short s = '\u8000'; } } {FAIL}
Assignment contexts allow the use of an identity conversionTest Case: 5.2-int-widening-1Expected Result: PASS
Regression Test:
tcltest::test 5.2-int-identity-1 { Assignment contexts allow the use of an identity conversion } { empty_main T52ii1 { int i = 1; } } {PASS}
Assignment contexts allow the use of a widening primitive conversionTest Case: 5.2-int-widening-2Expected Result: PASS
Regression Test:
tcltest::test 5.2-int-widening-1 { Assignment contexts allow the use of a widening primitive conversion } { empty_main T52iw1 { long l = 1; } } {PASS}
Assignment contexts allow the use of a widening primitive conversionTest Case: 5.2-int-widening-3Expected Result: PASS
Regression Test:
tcltest::test 5.2-int-widening-2 { Assignment contexts allow the use of a widening primitive conversion } { empty_main T52iw2 { float f = 1; } } {PASS}
Assignment contexts allow the use of a widening primitive conversionTest Case: 5.2-int-narrowing-1Expected Result: PASS
Regression Test:
tcltest::test 5.2-int-widening-3 { Assignment contexts allow the use of a widening primitive conversion } { empty_main T52iw3 { double d = 1; } } {PASS}
Assignment conversion may narrow if a constant expression of type int is assigned to a variable of type byteTest Case: 5.2-int-narrowing-2Expected Result: PASS
Regression Test:
tcltest::test 5.2-int-narrowing-1 { Assignment conversion may narrow if a constant expression of type int is assigned to a variable of type byte } { empty_main T52in1 { byte b = 1; } } {PASS}
Assignment conversion may narrow if a constant expression of type int is assigned to a variable of type shortTest Case: 5.2-int-narrowing-3Expected Result: PASS
Regression Test:
tcltest::test 5.2-int-narrowing-2 { Assignment conversion may narrow if a constant expression of type int is assigned to a variable of type short } { empty_main T52in2 { short s = 1; } } {PASS}
Assignment conversion may narrow if a constant expression of type int is assigned to a variable of type charTest Case: 5.2-int-narrowing-error-1Expected Result: PASS
Regression Test:
tcltest::test 5.2-int-narrowing-3 { Assignment conversion may narrow if a constant expression of type int is assigned to a variable of type char } { empty_main T52in3 { char c = 1; } } {PASS}
Assignment conversion may not narrow if the expression is non-constantTest Case: 5.2-int-narrowing-error-2Expected Result: FAIL
Regression Test:
tcltest::test 5.2-int-narrowing-error-1 { Assignment conversion may not narrow if the expression is non-constant } { empty_main T52ine1 { int i = 1; byte b = i; } } {FAIL}
Assignment conversion may not narrow if the expression is not representable in the type of the variableTest Case: 5.2-int-narrowing-error-3Expected Result: FAIL
Regression Test:
tcltest::test 5.2-int-narrowing-error-2 { Assignment conversion may not narrow if the expression is not representable in the type of the variable } { empty_main T52ine2 { byte b = -129; } } {FAIL}
Assignment conversion may not narrow if the expression is not representable in the type of the variableTest Case: 5.2-int-narrowing-error-4Expected Result: FAIL
Regression Test:
tcltest::test 5.2-int-narrowing-error-3 { Assignment conversion may not narrow if the expression is not representable in the type of the variable } { empty_main T52ine3 { short s = 32768; } } {FAIL}
Assignment conversion may not narrow if the expression is not representable in the type of the variableTest Case: 5.2-long-identity-1Expected Result: FAIL
Regression Test:
tcltest::test 5.2-int-narrowing-error-4 { Assignment conversion may not narrow if the expression is not representable in the type of the variable } { empty_main T52ine4 { char c = -1; } } {FAIL}
Assignment contexts allow the use of an identity conversionTest Case: 5.2-long-widening-1Expected Result: PASS
Regression Test:
tcltest::test 5.2-long-identity-1 { Assignment contexts allow the use of an identity conversion } { empty_main T52li1 { long l = 1L; } } {PASS}
Assignment contexts allow the use of a widening primitive conversionTest Case: 5.2-long-widening-2Expected Result: PASS
Regression Test:
tcltest::test 5.2-long-widening-1 { Assignment contexts allow the use of a widening primitive conversion } { empty_main T52lw1 { float f = 1L; } } {PASS}
Assignment contexts allow the use of a widening primitive conversionTest Case: 5.2-long-narrowing-error-1Expected Result: PASS
Regression Test:
tcltest::test 5.2-long-widening-2 { Assignment contexts allow the use of a widening primitive conversion } { empty_main T52lw2 { double d = 1L; } } {PASS}
Assignment conversion may not narrow an expression of type longTest Case: 5.2-long-narrowing-error-2Expected Result: FAIL
Regression Test:
tcltest::test 5.2-long-narrowing-error-1 { Assignment conversion may not narrow an expression of type long } { empty_main T52lne1 { byte b = 1L; } } {FAIL}
Assignment conversion may not narrow an expression of type longTest Case: 5.2-long-narrowing-error-3Expected Result: FAIL
Regression Test:
tcltest::test 5.2-long-narrowing-error-2 { Assignment conversion may not narrow an expression of type long } { empty_main T52lne2 { short s = 1L; } } {FAIL}
Assignment conversion may not narrow an expression of type longTest Case: 5.2-long-narrowing-error-4Expected Result: FAIL
Regression Test:
tcltest::test 5.2-long-narrowing-error-3 { Assignment conversion may not narrow an expression of type long } { empty_main T52lne3 { char c = 1L; } } {FAIL}
Assignment conversion may not narrow an expression of type longTest Case: 5.2-float-identity-1Expected Result: FAIL
Regression Test:
tcltest::test 5.2-long-narrowing-error-4 { Assignment conversion may not narrow an expression of type long } { empty_main T52lne4 { int i = 1L; } } {FAIL}
Assignment contexts allow the use of an identity conversionTest Case: 5.2-float-widening-1Expected Result: PASS
Regression Test:
tcltest::test 5.2-float-identity-1 { Assignment contexts allow the use of an identity conversion } { empty_main T52fi1 { float f = 1.0F; } } {PASS}
Assignment contexts allow the use of a widening primitive conversionTest Case: 5.2-float-narrowing-error-1Expected Result: PASS
Regression Test:
tcltest::test 5.2-float-widening-1 { Assignment contexts allow the use of a widening primitive conversion } { empty_main T52fw1 { double d = 1.0F; } } {PASS}
Assignment conversion may not narrow an expression of type floatTest Case: 5.2-float-narrowing-error-2Expected Result: FAIL
Regression Test:
tcltest::test 5.2-float-narrowing-error-1 { Assignment conversion may not narrow an expression of type float } { empty_main T52fne1 { byte b = 1.0F; } } {FAIL}
Assignment conversion may not narrow an expression of type floatTest Case: 5.2-float-narrowing-error-3Expected Result: FAIL
Regression Test:
tcltest::test 5.2-float-narrowing-error-2 { Assignment conversion may not narrow an expression of type float } { empty_main T52fne2 { short s = 1.0F; } } {FAIL}
Assignment conversion may not narrow an expression of type floatTest Case: 5.2-float-narrowing-error-4Expected Result: FAIL
Regression Test:
tcltest::test 5.2-float-narrowing-error-3 { Assignment conversion may not narrow an expression of type float } { empty_main T52fne3 { char c = 1.0F; } } {FAIL}
Assignment conversion may not narrow an expression of type floatTest Case: 5.2-float-narrowing-error-5Expected Result: FAIL
Regression Test:
tcltest::test 5.2-float-narrowing-error-4 { Assignment conversion may not narrow an expression of type float } { empty_main T52fne4 { int i = 1.0F; } } {FAIL}
Assignment conversion may not narrow an expression of type floatTest Case: 5.2-double-identity-1Expected Result: FAIL
Regression Test:
tcltest::test 5.2-float-narrowing-error-5 { Assignment conversion may not narrow an expression of type float } { empty_main T52fne5 { long l = 1.0F; } } {FAIL}
Assignment contexts allow the use of an identity conversionTest Case: 5.2-double-narrowing-error-1Expected Result: PASS
Regression Test:
tcltest::test 5.2-double-identity-1 { Assignment contexts allow the use of an identity conversion } { empty_main T52di1 { double d = 1.0D; } } {PASS}
Assignment conversion may not narrow an expression of type doubleTest Case: 5.2-double-narrowing-error-2Expected Result: FAIL
Regression Test:
tcltest::test 5.2-double-narrowing-error-1 { Assignment conversion may not narrow an expression of type double } { empty_main T52dne1 { byte b = 1.0D; } } {FAIL}
Assignment conversion may not narrow an expression of type doubleTest Case: 5.2-double-narrowing-error-3Expected Result: FAIL
Regression Test:
tcltest::test 5.2-double-narrowing-error-2 { Assignment conversion may not narrow an expression of type double } { empty_main T52dne2 { short s = 1.0D; } } {FAIL}
Assignment conversion may not narrow an expression of type doubleTest Case: 5.2-double-narrowing-error-4Expected Result: FAIL
Regression Test:
tcltest::test 5.2-double-narrowing-error-3 { Assignment conversion may not narrow an expression of type double } { empty_main T52dne3 { char c = 1.0D; } } {FAIL}
Assignment conversion may not narrow an expression of type doubleTest Case: 5.2-double-narrowing-error-5Expected Result: FAIL
Regression Test:
tcltest::test 5.2-double-narrowing-error-4 { Assignment conversion may not narrow an expression of type double } { empty_main T52dne4 { int i = 1.0D; } } {FAIL}
Assignment conversion may not narrow an expression of type doubleTest Case: 5.2-double-narrowing-error-6Expected Result: FAIL
Regression Test:
tcltest::test 5.2-double-narrowing-error-5 { Assignment conversion may not narrow an expression of type double } { empty_main T52dne5 { long l = 1.0D; } } {FAIL}
Assignment conversion may not narrow an expression of type doubleTest Case: 5.2-boolean-identity-1Expected Result: FAIL
Regression Test:
tcltest::test 5.2-double-narrowing-error-6 { Assignment conversion may not narrow an expression of type double } { empty_main T52dne6 { float f = 1.0D; } } {FAIL}
Assignment contexts allow the use of an identity conversionTest Case: 5.2-boolean-error-1Expected Result: PASS
Regression Test:
tcltest::test 5.2-boolean-identity-1 { Assignment contexts allow the use of an identity conversion } { empty_main T52booli1 { boolean b = true; } } {PASS}
Assignment conversion cannot assign a boolean type to another typeTest Case: 5.2-reference-identity-1Expected Result: FAIL
Regression Test:
tcltest::test 5.2-boolean-error-1 { Assignment conversion cannot assign a boolean type to another type } { empty_main T52boole1 { int i = true; } } {FAIL}
Assignment contexts allow the use of an identity conversionTest Case: 5.2-reference-widening-1Expected Result: PASS
Regression Test:
tcltest::test 5.2-reference-identity-1 { Assignment contexts allow the use of an identity conversion } { empty_main T52ri1 { String s = ""; } } {PASS}
Assignment contexts allow the use of a widening reference conversionTest Case: 5.2-reference-widening-2Expected Result: PASS
Regression Test:
tcltest::test 5.2-reference-widening-1 { Assignment contexts allow the use of a widening reference conversion } { empty_main T52rw1 { Object o = ""; } } {PASS}
Assignment contexts allow the use of a widening reference conversionTest Case: 5.2-reference-error-1Expected Result: PASS
Regression Test:
tcltest::test 5.2-reference-widening-2 { Assignment contexts allow the use of a widening reference conversion } { empty_main T52rw2 { Object o = null; } } {PASS}
Assignment conversion cannot assign a primitive type to a reference variableTest Case: 5.2-reference-error-2Expected Result: FAIL
Regression Test:
tcltest::test 5.2-reference-error-1 { Assignment conversion cannot assign a primitive type to a reference variable } { empty_main T52re1 { Object o = 0.0D; } } {FAIL}
Assignment conversion cannot narrowTest Case: 5.2-reference-error-3Expected Result: FAIL
Regression Test:
tcltest::test 5.2-reference-error-2 { Assignment conversion cannot narrow } { empty_main T52re2 { String s = new Object(); } } {FAIL}
Assignment conversion cannot assign a different type to a reference variableTest Case: 5.2-interface-identity-1Expected Result: FAIL
Regression Test:
tcltest::test 5.2-reference-error-3 { Assignment conversion cannot assign a different type to a reference variable } { empty_main T52re3 { String s = new Integer(); } } {FAIL}
Assignment contexts allow the use of an identity conversionTest Case: 5.2-interface-widening-1Expected Result: PASS
Regression Test:
tcltest::test 5.2-interface-identity-1 { Assignment contexts allow the use of an identity conversion } { empty_class T52ii1 { void foo(Cloneable c) { Cloneable c1 = c; } } } {PASS}
Assignment contexts allow the use of a widening reference conversionTest Case: 5.2-interface-widening-2Expected Result: PASS
Regression Test:
tcltest::test 5.2-interface-widening-1 { Assignment contexts allow the use of a widening reference conversion } { empty_class T52iw1 { interface I extends Cloneable {} void foo(I i) { Cloneable c = i; } } } {PASS}
Assignment contexts allow the use of a widening reference conversionTest Case: 5.2-interface-error-1Expected Result: PASS
Regression Test:
tcltest::test 5.2-interface-widening-2 { Assignment contexts allow the use of a widening reference conversion } { empty_main T52iw2 { Cloneable c = null; } } {PASS}
Assignment conversion cannot assign a primitive type to a reference variableTest Case: 5.2-interface-error-2Expected Result: FAIL
Regression Test:
tcltest::test 5.2-interface-error-1 { Assignment conversion cannot assign a primitive type to a reference variable } { empty_main T52ie1 { Cloneable c = 0.0D; } } {FAIL}
Assignment conversion cannot narrowTest Case: 5.2-interface-error-3Expected Result: FAIL
Regression Test:
tcltest::test 5.2-interface-error-2 { Assignment conversion cannot narrow } { empty_main T52ie2 { Cloneable c = ""; } } {FAIL}
Assignment conversion cannot assign a different type to a reference variableTest Case: 5.2-array-identity-1Expected Result: FAIL
Regression Test:
tcltest::test 5.2-interface-error-3 { Assignment conversion cannot assign a different type to a reference variable } { empty_main T52ie3 { static final class C {} Cloneable c = new C(); } } {FAIL}
Assignment contexts allow the use of an identity conversionTest Case: 5.2-array-widening-1Expected Result: PASS
Regression Test:
tcltest::test 5.2-array-identity-1 { Assignment contexts allow the use of an identity conversion } { empty_class T52ai1 { void foo(String[] s) { String[] s1 = s; } } } {PASS}
Assignment contexts allow the use of a widening reference conversionTest Case: 5.2-array-widening-2Expected Result: PASS
Regression Test:
tcltest::test 5.2-array-widening-1 { Assignment contexts allow the use of a widening reference conversion } { empty_class T52aw1 { void foo(String[] s) { Object[] o = s; } } } {PASS}
Assignment contexts allow the use of a widening reference conversionTest Case: 5.2-array-error-1Expected Result: PASS
Regression Test:
tcltest::test 5.2-array-widening-2 { Assignment contexts allow the use of a widening reference conversion } { empty_main T52aw2 { Object[] o = null; } } {PASS}
Assignment conversion cannot assign a primitive type to a reference variableTest Case: 5.2-array-error-2Expected Result: FAIL
Regression Test:
tcltest::test 5.2-array-error-1 { Assignment conversion cannot assign a primitive type to a reference variable } { empty_main T52ae1 { Object[] o = 0.0D; } } {FAIL}
Assignment conversion cannot narrowTest Case: 5.2-array-error-3Expected Result: FAIL
Regression Test:
tcltest::test 5.2-array-error-2 { Assignment conversion cannot narrow } { empty_main T52ae2 { String[] s = new Object[0]; } } {FAIL}
Assignment conversion cannot assign a different type to a reference variableTest Case: 5.2-array-error-4Expected Result: FAIL
Regression Test:
tcltest::test 5.2-array-error-3 { Assignment conversion cannot assign a different type to a reference variable } { empty_main T52ae3 { String[] s = new Integer[0]; } } {FAIL}
Assignment conversion cannot assign a array with a different primitive base typeTest Case: 5.2-array-error-5Expected Result: FAIL
Regression Test:
tcltest::test 5.2-array-error-4 { Assignment conversion cannot assign a array with a different primitive base type} { empty_main T52ae4 { int[] i = new short[0]; } } {FAIL}
Assignment conversion cannot assign a array with a primitive base type to an object arrayExpected Result: FAIL
Regression Test:
tcltest::test 5.2-array-error-5 { Assignment conversion cannot assign a array with a primitive base type to an object array} { empty_main T52ae5 { Object[] i = new int[0]; } } {FAIL}
tests/jls/names/names-and-identifiers
Declarations expect an identifier, not a qualified nameTest Case: 6.2-identifier-2Expected Result: FAIL
Regression Test:
tcltest::test 6.2-identifier-1 { Declarations expect an identifier, not a qualified name } { empty_class T62i1 { T62i1 qualified.name; } } {FAIL}
Declarations expect an identifier, not a qualified nameTest Case: 6.2-identifier-3Expected Result: FAIL
Regression Test:
tcltest::test 6.2-identifier-2 { Declarations expect an identifier, not a qualified name } { empty_class T62i2 { class Qualified.Name {} } } {FAIL}
Declarations expect an identifier, not a qualified nameTest Case: 6.2-identifier-4Expected Result: FAIL
Regression Test:
tcltest::test 6.2-identifier-3 { Declarations expect an identifier, not a qualified name } { empty_class T62i3 { interface Qualified.Name {} } } {FAIL}
Declarations expect an identifier, not a qualified nameTest Case: 6.2-identifier-5Expected Result: FAIL
Regression Test:
tcltest::test 6.2-identifier-4 { Declarations expect an identifier, not a qualified name } { empty_class T62i4 { void qualified.name() {} } } {FAIL}
Declarations expect an identifier, not a qualified nameTest Case: 6.2-identifier-6Expected Result: FAIL
Regression Test:
tcltest::test 6.2-identifier-5 { Declarations expect an identifier, not a qualified name } { empty_class T62i5 { void foo(int qualified.name) {} } } {FAIL}
Declarations expect an identifier, not a qualified nameTest Case: 6.2-identifier-7Expected Result: FAIL
Regression Test:
tcltest::test 6.2-identifier-6 { Declarations expect an identifier, not a qualified name } { empty_main T62i6 { try { throw new Exception(); } catch (Exception qualified.name) { } } } {FAIL}
Declarations expect an identifier, not a qualified nameTest Case: 6.2-identifier-8Expected Result: FAIL
Regression Test:
tcltest::test 6.2-identifier-7 { Declarations expect an identifier, not a qualified name } { empty_main T62i7 { int qualified.name; } } {FAIL}
Declarations expect an identifier, not a qualified nameTest Case: 6.2-identifier-9Expected Result: FAIL
Regression Test:
tcltest::test 6.2-identifier-8 { Declarations expect an identifier, not a qualified name } { empty_main T62i8 { for (int qualified.name; ; ); } } {FAIL}
Labels expect an identifier, not a qualified nameTest Case: 6.2-identifier-10Expected Result: FAIL
Regression Test:
tcltest::test 6.2-identifier-9 { Labels expect an identifier, not a qualified name } { empty_main T62i9 { qualified.label: toString(); } } {FAIL}
Labels expect an identifier, not a qualified nameTest Case: 6.2-identifier-11Expected Result: FAIL
Regression Test:
tcltest::test 6.2-identifier-10 { Labels expect an identifier, not a qualified name } { empty_main T62i10 { qualified.label: break qualified.label; } } {FAIL}
Qualified class instance creation expects an identifier, not a qualified nameTest Case: 6.2-example-1Expected Result: FAIL
Regression Test:
tcltest::test 6.2-identifier-11 { Qualified class instance creation expects an identifier, not a qualified name } { empty_class T62i11 { class Inner {} Object o = new T62i11().new T62i11.Inner(); } } {FAIL}
First example from the specsTest Case: 6.2-example-2Expected Result: PASS
Regression Test:
tcltest::test 6.2-example-1 { First example from the specs } { compile [saveas T62e1.java { // T62e1 is identifier class T62e1 { // main, args are identifier; String is name public static void main(String[] args) { // c is identifier; Class, System.out.getClass are names Class c = System.out.getClass(); // length is identifier; System.out.println, c are names System.out.println(c.toString().length() + // first length is identifier; args, args.length are names args[0].length() + args.length); } } }] } {PASS}
Second example from the specs: labels are independent from other uses of namesExpected Result: PASS
Regression Test:
tcltest::test 6.2-example-2 { Second example from the specs: labels are independent from other uses of names } { empty_class T62e2 { char[] value; int offset, count; int indexOf(T62e2 str, int fromIndex) { char[] v1 = value, v2 = str.value; int max = offset + (count - str.count); int start = offset + ((fromIndex < 0) ? 0 : fromIndex); i: for (int i = start; i <= max; i++) { int n = str.count, j = i, k = str.offset; while (n-- != 0) { if (v1[j++] != v2[k++]) continue i; } return i - offset; } return -1; } } } {PASS}
tests/jls/names/scope-of-a-declaration
symbol used in field initialization must be defined before it can be usedTest Case: 6.3-2Expected Result: FAIL
Regression Test:
tcltest::test 6.3-1 { symbol used in field initialization must be defined before it can be used } { compile [saveas IllegalForwardReference.java { public class IllegalForwardReference { int a = b; int b = 0; } }] } {FAIL}
forward reference to a field outside of an initializer is legalTest Case: 6.3-3Expected Result: PASS
Regression Test:
tcltest::test 6.3-2 { forward reference to a field outside of an initializer is legal } { compile [saveas LegalForwardReference.java { public class LegalForwardReference { void foo() { a = 1; } int a; } }] } {PASS}
use of a class before it is defined is legalTest Case: 6.3-4Expected Result: PASS
Regression Test:
tcltest::test 6.3-3 { use of a class before it is defined is legal } { compile [saveas UseOfTypeBeforeDeclaration.java { public class UseOfTypeBeforeDeclaration { Object o = new UseOfTypeBeforeDeclaration_Type(); } class UseOfTypeBeforeDeclaration_Type { Object o = new UseOfTypeBeforeDeclaration(); } }] } {PASS}
the scope of a class includes every known member of the package, so we should be able to make a forward refExpected Result: PASS
Regression Test:
tcltest::test 6.3-4 { the scope of a class includes every known member of the package, so we should be able to make a forward ref } { saveas GlobalOne.java { public class GlobalOne { void foo() { Object o = new GlobalTwo(); } } } saveas GlobalTwo.java { public class GlobalTwo { void foo() { Object o = new GlobalOne(); } } } compile GlobalOne.java GlobalTwo.java } {PASS}
tests/jls/names/members-and-inheritance/members-of-a-package
A class declared in a package is a member of that packageExpected Result: PASS
Regression Test:
tcltest::test 6.4.1-class-member-1 { A class declared in a package is a member of that package } { saveas pkg/T641cm1.java { package pkg; public class T641cm1 {} } saveas T641cm1_Test.java { public class T641cm1_Test { Object o = new pkg.T641cm1(); } } compile -classpath . pkg/T641cm1.java T641cm1_Test.java } {PASS}
tests/jls/names/members-and-inheritance/members-of-a-class-type
interface member reference can not be ambiguousTest Case: 6.4.2-2Expected Result: FAIL
Regression Test:
tcltest::test 6.4.2-1 { interface member reference can not be ambiguous } { saveas AmbiguousInterfaceMember.java { interface One { int VAL = 1; } interface Two { int VAL = 2; } class AmbiguousInterfaceMember implements One, Two { int i = VAL; } } compile AmbiguousInterfaceMember.java } {FAIL}
a qualified reference is not ambiguousExpected Result: PASS
Regression Test:
tcltest::test 6.4.2-2 { a qualified reference is not ambiguous } { saveas QualifiedInterfaceMember.java { interface One { int VAL = 1; } interface Two { int VAL = 2; } class QualifiedInterfaceMember implements One, Two { int i = One.VAL; } } compile QualifiedInterfaceMember.java } {PASS}
tests/jls/names/members-and-inheritance/members-of-an-interface-type
interface member reference can not be ambiguousTest Case: 6.4.3-2Expected Result: FAIL
Regression Test:
tcltest::test 6.4.3-1 { interface member reference can not be ambiguous } { saveas AmbiguousExtendedInterfaceMember.java { interface One { int VAL = 1; } interface Two { int VAL = 2; } interface AmbiguousExtendedInterfaceMember extends One, Two { int i = VAL; } } compile AmbiguousExtendedInterfaceMember.java } {FAIL}
a qualified reference is not ambiguousExpected Result: PASS
Regression Test:
tcltest::test 6.4.3-2 { a qualified reference is not ambiguous } { saveas QualifiedExtendedInterfaceMember.java { interface One { int VAL = 1; } interface Two { int VAL = 2; } interface QualifiedExtendedInterfaceMember extends One, Two { int i = Two.VAL; } } compile QualifiedExtendedInterfaceMember.java } {PASS}
tests/jls/names/members-and-inheritance/members-of-an-array-type
An array object should be able to access methods defined in the java.lang.Object classTest Case: 6.4.4-2Expected Result: PASS
Regression Test:
tcltest::test 6.4.4-1 { An array object should be able to access methods defined in the java.lang.Object class } { compile [saveas ArrayIsObject.java { public class ArrayIsObject { public static void main(String[] args) { int len = args.length; System.out.println(len); Class c = args.getClass(); System.out.println(c); String s = args.toString(); System.out.println(s); } } }] } {PASS}
the length member of an array is an intTest Case: 6.4.4-3Expected Result: PASS
Regression Test:
tcltest::test 6.4.4-2 { the length member of an array is an int } { compile [saveas ArrayLengthIsInt.java { public class ArrayLengthIsInt { void foo() { int[] foo = new int[3]; int val = foo.length; } } }] } {PASS}
compile error on attempt to change array length memberExpected Result: FAIL
Regression Test:
tcltest::test 6.4.4-3 { compile error on attempt to change array length member } { compile [saveas ArrayLengthIsFinal.java { public class ArrayLengthIsFinal { void foo() { int[] foo = new int[3]; foo.length = 4; } } }] } {FAIL}
tests/jls/names/meaning-of-a-name/syntactic-classification
A name in an extends clause is a type name, not an ambiguous nameTest Case: 6.5.1-type-2Expected Result: PASS
Regression Test:
tcltest::test 6.5.1-type-1 { A name in an extends clause is a type name, not an ambiguous name } { empty_class T651t1 { int Super; class Super {} class Sub extends Super {} } } {PASS}
A name in an implements clause is a type name, not an ambiguous nameTest Case: 6.5.1-type-3Expected Result: PASS
Regression Test:
tcltest::test 6.5.1-type-2 { A name in an implements clause is a type name, not an ambiguous name } { empty_class T651t2 { int Super; interface Super {} class Sub implements Super {} } } {PASS}
A name in an interface extends clause is a type name, not an ambiguous nameTest Case: 6.5.1-type-4Expected Result: PASS
Regression Test:
tcltest::test 6.5.1-type-3 { A name in an interface extends clause is a type name, not an ambiguous name } { empty_class T651t3 { int Super; interface Super {} interface Sub extends Super {} } } {PASS}
A name in a field declaration is a type name, not an ambiguous nameTest Case: 6.5.1-type-5Expected Result: PASS
Regression Test:
tcltest::test 6.5.1-type-4 { A name in a field declaration is a type name, not an ambiguous name } { empty_class T651t4 { int T651t4; T651t4 t; } } {PASS}
A name in the result type of a method is a type name, not an ambiguous nameTest Case: 6.5.1-type-6Expected Result: PASS
Regression Test:
tcltest::test 6.5.1-type-5 { A name in the result type of a method is a type name, not an ambiguous name } { empty_class T651t5 { int T651t5; T651t5 m() { return null; } } } {PASS}
A name in a formal parameter is a type name, not an ambiguous nameTest Case: 6.5.1-type-7Expected Result: PASS
Regression Test:
tcltest::test 6.5.1-type-6 { A name in a formal parameter is a type name, not an ambiguous name } { empty_class T651t6 { int T651t6; void m(T651t6 T651t6) {} } } {PASS}
A name in a throws clause is a type name, not an ambiguous nameTest Case: 6.5.1-type-8Expected Result: PASS
Regression Test:
tcltest::test 6.5.1-type-7 { A name in a throws clause is a type name, not an ambiguous name } { empty_class T651t7 { int Type; class Type extends Exception {} void m() throws Type {} } } {PASS}
A name in the type of a local variable is a type name, not an ambiguous nameTest Case: 6.5.1-type-9Expected Result: PASS
Regression Test:
tcltest::test 6.5.1-type-8 { A name in the type of a local variable is a type name, not an ambiguous name } { empty_main T651t8 { int T651t8; T651t8 t; } } {PASS}
A name in an exception parameter is a type name, not an ambiguous nameTest Case: 6.5.1-type-10Expected Result: PASS
Regression Test:
tcltest::test 6.5.1-type-9 { A name in an exception parameter is a type name, not an ambiguous name } { empty_main T651t9 { int Type; class Type extends Exception {} try { throw new Type(); } catch (Type t) { } } } {PASS}
A name in a class literal is a type name, not an ambiguous nameTest Case: 6.5.1-type-11Expected Result: PASS
Regression Test:
tcltest::test 6.5.1-type-10 { A name in a class literal is a type name, not an ambiguous name } { empty_main T651t10 { int T651t10; T651t10.class.toString(); } } {PASS}
A name qualifying a this expression is a type name, not an ambiguous nameTest Case: 6.5.1-type-12Expected Result: PASS
Regression Test:
tcltest::test 6.5.1-type-11 { A name qualifying a this expression is a type name, not an ambiguous name } { empty_class T651t11 { void foo() { int T651t11; T651t11.this.toString(); } } } {PASS}
A name in an unqualified class instance creation expression is a type name, not an ambiguous nameTest Case: 6.5.1-type-13Expected Result: PASS
Regression Test:
tcltest::test 6.5.1-type-12 { A name in an unqualified class instance creation expression is a type name, not an ambiguous name } { empty_main T651t12 { int T651t12; new T651t12(); } } {PASS}
A name in an unqualified anonymous class instance creation expression is a type name, not an ambiguous nameTest Case: 6.5.1-type-14Expected Result: PASS
Regression Test:
tcltest::test 6.5.1-type-13 { A name in an unqualified anonymous class instance creation expression is a type name, not an ambiguous name } { empty_main T651t13 { int T651t13; new T651t13() {}; } } {PASS}
A name as the element type of an array creation expression is a type name, not an ambiguous nameTest Case: 6.5.1-type-15Expected Result: PASS
Regression Test:
tcltest::test 6.5.1-type-14 { A name as the element type of an array creation expression is a type name, not an ambiguous name } { empty_main T651t14 { int T651t14; Object o = new T651t14[1]; } } {PASS}
A name qualifying a super field access is a type name, not an ambiguous nameTest Case: 6.5.1-type-16Expected Result: PASS
Regression Test:
tcltest::test 6.5.1-type-15 { A name qualifying a super field access is a type name, not an ambiguous name } { empty_class T651t15 { class Super { int i; } class Sub extends Super { int Sub; int j = Sub.super.i; } } } {PASS}
A name qualifying a super method access is a type name, not an ambiguous nameTest Case: 6.5.1-type-17Expected Result: PASS
Regression Test:
tcltest::test 6.5.1-type-16 { A name qualifying a super method access is a type name, not an ambiguous name } { empty_class T651t16 { void foo() { int T651t16; T651t16.super.toString(); } } } {PASS}
A name in a cast operator is a type name, not an ambiguous nameTest Case: 6.5.1-type-18Expected Result: PASS
Regression Test:
tcltest::test 6.5.1-type-17 { A name in a cast operator is a type name, not an ambiguous name } { empty_class T651t17 { int T651t17; void foo(Object o) { ((T651t17) o).toString(); } } } {PASS}
A name following the instanceof operator is a type name, not an ambiguous nameTest Case: 6.5.1-type-19Expected Result: PASS
Regression Test:
tcltest::test 6.5.1-type-18 { A name following the instanceof operator is a type name, not an ambiguous name } { empty_class T651t18 { int T651t18; void foo(Object o) { boolean b = o instanceof T651t18; } } } {PASS}
A name in a single type import is a type name, not an ambiguous nameTest Case: 6.5.1-typeorpackage-1Expected Result: PASS
Regression Test:
tcltest::test 6.5.1-type-19 { A name in a single type import is a type name, not an ambiguous name } { compile [saveas p1/T651t19a.java { package p1; public class T651t19a { public int C; public int C() { return 0; } public static class C {} } }] [saveas T651t19b.java { import p1.T651t19a.C; class T651t19b extends C {} }] } {PASS}
A typename qualifier is a typeorpackage name, not an ambiguous nameTest Case: 6.5.1-typeorpackage-2Expected Result: PASS
Regression Test:
tcltest::test 6.5.1-typeorpackage-1 { A typename qualifier is a typeorpackage name, not an ambiguous name } { compile [saveas T651tp1a.java { class T651tp1a { int C; int C() { return 0; } static class C { static class Inner {} } } // T651tp1a.C is a typeorpackage, which gets resolved to a type; and not an int class T651tp1b extends T651tp1a.C.Inner {} }] } {PASS}
An import-on-demand name is a typeorpackage name, not an ambiguous nameExpected Result: PASS
Regression Test:
tcltest::test 6.5.1-typeorpackage-2 { An import-on-demand name is a typeorpackage name, not an ambiguous name } { compile [saveas p1/T651tp2a.java { package p1; public class T651tp2a { public int C; public int C() { return 0; } public static class C { public static class Inner {} } } }] [saveas T651tp2b.java { // p1.T651tp2a.C is a typeorpackage, which gets resolved to a type import p1.T651tp2a.C.*; class T651tp1b extends Inner {} }] } {PASS}
tests/jls/names/meaning-of-a-name/reclassification
A simple ambiguous name is reclassified as an expression name if it appears in the scope of any variableTest Case: 6.5.2-simple-2Expected Result: PASS
Regression Test:
tcltest::test 6.5.2-simple-1 { A simple ambiguous name is reclassified as an expression name if it appears in the scope of any variable } { empty_class T652s1 { T652s1 t, u; static class t { static int u; } void foo() { // t refers to the field, not the class, thus t.u t.u = null; // is an Object, not an int } } } {PASS}
A simple ambiguous name is reclassified as an expression name if it appears in the scope of any variableTest Case: 6.5.2-simple-3Expected Result: PASS
Regression Test:
tcltest::test 6.5.2-simple-2 { A simple ambiguous name is reclassified as an expression name if it appears in the scope of any variable } { empty_class T652s2 { static class Super { Super t, u; } static class Sub extends Super { static class t { static int u; } void foo() { // t refers to the inherited field, not the locally t.u = null; // declared class, thus t.u is an Object } } } } {PASS}
A simple ambiguous name is reclassified as a type name if it appears in the scope of any type, but no variableTest Case: 6.5.2-simple-4Expected Result: PASS
Regression Test:
tcltest::test 6.5.2-simple-3 { A simple ambiguous name is reclassified as a type name if it appears in the scope of any type, but no variable } { compile [saveas p1/T652s3a.java { package p1; public class T652s3a {} }] [saveas T652s3b.java { class T652s3b { static class p1 { static int T652s3a; } void foo() { // Even though p1.T652s3a is also a type, this is resolved to // the int T652s3b.p1.T652s3a. p1.T652s3a++; } } }] } {PASS}
A simple ambiguous name is reclassified as a type name if it appears in the scope of any type, but no variableTest Case: 6.5.2-simple-5Expected Result: PASS
Regression Test:
tcltest::test 6.5.2-simple-4 { A simple ambiguous name is reclassified as a type name if it appears in the scope of any type, but no variable } { compile [saveas p1/T652s4a.java { package p1; public class T652s4a {} }] [saveas p2/T652s4b.java { package p2; public class T652s4b { public static class p1 { public static int T652s4a; } } }] [saveas T652s4c.java { class T652s4c extends p2.T652s4b { void foo() { // Even though p1.T652s4a is also a type, this is resolved to // the inherited int T652s4b.p1.T652s4a. p1.T652s4a++; } } }] } {PASS}
A simple ambiguous name is reclassified as a package name if it is not in the scope of a variable or type; an error will eventually occur if the package is not observableTest Case: 6.5.2-simple-6Expected Result: FAIL
Regression Test:
tcltest::test 6.5.2-simple-5 { A simple ambiguous name is reclassified as a package name if it is not in the scope of a variable or type; an error will eventually occur if the package is not observable } { empty_class T652s5 { Object foo() { return null; } void bar() { foo.toString(); // there is no package foo } } } {FAIL}
A simple ambiguous name is reclassified as a package name if it is not in the scope of a variable or type; an error will eventually occur if the package is not observableTest Case: 6.5.2-qualified-1Expected Result: FAIL
Regression Test:
tcltest::test 6.5.2-simple-6 { A simple ambiguous name is reclassified as a package name if it is not in the scope of a variable or type; an error will eventually occur if the package is not observable } { empty_class T652s6 { T652s6 foo() { return null; } int i; void bar() { foo.i++; // there is no package foo } } } {FAIL}
If the qualifier of an ambiguous name is reclassified as a package name, the full name is reclassified as a type name if the package exists and has a type by that nameTest Case: 6.5.2-qualified-2Expected Result: PASS
Regression Test:
tcltest::test 6.5.2-qualified-1 { If the qualifier of an ambiguous name is reclassified as a package name, the full name is reclassified as a type name if the package exists and has a type by that name } { compile [saveas p1/T652q1.java { package p1; class T652q1 { static int i; void foo() { p1.T652q1.i++; // T652q1 is a type in package p1 } } }] } {PASS}
If the qualifier of an ambiguous name is reclassified as a package name, the full name is reclassified as a package name if the package exists but has no type by that nameTest Case: 6.5.2-qualified-3Expected Result: PASS
Regression Test:
tcltest::test 6.5.2-qualified-2 { If the qualifier of an ambiguous name is reclassified as a package name, the full name is reclassified as a package name if the package exists but has no type by that name } { empty_class T652q2 { // java is a package, but does not contain a type lang, so // java.lang is classified as a PackageName String s = java.lang.String.valueOf(1); } } {PASS}
If the qualifier of an ambiguous name is reclassified as a package name, the full name is reclassified as a package name if the package exists but has no type by that name; an error will eventually occur if the subpackage is not observableTest Case: 6.5.2-qualified-4Expected Result: FAIL
Regression Test:
tcltest::test 6.5.2-qualified-3 { If the qualifier of an ambiguous name is reclassified as a package name, the full name is reclassified as a package name if the package exists but has no type by that name; an error will eventually occur if the subpackage is not observable } { compile [saveas p1/T652q3.java { package p1; class T652q3 { // p1.foo is classified as a PackageName, but p1 has no subpackage foo Object o = p1.foo.bar(); } }] } {FAIL}
If the qualifier of an ambiguous name is reclassified as a package name but the package is not observable, the full name is reclassified as a package name and an error will eventually occurTest Case: 6.5.2-qualified-5Expected Result: FAIL
Regression Test:
tcltest::test 6.5.2-qualified-4 { If the qualifier of an ambiguous name is reclassified as a package name but the package is not observable, the full name is reclassified as a package name and an error will eventually occur } { empty_class T652q4 { static T652q4 foo() { return null; } Object o; void bar() { // foo.o is classified as a PackageName, even though there is // no package foo (let alone foo.o) foo.o.toString(); } } } {FAIL}
If the qualifier of an ambiguous name is reclassified as a type name, the full name is reclassified as an expression name if the type contains a field by that nameTest Case: 6.5.2-qualified-6Expected Result: PASS
Regression Test:
tcltest::test 6.5.2-qualified-5 { If the qualifier of an ambiguous name is reclassified as a type name, the full name is reclassified as an expression name if the type contains a field by that name } { empty_class T652q5 { static T652q5 t, u; static class t { static int u; } void foo() { // t refers to the field, not the class, thus T652q5.t.u T652q5.t.u = null; // is an Object, not an int } } } {PASS}
If the qualifier of an ambiguous name is reclassified as a type name, the full name is reclassified as an expression name if the type contains a field by that nameTest Case: 6.5.2-qualified-7Expected Result: PASS
Regression Test:
tcltest::test 6.5.2-qualified-6 { If the qualifier of an ambiguous name is reclassified as a type name, the full name is reclassified as an expression name if the type contains a field by that name } { empty_class T652q6 { static class Super { static Super t, u; } static class Sub extends Super { static class t { static int u; } void foo() { // t refers to the inherited field, not the locally Sub.t.u = null; // declared class, thus Sub.t.u is an Object } } } } {PASS}
If the qualifier of an ambiguous name is reclassified as a type name, the full name is reclassified as a type name if there is a member type but no field in scopeTest Case: 6.5.2-qualified-8Expected Result: PASS
Regression Test:
tcltest::test 6.5.2-qualified-7 { If the qualifier of an ambiguous name is reclassified as a type name, the full name is reclassified as a type name if there is a member type but no field in scope } { empty_class T652q7 { static class t { static int i; } int j = T652q7.t.i; // T652q7.t is a type name } } {PASS}
If the qualifier of an ambiguous name is reclassified as a type name, the full name is reclassified as a type name if there is a member type but no field in scopeTest Case: 6.5.2-qualified-9Expected Result: PASS
Regression Test:
tcltest::test 6.5.2-qualified-8 { If the qualifier of an ambiguous name is reclassified as a type name, the full name is reclassified as a type name if there is a member type but no field in scope } { empty_class T652q8 { static class Super { static class t { static int i; } } class Sub extends Super { int j = Sub.t.i; // Sub.t is a type name since class t is inherited } } } {PASS}
If the qualifier of an ambiguous name is reclassified as a type name, it is an error if the type contains no field or member type of that nameTest Case: 6.5.2-qualified-10Expected Result: FAIL
Regression Test:
tcltest::test 6.5.2-qualified-9 { If the qualifier of an ambiguous name is reclassified as a type name, it is an error if the type contains no field or member type of that name } { empty_class T652q9 { static T652q9 t() { return null; } // T652q9 has neither a field nor member class named t int i; int j = T652q9.t.i; } } {FAIL}
If the qualifier of an ambiguous name is reclassified as an expression name, the full name is reclassified as an expression name it the type of the qualifier contains a field by that nameTest Case: 6.5.2-qualified-11Expected Result: PASS
Regression Test:
tcltest::test 6.5.2-qualified-10 { If the qualifier of an ambiguous name is reclassified as an expression name, the full name is reclassified as an expression name it the type of the qualifier contains a field by that name } { empty_class T652q10 { T652q10 u; int i; void foo(T652q10 t) { t.u.i++; // u is a field of type T652q10, so t.u is an expression } } } {PASS}
If the qualifier of an ambiguous name is reclassified as an expression name, the full name is reclassified as an expression name it the type of the qualifier contains a field by that nameTest Case: 6.5.2-qualified-12Expected Result: PASS
Regression Test:
tcltest::test 6.5.2-qualified-11 { If the qualifier of an ambiguous name is reclassified as an expression name, the full name is reclassified as an expression name it the type of the qualifier contains a field by that name } { empty_class T652q11 { static class Super { Super sup; } static class Sub extends Super { void bar(Sub s) { // sup is an inherited field in type Sub, so s.sup is an s.sup.toString(); // expression name } } } } {PASS}
If the qualifier of an ambiguous name is reclassified as an expression name, it is an error if the type of the qualifier does not contain a field by that name (in other words, an expression cannot qualify a member type)Test Case: 6.5.2-example-1Expected Result: FAIL
Regression Test:
tcltest::test 6.5.2-qualified-12 { If the qualifier of an ambiguous name is reclassified as an expression name, it is an error if the type of the qualifier does not contain a field by that name (in other words, an expression cannot qualify a member type) } { empty_class T652q12 { static class Member { static int i; } T652q12 t; // the type T652q12 does not contain a field named Member int i = t.Member.i; } } {FAIL}
Example of ambiguous name resolutionExpected Result: PASS
Regression Test:
tcltest::test 6.5.2-example-1 { Example of ambiguous name resolution } { saveas org/rpgpoet/Music.java { package org.rpgpoet; import java.util.Random; public interface Music { Random[] wizards = new Random[4]; } } saveas org/dummy.txt "Here for cleanup purposes" saveas bazola/Gabriel.java { package bazola; class Gabriel { static int n = org.rpgpoet.Music.wizards.length; // org is classified as a package name // org.rpgpoet is classified as a package name // org.rpgpoet.Music is classified as a type name // org.rpgpoet.Music.wizards is classified as an expression name } } compile org/rpgpoet/Music.java bazola/Gabriel.java } {PASS}
tests/jls/names/meaning-of-a-name/package-names/simple
It is an error if there is no top-level package with the given simple package nameTest Case: 6.5.3.1-simple-2Expected Result: FAIL
Regression Test:
tcltest::test 6.5.3.1-simple-1 { It is an error if there is no top-level package with the given simple package name } { empty_main T6531s1 { badpackage.Type.i++; // badpackage was reclassified from ambiguous } } {FAIL}
A simple package name denotes the top-level package which is in scopeExpected Result: PASS
Regression Test:
tcltest::test 6.5.3.1-simple-2 { A simple package name denotes the top-level package which is in scope } { compile [saveas p1/T6531s2.java { package p1; class T6531s2 { static int i; void foo() { p1.T6531s2.i++; // p1 was reclassified from ambiguous } } }] } {PASS}
tests/jls/names/meaning-of-a-name/package-names/qualified
It is an error if there is not a member subpackage with the given qualified package nameTest Case: 6.5.3.2-qualified-2Expected Result: FAIL
Regression Test:
tcltest::test 6.5.3.2-qualified-1 { It is an error if there is not a member subpackage with the given qualified package name } { compile [saveas p1/T6532s1.java { package p1; class T6532s1 { void foo() { p1.badsub.Type.i++; // p1.badsub was reclassified from ambiguous } } }] } {FAIL}
It is an error if the qualifier of a package name is not an observable packageTest Case: 6.5.3.2-qualified-3Expected Result: FAIL
Regression Test:
tcltest::test 6.5.3.2-qualified-2 { It is an error if the qualifier of a package name is not an observable package } { empty_main T6532q2 { // badpackage.badsub was reclassified from ambiguous badpackage.badsub.Type.i++; } } {FAIL}
A qualified package name denotes the member subpackage of the qualifying packageExpected Result: PASS
Regression Test:
tcltest::test 6.5.3.2-qualified-3 { A qualified package name denotes the member subpackage of the qualifying package } { compile [saveas p1/sub/T6532q3a.java { package p1.sub; public class T6532q3a { public static int i; } }] [saveas p1/T6532q3b.java { package p1; class T6532q3b { int j = p1.sub.T6532q3a.i; // p1.sub was reclassified from ambiguous } }] } {PASS}
tests/jls/names/meaning-of-a-name/packageortypenames/simple
If a simple package-or-type name is in the scope of a type, it is reclassified as a type nameTest Case: 6.5.4.1-simple-2Expected Result: PASS
Regression Test:
tcltest::test 6.5.4.1-simple-1 { If a simple package-or-type name is in the scope of a type, it is reclassified as a type name } { compile [saveas p1/T6541s1a.java { package p1; public class T6541s1a {} }] [saveas T6541s1b.java { class T6541s1b { static class p1 { interface T6541s1a {} } // p1 is a type, not a package, so p1.T6541s1a is an interface, not a class class Sub implements p1.T6541s1a {} } }] } {PASS}
If a simple package-or-type name is in the scope of a type, it is reclassified as a type nameTest Case: 6.5.4.1-simple-3Expected Result: PASS
Regression Test:
tcltest::test 6.5.4.1-simple-2 { If a simple package-or-type name is in the scope of a type, it is reclassified as a type name } { compile [saveas p1/T6541s2a.java { package p1; public class T6541s2a {} }] [saveas p2/T6541s2b.java { package p2; public class T6541s2b { public static class p1 { public interface T6541s2a {} } } }] [saveas T6541s2c.java { class T6541s1c extends p2.T6541s2b { // p1 is an inherited type, not a package, so p1.T6541s2a is an class Sub implements p1.T6541s2a {} // interface, not a class } }] } {PASS}
If a simple package-or-type name is in the scope of a type, it is reclassified as a type nameTest Case: 6.5.4.1-simple-4Expected Result: FAIL
Regression Test:
tcltest::test 6.5.4.1-simple-3 { If a simple package-or-type name is in the scope of a type, it is reclassified as a type name } { compile [saveas T6541s3.java { // no types are in scope during an import statement, and there is no import T6541s3.*; // package by this name class T6541s3 { class Inner {} } }] } {FAIL}
If a simple package-or-type name is not in the scope of a type, it is reclassified as a package nameTest Case: 6.5.4.1-simple-5Expected Result: PASS
Regression Test:
tcltest::test 6.5.4.1-simple-4 { If a simple package-or-type name is not in the scope of a type, it is reclassified as a package name } { compile [saveas p1/T6541s4a.java { package p1; class T6541s4a {} class T6541s4b extends p1.T6541s4a {} }] } {PASS}
If a simple package-or-type name is not in the scope of a type, it is reclassified as a package name; an error will eventually occur if the package is not observableTest Case: 6.5.4.1-simple-6Expected Result: FAIL
Regression Test:
tcltest::test 6.5.4.1-simple-5 { If a simple package-or-type name is not in the scope of a type, it is reclassified as a package name; an error will eventually occur if the package is not observable } { compile [saveas T6541s5.java { // badpackage is reclassified as a package, but it does not exist class T6541s5 extends badpackage.Type {} }] } {FAIL}
If a simple package-or-type name is not in the scope of a type, it is reclassified as a package nameTest Case: 6.5.4.1-simple-7Expected Result: PASS
Regression Test:
tcltest::test 6.5.4.1-simple-6 { If a simple package-or-type name is not in the scope of a type, it is reclassified as a package name } { compile [saveas p1/T6541s6a.java { package p1; public class T6541s6a { public static class p2 { public class T6541s6b {} } } }] [saveas p2/T6541s6b.java { package p2; public interface T6541s6b {} }] [saveas T6541s6c.java { // the inherited class p2 is not in scope until the body of class T6541s6c, // so p2 refers to the package, and p2.T6541s6b is an interface, not a class class T6541s6c extends p1.T6541s6a implements p2.T6541s6b {} }] } {PASS}
If a simple package-or-type name is not in the scope of a type, it is reclassified as a package nameTest Case: 6.5.4.1-simple-8Expected Result: PASS
Regression Test:
tcltest::test 6.5.4.1-simple-7 { If a simple package-or-type name is not in the scope of a type, it is reclassified as a package name } { compile [saveas p1/T6541s7a.java { package p1; public interface T6541s7a { public class p2 { public interface T6541s7b {} } } }] [saveas p2/T6541s7b.java { package p2; public class T6541s7b {} }] [saveas T6541s7c.java { // the inherited interface p2 is not in scope until the body of class T6541s7c, // so p2 refers to the package, and p2.T6541s7b is a class, not an interface class T6541s7c extends p2.T6541s7b implements p1.T6541s7a {} }] } {PASS}
If a simple package-or-type name is not in the scope of a type, it is reclassified as a package nameTest Case: 6.5.4.1-simple-9Expected Result: FAIL
Regression Test:
tcltest::test 6.5.4.1-simple-8 { If a simple package-or-type name is not in the scope of a type, it is reclassified as a package name } { compile [saveas p1/T6541s8a.java { package p1; public class T6541s8a { class p1 {} } class T6541s8c extends p2.T6541s8b { // class p1 was not inherited, although it is accessible // p1 resolves to a package p1 p; } }] [saveas p2/T6541s8b.java { package p2; public class T6541s8b extends p1.T6541s8a {} }] } {FAIL}
If a simple package-or-type name is not in the scope of a type, it is reclassified as a package nameTest Case: 6.5.4.1-simple-10Expected Result: FAIL
Regression Test:
tcltest::test 6.5.4.1-simple-9 { If a simple package-or-type name is not in the scope of a type, it is reclassified as a package name } { compile [saveas p1/T6541s9a.java { package p1; public class T6541s9a { public class p1 {} } class T6541s9c extends p2.T6541s9b { // class a.p1 was not inherited, although it is accessible // p1 resolves to a package p1 p; } }] [saveas p2/T6541s9b.java { package p2; public class T6541s8b extends p1.T6541s8a { private class p1 {} // hides a.p1 } }] } {FAIL}
If a simple package-or-type name is not in the scope of a type, it is reclassified as a package nameTest Case: 6.5.4.1-simple-11Expected Result: PASS
Regression Test:
tcltest::test 6.5.4.1-simple-10 { If a simple package-or-type name is not in the scope of a type, it is reclassified as a package name } { compile [saveas p1/T6541s10a.java { package p1; public class T6541s10a { class p1 {} } class T6541s10c extends p2.T6541s10b { // class p1 was not inherited, although it is accessible // p1 resolves to a package p1.T6541s10c p; } }] [saveas p2/T6541s10b.java { package p2; public class T6541s10b extends p1.T6541s10a {} }] } {PASS}
If a simple package-or-type name is not in the scope of a type, it is reclassified as a package nameExpected Result: PASS
Regression Test:
tcltest::test 6.5.4.1-simple-11 { If a simple package-or-type name is not in the scope of a type, it is reclassified as a package name } { compile [saveas p1/T6541s11a.java { package p1; public class T6541s11a { public class p1 {} } class T6541s11c extends p2.T6541s11b { // class a.p1 was not inherited, although it is accessible // p1 resolves to a package p1.T6541s11c p; } }] [saveas p2/T6541s11b.java { package p2; public class T6541s11b extends p1.T6541s11a { private class p1 {} // hides a.p1 } }] } {PASS}
tests/jls/names/meaning-of-a-name/packageortypenames/qualified
A package-or-type name is reclassified as a type name if the qualifier package name contains that member typeTest Case: 6.5.4.2-qualified-2Expected Result: PASS
Regression Test:
tcltest::test 6.5.4.2-qualified-1 { A package-or-type name is reclassified as a type name if the qualifier package name contains that member type } { compile [saveas p1/T6542q1a.java { package p1; public class T6542q1a { public static class Inner {} } }] [saveas T6542q1b.java { class T6542q1b extends p1.T6542q1a.Inner {} }] } {PASS}
A package-or-type name is reclassified as a type name if the qualifier type name contains that member typeTest Case: 6.5.4.2-qualified-3Expected Result: PASS
Regression Test:
tcltest::test 6.5.4.2-qualified-2 { A package-or-type name is reclassified as a type name if the qualifier type name contains that member type } { empty_class T6542q2 { class Middle { class Inner {} } T6542q2.Middle.Inner t; } } {PASS}
It is an error if the qualifier type name of a package-or-type name does not contain the named member typeTest Case: 6.5.4.2-qualified-4Expected Result: FAIL
Regression Test:
tcltest::test 6.5.4.2-qualified-3 { It is an error if the qualifier type name of a package-or-type name does not contain the named member type } { empty_class T6542q3 { // T6542q3.Middle is not interpreted as a package name, since T6542q3 // is not a package name; but it is still an error T6542q3.Middle.Inner t; } } {FAIL}
A package-or-type name is reclassified as a package name if the qualifier package name does not contain that member typeTest Case: 6.5.4.2-qualified-5Expected Result: PASS
Regression Test:
tcltest::test 6.5.4.2-qualified-4 { A package-or-type name is reclassified as a package name if the qualifier package name does not contain that member type } { compile [saveas p1/sub/T6542q4a.java { package p1.sub; public class T6542q4a {} }] [saveas p1/T6542q4b.java { package p1; class T6542q4b { // p1.sub is classified as a package name p1.sub.T6542q4a t; } }] } {PASS}
A package-or-type name is reclassified as a package name if the qualifier package name does not contain that member type; an error will eventually occur if the qualifier package is not observableTest Case: 6.5.4.2-qualified-6Expected Result: FAIL
Regression Test:
tcltest::test 6.5.4.2-qualified-5 { A package-or-type name is reclassified as a package name if the qualifier package name does not contain that member type; an error will eventually occur if the qualifier package is not observable } { empty_class T6542q5 { badpackage.badsub.Type t; } } {FAIL}
A package-or-type name is reclassified as a package name if the qualifier package name does not contain that member type; an error will eventually occur if the qualifier package does not contain the member subpackageExpected Result: FAIL
Regression Test:
tcltest::test 6.5.4.2-qualified-6 { A package-or-type name is reclassified as a package name if the qualifier package name does not contain that member type; an error will eventually occur if the qualifier package does not contain the member subpackage } { compile [saveas p1/T6542q6.java { package p1; class T6542q6 { p1.badsub.Type t; } }] } {FAIL}
tests/jls/names/meaning-of-a-name/type-names/simple
A simple type name must occur in the scope of a type by that nameTest Case: 6.5.5.1-nested-2Expected Result: FAIL
Regression Test:
tcltest::test 6.5.5.1-nested-1 { A simple type name must occur in the scope of a type by that name } { empty_class T6551n1 { NoSuchType t; } } {FAIL}
A simple type name favors a visible local class declaration over member typesTest Case: 6.5.5.1-nested-3Expected Result: PASS
Regression Test:
tcltest::test 6.5.5.1-nested-2 { A simple type name favors a visible local class declaration over member types } { empty_class T6551n2 { interface C {} void foo() { class C {} // C refers to the local class, not member interface class Sub extends C {} } } } {PASS}
A simple type name favors a visible local class declaration over member typesTest Case: 6.5.5.1-nested-4Expected Result: PASS
Regression Test:
tcltest::test 6.5.5.1-nested-3 { A simple type name favors a visible local class declaration over member types } { empty_main T6551n3 { class C { // local static final int i = 1; } new Object() { class C { // member static final int i = 2; } void foo(int j) { switch (j) { case 0: case 1: // C refers to the member class, since the local is // shadowed, hence C.i is 2 case C.i: } } }; } } {PASS}
A simple type name favors a visible local class declaration over member typesTest Case: 6.5.5.1-nested-5Expected Result: PASS
Regression Test:
tcltest::test 6.5.5.1-nested-4 { A simple type name favors a visible local class declaration over member types } { empty_class T6551n4 { static class Super { interface C {} // member } void foo() { class C {} // local new Super() { // C refers to the inherited member class, since the // local is shadowed, hence C is an interface class Sub implements C {} }; } } } {PASS}
A simple type name favors a visible local class declaration over member typesTest Case: 6.5.5.1-nested-6Expected Result: PASS
Regression Test:
tcltest::test 6.5.5.1-nested-5 { A simple type name favors a visible local class declaration over member types } { empty_main T6551n5 { class C { static final int i = 1; } new Object() { void foo(int j) { class C { static final int i = 2; } switch (j) { case 0: case 1: // C refers to the innermost local class, since it shadows // the other version, hence C.i is 2 case C.i: } } }; } } {PASS}
A simple type name must not have ambiguity in referring to visible member typesTest Case: 6.5.5.1-nested-7Expected Result: PASS
Regression Test:
tcltest::test 6.5.5.1-nested-6 { A simple type name must not have ambiguity in referring to visible member types } { empty_class T6551n6 { interface C {} void foo() { new Object() { class C {} // C refers to the innermost class C, not the outer interface class Sub extends C {} }; } } } {PASS}
A simple type name must not have ambiguity in referring to visible member typesTest Case: 6.5.5.1-nested-8Expected Result: PASS
Regression Test:
tcltest::test 6.5.5.1-nested-7 { A simple type name must not have ambiguity in referring to visible member types } { empty_class T6551n7 { interface C {} static class Super { class C {} } void foo() { new Super() { // C refers to the inherited class Super.C, not the shadowed // interface T6551n7.C class Sub extends C {} }; } } } {PASS}
A simple type name must not have ambiguity in referring to visible member typesTest Case: 6.5.5.1-nested-9Expected Result: FAIL
Regression Test:
tcltest::test 6.5.5.1-nested-8 { A simple type name must not have ambiguity in referring to visible member types } { empty_class T6551n8 { interface I { class C {} } class Super { class C {} } class Sub extends Super implements I { C c; // C is ambiguous between I.C, Super.C } } } {FAIL}
A simple type name must not have ambiguity in referring to visible member typesTest Case: 6.5.5.1-nested-10Expected Result: PASS
Regression Test:
tcltest::test 6.5.5.1-nested-9 { A simple type name must not have ambiguity in referring to visible member types } { compile [saveas p1/T6551n9c.java { package p1; class T6551n9a { class C {} } interface T6551n9b { class C {} } public class T6551n9c extends T6551n9a implements T6551n9b {} }] [saveas T6551n9d.java { class T6551n9d extends p1.T6551n9c { C c; // T6551n9a.C is not accessible, so this is T6551n9b.C } }] } {PASS}
A simple type name favors a visible member type over top-level and single-type imports in the same compilation unitTest Case: 6.5.5.1-nested-11Expected Result: PASS
Regression Test:
tcltest::test 6.5.5.1-nested-10 { A simple type name favors a visible member type over top-level and single-type imports in the same compilation unit } { compile [saveas p1/T6551n10a.java { package p1; public interface T6551n10a {} }] [saveas T6551n10b.java { import p1.T6551n10a; class T6551n10b { class T6551n10a {} // T6551n10a refers to the member class, not the imported interface class Sub extends T6551n10a {} } }] } {PASS}
A simple type name favors a visible member type over top-level and single-type imports in the same compilation unitTest Case: 6.5.5.1-nested-12Expected Result: PASS
Regression Test:
tcltest::test 6.5.5.1-nested-11 { A simple type name favors a visible member type over top-level and single-type imports in the same compilation unit } { compile [saveas T6551n11a.java { interface T6551n11a {} class T6551n11b { class T6551n11a {} // T6551n11a refers to the member class, not the top-level interface class Sub extends T6551n11a {} } }] } {PASS}
A simple type name favors a visible member type over top-level and single-type imports in the same compilation unitTest Case: 6.5.5.1-nested-13Expected Result: FAIL
Regression Test:
tcltest::test 6.5.5.1-nested-12 { A simple type name favors a visible member type over top-level and single-type imports in the same compilation unit } { compile [saveas p1/T6551n12a.java { package p1; public class T6551n12a { public interface T6551n12b {} } }] [saveas T6551n12b.java { class T6551n12b extends p1.T6551n12a implements p1.T6551n12a.T6551n12b { void foo() { // the inherited member type shadows the current enclosing type new T6551n12b(); } } }] } {FAIL}
A simple type name favors a visible member type over top-level and single-type imports in the same compilation unitTest Case: 6.5.5.1-nested-14Expected Result: FAIL
Regression Test:
tcltest::test 6.5.5.1-nested-13 { A simple type name favors a visible member type over top-level and single-type imports in the same compilation unit } { compile [saveas p1/T6551n13a.java { package p1; public class T6551n13a { public interface T6551n13b {} } }] [saveas p2/T6551n13b.java { package p2; public class T6551n13b {} }] [saveas T6551n13c.java { import p2.T6551n13b; class T6551n13c extends p1.T6551n13a { void foo() { // resolves to the inherited interface, not the imported class new T6551n13b(); } } }] } {FAIL}
A simple type name favors a visible member type over top-level and single-type imports in the same compilation unitTest Case: 6.5.5.1-nested-15Expected Result: OK
Regression Test:
tcltest::test 6.5.5.1-nested-14 { A simple type name favors a visible member type over top-level and single-type imports in the same compilation unit } { ok_pass_or_warn [compile [saveas p1/T6551n14a.java { package p1; public class T6551n14a { public interface T6551n14b {} } }] [saveas T6551n14b.java { final class T6551n14b extends p1.T6551n14a implements p1.T6551n14a.T6551n14b { void foo() { // the inherited member type shadows the current enclosing type new T6551n14b() {}; } } }]] } {OK}
A simple type name favors a visible member type over top-level and single-type imports in the same compilation unitTest Case: 6.5.5.1-nested-16Expected Result: PASS
Regression Test:
tcltest::test 6.5.5.1-nested-15 { A simple type name favors a visible member type over top-level and single-type imports in the same compilation unit } { compile [saveas p1/T6551n15a.java { package p1; public class T6551n15a { public interface T6551n15b {} } }] [saveas p2/T6551n15b.java { package p2; public final class T6551n15b {} }] [saveas T6551n15c.java { import p2.T6551n15b; class T6551n15c extends p1.T6551n15a { void foo() { // resolves to the inherited interface, not the imported class new T6551n15b() {}; } } }] } {PASS}
A simple type name favors a visible member type over top-level types in the same compilation unitTest Case: 6.5.5.1-nested-17Expected Result: FAIL
Regression Test:
tcltest::test 6.5.5.1-nested-16 { A simple type name favors a visible member type over top-level types in the same compilation unit } { empty_class T6551n16 { static class A { interface B {} } static class B extends A { { new B(); } // the inherited T6551n16.A.B shadows T6551n16.B } } } {FAIL}
A simple type name favors a visible member type over top-level types in the same compilation unitTest Case: 6.5.5.1-nested-18Expected Result: OK
Regression Test:
tcltest::test 6.5.5.1-nested-17 { A simple type name favors a visible member type over top-level types in the same compilation unit } { ok_pass_or_warn [empty_class T6551n17 { static class A { interface B {} } final static class B extends A { { new B() {}; } // the inherited T6551n16.A.B shadows T6551n16.B } }] } {OK}
A simple type name favors a visible member type over top-level types in the same compilation unitTest Case: 6.5.5.1-nested-19Expected Result: FAIL
Regression Test:
tcltest::test 6.5.5.1-nested-18 { A simple type name favors a visible member type over top-level types in the same compilation unit } { compile [saveas T6551n18a.java { class T6551n18a { interface T6551n18b {} } class T6551n18b extends T6551n18a { { new T6551n18b(); } // the inherited T6551n18a.T6551n18b shadows T6551n18b } }] } {FAIL}
A simple type name favors a visible member type over top-level types in the same compilation unitTest Case: 6.5.5.1-nested-20Expected Result: OK
Regression Test:
tcltest::test 6.5.5.1-nested-19 { A simple type name favors a visible member type over top-level types in the same compilation unit } { ok_pass_or_warn [compile [saveas T6551n19a.java { class T6551n19a { interface T6551n19b {} } final class T6551n19b extends T6551n19a { // the inherited T6551n19a.T6551n19b shadows T6551n19b { new T6551n19b() {}; } } }]] } {OK}
A simple type name favors a visible member type over top-level types in the same compilation unitTest Case: 6.5.5.1-nested-21Expected Result: OK
Regression Test:
tcltest::test 6.5.5.1-nested-20 { A simple type name favors a visible member type over top-level types in the same compilation unit } { ok_pass_or_warn [compile [saveas T6551n20a.java { interface T6551n20a { class T6551n20b {} } interface T6551n20b extends T6551n20a { // the inherited T6551n20a.T6551n20b shadows T6551n20b T6551n20b t = new T6551n20b(); } }]] } {OK}
A simple type name favors a visible member type over top-level types in the same compilation unitTest Case: 6.5.5.1-nested-22Expected Result: FAIL
Regression Test:
tcltest::test 6.5.5.1-nested-21 { A simple type name favors a visible member type over top-level types in the same compilation unit } { compile [saveas T6551n21a.java { interface T6551n21a { final class T6551n21b {} } interface T6551n21b extends T6551n21a { // the inherited T6551n21a.T6551n21b shadows T6551n21b T6551n21b t = new T6551n21b() {}; } }] } {FAIL}
A simple type name favors a visible member type over top-level types in the same compilation unitTest Case: 6.5.5.1-nested-23Expected Result: PASS
Regression Test:
tcltest::test 6.5.5.1-nested-22 { A simple type name favors a visible member type over top-level types in the same compilation unit } { empty_class T6551n22 { class Inner extends T6551n22 { // inherited Inner.Inner (etc.) is same as current Inner Inner i; Inner.Inner j = i; Inner.Inner.Inner k = j; } } } {PASS}
A simple type name must not have ambiguity in referring to visible member typesTest Case: 6.5.5.1-import-1Expected Result: PASS
Regression Test:
tcltest::test 6.5.5.1-nested-23 { A simple type name must not have ambiguity in referring to visible member types } { compile [saveas p1/T6551n23c.java { package p1; class T6551n23a { class C { public static final int i = 1; } } interface T6551n23b { class C { public static final int i = 2; } } public class T6551n23c extends T6551n23a implements T6551n23b {} }] [saveas T6551n23d.java { class T6551n23d extends p1.T6551n23c { void m(int i) { switch (i) { case 1: case C.i: // a.C.i is not accessible, so this is b.C.i == 2 } } } }] } {PASS}
A simple type name favors a single-type import over a top-level type in the same packageTest Case: 6.5.5.1-import-2Expected Result: PASS
Regression Test:
tcltest::test 6.5.5.1-import-1 { A simple type name favors a single-type import over a top-level type in the same package } { compile [saveas p1/T6551i1a.java { package p1; public interface T6551i1a {} }] [saveas T6551i1a.java { class T6551i1a {} }] [saveas T6551i1b.java { import p1.T6551i1a; // T6551i1a refers to the imported interface, not the class in the same package class T6551i1b implements T6551i1a {} }] } {PASS}
A simple type name favors a single-type import over import-on-demandTest Case: 6.5.5.1-import-3Expected Result: PASS
Regression Test:
tcltest::test 6.5.5.1-import-2 { A simple type name favors a single-type import over import-on-demand } { compile [saveas p1/T6551i2a.java { package p1; public class T6551i2a { public static final int i = 2; } }] [saveas p2/T6551i2a.java { package p2; public class T6551i2a { public static final int i = 1; } }] [saveas T6551i2b.java { import p1.T6551i2a; import p2.*; class T6551i2b { void foo(int j) { switch (j) { case 0: case 1: // T6551i2a refers to the specific p1 import, not the on-demand p2, // so T6551i2a.i resolves to 2 case T6551i2a.i: } } } }] } {PASS}
A simple type name favors a top-level type in the same package over import-on-demandTest Case: 6.5.5.1-import-4Expected Result: PASS
Regression Test:
tcltest::test 6.5.5.1-import-3 { A simple type name favors a top-level type in the same package over import-on-demand } { compile [saveas p1/T6551i3a.java { package p1; public interface T6551i3a {} }] [saveas T6551i3a.java { class T6551i3a {} }] [saveas T6551i3b.java { import p1.*; // T6551i3a refers to the class in the same package, not an imported interface class T6551i3b extends T6551i3a {} }] } {PASS}
A simple type name may not resolve to ambiguous types from import-on-demandExpected Result: FAIL
Regression Test:
tcltest::test 6.5.5.1-import-4 { A simple type name may not resolve to ambiguous types from import-on-demand } { compile [saveas p1/T6551i4a.java { package p1; public class T6551i4a {} }] [saveas p2/T6551i4a.java { package p2; public class T6551i4a {} }] [saveas T6551i4b.java { import p1.*; import p2.*; // T6551i4a is ambiguous between p1 and p2 class T6551i4b extends T6551i4a {} }] } {FAIL}
tests/jls/names/meaning-of-a-name/type-names/qualified
A qualified type name must refer to a single accessible member type of the qualifying package, or an error occursTest Case: 6.5.5.2-package-2Expected Result: PASS
Regression Test:
tcltest::test 6.5.5.2-package-1 { A qualified type name must refer to a single accessible member type of the qualifying package, or an error occurs } { compile [saveas p1/T6552p1.java { package p1; class T6552p1 { p1.T6552p1 t; } }] } {PASS}
A qualified type name must refer to a single accessible member type of the qualifying package, or an error occursTest Case: 6.5.5.2-package-3Expected Result: FAIL
Regression Test:
tcltest::test 6.5.5.2-package-2 { A qualified type name must refer to a single accessible member type of the qualifying package, or an error occurs } { compile [saveas p1/T6552p2.java { package p1; class T6552p2 { p1.NoSuchType t; } }] } {FAIL}
A qualified type name must refer to a single accessible member type of the qualifying package, or an error occursTest Case: 6.5.5.2-package-4Expected Result: FAIL
Regression Test:
tcltest::test 6.5.5.2-package-3 { A qualified type name must refer to a single accessible member type of the qualifying package, or an error occurs } { compile [saveas p1/T6552p3a.java { package p1; class T6552p3a { public T6552p3a() {} } }] [saveas T6552p3b.java { // p1.T6552p3a is not accessible class T6552p3b extends p1.T6552p3a {} }] } {FAIL}
A qualified type name must refer to a single accessible member type of the qualifying package, or an error occursTest Case: 6.5.5.2-type-1Expected Result: FAIL
Regression Test:
tcltest::test 6.5.5.2-package-4 { A qualified type name must refer to a single accessible member type of the qualifying package, or an error occurs } { empty_class T6552p4 { // java.lang is not a type, but a package java.lang j; } } {FAIL}
A qualified type name must refer to a single accessible member type of the qualifying type, or an error occursTest Case: 6.5.5.2-type-2Expected Result: PASS
Regression Test:
tcltest::test 6.5.5.2-type-1 { A qualified type name must refer to a single accessible member type of the qualifying type, or an error occurs } { empty_class T6552t1 { class Inner {} T6552t1.Inner t; } } {PASS}
A qualified type name must refer to a single accessible member type of the qualifying type, or an error occursTest Case: 6.5.5.2-type-3Expected Result: FAIL
Regression Test:
tcltest::test 6.5.5.2-type-2 { A qualified type name must refer to a single accessible member type of the qualifying type, or an error occurs } { empty_class T6552t2 { T6552t2.NoSuchClass t; } } {FAIL}
A qualified type name must refer to a single accessible member type of the qualifying type, or an error occursTest Case: 6.5.5.2-type-4Expected Result: FAIL
Regression Test:
tcltest::test 6.5.5.2-type-3 { A qualified type name must refer to a single accessible member type of the qualifying type, or an error occurs } { compile [saveas T6552t3a.java { class T6552t3a { private class C {} } class T6552t3b extends T6552t3a { // T6552t3a.C is not accessible T6552t3a.C t; } }] } {FAIL}
A qualified type name must refer to a single accessible member type of the qualifying type, or an error occursTest Case: 6.5.5.2-type-5Expected Result: FAIL
Regression Test:
tcltest::test 6.5.5.2-type-4 { A qualified type name must refer to a single accessible member type of the qualifying type, or an error occurs } { compile [saveas T6552t4a.java { class T6552t4a { class C {} } interface T6552t4b { class C {} } class T6552t4c extends T6552t4a implements T6552t4b { // T6552t4c.C is ambiguous between T6552t4a.C and T6552t4b.C T6552t4c.C t; } }] } {FAIL}
A qualified type name must refer to a single accessible member type of the qualifying type, or an error occursTest Case: 6.5.5.2-type-6Expected Result: PASS
Regression Test:
tcltest::test 6.5.5.2-type-5 { A qualified type name must refer to a single accessible member type of the qualifying type, or an error occurs } { compile [saveas p1/T6552t5c.java { package p1; class T6552t5a { class C {} } interface T6552t5b { class C {} } public class T6552t5c extends T6552t5a implements T6552t5b {} }] [saveas T6552t5d.java { class T6552t5d extends p1.T6552t5c { // only the accessible T6552t5b.C is inherited T6552t5d.C t; } }] } {PASS}
A qualified type name must refer to a single accessible member type of the qualifying type, or an error occursTest Case: 6.5.5.2-type-7Expected Result: PASS
Regression Test:
tcltest::test 6.5.5.2-type-6 { A qualified type name must refer to a single accessible member type of the qualifying type, or an error occurs } { compile [saveas p1/T6552t6c.java { package p1; class T6552t6a { class C {} } interface T6552t6b { class C {} } public class T6552t6c extends T6552t6a implements T6552t6b {} }] [saveas T6552t6d.java { class T6552t6d { // a.C is not accessible, so this is b.C p1.T6552t6c.C t; } }] } {PASS}
A qualified type name must refer to a single accessible member type of the qualifying type, or an error occursTest Case: 6.5.5.2-type-8Expected Result: PASS
Regression Test:
tcltest::test 6.5.5.2-type-7 { A qualified type name must refer to a single accessible member type of the qualifying type, or an error occurs } { compile [saveas p1/T6552t7c.java { package p1; class T6552t7a { protected class C {} } interface T6552t7b { class C {} } public class T6552t7c extends T6552t7a implements T6552t7b {} }] [saveas T6552t7d.java { class T6552t7d { // a.C is not accessible, so this is b.C p1.T6552t7c.C t; } }] } {PASS}
A qualified type name must refer to a single accessible member type of the qualifying type, or an error occursTest Case: 6.5.5.2-example-1Expected Result: PASS
Regression Test:
tcltest::test 6.5.5.2-type-8 { A qualified type name must refer to a single accessible member type of the qualifying type, or an error occurs } { compile [saveas p1/T6552t8a.java { package p1; public class T6552t8a { protected class C {} } }] [saveas p1/T6552t8b.java { package p1; public interface T6552t8b { class C {} } }] [saveas T6552t8c.java { class T6552t8c extends p1.T6552t8a implements p1.T6552t8b {} class T6552t8d { // a.C is not accessible, so this is b.C T6552t8c.C t; } }] } {PASS}
Example in the specsExpected Result: PASS
Regression Test:
tcltest::test 6.5.5.2-example-1 { Example in the specs } { empty_class T6552e1 { public static void main(String[] args) { java.util.Date date = new java.util.Date(System.currentTimeMillis()); // Just like Sun to deprecate their example! System.out.println(date/*.toLocaleString()*/); } } } {PASS}
tests/jls/names/meaning-of-a-name/expression-names/simple
If a simple expression name appears in the scope of a local variable or parameter, it denotes that variableTest Case: 6.5.6.1-local-2Expected Result: PASS
Regression Test:
tcltest::test 6.5.6.1-local-1 { If a simple expression name appears in the scope of a local variable or parameter, it denotes that variable } { empty_class T6561l1 { int i; void foo(Object i) { i = null; // refers to the parameter, not field } } } {PASS}
If a simple expression name appears in the scope of a local variable or parameter, it denotes that variableTest Case: 6.5.6.1-local-3Expected Result: PASS
Regression Test:
tcltest::test 6.5.6.1-local-2 { If a simple expression name appears in the scope of a local variable or parameter, it denotes that variable } { empty_main T6561l2 { final int i = 1; new Object() { void foo() { Object i; i = null; // refers to the local Object i, which shadows int i } }; } } {PASS}
If a simple expression name appears in the scope of a local variable or parameter, it denotes that variableTest Case: 6.5.6.1-local-4Expected Result: PASS
Regression Test:
tcltest::test 6.5.6.1-local-3 { If a simple expression name appears in the scope of a local variable or parameter, it denotes that variable } { empty_main T6561l3 { final int i = 1; new Object() { Object i; void foo() { i = null; // the field Object i shadows the local int i } }; } } {PASS}
If a simple expression name appears in the scope of a local variable or parameter, it denotes that variableTest Case: 6.5.6.1-local-5Expected Result: PASS
Regression Test:
tcltest::test 6.5.6.1-local-4 { If a simple expression name appears in the scope of a local variable or parameter, it denotes that variable } { empty_class T6561l4 { class Super { Object i; } void foo(final int i) { new Super() { void foo() { // the inherited field Object i shadows the parameter int i i = null; } }; } } } {PASS}
If a simple expression name appears in the scope of a local variable or parameter, it denotes that variableTest Case: 6.5.6.1-field-1Expected Result: PASS
Regression Test:
tcltest::test 6.5.6.1-local-5 { If a simple expression name appears in the scope of a local variable or parameter, it denotes that variable } { empty_class T6561l5 { int i; void m() { try { throw new Error(); } catch (Error i) { i = null; // refers to the parameter, not the field } } } } {PASS}
If a simple expression name is not in the scope of a local variable or parameter, it must represent a single accessible field of the innermost type with the fieldTest Case: 6.5.6.1-field-2Expected Result: FAIL
Regression Test:
tcltest::test 6.5.6.1-field-1 { If a simple expression name is not in the scope of a local variable or parameter, it must represent a single accessible field of the innermost type with the field } { empty_class T6561f1 { int i = no_such_field; } } {FAIL}
If a simple expression name is not in the scope of a local variable or parameter, it must represent a single accessible field of the innermost type with the fieldTest Case: 6.5.6.1-field-3Expected Result: PASS
Regression Test:
tcltest::test 6.5.6.1-field-2 { If a simple expression name is not in the scope of a local variable or parameter, it must represent a single accessible field of the innermost type with the field } { empty_class T6561f2 { int i; int j = i; } } {PASS}
If a simple expression name is not in the scope of a local variable or parameter, it must represent a single accessible field of the innermost type with the fieldTest Case: 6.5.6.1-field-4Expected Result: PASS
Regression Test:
tcltest::test 6.5.6.1-field-3 { If a simple expression name is not in the scope of a local variable or parameter, it must represent a single accessible field of the innermost type with the field } { empty_class T6561f3 { int i; class Inner { Object i; void foo() { i = null; // refers to Object Inner.i, not int T6561f3.i } } } } {PASS}
If a simple expression name is not in the scope of a local variable or parameter, it must represent a single accessible field of the innermost type with the fieldTest Case: 6.5.6.1-field-5Expected Result: PASS
Regression Test:
tcltest::test 6.5.6.1-field-4 { If a simple expression name is not in the scope of a local variable or parameter, it must represent a single accessible field of the innermost type with the field } { empty_class T6561f4 { int i; class Super { Object i; } class Sub extends Super { void foo() { // refers to inherited Object Super.i, not int T6561f3.i i = null; } } } } {PASS}
If a simple expression name is not in the scope of a local variable or parameter, it must represent a single accessible field of the innermost type with the fieldTest Case: 6.5.6.1-field-6Expected Result: FAIL
Regression Test:
tcltest::test 6.5.6.1-field-5 { If a simple expression name is not in the scope of a local variable or parameter, it must represent a single accessible field of the innermost type with the field } { empty_class T6561f5 { class C { int i; } interface I { int i = 1; } class Sub extends C implements I { int j = i; // i is ambiguous between C.i, I.i } } } {FAIL}
If a simple expression name is not in the scope of a local variable or parameter, it must represent a single accessible field of the innermost type with the fieldTest Case: 6.5.6.1-field-7Expected Result: PASS
Regression Test:
tcltest::test 6.5.6.1-field-6 { If a simple expression name is not in the scope of a local variable or parameter, it must represent a single accessible field of the innermost type with the field } { compile [saveas p1/T6561f6c.java { package p1; class T6561f6a { int i; } interface T6561f6b { int i = 1; } public class T6561f6c extends T6561f6a implements T6561f6b {} }] [saveas T6561f6d.java { class T6561f6d extends p1.T6561f6c { int j = i; // only T6561f6b.i is inherited } }] } {PASS}
If a simple expression name is not in the scope of a local variable or parameter, it must represent a single accessible field of the innermost type with the fieldTest Case: 6.5.6.1-field-8Expected Result: PASS
Regression Test:
tcltest::test 6.5.6.1-field-7 { If a simple expression name is not in the scope of a local variable or parameter, it must represent a single accessible field of the innermost type with the field } { empty_class T6561f7 { int i; class A { class B { int j = i; } } } } {PASS}
If a simple expression name is not in the scope of a local variable or parameter, it must represent a single accessible field of the innermost type with the fieldTest Case: 6.5.6.1-instance-1Expected Result: PASS
Regression Test:
tcltest::test 6.5.6.1-field-8 { If a simple expression name is not in the scope of a local variable or parameter, it must represent a single accessible field of the innermost type with the field } { empty_class T6561f8 { class Super { int i; } class Sub extends Super { class Inner { { i++; } } } } } {PASS}
An expression name which resolves to an instance field must not occur in a static contextTest Case: 6.5.6.1-instance-2Expected Result: FAIL
Regression Test:
tcltest::test 6.5.6.1-instance-1 { An expression name which resolves to an instance field must not occur in a static context } { empty_class T6561i1 { int i; static { i++; } } } {FAIL}
An expression name which resolves to an instance field must not occur in a static contextTest Case: 6.5.6.1-instance-3Expected Result: FAIL
Regression Test:
tcltest::test 6.5.6.1-instance-2 { An expression name which resolves to an instance field must not occur in a static context } { empty_class T6561i2 { int i; static int j = i; } } {FAIL}
An expression name which resolves to an instance field must not occur in a static contextTest Case: 6.5.6.1-instance-4Expected Result: FAIL
Regression Test:
tcltest::test 6.5.6.1-instance-3 { An expression name which resolves to an instance field must not occur in a static context } { empty_class T6561i3 { int i; static void m() { i++; } } } {FAIL}
An expression name which resolves to an instance field must not occur in a static contextTest Case: 6.5.6.1-instance-5Expected Result: FAIL
Regression Test:
tcltest::test 6.5.6.1-instance-4 { An expression name which resolves to an instance field must not occur in a static context } { empty_class T6561i4 { int i; T6561i4(int j) {} T6561i4() { this(i++); } } } {FAIL}
An expression name which resolves to an instance field must not occur in a static contextTest Case: 6.5.6.1-explicit-constructor-1Expected Result: FAIL
Regression Test:
tcltest::test 6.5.6.1-instance-5 { An expression name which resolves to an instance field must not occur in a static context } { empty_class T6561i5 { int i; interface I { int j = i; } } } {FAIL}
Cannot access instance fields from this class within an explicit constructorTest Case: 6.5.6.1-explicit-constructor-2Expected Result: FAIL
Regression Test:
tcltest::test 6.5.6.1-explicit-constructor-1 { Cannot access instance fields from this class within an explicit constructor } { empty_class T6561ec1 { int i; T6561ec1(int i) {} T6561ec1() { this(i); } } } {FAIL}
Cannot access instance fields from this class within an explicit constructorTest Case: 6.5.6.1-explicit-constructor-3Expected Result: FAIL
Regression Test:
tcltest::test 6.5.6.1-explicit-constructor-2 { Cannot access instance fields from this class within an explicit constructor } { empty_class T6561ec2 { int i; T6561ec2(int i) {} class Sub extends T6561ec2 { Sub() { super(i); // i is inherited } } } } {FAIL}
Cannot access instance fields from this class within an explicit constructorTest Case: 6.5.6.1-explicit-constructor-4Expected Result: PASS
Regression Test:
tcltest::test 6.5.6.1-explicit-constructor-3 { Cannot access instance fields from this class within an explicit constructor } { empty_class T6561ec3 { int i; class Inner { Inner(int i) {} Inner() { this(i); // i is not inherited, and this$0.i is available } } } } {PASS}
Cannot access instance fields from this class within an explicit constructorTest Case: 6.5.6.1-explicit-constructor-5Expected Result: PASS
Regression Test:
tcltest::test 6.5.6.1-explicit-constructor-4 { Cannot access instance fields from this class within an explicit constructor } { empty_class T6561ec4 { private int i; T6561ec4(int i) {} class Sub extends T6561ec4 { Sub() { super(i); // i is not inherited, so it is the enclosing i } } } } {PASS}
Cannot access instance fields from this class within an explicit constructorTest Case: 6.5.6.1-example-1Expected Result: PASS
Regression Test:
tcltest::test 6.5.6.1-explicit-constructor-5 { Cannot access instance fields from this class within an explicit constructor } { compile [saveas p1/T6561ec5a.java { package p1; public class T6561ec5a { int i; class C extends p2.T6561ec5b { C(int j) {} C() { // although c is a subclass of a, it does not inherit i, since // its superclass is in a different package this(i); } } } }] [saveas p2/T6561ec5b.java { package p2; public class T6561ec5b extends p1.T6561ec5a {} }] } {PASS}
JLS exampleTest Case: 6.5.6.1-example-2Expected Result: PASS
Regression Test:
tcltest::test 6.5.6.1-example-1 { JLS example } { empty_class T6561e1 { static int v; static final int f = 3; public static void main(String[] args) { int i; i = 1; // local v = 2; // field System.out.println(i + " " + v + " " + f); } } } {PASS}
JLS exampleExpected Result: FAIL
Regression Test:
tcltest::test 6.5.6.1-example-2 { JLS example } { empty_class T6561e2 { static final int f = 3; public static void main(String[] args) { f = 33; // compile-time error } } } {FAIL}
tests/jls/names/meaning-of-a-name/expression-names/qualified
A qualified expression name may not be qualified by a package nameTest Case: 6.5.6.2-package-2Expected Result: FAIL
Regression Test:
tcltest::test 6.5.6.2-package-1 { A qualified expression name may not be qualified by a package name } { empty_class T6562p1 { T6562p1 foo() { return null; } int i; int j = foo.i; // foo was classified as a (non-existant) package name } } {FAIL}
A qualified expression name may not be qualified by a package nameTest Case: 6.5.6.2-type-1Expected Result: FAIL
Regression Test:
tcltest::test 6.5.6.2-package-2 { A qualified expression name may not be qualified by a package name } { empty_class T6562p2 { int j = java.i; // java was classified as a package name } } {FAIL}
A qualified expression name which is qualified by a type name must name a single accessible field of that type, which must be staticTest Case: 6.5.6.2-type-2Expected Result: FAIL
Regression Test:
tcltest::test 6.5.6.2-type-1 { A qualified expression name which is qualified by a type name must name a single accessible field of that type, which must be static } { empty_class T6562t1 { int i = T6562t1.no_such_field; } } {FAIL}
A qualified expression name which is qualified by a type name must name a single accessible field of that type, which must be staticTest Case: 6.5.6.2-type-3Expected Result: FAIL
Regression Test:
tcltest::test 6.5.6.2-type-2 { A qualified expression name which is qualified by a type name must name a single accessible field of that type, which must be static } { empty_class T6562t2 { int i; int j = T6562t2.i; // i is not static } } {FAIL}
A qualified expression name which is qualified by a type name must name a single accessible field of that type, which must be staticTest Case: 6.5.6.2-type-4Expected Result: PASS
Regression Test:
tcltest::test 6.5.6.2-type-3 { A qualified expression name which is qualified by a type name must name a single accessible field of that type, which must be static } { empty_class T6562t3 { static int i; int j = T6562t3.i; } } {PASS}
A qualified expression name which is qualified by a type name must name a single accessible field of that type, which must be staticTest Case: 6.5.6.2-type-5Expected Result: PASS
Regression Test:
tcltest::test 6.5.6.2-type-4 { A qualified expression name which is qualified by a type name must name a single accessible field of that type, which must be static } { compile [saveas T6562t4.java { interface T6562t4 { int i = 1; int j = T6562t4.i; } }] } {PASS}
A qualified expression name which is qualified by a type name must name a single accessible field of that type, which must be staticTest Case: 6.5.6.2-type-6Expected Result: FAIL
Regression Test:
tcltest::test 6.5.6.2-type-5 { A qualified expression name which is qualified by a type name must name a single accessible field of that type, which must be static } { empty_class T6562t5 { class C { int i; } interface I { int i = 1; } class Sub extends C implements I {} // ambiguous between C.i and I.i, even though only I.i is static int j = Sub.i; } } {FAIL}
A qualified expression name which is qualified by a type name must name a single accessible field of that type, which must be staticTest Case: 6.5.6.2-type-7Expected Result: PASS
Regression Test:
tcltest::test 6.5.6.2-type-6 { A qualified expression name which is qualified by a type name must name a single accessible field of that type, which must be static } { compile [saveas p1/T6562t6c.java { package p1; class T6562t6a { int i; } interface T6562t6b { int i = 1; } public class T6562t6c extends T6562t6a implements T6562t6b {} }] [saveas T6562t6d.java { class T6562t6d { int i = p1.T6562t6c.i; // only T6562t6b.i is accessible } }] } {PASS}
A qualified expression name which is qualified by a type name must name a single accessible field of that type, which must be static - this tests jikes bug 3044Test Case: 6.5.6.2-type-8Expected Result: PASS
Regression Test:
tcltest::test 6.5.6.2-type-7 { A qualified expression name which is qualified by a type name must name a single accessible field of that type, which must be static - this tests jikes bug 3044 } { compile [saveas T6562t7a.java { interface T6562t7a { int i = T6562t7b.i; } }] [saveas T6562t7b.java { class T6562t7b { final static int i; static { i = 1; } } }] } {PASS}
A qualified expression name which is qualified by a type name must name a single accessible field of that type, which must be staticTest Case: 6.5.6.2-type-9Expected Result: FAIL
Regression Test:
tcltest::test 6.5.6.2-type-8 { A qualified expression name which is qualified by a type name must name a single accessible field of that type, which must be static } { compile [saveas p1/T6562t8c.java { package p1; class T6562t8a { protected int i; } interface T6562t8b { int i = 1; } public class T6562t8c extends T6562t8a implements T6562t8b {} }] [saveas T6562t8d.java { class T6562t8d extends p1.T6562t8c { // ambiguous - a.i and b.i are accessible int i = T6562t8d.i; } }] } {FAIL}
A qualified expression name which is qualified by a type name must name a single accessible field of that type, which must be staticTest Case: 6.5.6.2-type-10Expected Result: PASS
Regression Test:
tcltest::test 6.5.6.2-type-9 { A qualified expression name which is qualified by a type name must name a single accessible field of that type, which must be static } { compile [saveas p1/T6562t9c.java { package p1; class T6562t9a { protected int i; } interface T6562t9b { int i = 1; } public class T6562t9c extends T6562t9a implements T6562t9b {} }] [saveas T6562t9d.java { class T6562t9d extends p1.T6562t9c { // since a.i is an instance field, and qualifier is not d or subclass, // only b.i is accessible int i = p1.T6562t9c.i; } }] } {PASS}
A qualified expression name which is qualified by a type name must name a single accessible field of that type, which must be staticTest Case: 6.5.6.2-expression-1Expected Result: FAIL
Regression Test:
tcltest::test 6.5.6.2-type-10 { A qualified expression name which is qualified by a type name must name a single accessible field of that type, which must be static } { compile [saveas p1/T6562t10c.java { package p1; class T6562t10a { protected static int i; } interface T6562t10b { int i = 1; } public class T6562t10c extends T6562t10a implements T6562t10b {} }] [saveas T6562t10d.java { class T6562t10d extends p1.T6562t10c { // ambiguous - a.i and b.i are accessible int i = p1.T6562t10c.i; } }] } {FAIL}
A qualified expression name which is qualified by an expression name must name a single accessible field of the type of the qualifier, which must be a referenceTest Case: 6.5.6.2-expression-2Expected Result: FAIL
Regression Test:
tcltest::test 6.5.6.2-expression-1 { A qualified expression name which is qualified by an expression name must name a single accessible field of the type of the qualifier, which must be a reference } { empty_class T6562e1 { int i; int j = i .i; // a primitive type has no members } } {FAIL}
A qualified expression name which is qualified by an expression name must name a single accessible field of the type of the qualifier, which must be a referenceTest Case: 6.5.6.2-expression-3Expected Result: FAIL
Regression Test:
tcltest::test 6.5.6.2-expression-2 { A qualified expression name which is qualified by an expression name must name a single accessible field of the type of the qualifier, which must be a reference } { empty_class T6562e2 { T6562e2 t; int i = t.no_such_field; } } {FAIL}
A qualified expression name which is qualified by an expression name must name a single accessible field of the type of the qualifier, which must be a referenceTest Case: 6.5.6.2-expression-4Expected Result: PASS
Regression Test:
tcltest::test 6.5.6.2-expression-3 { A qualified expression name which is qualified by an expression name must name a single accessible field of the type of the qualifier, which must be a reference } { empty_class T6562e3 { T6562e3 t; int i; int j = t.i; } } {PASS}
A qualified expression name which is qualified by an expression name must name a single accessible field of the type of the qualifier, which must be a referenceTest Case: 6.5.6.2-expression-5Expected Result: PASS
Regression Test:
tcltest::test 6.5.6.2-expression-4 { A qualified expression name which is qualified by an expression name must name a single accessible field of the type of the qualifier, which must be a reference } { compile [saveas T6562e4.java { interface T6562e4 { T6562e4 t = null; int i = 1; int j = t.i; // will throw NullPointerException } }] } {PASS}
A qualified expression name which is qualified by an expression name must name a single accessible field of the type of the qualifier, which must be a referenceTest Case: 6.5.6.2-expression-6Expected Result: FAIL
Regression Test:
tcltest::test 6.5.6.2-expression-5 { A qualified expression name which is qualified by an expression name must name a single accessible field of the type of the qualifier, which must be a reference } { empty_class T6562e5 { class C { int i; } interface I { int i = 1; } class Sub extends C implements I {} // ambiguous between C.i and I.i Sub s; int j = s.i; } } {FAIL}
A qualified expression name which is qualified by an expression name must name a single accessible field of the type of the qualifier, which must be a referenceTest Case: 6.5.6.2-expression-7Expected Result: PASS
Regression Test:
tcltest::test 6.5.6.2-expression-6 { A qualified expression name which is qualified by an expression name must name a single accessible field of the type of the qualifier, which must be a reference } { compile [saveas p1/T6562e6c.java { package p1; class T6562e6a { int i; } interface T6562e6b { int i = 1; } public class T6562e6c extends T6562e6a implements T6562e6b {} }] [saveas T6562e6d.java { class T6562e6d { p1.T6562e6c t; int i = t.i; // only T6562e6b.i is accessible } }] } {PASS}
A qualified expression name which is qualified by an expression name must name a single accessible field of the type of the qualifier, which must be a referenceTest Case: 6.5.6.2-expression-8Expected Result: PASS
Regression Test:
tcltest::test 6.5.6.2-expression-7 { A qualified expression name which is qualified by an expression name must name a single accessible field of the type of the qualifier, which must be a reference } { empty_class T6562e7 { Object o[] = {}; int i = o.length; } } {PASS}
A qualified expression name may occur in a static context, even when it references an instance fieldExpected Result: PASS
Regression Test:
tcltest::test 6.5.6.2-expression-8 { A qualified expression name may occur in a static context, even when it references an instance field } { empty_class T6562e8 { int i; static T6562e8 t; static { t.i++; } } } {PASS}
tests/jls/names/meaning-of-a-name/method-names/simple
A simple method name must name a method in the current typeTest Case: 6.5.7.1-simple-2Expected Result: FAIL
Regression Test:
tcltest::test 6.5.7.1-simple-1 { A simple method name must name a method in the current type } { empty_class T6571s1 { int foo; int i = foo(); } } {FAIL}
A simple method name must name a method in the current typeExpected Result: PASS
Regression Test:
tcltest::test 6.5.7.1-simple-2 { A simple method name must name a method in the current type } { empty_class T6571s2 { int foo() { return 1; } int i = foo(); } } {PASS}
tests/jls/names/meaning-of-a-name/method-names/qualified
A qualified method name may not be qualified by a package nameTest Case: 6.5.7.2-package-2Expected Result: FAIL
Regression Test:
tcltest::test 6.5.7.2-package-1 { A qualified method name may not be qualified by a package name } { empty_class T6572p1 { T6572p1 foo() { return null; } int m() { return 1; } int i = foo.m(); // foo was classified as a (non-existant) package name } } {FAIL}
A qualified method name may not be qualified by a package nameTest Case: 6.5.7.2-type-1Expected Result: FAIL
Regression Test:
tcltest::test 6.5.7.2-package-2 { A qualified method name may not be qualified by a package name } { empty_class T6572p2 { String s = java.toString(); // java was classified as a package name } } {FAIL}
A method name qualified by a type name must name at least one static method in the typeTest Case: 6.5.7.2-type-2Expected Result: FAIL
Regression Test:
tcltest::test 6.5.7.2-type-1 { A method name qualified by a type name must name at least one static method in the type } { empty_class T6572t1 { String s = Object.toString(); } } {FAIL}
A method name qualified by a type name must name at least one static method in the typeTest Case: 6.5.7.2-type-3Expected Result: FAIL
Regression Test:
tcltest::test 6.5.7.2-type-2 { A method name qualified by a type name must name at least one static method in the type } { empty_class T6572t2 { String s = T6572t2.noSuchMethod(); } } {FAIL}
A method name qualified by a type name must name at least one static method in the typeTest Case: 6.5.7.2-expression-1Expected Result: PASS
Regression Test:
tcltest::test 6.5.7.2-type-3 { A method name qualified by a type name must name at least one static method in the type } { empty_class T6572t3 { static int m() { return 1; } int i = T6572t3.m(); } } {PASS}
A method name qualified by an expression name must name at least one method in the type of the expressionTest Case: 6.5.7.2-expression-2Expected Result: FAIL
Regression Test:
tcltest::test 6.5.7.2-expression-1 { A method name qualified by an expression name must name at least one method in the type of the expression} { empty_class T6572e1 { T6572e1 t; String s = t.noSuchMethod(); } } {FAIL}
A method name qualified by an expression name must name at least one method in the type of the expressionTest Case: 6.5.7.2-expression-3Expected Result: PASS
Regression Test:
tcltest::test 6.5.7.2-expression-2 { A method name qualified by an expression name must name at least one method in the type of the expression} { empty_class T6572e2 { static int m() { return 1; } T6572e2 t; int i = t.m(); } } {PASS}
A method name qualified by an expression name must name at least one method in the type of the expressionExpected Result: FAIL
Regression Test:
tcltest::test 6.5.7.2-expression-3 { A method name qualified by an expression name must name at least one method in the type of the expression} { empty_class T6572e3 { int t; int i = t.toString(); // primitive types have no members } } {FAIL}
tests/jls/names/access-control/determining-accessibility
A class declared public is accessible from outside the packageTest Case: 6.6.1-2Expected Result: PASS
Regression Test:
tcltest::test 6.6.1-1 {A class declared public is accessible from outside the package} { compile [saveas T661_1a.java { class T661_1a { pkg.T661_1b ref; } }] [saveas pkg/T661_1b.java { package pkg; public class T661_1b {} }] } {PASS}
A class declared public is accessible from outside the package when the .java source is loaded from the CLASSPATHTest Case: 6.6.1-3Expected Result: PASS
Regression Test:
tcltest::test 6.6.1-2 {A class declared public is accessible from outside the package when the .java source is loaded from the CLASSPATH} { saveas pkg/T661_2a.java { package pkg; public class T661_2a {} } compile -classpath . [saveas T661_2b.java { class T661_2b { pkg.T661_2a ref; } }] } {PASS}
A class declared public is accessible from outside the package when the .class file is loaded from the CLASSPATHTest Case: 6.6.1-4Expected Result: PASS PASS
Regression Test:
tcltest::test 6.6.1-3 {A class declared public is accessible from outside the package when the .class file is loaded from the CLASSPATH} { set result [compile [saveas pkg/T661_3a.java { package pkg; public class T661_3a {} }]] delete pkg/T661_3a.java list $result [compile -classpath . [saveas T661_3b.java { class T661_3b { pkg.T661_3a ref; } }]] } {PASS PASS}
An interface declared public is accessible from outside the packageTest Case: 6.6.1-5Expected Result: PASS
Regression Test:
tcltest::test 6.6.1-4 {An interface declared public is accessible from outside the package} { compile [saveas T661_4a.java { class T661_4a { pkg.T661_4b ref; } }] [saveas pkg/T661_4b.java { package pkg; public interface T661_4b {} }] } {PASS}
An interface declared public is accessible from outside the package when the .java source is loaded from the CLASSPATHTest Case: 6.6.1-6Expected Result: PASS
Regression Test:
tcltest::test 6.6.1-5 {An interface declared public is accessible from outside the package when the .java source is loaded from the CLASSPATH} { saveas pkg/T661_5a.java { package pkg; public interface T661_5a {} } compile -classpath . [saveas T661_5b.java { class T661_5b { pkg.T661_5a ref; } }] } {PASS}
An interface declared public is accessible from outside the package when the .class file is loaded from the CLASSPATHTest Case: 6.6.1-7Expected Result: PASS PASS
Regression Test:
tcltest::test 6.6.1-6 {An interface declared public is accessible from outside the package when the .class file is loaded from the CLASSPATH} { set result [compile [saveas pkg/T661_6a.java { package pkg; public interface T661_6a {} }]] delete pkg/T661_6a.java list $result [compile -classpath . [saveas T661_6b.java { class T661_6b { pkg.T661_6a ref; } }]] } {PASS PASS}
Access a public class from inside the packageTest Case: 6.6.1-8Expected Result: PASS
Regression Test:
tcltest::test 6.6.1-7 {Access a public class from inside the package} { compile [saveas pkg/T661_7a.java { package pkg; public class T661_7a {} }] [saveas pkg/T661_7b.java { package pkg; class T661_7b { pkg.T661_7a ref; } }] } {PASS}
A class with default access is inaccessible from outside the packageTest Case: 6.6.1-9Expected Result: FAIL
Regression Test:
tcltest::test 6.6.1-8 {A class with default access is inaccessible from outside the package} { compile [saveas T661_8a.java { class T661_8a { pkg.T661_8b ref; } }] [saveas pkg/T661_8b.java { package pkg; class T661_8b {} }] } {FAIL}
A class with default access is inaccessible from outside the package when the .java source is loaded from the CLASSPATHTest Case: 6.6.1-10Expected Result: FAIL
Regression Test:
tcltest::test 6.6.1-9 {A class with default access is inaccessible from outside the package when the .java source is loaded from the CLASSPATH} { saveas pkg/T661_9a.java { package pkg; class T661_9a {} } compile -classpath . [saveas T661_9b.java { class T661_9b { pkg.T661_9a ref; } }] } {FAIL}
A class with default access is inaccessible from outside the package when the .class file is loaded from the CLASSPATHTest Case: 6.6.1-11Expected Result: PASS FAIL
Regression Test:
tcltest::test 6.6.1-10 {A class with default access is inaccessible from outside the package when the .class file is loaded from the CLASSPATH} { set result [compile [saveas pkg/T661_10a.java { package pkg; class T661_10a {} }]] delete pkg/T661_10a.java list $result [compile -classpath . [saveas T661_10b.java { class T661_10b { pkg.T661_10a ref; } }]] } {PASS FAIL}
An interface with default access is inaccessible from outside the packageTest Case: 6.6.1-12Expected Result: FAIL
Regression Test:
tcltest::test 6.6.1-11 {An interface with default access is inaccessible from outside the package} { compile [saveas T661_11a.java { class T661_11a { pkg.T661_11b ref; } }] [saveas pkg/T661_11b.java { package pkg; interface T661_11b {} }] } {FAIL}
An interface with default access is inaccessible from outside the package when the .java source is loaded from the CLASSPATHTest Case: 6.6.1-13Expected Result: FAIL
Regression Test:
tcltest::test 6.6.1-12 {An interface with default access is inaccessible from outside the package when the .java source is loaded from the CLASSPATH} { saveas pkg/T661_12a.java { package pkg; interface T661_12a {} } compile -classpath . [saveas T661_12b.java { class T661_12b { pkg.T661_12a ref; } }] } {FAIL}
An interface with default access is inaccessible from outside the package when the .class file is loaded from the CLASSPATHTest Case: 6.6.1-14Expected Result: PASS FAIL
Regression Test:
tcltest::test 6.6.1-13 {An interface with default access is inaccessible from outside the package when the .class file is loaded from the CLASSPATH} { set result [compile [saveas pkg/T661_13a.java { package pkg; interface T661_13a {} }]] delete pkg/T661_13a.java list $result [compile -classpath . [saveas T661_13b.java { class T661_13b { pkg.T661_13a ref; } }]] } {PASS FAIL}
Access a default class from inside the packageTest Case: 6.6.1-15Expected Result: PASS
Regression Test:
tcltest::test 6.6.1-14 {Access a default class from inside the package} { compile [saveas pkg/T661_14a.java { package pkg; class T661_14a {} }] [saveas pkg/T661_14b.java { package pkg; class T661_14b { pkg.T661_14a ref; } }] } {PASS}
A class field declared public is accessible from outside the packageTest Case: 6.6.1-16Expected Result: PASS
Regression Test:
tcltest::test 6.6.1-15 {A class field declared public is accessible from outside the package} { compile [saveas pkg/T661_15.java { package pkg; public class T661_15 { public static int FIELD = 0; } }] [saveas T661_15_Test.java { class T661_15_Test { int i = pkg.T661_15.FIELD; } }] } {PASS}
A class field declared public is accessible from outside the package when the .java source is loaded from the CLASSPATHTest Case: 6.6.1-17Expected Result: PASS
Regression Test:
tcltest::test 6.6.1-16 {A class field declared public is accessible from outside the package when the .java source is loaded from the CLASSPATH } { saveas pkg/T661_16.java { package pkg; public class T661_16 { public static int FIELD = 0; } } compile -classpath . [saveas T661_16_Test.java { class T661_16_Test { int i = pkg.T661_16.FIELD; } }] } {PASS}
A class field declared public is accessible from outside the package when the .class file is loaded from the CLASSPATHTest Case: 6.6.1-array-1Expected Result: PASS PASS
Regression Test:
tcltest::test 6.6.1-17 {A class field declared public is accessible from outside the package when the .class file is loaded from the CLASSPATH} { set result [compile [saveas pkg/T661_17.java { package pkg; public class T661_17 { public static int FIELD = 0; } }]] delete pkg/T661_17.java list $result [compile -classpath . [saveas T661_17_Test.java { class T661_17_Test { int i = pkg.T661_17.FIELD; } }]] } {PASS PASS}
Arrays are exactly as accessible as their component typeTest Case: 6.6.1-array-2Expected Result: PASS
Regression Test:
tcltest::test 6.6.1-array-1 { Arrays are exactly as accessible as their component type } { compile [saveas T661a1.java { class T661a1 { pkg.Array1[] ref; } }] [saveas pkg/Array1.java { package pkg; public class Array1 {} }] } {PASS}
Arrays are exactly as accessible as their component typeTest Case: 6.6.1-array-3Expected Result: FAIL
Regression Test:
tcltest::test 6.6.1-array-2 { Arrays are exactly as accessible as their component type } { compile [saveas T661a2.java { class T661a2 { pkg.Array2[] ref; } }] [saveas pkg/Array2.java { package pkg; class Array2 {} }] } {FAIL}
Arrays are exactly as accessible as their component typeTest Case: 6.6.1-array-4Expected Result: FAIL
Regression Test:
tcltest::test 6.6.1-array-3 { Arrays are exactly as accessible as their component type } { compile [saveas T661a3.java { class T661a3 { pkg.Array3.A[] ref; } }] [saveas pkg/Array3.java { package pkg; public class Array3 { protected static class A {} } }] } {FAIL}
Arrays are exactly as accessible as their component typeTest Case: 6.6.1-array-5Expected Result: PASS
Regression Test:
tcltest::test 6.6.1-array-4 { Arrays are exactly as accessible as their component type } { compile [saveas T661a4.java { class T661a4 extends pkg.Array4 { pkg.Array4.A[] ref; } }] [saveas pkg/Array4.java { package pkg; public class Array4 { protected static class A {} } }] } {PASS}
Arrays are exactly as accessible as their component typeTest Case: 6.6.1-array-6Expected Result: FAIL
Regression Test:
tcltest::test 6.6.1-array-5 { Arrays are exactly as accessible as their component type } { compile [saveas T661a5.java { class T661a5 extends pkg.Array5 { pkg.Array5.A[] ref; } }] [saveas pkg/Array5.java { package pkg; public class Array5 { private static class A {} } }] } {FAIL}
Arrays are exactly as accessible as their component typeTest Case: 6.6.1-array-7Expected Result: PASS
Regression Test:
tcltest::test 6.6.1-array-6 { Arrays are exactly as accessible as their component type } { compile [saveas T661a6.java { class T661a6 { Array6.A[] ref; } class Array6 { protected static class A {} } }] } {PASS}
Arrays are exactly as accessible as their component typeTest Case: 6.6.1-array-8Expected Result: PASS
Regression Test:
tcltest::test 6.6.1-array-7 { Arrays are exactly as accessible as their component type } { compile [saveas T661a7.java { class T661a7 { Array7.A[] ref; } class Array7 { static class A {} } }] } {PASS}
Arrays are exactly as accessible as their component typeTest Case: 6.6.1-array-9Expected Result: FAIL
Regression Test:
tcltest::test 6.6.1-array-8 { Arrays are exactly as accessible as their component type } { compile [saveas T661a8.java { class T661a8 { Array8.A[] ref; } class Array8 { private static class A {} } }] } {FAIL}
Arrays are exactly as accessible as their component typeTest Case: 6.6.1-array-10Expected Result: PASS
Regression Test:
tcltest::test 6.6.1-array-9 { Arrays are exactly as accessible as their component type } { empty_class T661a9 { class Inner { Array[] ref; } private static class Array {} } } {PASS}
The public length field of an array is accessible only if the array class is accessibleTest Case: 6.6.1-array-11Expected Result: PASS
Regression Test:
tcltest::test 6.6.1-array-10 { The public length field of an array is accessible only if the array class is accessible } { compile [saveas T661a10.java { class T661a10 { int i = pkg.Array10.array.length; } }] [saveas pkg/Array10.java { package pkg; public class Array10 { public static A[] array; public static class A {} } }] } {PASS}
The public length field of an array is accessible only if the array class is accessibleTest Case: 6.6.1-array-12Expected Result: FAIL
Regression Test:
tcltest::test 6.6.1-array-11 { The public length field of an array is accessible only if the array class is accessible } { compile [saveas T661a11.java { class T661a11 { int i = pkg.Array11.array.length; } }] [saveas pkg/Array11.java { package pkg; public class Array11 { public static A[] array; protected static class A {} } }] } {FAIL}
The public length field of an array is accessible only if the array class is accessibleTest Case: 6.6.1-array-13Expected Result: PASS
Regression Test:
tcltest::test 6.6.1-array-12 { The public length field of an array is accessible only if the array class is accessible } { compile [saveas T661a12.java { class T661a12 extends pkg.Array12 { int i = pkg.Array12.array.length; } }] [saveas pkg/Array12.java { package pkg; public class Array12 { public static A[] array; protected static class A {} } }] } {PASS}
The public length field of an array is accessible only if the array class is accessibleTest Case: 6.6.1-array-14Expected Result: FAIL
Regression Test:
tcltest::test 6.6.1-array-13 { The public length field of an array is accessible only if the array class is accessible } { compile [saveas T661a13.java { class T661a13 { int i = pkg.Array13.array.length; } }] [saveas pkg/Array13.java { package pkg; public class Array13 { public static A[] array; static class A {} } }] } {FAIL}
The public length field of an array is accessible only if the array class is accessibleTest Case: 6.6.1-array-15Expected Result: FAIL
Regression Test:
tcltest::test 6.6.1-array-14 { The public length field of an array is accessible only if the array class is accessible } { compile [saveas T661a14.java { class T661a14 { int i = pkg.Array14.array.length; } }] [saveas pkg/Array14.java { package pkg; public class Array14 { public static A[] array; private static class A {} } }] } {FAIL}
The public length field of an array is accessible only if the array class is accessibleTest Case: 6.6.1-array-16Expected Result: PASS
Regression Test:
tcltest::test 6.6.1-array-15 { The public length field of an array is accessible only if the array class is accessible } { compile [saveas T661a15.java { class T661a15 { int i = Array15.array.length; } class Array15 { static A[] array; protected static class A {} } }] } {PASS}
The public length field of an array is accessible only if the array class is accessibleTest Case: 6.6.1-array-17Expected Result: PASS
Regression Test:
tcltest::test 6.6.1-array-16 { The public length field of an array is accessible only if the array class is accessible } { compile [saveas T661a16.java { class T661a16 { int i = Array16.array.length; } class Array16 { static A[] array; static class A {} } }] } {PASS}
The public length field of an array is accessible only if the array class is accessibleTest Case: 6.6.1-array-18Expected Result: FAIL
Regression Test:
tcltest::test 6.6.1-array-17 { The public length field of an array is accessible only if the array class is accessible } { compile [saveas T661a17.java { class T661a17 { int i = Array17.array.length; } class Array17 { static A[] array; private static class A {} } }] } {FAIL}
The public length field of an array is accessible only if the array class is accessibleTest Case: 6.6.1-array-19Expected Result: PASS
Regression Test:
tcltest::test 6.6.1-array-18 { The public length field of an array is accessible only if the array class is accessible } { empty_class T661a18 { class Inner { int i = Array18.array.length; } static class Array18 { static A[] array; private static class A {} } } } {PASS}
A public member method of an array is accessible only if the array class is accessibleTest Case: 6.6.1-array-20Expected Result: PASS
Regression Test:
tcltest::test 6.6.1-array-19 { A public member method of an array is accessible only if the array class is accessible } { compile [saveas T661a19.java { class T661a19 { Object o = pkg.Array19.array.toString(); } }] [saveas pkg/Array19.java { package pkg; public class Array19 { public static A[] array; public static class A {} } }] } {PASS}
A public member method of an array is accessible only if the array class is accessibleTest Case: 6.6.1-array-21Expected Result: FAIL
Regression Test:
tcltest::test 6.6.1-array-20 { A public member method of an array is accessible only if the array class is accessible } { compile [saveas T661a20.java { class T661a20 { Object o = pkg.Array20.array.toString(); } }] [saveas pkg/Array20.java { package pkg; public class Array20 { public static A[] array; protected static class A {} } }] } {FAIL}
A public member method of an array is accessible only if the array class is accessibleTest Case: 6.6.1-array-22Expected Result: PASS
Regression Test:
tcltest::test 6.6.1-array-21 { A public member method of an array is accessible only if the array class is accessible } { compile [saveas T661a21.java { class T661a21 extends pkg.Array21 { Object o = pkg.Array21.array.toString(); } }] [saveas pkg/Array21.java { package pkg; public class Array21 { public static A[] array; protected static class A {} } }] } {PASS}
A public member method of an array is accessible only if the array class is accessibleTest Case: 6.6.1-array-23Expected Result: FAIL
Regression Test:
tcltest::test 6.6.1-array-22 { A public member method of an array is accessible only if the array class is accessible } { compile [saveas T661a22.java { class T661a22 { Object o = pkg.Array22.array.toString(); } }] [saveas pkg/Array22.java { package pkg; public class Array22 { public static A[] array; static class A {} } }] } {FAIL}
A public member method of an array is accessible only if the array class is accessibleTest Case: 6.6.1-array-24Expected Result: FAIL
Regression Test:
tcltest::test 6.6.1-array-23 { A public member method of an array is accessible only if the array class is accessible } { compile [saveas T661a23.java { class T661a23 { Object o = pkg.Array23.array.toString(); } }] [saveas pkg/Array23.java { package pkg; public class Array23 { public static A[] array; private static class A {} } }] } {FAIL}
A public member method of an array is accessible only if the array class is accessibleTest Case: 6.6.1-array-25Expected Result: PASS
Regression Test:
tcltest::test 6.6.1-array-24 { A public member method of an array is accessible only if the array class is accessible } { compile [saveas T661a24.java { class T661a24 { Object o = Array24.array.toString(); } class Array24 { static A[] array; protected static class A {} } }] } {PASS}
A public member method of an array is accessible only if the array class is accessibleTest Case: 6.6.1-array-26Expected Result: PASS
Regression Test:
tcltest::test 6.6.1-array-25 { A public member method of an array is accessible only if the array class is accessible } { compile [saveas T661a25.java { class T661a25 { Object o = Array25.array.toString(); } class Array25 { static A[] array; static class A {} } }] } {PASS}
A public member method of an array is accessible only if the array class is accessibleTest Case: 6.6.1-array-27Expected Result: FAIL
Regression Test:
tcltest::test 6.6.1-array-26 { A public member method of an array is accessible only if the array class is accessible } { compile [saveas T661a26.java { class T661a26 { Object o = Array26.array.toString(); } class Array26 { static A[] array; private static class A {} } }] } {FAIL}
A public member method of an array is accessible only if the array class is accessibleTest Case: 6.6.1-array-28Expected Result: PASS
Regression Test:
tcltest::test 6.6.1-array-27 { A public member method of an array is accessible only if the array class is accessible } { empty_class T661a27 { class Inner { Object o = Array27.array.toString(); } static class Array27 { static A[] array; private static class A {} } } } {PASS}
The public clone method of an array is accessible only if the array class is accessibleTest Case: 6.6.1-array-29Expected Result: PASS
Regression Test:
tcltest::test 6.6.1-array-28 { The public clone method of an array is accessible only if the array class is accessible } { compile [saveas T661a28.java { class T661a28 { Object o = pkg.Array28.array.clone(); } }] [saveas pkg/Array28.java { package pkg; public class Array28 { public static A[] array; public static class A {} } }] } {PASS}
The public clone method of an array is accessible only if the array class is accessibleTest Case: 6.6.1-array-30Expected Result: FAIL
Regression Test:
tcltest::test 6.6.1-array-29 { The public clone method of an array is accessible only if the array class is accessible } { compile [saveas T661a29.java { class T661a29 { Object o = pkg.Array29.array.clone(); } }] [saveas pkg/Array29.java { package pkg; public class Array29 { public static A[] array; protected static class A {} } }] } {FAIL}
The public clone method of an array is accessible only if the array class is accessibleTest Case: 6.6.1-array-31Expected Result: PASS
Regression Test:
tcltest::test 6.6.1-array-30 { The public clone method of an array is accessible only if the array class is accessible } { compile [saveas T661a30.java { class T661a30 extends pkg.Array30 { Object o = pkg.Array30.array.clone(); } }] [saveas pkg/Array30.java { package pkg; public class Array30 { public static A[] array; protected static class A {} } }] } {PASS}
The public clone method of an array is accessible only if the array class is accessibleTest Case: 6.6.1-array-32Expected Result: FAIL
Regression Test:
tcltest::test 6.6.1-array-31 { The public clone method of an array is accessible only if the array class is accessible } { compile [saveas T661a31.java { class T661a31 { Object o = pkg.Array31.array.clone(); } }] [saveas pkg/Array31.java { package pkg; public class Array31 { public static A[] array; static class A {} } }] } {FAIL}
The public clone method of an array is accessible only if the array class is accessibleTest Case: 6.6.1-array-33Expected Result: FAIL
Regression Test:
tcltest::test 6.6.1-array-32 { The public clone method of an array is accessible only if the array class is accessible } { compile [saveas T661a32.java { class T661a32 { Object o = pkg.Array32.array.clone(); } }] [saveas pkg/Array32.java { package pkg; public class Array32 { public static A[] array; private static class A {} } }] } {FAIL}
The public clone method of an array is accessible only if the array class is accessibleTest Case: 6.6.1-array-34Expected Result: PASS
Regression Test:
tcltest::test 6.6.1-array-33 { The public clone method of an array is accessible only if the array class is accessible } { compile [saveas T661a33.java { class T661a33 { Object o = Array33.array.clone(); } class Array33 { static A[] array; protected static class A {} } }] } {PASS}
The public clone method of an array is accessible only if the array class is accessibleTest Case: 6.6.1-array-35Expected Result: PASS
Regression Test:
tcltest::test 6.6.1-array-34 { The public clone method of an array is accessible only if the array class is accessible } { compile [saveas T661a34.java { class T661a34 { Object o = Array34.array.clone(); } class Array34 { static A[] array; static class A {} } }] } {PASS}
The public clone method of an array is accessible only if the array class is accessibleTest Case: 6.6.1-array-36Expected Result: FAIL
Regression Test:
tcltest::test 6.6.1-array-35 { The public clone method of an array is accessible only if the array class is accessible } { compile [saveas T661a35.java { class T661a35 { Object o = Array35.array.clone(); } class Array35 { static A[] array; private static class A {} } }] } {FAIL}
The public clone method of an array is accessible only if the array class is accessibleExpected Result: PASS
Regression Test:
tcltest::test 6.6.1-array-36 { The public clone method of an array is accessible only if the array class is accessible } { empty_class T661a36 { class Inner { Object o = Array36.array.clone(); } static class Array36 { static A[] array; private static class A {} } } } {PASS}
tests/jls/names/access-control/details-on-protected-access/protected-member
Access to a protected static field is legal in the same packageTest Case: 6.6.2.1-protected-static-field-2Expected Result: PASS
Regression Test:
tcltest::test 6.6.2.1-protected-static-field-1 { Access to a protected static field is legal in the same package } { compile [saveas T6621psf1a.java { class T6621psf1a { protected static int i; } class T6621psf1b { int j = T6621psf1a.i++; } }] } {PASS}
Access to a protected static field is illegal outside the package in a non-subclassTest Case: 6.6.2.1-protected-static-field-3Expected Result: FAIL
Regression Test:
tcltest::test 6.6.2.1-protected-static-field-2 { Access to a protected static field is illegal outside the package in a non-subclass } { compile [saveas p1/T6621psf2a.java { package p1; public class T6621psf2a { protected static int i; } }] [saveas T6621psf2b.java { class T6621psf2b { int j = p1.T6621psf2a.i++; } }] } {FAIL}
Access to a protected static field is legal outside the package in a subclass, regardless of the type of the qualifierTest Case: 6.6.2.1-protected-static-field-4Expected Result: PASS
Regression Test:
tcltest::test 6.6.2.1-protected-static-field-3 { Access to a protected static field is legal outside the package in a subclass, regardless of the type of the qualifier } { compile [saveas p1/T6621psf3a.java { package p1; public class T6621psf3a { protected static int i; } }] [saveas T6621psf3b.java { class T6621psf3b extends p1.T6621psf3a { int j = p1.T6621psf3a.i++; } }] } {PASS}
Access to a protected static field is legal outside the package in a subclass, regardless of the type of the qualifierTest Case: 6.6.2.1-protected-static-field-5Expected Result: PASS
Regression Test:
tcltest::test 6.6.2.1-protected-static-field-4 { Access to a protected static field is legal outside the package in a subclass, regardless of the type of the qualifier } { compile [saveas p1/T6621psf4a.java { package p1; public class T6621psf4a { protected static int i; } }] [saveas p1/T6621psf4b.java { package p1; public class T6621psf4b extends T6621psf4a {} }] [saveas T6621psf4c.java { class T6621psf4c extends p1.T6621psf4a { int j = p1.T6621psf4b.i++; } }] } {PASS}
Access to a protected static field is legal outside the package in a subclass, regardless of the type of the qualifierTest Case: 6.6.2.1-protected-static-field-6Expected Result: PASS
Regression Test:
tcltest::test 6.6.2.1-protected-static-field-5 { Access to a protected static field is legal outside the package in a subclass, regardless of the type of the qualifier } { compile [saveas p1/T6621psf5a.java { package p1; public class T6621psf5a { protected static int i; } }] [saveas p1/T6621psf5c.java { package p1; public class T6621psf5c extends p2.T6621psf5b {} }] [saveas p2/T6621psf5b.java { package p2; public class T6621psf5b extends p1.T6621psf5a { int j = p1.T6621psf5c.i++; } }] } {PASS}
Access to a protected static field is legal outside the package in the body of a subclass, regardless of the type of the qualifierTest Case: 6.6.2.1-protected-static-field-7Expected Result: PASS
Regression Test:
tcltest::test 6.6.2.1-protected-static-field-6 { Access to a protected static field is legal outside the package in the body of a subclass, regardless of the type of the qualifier } { compile [saveas p1/T6621psf6a.java { package p1; public class T6621psf6a { protected static int i; } }] [saveas T6621psf6b.java { class T6621psf6b extends p1.T6621psf6a { Object o = new Object() { { p1.T6621psf6a.i++; } }; } }] } {PASS}
Access to a protected static field is legal outside the package in the body of a subclass, regardless of the type of the qualifierTest Case: 6.6.2.1-protected-static-field-8Expected Result: PASS
Regression Test:
tcltest::test 6.6.2.1-protected-static-field-7 { Access to a protected static field is legal outside the package in the body of a subclass, regardless of the type of the qualifier } { compile [saveas p1/T6621psf7a.java { package p1; public class T6621psf7a { protected static int i; } }] [saveas p1/T6621psf7b.java { package p1; public class T6621psf7b extends T6621psf7a {} }] [saveas T6621psf7c.java { class T6621psf7c extends p1.T6621psf7a { Object o = new Object() { { p1.T6621psf7b.i++; } }; } }] } {PASS}
Access to a protected static field is legal outside the package in the body of a subclass, regardless of the type of the qualifierTest Case: 6.6.2.1-protected-instance-field-1Expected Result: PASS
Regression Test:
tcltest::test 6.6.2.1-protected-static-field-8 { Access to a protected static field is legal outside the package in the body of a subclass, regardless of the type of the qualifier } { compile [saveas p1/T6621psf8a.java { package p1; public class T6621psf8a { protected static int i; } }] [saveas p1/T6621psf8c.java { package p1; public class T6621psf8c extends p2.T6621psf8b {} }] [saveas p2/T6621psf8b.java { package p2; public class T6621psf8b extends p1.T6621psf8a { Object o = new Object() { { p1.T6621psf8c.i++; } }; } }] } {PASS}
Access to a protected instance field is legal in the same packageTest Case: 6.6.2.1-protected-instance-field-2Expected Result: PASS
Regression Test:
tcltest::test 6.6.2.1-protected-instance-field-1 { Access to a protected instance field is legal in the same package } { compile [saveas T6621pif1a.java { class T6621pif1a { protected int i; } class T6621pif1b { int j = new T6621pif1a().i++; } }] } {PASS}
Access to a protected instance field is illegal outside the package in a non-subclassTest Case: 6.6.2.1-protected-instance-field-3Expected Result: FAIL
Regression Test:
tcltest::test 6.6.2.1-protected-instance-field-2 { Access to a protected instance field is illegal outside the package in a non-subclass } { compile [saveas p1/T6621pif2a.java { package p1; public class T6621pif2a { protected int i; } }] [saveas T6621pif2b.java { class T6621pif2b { int j = new p1.T6621pif2a().i++; } }] } {FAIL}
Access to a protected instance field is legal outside the package in a subclass only if the qualifier is the type the access occurs inTest Case: 6.6.2.1-protected-instance-field-4Expected Result: FAIL
Regression Test:
tcltest::test 6.6.2.1-protected-instance-field-3 { Access to a protected instance field is legal outside the package in a subclass only if the qualifier is the type the access occurs in } { compile [saveas p1/T6621pif3a.java { package p1; public class T6621pif3a { protected int i; } }] [saveas T6621pif3b.java { class T6621pif3b extends p1.T6621pif3a { int j = new p1.T6621pif3a().i++; } }] } {FAIL}
Access to a protected instance field is legal outside the package in a subclass only if the qualifier is the type the access occurs inTest Case: 6.6.2.1-protected-instance-field-5Expected Result: FAIL
Regression Test:
tcltest::test 6.6.2.1-protected-instance-field-4 { Access to a protected instance field is legal outside the package in a subclass only if the qualifier is the type the access occurs in } { compile [saveas p1/T6621pif4a.java { package p1; public class T6621pif4a { protected int i; } }] [saveas p1/T6621pif4b.java { package p1; public class T6621pif4b extends T6621pif4a {} }] [saveas T6621pif4c.java { class T6621pif4c extends p1.T6621pif4a { int j = new p1.T6621pif4b().i++; } }] } {FAIL}
Access to a protected instance field is legal outside the package in a subclass only if the qualifier is the type the access occurs inTest Case: 6.6.2.1-protected-instance-field-6Expected Result: PASS
Regression Test:
tcltest::test 6.6.2.1-protected-instance-field-5 { Access to a protected instance field is legal outside the package in a subclass only if the qualifier is the type the access occurs in } { compile [saveas p1/T6621pif5a.java { package p1; public class T6621pif5a { protected static int i; } }] [saveas p1/T6621pif5c.java { package p1; public class T6621pif5c extends p2.T6621pif5b {} }] [saveas p2/T6621pif5b.java { package p2; public class T6621pif5b extends p1.T6621pif5a { int j = new p1.T6621pif5c().i++; } }] } {PASS}
Access to a protected instance field is legal outside the package in the body of a subclass only if the qualifier is the type the access occurs inTest Case: 6.6.2.1-protected-instance-field-7Expected Result: FAIL
Regression Test:
tcltest::test 6.6.2.1-protected-instance-field-6 { Access to a protected instance field is legal outside the package in the body of a subclass only if the qualifier is the type the access occurs in } { compile [saveas p1/T6621pif6a.java { package p1; public class T6621pif6a { protected int i; } }] [saveas T6621pif6b.java { class T6621pif6b extends p1.T6621pif6a { Object o = new Object() { { new p1.T6621pif6a().i++; } }; } }] } {FAIL}
Access to a protected instance field is legal outside the package in the body of a subclass only if the qualifier is the type the access occurs inTest Case: 6.6.2.1-protected-instance-field-8Expected Result: FAIL
Regression Test:
tcltest::test 6.6.2.1-protected-instance-field-7 { Access to a protected instance field is legal outside the package in the body of a subclass only if the qualifier is the type the access occurs in } { compile [saveas p1/T6621pif7a.java { package p1; public class T6621pif7a { protected int i; } }] [saveas p1/T6621pif7b.java { package p1; public class T6621pif7b extends T6621pif7a {} }] [saveas T6621pif7c.java { class T6621pif7c extends p1.T6621pif7a { Object o = new Object() { { new p1.T6621pif7b().i++; } }; } }] } {FAIL}
Access to a protected instance field is legal outside the package in the body of a subclass only if the qualifier is the type the access occurs inTest Case: 6.6.2.1-protected-static-method-1Expected Result: PASS
Regression Test:
tcltest::test 6.6.2.1-protected-instance-field-8 { Access to a protected instance field is legal outside the package in the body of a subclass only if the qualifier is the type the access occurs in } { compile [saveas p1/T6621pif8a.java { package p1; public class T6621pif8a { protected int i; } }] [saveas p1/T6621pif8c.java { package p1; public class T6621pif8c extends p2.T6621pif8b {} }] [saveas p2/T6621pif8b.java { package p2; public class T6621pif8b extends p1.T6621pif8a { Object o = new Object() { { new p1.T6621pif8c().i++; } }; } }] } {PASS}
Access to a protected static method is legal in the same packageTest Case: 6.6.2.1-protected-static-method-2Expected Result: PASS
Regression Test:
tcltest::test 6.6.2.1-protected-static-method-1 { Access to a protected static method is legal in the same package } { compile [saveas T6621psm1a.java { class T6621psm1a { protected static void m() {} } class T6621psm1b { { T6621psm1a.m(); } } }] } {PASS}
Access to a protected static method is illegal outside the package in a non-subclassTest Case: 6.6.2.1-protected-static-method-3Expected Result: FAIL
Regression Test:
tcltest::test 6.6.2.1-protected-static-method-2 { Access to a protected static method is illegal outside the package in a non-subclass } { compile [saveas p1/T6621psm2a.java { package p1; public class T6621psm2a { protected static void m() {} } }] [saveas T6621psm2b.java { class T6621psm2b { { p1.T6621psm2a.m(); } } }] } {FAIL}
Access to a protected static method is legal outside the package in a subclass, regardless of the type of the qualifierTest Case: 6.6.2.1-protected-static-method-4Expected Result: PASS
Regression Test:
tcltest::test 6.6.2.1-protected-static-method-3 { Access to a protected static method is legal outside the package in a subclass, regardless of the type of the qualifier } { compile [saveas p1/T6621psm3a.java { package p1; public class T6621psm3a { protected static void m() {} } }] [saveas T6621psm3b.java { class T6621psm3b extends p1.T6621psm3a { { p1.T6621psm3a.m(); } } }] } {PASS}
Access to a protected static method is legal outside the package in a subclass, regardless of the type of the qualifierTest Case: 6.6.2.1-protected-static-method-5Expected Result: PASS
Regression Test:
tcltest::test 6.6.2.1-protected-static-method-4 { Access to a protected static method is legal outside the package in a subclass, regardless of the type of the qualifier } { compile [saveas p1/T6621psm4a.java { package p1; public class T6621psm4a { protected static void m() {} } }] [saveas p1/T6621psm4b.java { package p1; public class T6621psm4b extends T6621psm4a {} }] [saveas T6621psm4c.java { class T6621psm4c extends p1.T6621psm4a { { p1.T6621psm4b.m(); } } }] } {PASS}
Access to a protected static method is legal outside the package in a subclass, regardless of the type of the qualifierTest Case: 6.6.2.1-protected-static-method-6Expected Result: PASS
Regression Test:
tcltest::test 6.6.2.1-protected-static-method-5 { Access to a protected static method is legal outside the package in a subclass, regardless of the type of the qualifier } { compile [saveas p1/T6621psm5a.java { package p1; public class T6621psm5a { protected static void m() {} } }] [saveas p1/T6621psm5c.java { package p1; public class T6621psm5c extends p2.T6621psm5b {} }] [saveas p2/T6621psm5b.java { package p2; public class T6621psm5b extends p1.T6621psm5a { { p1.T6621psm5c.m(); } } }] } {PASS}
Access to a protected static method is legal outside the package in the body of a subclass, regardless of the type of the qualifierTest Case: 6.6.2.1-protected-static-method-7Expected Result: PASS
Regression Test:
tcltest::test 6.6.2.1-protected-static-method-6 { Access to a protected static method is legal outside the package in the body of a subclass, regardless of the type of the qualifier } { compile [saveas p1/T6621psm6a.java { package p1; public class T6621psm6a { protected static void m() {} } }] [saveas T6621psm6b.java { class T6621psm6b extends p1.T6621psm6a { Object o = new Object() { { p1.T6621psm6a.m(); } }; } }] } {PASS}
Access to a protected static method is legal outside the package in the body of a subclass, regardless of the type of the qualifierTest Case: 6.6.2.1-protected-static-method-8Expected Result: PASS
Regression Test:
tcltest::test 6.6.2.1-protected-static-method-7 { Access to a protected static method is legal outside the package in the body of a subclass, regardless of the type of the qualifier } { compile [saveas p1/T6621psm7a.java { package p1; public class T6621psm7a { protected static void m() {} } }] [saveas p1/T6621psm7b.java { package p1; public class T6621psm7b extends T6621psm7a {} }] [saveas T6621psm7c.java { class T6621psm7c extends p1.T6621psm7a { Object o = new Object() { { p1.T6621psm7b.m(); } }; } }] } {PASS}
Access to a protected static method is legal outside the package in the body of a subclass, regardless of the type of the qualifierTest Case: 6.6.2.1-protected-instance-method-1Expected Result: PASS
Regression Test:
tcltest::test 6.6.2.1-protected-static-method-8 { Access to a protected static method is legal outside the package in the body of a subclass, regardless of the type of the qualifier } { compile [saveas p1/T6621psm8a.java { package p1; public class T6621psm8a { protected static void m() {} } }] [saveas p1/T6621psm8c.java { package p1; public class T6621psm8c extends p2.T6621psm8b {} }] [saveas p2/T6621psm8b.java { package p2; public class T6621psm8b extends p1.T6621psm8a { Object o = new Object() { { p1.T6621psm8c.m(); } }; } }] } {PASS}
Access to a protected instance method is legal in the same packageTest Case: 6.6.2.1-protected-instance-method-2Expected Result: PASS
Regression Test:
tcltest::test 6.6.2.1-protected-instance-method-1 { Access to a protected instance method is legal in the same package } { compile [saveas T6621pim1a.java { class T6621pim1a { protected void m() {} } class T6621pim1b { { new T6621pim1a().m(); } } }] } {PASS}
Access to a protected instance method is illegal outside the package in a non-subclassTest Case: 6.6.2.1-protected-instance-method-3Expected Result: FAIL
Regression Test:
tcltest::test 6.6.2.1-protected-instance-method-2 { Access to a protected instance method is illegal outside the package in a non-subclass } { compile [saveas p1/T6621pim2a.java { package p1; public class T6621pim2a { protected void m() {} } }] [saveas T6621pim2b.java { class T6621pim2b { { new p1.T6621pim2a().m(); } } }] } {FAIL}
Access to a protected instance method is legal outside the package in a subclass only if the qualifier is the type the access occurs inTest Case: 6.6.2.1-protected-instance-method-4Expected Result: FAIL
Regression Test:
tcltest::test 6.6.2.1-protected-instance-method-3 { Access to a protected instance method is legal outside the package in a subclass only if the qualifier is the type the access occurs in } { compile [saveas p1/T6621pim3a.java { package p1; public class T6621pim3a { protected void m() {} } }] [saveas T6621pim3b.java { class T6621pim3b extends p1.T6621pim3a { { new p1.T6621pim3a().m(); } } }] } {FAIL}
Access to a protected instance method is legal outside the package in a subclass only if the qualifier is the type the access occurs inTest Case: 6.6.2.1-protected-instance-method-5Expected Result: FAIL
Regression Test:
tcltest::test 6.6.2.1-protected-instance-method-4 { Access to a protected instance method is legal outside the package in a subclass only if the qualifier is the type the access occurs in } { compile [saveas p1/T6621pim4a.java { package p1; public class T6621pim4a { protected void m() {} } }] [saveas p1/T6621pim4b.java { package p1; public class T6621pim4b extends T6621pim4a {} }] [saveas T6621pim4c.java { class T6621pim4c extends p1.T6621pim4a { { new p1.T6621pim4b().m(); } } }] } {FAIL}
Access to a protected instance method is legal outside the package in a subclass only if the qualifier is the type the access occurs inTest Case: 6.6.2.1-protected-instance-method-6Expected Result: PASS
Regression Test:
tcltest::test 6.6.2.1-protected-instance-method-5 { Access to a protected instance method is legal outside the package in a subclass only if the qualifier is the type the access occurs in } { compile [saveas p1/T6621pim5a.java { package p1; public class T6621pim5a { protected static void m() {} } }] [saveas p1/T6621pim5c.java { package p1; public class T6621pim5c extends p2.T6621pim5b {} }] [saveas p2/T6621pim5b.java { package p2; public class T6621pim5b extends p1.T6621pim5a { { new p1.T6621pim5c().m(); } } }] } {PASS}
Access to a protected instance method is legal outside the package in the body of a subclass only if the qualifier is the type the access occurs inTest Case: 6.6.2.1-protected-instance-method-7Expected Result: FAIL
Regression Test:
tcltest::test 6.6.2.1-protected-instance-method-6 { Access to a protected instance method is legal outside the package in the body of a subclass only if the qualifier is the type the access occurs in } { compile [saveas p1/T6621pim6a.java { package p1; public class T6621pim6a { protected void m() {} } }] [saveas T6621pim6b.java { class T6621pim6b extends p1.T6621pim6a { Object o = new Object() { { new p1.T6621pim6a().m(); } }; } }] } {FAIL}
Access to a protected instance method is legal outside the package in the body of a subclass only if the qualifier is the type the access occurs inTest Case: 6.6.2.1-protected-instance-method-8Expected Result: FAIL
Regression Test:
tcltest::test 6.6.2.1-protected-instance-method-7 { Access to a protected instance method is legal outside the package in the body of a subclass only if the qualifier is the type the access occurs in } { compile [saveas p1/T6621pim7a.java { package p1; public class T6621pim7a { protected void m() {} } }] [saveas p1/T6621pim7b.java { package p1; public class T6621pim7b extends T6621pim7a {} }] [saveas T6621pim7c.java { class T6621pim7c extends p1.T6621pim7a { Object o = new Object() { { new p1.T6621pim7b().m(); } }; } }] } {FAIL}
Access to a protected instance method is legal outside the package in the body of a subclass only if the qualifier is the type the access occurs inTest Case: 6.6.2.1-protected-type-1Expected Result: PASS
Regression Test:
tcltest::test 6.6.2.1-protected-instance-method-8 { Access to a protected instance method is legal outside the package in the body of a subclass only if the qualifier is the type the access occurs in } { compile [saveas p1/T6621pim8a.java { package p1; public class T6621pim8a { protected void m() {} } }] [saveas p1/T6621pim8c.java { package p1; public class T6621pim8c extends p2.T6621pim8b {} }] [saveas p2/T6621pim8b.java { package p2; public class T6621pim8b extends p1.T6621pim8a { Object o = new Object() { { new p1.T6621pim8c().m(); } }; } }] } {PASS}
Access to a protected member type is legal in the same packageTest Case: 6.6.2.1-protected-type-2Expected Result: PASS
Regression Test:
tcltest::test 6.6.2.1-protected-type-1 { Access to a protected member type is legal in the same package } { compile [saveas T6621pt1a.java { class T6621pt1a { protected class Inner {}; } class T6621pt1b { Class c = T6621pt1a.Inner.class; } }] } {PASS}
Access to a protected member type is illegal outside the package in a non-subclassTest Case: 6.6.2.1-protected-type-3Expected Result: FAIL
Regression Test:
tcltest::test 6.6.2.1-protected-type-2 { Access to a protected member type is illegal outside the package in a non-subclass } { compile [saveas p1/T6621pt2a.java { package p1; public class T6621pt2a { protected class Inner {} } }] [saveas T6621pt2b.java { class T6621pt2b { Class c = p1.T6621pt2a.Inner.class; } }] } {FAIL}
Access to a protected member type is legal outside the package in a subclass, regardless of the type of the qualifierTest Case: 6.6.2.1-protected-type-4Expected Result: PASS
Regression Test:
tcltest::test 6.6.2.1-protected-type-3 { Access to a protected member type is legal outside the package in a subclass, regardless of the type of the qualifier } { compile [saveas p1/T6621pt3a.java { package p1; public class T6621pt3a { protected class Inner {} } }] [saveas T6621pt3b.java { class T6621pt3b extends p1.T6621pt3a { Class c = p1.T6621pt3a.Inner.class; } }] } {PASS}
Access to a protected member type is legal outside the package in a subclass, regardless of the type of the qualifierTest Case: 6.6.2.1-protected-type-5Expected Result: PASS
Regression Test:
tcltest::test 6.6.2.1-protected-type-4 { Access to a protected member type is legal outside the package in a subclass, regardless of the type of the qualifier } { compile [saveas p1/T6621pt4a.java { package p1; public class T6621pt4a { protected class Inner {} } }] [saveas p1/T6621pt4b.java { package p1; public class T6621pt4b extends T6621pt4a {} }] [saveas T6621pt4c.java { class T6621pt4c extends p1.T6621pt4a { Class c = p1.T6621pt4b.Inner.class; } }] } {PASS}
Access to a protected member type is legal outside the package in a subclass, regardless of the type of the qualifierTest Case: 6.6.2.1-protected-type-6Expected Result: PASS
Regression Test:
tcltest::test 6.6.2.1-protected-type-5 { Access to a protected member type is legal outside the package in a subclass, regardless of the type of the qualifier } { compile [saveas p1/T6621pt5a.java { package p1; public class T6621pt5a { protected class Inner {} } }] [saveas p1/T6621pt5c.java { package p1; public class T6621pt5c extends p2.T6621pt5b {} }] [saveas p2/T6621pt5b.java { package p2; public class T6621pt5b extends p1.T6621pt5a { Class c = p1.T6621pt5c.Inner.class; } }] } {PASS}
Access to a protected member type is legal outside the package in the body of a subclass, regardless of the type of the qualifierTest Case: 6.6.2.1-protected-type-7Expected Result: PASS
Regression Test:
tcltest::test 6.6.2.1-protected-type-6 { Access to a protected member type is legal outside the package in the body of a subclass, regardless of the type of the qualifier } { compile [saveas p1/T6621pt6a.java { package p1; public class T6621pt6a { protected class Inner {} } }] [saveas T6621pt6b.java { class T6621pt6b extends p1.T6621pt6a { Object o = new Object() { { Class c = p1.T6621pt6a.Inner.class; } }; } }] } {PASS}
Access to a protected member type is legal outside the package in the body of a subclass, regardless of the type of the qualifierTest Case: 6.6.2.1-protected-type-8Expected Result: PASS
Regression Test:
tcltest::test 6.6.2.1-protected-type-7 { Access to a protected member type is legal outside the package in the body of a subclass, regardless of the type of the qualifier } { compile [saveas p1/T6621pt7a.java { package p1; public class T6621pt7a { protected class Inner {} } }] [saveas p1/T6621pt7b.java { package p1; public class T6621pt7b extends T6621pt7a {} }] [saveas T6621pt7c.java { class T6621pt7c extends p1.T6621pt7a { Object o = new Object() { { Class c = p1.T6621pt7b.Inner.class; } }; } }] } {PASS}
Access to a protected member type is legal outside the package in the body of a subclass, regardless of the type of the qualifierExpected Result: PASS
Regression Test:
tcltest::test 6.6.2.1-protected-type-8 { Access to a protected member type is legal outside the package in the body of a subclass, regardless of the type of the qualifier } { compile [saveas p1/T6621pt8a.java { package p1; public class T6621pt8a { protected class Inner {} } }] [saveas p1/T6621pt8c.java { package p1; public class T6621pt8c extends p2.T6621pt8b {} }] [saveas p2/T6621pt8b.java { package p2; public class T6621pt8b extends p1.T6621pt8a { Object o = new Object() { { Class c = p1.T6621pt8c.Inner.class; } }; } }] } {PASS}
tests/jls/names/access-control/details-on-protected-access/protected-constructor
A protected superconstructor may be always be accessedTest Case: 6.6.2.2-protected-superctor-2Expected Result: PASS
Regression Test:
tcltest::test 6.6.2.2-protected-superctor-1 { A protected superconstructor may be always be accessed } { compile [saveas T6622ps1a.java { class T6622ps1a { protected T6622ps1a() {} } class T6622ps1b extends T6622ps1a {} }] } {PASS}
A protected superconstructor may be always be accessedTest Case: 6.6.2.2-protected-superctor-3Expected Result: PASS
Regression Test:
tcltest::test 6.6.2.2-protected-superctor-2 { A protected superconstructor may be always be accessed } { compile [saveas p1/T6622ps2a.java { package p1; public class T6622ps2a { protected T6622ps2a() {} } }] [saveas T6622ps2b.java { class T6622ps2b extends p1.T6622ps2a {} }] } {PASS}
A protected superconstructor may be always be accessed, even by an anonymous classTest Case: 6.6.2.2-protected-superctor-4Expected Result: PASS
Regression Test:
tcltest::test 6.6.2.2-protected-superctor-3 { A protected superconstructor may be always be accessed, even by an anonymous class } { compile [saveas T6622ps3a.java { class T6622ps3a { protected T6622ps3a() {} } class T6622ps3b { Object o = new T6622ps3a() {}; } }] } {PASS}
A protected superconstructor may be always be accessed, even by an anonymous classTest Case: 6.6.2.2-protected-superctor-5Expected Result: PASS
Regression Test:
tcltest::test 6.6.2.2-protected-superctor-4 { A protected superconstructor may be always be accessed, even by an anonymous class } { compile [saveas p1/T6622ps4a.java { package p1; public class T6622ps4a { protected T6622ps4a() {} } }] [saveas T6622ps4b.java { class T6622ps4b { Object o = new p1.T6622ps4a() {}; } }] } {PASS}
A protected superconstructor may always be accessed, even by a inner member classTest Case: 6.6.2.2-protected-creation-1Expected Result: PASS
Regression Test:
tcltest::test 6.6.2.2-protected-superctor-5 { A protected superconstructor may always be accessed, even by a inner member class } { compile [saveas p1/T6622ps5a.java { package p1; public class T6622ps5a { protected T6622ps5a() {} } }] [saveas T6622ps5b.java { class T6622ps5b { class C extends p1.T6622ps5a {} } }] } {PASS}
A protected constructor may be accessed by instance creation in the same packageTest Case: 6.6.2.2-protected-creation-2Expected Result: PASS
Regression Test:
tcltest::test 6.6.2.2-protected-creation-1 { A protected constructor may be accessed by instance creation in the same package } { compile [saveas T6622pc1a.java { class T6622pc1a { protected T6622pc1a() {} } class T6622pc1b { Object o = new T6622pc1a(); } }] } {PASS}
A protected constructor may not be accessed by instance creation outside the same packageTest Case: 6.6.2.2-protected-creation-3Expected Result: FAIL
Regression Test:
tcltest::test 6.6.2.2-protected-creation-2 { A protected constructor may not be accessed by instance creation outside the same package } { compile [saveas p1/T6622pc2a.java { package p1; public class T6622pc2a { protected T6622pc2a() {} } }] [saveas T6622pc2b.java { class T6622pc2b { Object o = new p1.T6622pc2a(); } }] } {FAIL}
A protected constructor may not be accessed by instance creation outside the same package, even when the access is in a subclassExpected Result: FAIL
Regression Test:
tcltest::test 6.6.2.2-protected-creation-3 { A protected constructor may not be accessed by instance creation outside the same package, even when the access is in a subclass } { compile [saveas p1/T6622pc3a.java { package p1; public class T6622pc3a { protected T6622pc3a() {} } }] [saveas T6622pc3b.java { class T6622pc3b extends p1.T6622pc3a { Object o = new p1.T6622pc3a(); } }] } {FAIL}
tests/jls/packages/package-members
The unnamed package may not contain duplicate membersTest Case: 7.1-unnamed-2Expected Result: FAIL
Regression Test:
tcltest::test 7.1-unnamed-1 { The unnamed package may not contain duplicate members } { compile [saveas T71u1.java { class T71u1 {} class T71u1 {} }] } {FAIL}
The unnamed package may not contain duplicate membersTest Case: 7.1-unnamed-3Expected Result: FAIL
Regression Test:
tcltest::test 7.1-unnamed-2 { The unnamed package may not contain duplicate members } { compile [saveas T71u2.java { class T71u2 {} interface T71u2 {} }] } {FAIL}
The unnamed package may not contain duplicate membersTest Case: 7.1-unnamed-4Expected Result: FAIL
Regression Test:
tcltest::test 7.1-unnamed-3 { The unnamed package may not contain duplicate members } { compile [saveas T71u3.java { interface T71u3 {} interface T71u3 {} }] } {FAIL}
The unnamed package may not contain duplicate membersTest Case: 7.1-named-1Expected Result: FAIL
Regression Test:
tcltest::test 7.1-unnamed-4 { The unnamed package may not contain duplicate members } { compile [saveas T71u4a.java { class T71u4a {} }] [saveas T71u4b.java { class T71u4a {} // duplicate of the one in file T71u4a class T71u4b {} }] } {FAIL}
A named package may not contain duplicate membersTest Case: 7.1-named-2Expected Result: FAIL
Regression Test:
tcltest::test 7.1-named-1 { A named package may not contain duplicate members } { compile [saveas p1/T71n1.java { package p1; class T71n1 {} class T71n1 {} }] } {FAIL}
A named package may not contain duplicate membersTest Case: 7.1-named-3Expected Result: FAIL
Regression Test:
tcltest::test 7.1-named-2 { A named package may not contain duplicate members } { compile [saveas p1/T71n2.java { package p1; class T71n2 {} interface T71n2 {} }] } {FAIL}
A named package may not contain duplicate membersTest Case: 7.1-named-4Expected Result: FAIL
Regression Test:
tcltest::test 7.1-named-3 { A named package may not contain duplicate members } { compile [saveas p1/T71n3.java { package p1; interface T71n3 {} interface T71n3 {} }] } {FAIL}
A named package may not contain duplicate membersTest Case: 7.1-named-5Expected Result: FAIL
Regression Test:
tcltest::test 7.1-named-4 { A named package may not contain duplicate members } { compile [saveas p1/T71n4a.java { package p1; class T71n4a {} }] [saveas p1/T71n4b.java { package p1; class T71n4a {} // duplicate of the one in file T71n4a class T71n4b {} }] } {FAIL}
A named package may not contain duplicate membersTest Case: 7.1-named-6Expected Result: FAIL
Regression Test:
tcltest::test 7.1-named-5 { A named package may not contain duplicate members } { compile [saveas p1/T71n5/T71n5a.java { package p1.T71n5; class T71n5a {} }] [saveas p1/T71n5.java { package p1; class T71n5 {} }] } {FAIL}
A named package may not contain duplicate membersTest Case: 7.1-named-7Expected Result: FAIL
Regression Test:
tcltest::test 7.1-named-6 { A named package may not contain duplicate members } { compile [saveas p1/T71n6/T71n6a.java { package p1.T71n6; class T71n6a {} }] [saveas p1/T71n6.java { package p1; interface T71n6 {} }] } {FAIL}
A named package may not contain duplicate membersExpected Result: FAIL
Regression Test:
tcltest::test 7.1-named-7 { A named package may not contain duplicate members } { compile [saveas java/lang.java { package java; class lang {} }] } {FAIL}
tests/jls/packages/compilation-units
A compilation unit may be emptyTest Case: 7.3-2Expected Result: PASS
Regression Test:
tcltest::test 7.3-1 { A compilation unit may be empty } { compile [saveas T731.java {}] } {PASS}
A compilation unit may contain only a package statementTest Case: 7.3-3Expected Result: PASS
Regression Test:
tcltest::test 7.3-2 { A compilation unit may contain only a package statement } { compile [saveas test/T732.java {package test;}] } {PASS}
A compilation unit may contain only import statementsTest Case: 7.3-4Expected Result: PASS
Regression Test:
tcltest::test 7.3-3 { A compilation unit may contain only import statements } { compile [saveas T733.java {import java.io.*;}] } {PASS}
A compilation unit may contain only a type declarationTest Case: 7.3-5Expected Result: PASS
Regression Test:
tcltest::test 7.3-4 { A compilation unit may contain only a type declaration } { compile [saveas T734.java {class T734 {}}] } {PASS}
Type declarations are optional in compilation unitsTest Case: 7.3-6Expected Result: PASS
Regression Test:
tcltest::test 7.3-5 { Type declarations are optional in compilation units } { compile [saveas test/T735.java {package test; import java.io.*;}] } {PASS}
Package declarations are optional in compilation unitsTest Case: 7.3-7Expected Result: PASS
Regression Test:
tcltest::test 7.3-6 { Package declarations are optional in compilation units } { compile [saveas T736.java {import java.io.*; class T736 {}}] } {PASS}
Import declarations are optional in compilation unitsTest Case: 7.3-8Expected Result: PASS
Regression Test:
tcltest::test 7.3-7 { Import declarations are optional in compilation units } { compile [saveas test/T737.java {package test; class T737 {}}] } {PASS}
Compilation units may contain package, import, and type-declarationsTest Case: 7.3-9Expected Result: PASS
Regression Test:
tcltest::test 7.3-8 { Compilation units may contain package, import, and type-declarations } { compile [saveas test/T738.java {package test; import java.io.*; class T738 {}}] } {PASS}
package must come before importTest Case: 7.3-10Expected Result: FAIL
Regression Test:
tcltest::test 7.3-9 { package must come before import } { compile [saveas test/T739.java {import java.io.*; package test;}] } {FAIL}
package must come before type-declarationsTest Case: 7.3-11Expected Result: FAIL
Regression Test:
tcltest::test 7.3-10 { package must come before type-declarations } { compile [saveas test/T7310.java {class T7310 {} package test;}] } {FAIL}
import must come before type-declarationsTest Case: 7.3-12Expected Result: FAIL
Regression Test:
tcltest::test 7.3-11 { import must come before type-declarations } { compile [saveas T7311.java {class T7311 {} import java.io.*;}] } {FAIL}
import must come before type-declarations, in this case, the extra ;Test Case: 7.3-13Expected Result: FAIL
Regression Test:
tcltest::test 7.3-12 { import must come before type-declarations, in this case, the extra ; } { compile [saveas test/T7312.java {package test;; import java.io.*;}] } {FAIL}
Every compilation unit implicitly imports every public type from java.langExpected Result: PASS
Regression Test:
tcltest::test 7.3-13 { Every compilation unit implicitly imports every public type from java.lang } { compile [saveas test/T7313.java { package test; class T7313 { Object o; String s; Integer i; } }] } {PASS}
tests/jls/packages/package-declarations/named-packages
compiler should not generate error when compiling a class with a package statement that defines a package that can not be located on the CLASSPATH.Expected Result: PASS
Regression Test:
tcltest::test 7.4.1-1 {compiler should not generate error when compiling a class with a package statement that defines a package that can not be located on the CLASSPATH.} { compile [saveas ClassInNewPackage.java { package some_package_that_is_not_known_at_compile_time; public class ClassInNewPackage {} }] } {PASS}
tests/jls/packages/package-declarations/unnamed-packages
Create a public class in the default packageTest Case: 7.4.2-2Expected Result: PASS
Regression Test:
tcltest::test 7.4.2-1 {Create a public class in the default package} { compile [saveas T742_1a.java { public class T742_1a {} class T742_1b extends T742_1a {} }] } {PASS}
Extend a class in the default package with another class in default packageTest Case: 7.4.2-3Expected Result: PASS
Regression Test:
tcltest::test 7.4.2-2 {Extend a class in the default package with another class in default package} { saveas T742_2a.java "class T742_2a {}" compile [saveas T742_2b.java { class T742_2b extends T742_2a {} }] } {PASS}
Extend a class in the default package with another class in default packageTest Case: 7.4.2-subpackage-1Expected Result: PASS
Regression Test:
tcltest::test 7.4.2-3 {Extend a class in the default package with another class in default package} { compile [saveas T742_3a.java "class T742_3a {}"] delete T742_3a.java compile -classpath . [saveas T742_3b.java { class T742_3b extends T742_3a {} }] } {PASS}
the unnamed package has no subpackages. Therefore, in a compilation unit in the unnamed package, a member type does not conflict with named packagesTest Case: 7.4.2-subpackage-2Expected Result: PASS
Regression Test:
tcltest::test 7.4.2-subpackage-1 { the unnamed package has no subpackages. Therefore, in a compilation unit in the unnamed package, a member type does not conflict with named packages } { compile [saveas java.java "class java {}"] } {PASS}
the unnamed package has no subpackages. Therefore, in a compilation unit in the unnamed package, a member type does not conflict with named packagesExpected Result: PASS
Regression Test:
tcltest::test 7.4.2-subpackage-2 { the unnamed package has no subpackages. Therefore, in a compilation unit in the unnamed package, a member type does not conflict with named packages } { compile [saveas p1.java "class p1 {}"] [saveas p1/T742s2.java { package p1; class T742s2 {} }] } {PASS}
tests/jls/packages/import-declarations/single-type-import-declaration
Doing an import of a class that does not exist should failTest Case: 7.5.1-2Expected Result: FAIL
Regression Test:
tcltest::test 7.5.1-1 { Doing an import of a class that does not exist should fail} { compile [saveas T7511.java { import foo.a_class_that_does_not_exist; public class T7511 {} }] } {FAIL}
Cannot import from the unnamed packageTest Case: 7.5.1-3Expected Result: FAIL
Regression Test:
tcltest::test 7.5.1-2 { Cannot import from the unnamed package } { compile [saveas ClassInDefaultPackage.java { public class T7512a {} }] [saveas foo/T7512b.java { package foo; import T7512a; public class T7512b extends T7512a {} }] } {FAIL}
Importing a non-public class should failTest Case: 7.5.1-4Expected Result: FAIL
Regression Test:
tcltest::test 7.5.1-3 { Importing a non-public class should fail} { compile [saveas foo/T7513a.java { package foo; class T7513a {} }] [saveas T7513b.java { import foo.T7513a; class T7513b extends T7513a {} }] } {FAIL}
Cannot import from the unnamed packageTest Case: 7.5.1-canonical-1Expected Result: FAIL
Regression Test:
tcltest::test 7.5.1-4 { Cannot import from the unnamed package } { compile [saveas ClassInDefaultPackage.java { public class T7514a { public static class Inner {} } }] [saveas foo/T7514b.java { package foo; import T7514a.Inner; public class T7514b extends Inner {} }] } {FAIL}
A single-type import must give the canonical name of a classTest Case: 7.5.1-canonical-2Expected Result: FAIL
Regression Test:
tcltest::test 7.5.1-canonical-1 { A single-type import must give the canonical name of a class } { compile [saveas p1/T751c1a.java { package p1; public class T751c1a { public static class Inner {} } }] [saveas p1/T751c1b.java { package p1; public class T751c1b extends T751c1a {} }] [saveas T751c1c.java { import p1.T751c1b.Inner; // not canonical class T751c1c extends Inner {} }] } {FAIL}
Imports use the canonical name, even if a prefix name exists in the current package or prior importTest Case: 7.5.1-canonical-3Expected Result: PASS
Regression Test:
tcltest::test 7.5.1-canonical-2 { Imports use the canonical name, even if a prefix name exists in the current package or prior import } { compile [saveas T751c2/Sub/T751c2a.java { package T751c2.Sub; public class T751c2a {} }] [saveas T751c2/T751c2.java { package T751c2; import T751c2.Sub.T751c2a; public class T751c2 extends T751c2a {} }] } {PASS}
Imports use the canonical name, hence local and anonymous classes (which do not have a canonical name) cannot be importedTest Case: 7.5.1-accessible-1Expected Result: FAIL
Regression Test:
tcltest::test 7.5.1-canonical-3 { Imports use the canonical name, hence local and anonymous classes (which do not have a canonical name) cannot be imported } { compile [saveas p1/T751c3a.java { package p1; public class T751c3a { static Object o = new Object() {}; } }] [saveas T751c3b.java { // Compilers are not required to use T751c3a$1 as the anonymous class // name, but it is a common choice import p1.T751c3a$1; class T751c3b {} }] } {FAIL}
A single-type import must name an accessible typeTest Case: 7.5.1-accessible-2Expected Result: PASS
Regression Test:
tcltest::test 7.5.1-accessible-1 { A single-type import must name an accessible type } { compile [saveas p1/T751a1a.java { package p1; class T751a1a { interface Inner {} } }] [saveas p1/T751a1b.java { package p1; import p1.T751a1a.Inner; class T751a1b implements Inner {} }] } {PASS}
A single-type import must name an accessible typeTest Case: 7.5.1-accessible-3Expected Result: FAIL
Regression Test:
tcltest::test 7.5.1-accessible-2 { A single-type import must name an accessible type } { compile [saveas p1/T751a2a.java { package p1; public class T751a2a { private interface Inner {} } }] [saveas T751a2b.java { import p1.T751a2a.Inner; class T751a2b implements Inner {} }] } {FAIL}
A single-type import must name an accessible typeTest Case: 7.5.1-accessible-4Expected Result: FAIL
Regression Test:
tcltest::test 7.5.1-accessible-3 { A single-type import must name an accessible type } { compile [saveas p1/T751a3a.java { package p1; class T751a3a { public interface Inner {} } }] [saveas T751a3b.java { import p1.T751a3a.Inner; // Inner is public, but T751a3a is not accessible class T751a3b implements Inner {} }] } {FAIL}
A single-type import must name an accessible typeTest Case: 7.5.1-accessible-5Expected Result: FAIL
Regression Test:
tcltest::test 7.5.1-accessible-4 { A single-type import must name an accessible type } { compile [saveas p1/T751a4a.java { package p1; import p1.T751a4a.Inner; // not accessible outside class body class T751a4a { private class Inner {} } }] } {FAIL}
A single-type import must name an accessible typeTest Case: 7.5.1-shadow-1Expected Result: FAIL
Regression Test:
tcltest::test 7.5.1-accessible-5 { A single-type import must name an accessible type } { compile [saveas p1/T751a5a.java { package p1; public class T751a5a { protected class Inner {} } }] [saveas T751a5b.java { import p1.T751a5a.Inner; // not accessible outside body of subclass class T751a5b extends p1.T751a5a {} }] } {FAIL}
A single-type import shadows an otherwise accessible top-level type in another compilation unitTest Case: 7.5.1-shadow-2Expected Result: PASS
Regression Test:
tcltest::test 7.5.1-shadow-1 { A single-type import shadows an otherwise accessible top-level type in another compilation unit } { compile [saveas p1/T751s1a.java { package p1; public class T751s1a {} }] [saveas p2/T751s1a.java { package p2; interface T751s1a {} }] [saveas p2/T751s1b.java { package p2; import p1.T751s1a; // now T751s1a refers to a class, not an interface class T751s1b extends T751s1a {} }] } {PASS}
A single-type import shadows an otherwise accessible top-level type in another compilation unitTest Case: 7.5.1-duplicate-1Expected Result: PASS
Regression Test:
tcltest::test 7.5.1-shadow-2 { A single-type import shadows an otherwise accessible top-level type in another compilation unit } { compile [saveas p1/T751s2a.java { package p1; public class T751s2a {} }] [saveas p2/T751s2a.java { package p2; interface T751s2a {} }] [saveas p3/T751s2b.java { package p3; import p2.*; import p1.T751s2a; // p2.T751s2a is shadowed by p1.T751s2a class T751s2b extends T751s2a {} }] } {PASS}
Importing the same class twice is legalTest Case: 7.5.1-duplicate-2Expected Result: PASS
Regression Test:
tcltest::test 7.5.1-duplicate-1 { Importing the same class twice is legal } { compile [saveas p1/T751d1a.java { package p1; public class T751d1a {} }] [saveas T751d1b.java { import p1.T751d1a; import p1.T751d1a; class T751d1b extends T751d1a {} }] } {PASS}
Importing two classes of the same name is illegalTest Case: 7.5.1-duplicate-3Expected Result: FAIL
Regression Test:
tcltest::test 7.5.1-duplicate-2 { Importing two classes of the same name is illegal } { compile [saveas p1/T751d2a.java { package p1; public class T751d2a {} }] [saveas p2/T751d2a.java { package p2; public class T751d2a {} }] [saveas T751d2b.java { import p1.T751d2a; import p2.T751d2a; class T751d2b extends T751d2a {} }] } {FAIL}
It is an error to single-type import a distinct type with the same name as one in the compilation unitTest Case: 7.5.1-duplicate-4Expected Result: FAIL
Regression Test:
tcltest::test 7.5.1-duplicate-3 { It is an error to single-type import a distinct type with the same name as one in the compilation unit } { compile [saveas p1/T751d3a.java { package p1; public class T751d3a {} }] [saveas T751d3a.java { import p1.T751d3a; class T751d3a {} }] } {FAIL}
It is legal to import the class being declared in a compilation unitTest Case: 7.5.1-subpackage-1Expected Result: OK
Regression Test:
tcltest::test 7.5.1-duplicate-4 { It is legal to import the class being declared in a compilation unit } { ok_pass_or_warn [compile [saveas p1/T751d4a.java { package p1; import p1.T751d4a; public class T751d4a {} }]] } {OK}
Single-type import cannot import subpackagesExpected Result: FAIL
Regression Test:
tcltest::test 7.5.1-subpackage-1 { Single-type import cannot import subpackages } { compile [saveas T751sub1.java { import java.util; class T751sub1 extends util.Random {} }] } {FAIL}
tests/jls/packages/import-declarations/type-import-on-demand-declaration
import *; is not a valid import statementTest Case: 7.5.2-unnamed-1Expected Result: FAIL
Regression Test:
tcltest::test 7.5.2-1 {import *; is not a valid import statement} { compile [saveas T7521.java { import *; public class T7521 {} }] } {FAIL}
Imports cannot occur from the unnamed packageTest Case: 7.5.2-canonical-1Expected Result: FAIL
Regression Test:
tcltest::test 7.5.2-unnamed-1 { Imports cannot occur from the unnamed package } { compile [saveas T752u1a.java { public class T752u1a { public static class Inner {} } }] [saveas p1/T752u1b.java { package p1; import T752u1a.*; class T752u1b extends Inner {} }] } {FAIL}
A type-import-on-demand must use canonical package or type namesTest Case: 7.5.2-canonical-2Expected Result: FAIL
Regression Test:
tcltest::test 7.5.2-canonical-1 { A type-import-on-demand must use canonical package or type names } { compile [saveas p1/T752c1a.java { package p1; public class T752c1a { public static class Middle { public static class Inner {} } } }] [saveas p1/T752c1b.java { package p1; public class T752c1b extends T752c1a {} }] [saveas T752c1c.java { import p1.T752c1b.Middle.*; // not canonical class T752c1c extends Inner {} }] } {FAIL}
Imports use the canonical name, even if a prefix name exists in the current package or prior importTest Case: 7.5.2-canonical-3Expected Result: PASS
Regression Test:
tcltest::test 7.5.2-canonical-2 { Imports use the canonical name, even if a prefix name exists in the current package or prior import } { compile [saveas T752c2/Sub/T752c2a.java { package T752c2.Sub; public class T752c2a {} }] [saveas T752c2/T752c2.java { package T752c2; import T752c2.Sub.*; public class T752c2 extends T752c2a {} }] } {PASS}
Imports on demand work on a class which does not have member types, such that nothing is imported; contrast this with single-type imports which require the imported type existTest Case: 7.5.2-canonical-4Expected Result: PASS
Regression Test:
tcltest::test 7.5.2-canonical-3 { Imports on demand work on a class which does not have member types, such that nothing is imported; contrast this with single-type imports which require the imported type exist } { compile [saveas p1/T752c3a.java { package p1; public class T752c3a {} }] [saveas T752c3b.java { import p1.T752c3a.*; // nothing imported class T752c3b {} }] } {PASS}
Imports use the canonical name, hence local and anonymous classes (which do not have a canonical name) cannot be importedTest Case: 7.5.2-accessible-1Expected Result: FAIL
Regression Test:
tcltest::test 7.5.2-canonical-4 { Imports use the canonical name, hence local and anonymous classes (which do not have a canonical name) cannot be imported } { compile [saveas p1/T752c4a.java { package p1; public class T752c4a { static Object o = new Object() {}; } }] [saveas T752c4b.java { import p1.*; class T752c4b { // Compilers are not required to use T752c4a$1 as the anonymous class // name, but it is a common choice Object o = new T752c4a$1(); } }] } {FAIL}
It is an error for an import statement to mention an inaccessible type or packageTest Case: 7.5.2-accessible-2Expected Result: FAIL
Regression Test:
tcltest::test 7.5.2-accessible-1 { It is an error for an import statement to mention an inaccessible type or package } { compile [saveas T752a1.java { import non_existant_package.*; class T752a1 {} }] } {FAIL}
It is an error for an import statement to mention an inaccessible type or packageTest Case: 7.5.2-accessible-3Expected Result: FAIL
Regression Test:
tcltest::test 7.5.2-accessible-2 { It is an error for an import statement to mention an inaccessible type or package } { compile [saveas p1/T752a2a.java { package p1; class T752a2a { public static class Inner {} } }] [saveas T752a2b.java { import p1.T752a2a.*; class T752a2b extends Inner {} }] } {FAIL}
It is an error for an import statement to mention an inaccessible type or packageTest Case: 7.5.2-accessible-4Expected Result: PASS
Regression Test:
tcltest::test 7.5.2-accessible-3 { It is an error for an import statement to mention an inaccessible type or package } { compile [saveas p1/T752a3a.java { package p1; class T752a3a { interface Inner {} } }] [saveas p1/T752a3b.java { package p1; import p1.T752a3a.*; class T752a3b implements Inner {} }] } {PASS}
Only the accessible types are imported by import-on-demandTest Case: 7.5.2-accessible-5Expected Result: PASS
Regression Test:
tcltest::test 7.5.2-accessible-4 { Only the accessible types are imported by import-on-demand } { compile [saveas p1/T752a4a.java { package p1; class T752a4a {} }] [saveas p2/T752a4a.java { package p2; public class T752a4a {} }] [saveas T752a4b.java { import p1.*; import p2.*; class T752a4b extends T752a4a {} }] } {PASS}
Only the accessible types are imported by import-on-demandTest Case: 7.5.2-duplicate-1Expected Result: FAIL
Regression Test:
tcltest::test 7.5.2-accessible-5 { Only the accessible types are imported by import-on-demand } { compile [saveas p1/T752a5a.java { package p1; import p1.T752a5a.*; // does not import Inner class T752a5a { private class Inner {} } class T752a5b extends Inner {} }] } {FAIL}
It is legal to have duplicate importsTest Case: 7.5.2-duplicate-2Expected Result: PASS
Regression Test:
tcltest::test 7.5.2-duplicate-1 { It is legal to have duplicate imports } { compile [saveas p1/T752d1a.java { package p1; public class T752d1a {} }] [saveas T752d1b.java { import p1.*; import p1.*; class T752d1b extends T752d1a {} }] } {PASS}
It is legal to import the current packageTest Case: 7.5.2-duplicate-3Expected Result: PASS
Regression Test:
tcltest::test 7.5.2-duplicate-2 { It is legal to import the current package } { compile [saveas p1/T752d2.java { package p1; import p1.*; class T752d2 {} }] } {PASS}
It is legal to import a type declared in the same compilation unitTest Case: 7.5.2-duplicate-4Expected Result: PASS
Regression Test:
tcltest::test 7.5.2-duplicate-3 { It is legal to import a type declared in the same compilation unit } { compile [saveas p1/T752d3a.java { package p1; import p1.T752d3a.*; class T752d3a { static class Inner {} } class T752d3b extends Inner {} }] } {PASS}
It is legal to import the same simple name on demand from multiple packages, if no ambiguous reference is made to that simple nameTest Case: 7.5.2-inherited-1Expected Result: PASS
Regression Test:
tcltest::test 7.5.2-duplicate-4 { It is legal to import the same simple name on demand from multiple packages, if no ambiguous reference is made to that simple name } { compile [saveas p1/T752d4a.java { package p1; public class T752d4a {} }] [saveas p2/T752d4a.java { package p2; public class T752d4a {} }] [saveas T752d4b.java { import p1.*; import p2.*; class T752d4b {} }] } {PASS}
Type import on demand does not include inherited member types, just declared onesExpected Result: FAIL
Regression Test:
tcltest::test 7.5.2-inherited-1 { Type import on demand does not include inherited member types, just declared ones } { compile [saveas p1/T752i1a.java { package p1; import p1.T752i1b.*; // does not import T752i1a.Inner class T752i1a { class Inner {} } class T752i1b extends T752i1a { class Extra {} } class T752i1c extends Inner {} }] } {FAIL}
tests/jls/packages/import-declarations/automatic-imports
All classes have an implicit import java.lang.*;Test Case: 7.5.3-automatic-2Expected Result: PASS
Regression Test:
tcltest::test 7.5.3-automatic-1 { All classes have an implicit import java.lang.*; } { compile [saveas T753a1.java { class T753a1 extends Object { Integer i; } }] } {PASS}
It is not an error to explicitly import from java.langExpected Result: PASS
Regression Test:
tcltest::test 7.5.3-automatic-2 { It is not an error to explicitly import from java.lang } { compile [saveas T753a2.java { import java.lang.*; import java.lang.Object; import java.lang.Integer; class T753a2 extends Object { Integer i; } }] } {PASS}
tests/jls/packages/import-declarations/strange-example
Example in the JLS: imported names are not in scope in later importsExpected Result: PASS
Regression Test:
tcltest::test 7.5.4-example-1 { Example in the JLS: imported names are not in scope in later imports } { compile [saveas Vector/Mosquito.java { package Vector; public class Mosquito {} }] [saveas T754e1.java { import java.util.Vector; import Vector.Mosquito; class T754e1 { public static void main(String[] args) { System.out.println(new Vector().getClass()); System.out.println(new Mosquito().getClass()); } } }] } {PASS}
tests/jls/packages/top-level-type-declarations
; is a valid top-level TypeDeclarationTest Case: 7.6-syntax-2Expected Result: PASS
Regression Test:
tcltest::test 7.6-syntax-1 { ; is a valid top-level TypeDeclaration } { compile [saveas T76syntax1.java {;}] } {PASS}
top-level TypeDeclarationTest Case: 7.6-syntax-3Expected Result: PASS
Regression Test:
tcltest::test 7.6-syntax-2 { top-level TypeDeclaration } { compile [saveas T76syntax2.java { class T76syntax2 {} }] } {PASS}
top-level TypeDeclarationTest Case: 7.6-scope-1Expected Result: PASS
Regression Test:
tcltest::test 7.6-syntax-3 { top-level TypeDeclaration } { compile [saveas T76syntax3.java { interface T76syntax3 {} }] } {PASS}
TypeDeclaration within a package must have a unique IdentifierTest Case: 7.6-scope-2Expected Result: FAIL
Regression Test:
tcltest::test 7.6-scope-1 { TypeDeclaration within a package must have a unique Identifier } { compile [saveas T76scope1.java { class Point {} interface Point {} }] } {FAIL}
TypeDeclaration cannot conflict with single-type-importsTest Case: 7.6-scope-3Expected Result: FAIL
Regression Test:
tcltest::test 7.6-scope-2 { TypeDeclaration cannot conflict with single-type-imports } { compile [saveas T76scope2.java { import java.util.Vector; class Vector {} }] } {FAIL}
TypeDeclaration may shadow types in general importsTest Case: 7.6-scope-4Expected Result: PASS
Regression Test:
tcltest::test 7.6-scope-3 { TypeDeclaration may shadow types in general imports } { compile [saveas T76scope3.java { import java.util.*; class Vector {} }] } {PASS}
TypeDeclaration may have forward references within a compilation unitTest Case: 7.6-name-1Expected Result: PASS
Regression Test:
tcltest::test 7.6-scope-4 { TypeDeclaration may have forward references within a compilation unit } { compile [saveas T76scope4.java { class first { second a; } class second { first b; } }] } {PASS}
Test fully qualified toplevel type nameTest Case: 7.6-name-2Expected Result: PASS
Regression Test:
tcltest::test 7.6-name-1 { Test fully qualified toplevel type name } { compile [saveas T76name1pkg/pclass.java { package T76name1pkg; public class pclass {} }] [saveas T76name1.java { class T76name1 extends T76name1pkg.pclass {} }] } {PASS}
Test fully qualified toplevel type nameTest Case: 7.6-name-3Expected Result: PASS
Regression Test:
tcltest::test 7.6-name-2 { Test fully qualified toplevel type name } { compile [saveas T76name2pkg/pinterface.java { package T76name2pkg; public interface pinterface {} }] [saveas T76name2.java { interface T76name2 extends T76name2pkg.pinterface {} }] } {PASS}
TypeDeclaration need not be related to the file name if class is not publicTest Case: 7.6-optional-restrictions-1Expected Result: PASS
Regression Test:
tcltest::test 7.6-name-3 { TypeDeclaration need not be related to the file name if class is not public } { compile [saveas 76name3.java { class Unrelated {} }] } {PASS}
Multiple classes may reside within a compilation unit, if secondary classes are not public and not referenced in other filesTest Case: 7.6-modifiers-1Expected Result: PASS
Regression Test:
tcltest::test 7.6-optional-restrictions-1 { Multiple classes may reside within a compilation unit, if secondary classes are not public and not referenced in other files } { saveas one.java { class one { three three; } class three extends two {} } saveas two.java { class two extends one {} } compile two.java } {PASS}
Top-level types may not be staticTest Case: 7.6-modifiers-2Expected Result: FAIL
Regression Test:
tcltest::test 7.6-modifiers-1 { Top-level types may not be static } { compile [saveas T76modifiers1.java {static class T76modifiers1 {}}] } {FAIL}
Top-level types may not be protectedTest Case: 7.6-modifiers-3Expected Result: FAIL
Regression Test:
tcltest::test 7.6-modifiers-2 { Top-level types may not be protected } { compile [saveas T76modifiers2.java {protected class T76modifiers2 {}}] } {FAIL}
Top-level types may not be privateTest Case: 7.6-unnamed-scope-1Expected Result: FAIL
Regression Test:
tcltest::test 7.6-modifiers-3 { Top-level types may not be private } { compile [saveas T76modifiers3.java {private class T76modifiers3 {}}] } {FAIL}
Top-level types are not in scope (not available by simple name) in import statements, so nothing can be imported from the unnamed packageTest Case: 7.6-unnamed-scope-2Expected Result: FAIL
Regression Test:
tcltest::test 7.6-unnamed-scope-1 { Top-level types are not in scope (not available by simple name) in import statements, so nothing can be imported from the unnamed package } { saveas T76us1.java {public class T76us1 {}} saveas p/T76us1_1.java { package p; import T76us1; class T76us1_1 { T76us1 t; } } compile T76us1.java p/T76us1_1.java } {FAIL}
Top-level types are not in scope (not available by simple name) in import statements, so nothing can be imported from the unnamed packageTest Case: 7.6-unnamed-scope-3Expected Result: FAIL
Regression Test:
tcltest::test 7.6-unnamed-scope-2 { Top-level types are not in scope (not available by simple name) in import statements, so nothing can be imported from the unnamed package } { saveas T76us2.java { public class T76us2 { public static class Inner {} } } saveas p/T76us2_1.java { package p; import T76us2.Inner; class T76us2_1 { Inner t; } } compile T76us2.java p/T76us2_1.java } {FAIL}
Top-level types are not in scope (not available by simple name) in import statements, so nothing can be imported from the unnamed packageExpected Result: FAIL
Regression Test:
tcltest::test 7.6-unnamed-scope-3 { Top-level types are not in scope (not available by simple name) in import statements, so nothing can be imported from the unnamed package } { saveas T76us3.java { public class T76us3 { public static class Inner {} } } saveas p/T76us3_1.java { package p; import T76us3.*; class T76us3_1 { Inner t; } } compile T76us3.java p/T76us3_1.java } {FAIL}
tests/jls/classes/class-declaration
A class may not have the same simple name as an enclosing typeTest Case: 8.1-enclosing-2Expected Result: FAIL
Regression Test:
tcltest::test 8.1-enclosing-1 { A class may not have the same simple name as an enclosing type } { empty_class T81e1 { class T81e1 {} } } {FAIL}
A class may not have the same simple name as an enclosing typeTest Case: 8.1-enclosing-3Expected Result: FAIL
Regression Test:
tcltest::test 8.1-enclosing-2 { A class may not have the same simple name as an enclosing type } { empty_class T81e2 { static class Foo { // even though there is no enclosing instance T81e2, this clashes class T81e2 {} } } } {FAIL}
A class may not have the same simple name as an enclosing typeTest Case: 8.1-enclosing-4Expected Result: FAIL
Regression Test:
tcltest::test 8.1-enclosing-3 { A class may not have the same simple name as an enclosing type } { compile [saveas T81e3.java { interface T81e3 { class T81e3 {} } }] } {FAIL}
A class may not have the same simple name as an enclosing typeTest Case: 8.1-enclosing-5Expected Result: PASS
Regression Test:
tcltest::test 8.1-enclosing-4 { A class may not have the same simple name as an enclosing type } { empty_class T81e4 { Object o = new T81e4() {}; // anonymous classes have no simple name } } {PASS}
A class may not have the same simple name as an enclosing typeTest Case: 8.1-enclosing-6Expected Result: FAIL
Regression Test:
tcltest::test 8.1-enclosing-5 { A class may not have the same simple name as an enclosing type } { empty_main T81e5 { class T81e5 {} // local classes have the same restrictions } } {FAIL}
A class may not have the same simple name as an enclosing typeTest Case: 8.1-enclosing-7Expected Result: FAIL
Regression Test:
tcltest::test 8.1-enclosing-6 { A class may not have the same simple name as an enclosing type } { empty_main T81e6 { class Local { class Local {} } } } {FAIL}
A class may not have the same simple name as an enclosing typeTest Case: 8.1-enclosing-8Expected Result: FAIL
Regression Test:
tcltest::test 8.1-enclosing-7 { A class may not have the same simple name as an enclosing type } { empty_main T81e7 { class Local { { class Local {} } } } } {FAIL}
A class may not have the same simple name as an enclosing typeExpected Result: FAIL
Regression Test:
tcltest::test 8.1-enclosing-8 { A class may not have the same simple name as an enclosing type } { empty_main T81e8 { class Local { Local(Object o) {} Local() { this(new Object() { class Local {} }); } } } } {FAIL}
tests/jls/classes/class-declaration/class-modifiers
public is valid ClassModifierTest Case: 8.1.1-valid-modifier-2Expected Result: PASS
Regression Test:
tcltest::test 8.1.1-valid-modifier-1 { public is valid ClassModifier } { compile [saveas T811vm1.java { public class T811vm1 {} }] } {PASS}
abstract is valid ClassModifierTest Case: 8.1.1-valid-modifier-3Expected Result: PASS
Regression Test:
tcltest::test 8.1.1-valid-modifier-2 { abstract is valid ClassModifier } { compile [saveas T811vm2.java { abstract class T811vm2 {} }] } {PASS}
final is valid ClassModifierTest Case: 8.1.1-valid-modifier-4Expected Result: PASS
Regression Test:
tcltest::test 8.1.1-valid-modifier-3 { final is valid ClassModifier } { compile [saveas T811vm3.java { final class T811vm3 {} }] } {PASS}
strictfp is valid ClassModifierTest Case: 8.1.1-duplicate-modifier-1Expected Result: PASS
Regression Test:
tcltest::test 8.1.1-valid-modifier-4 { strictfp is valid ClassModifier } { compile [saveas T811vm4.java { strictfp class T811vm4 {} }] } {PASS}
compile time error to specify a class modifier twiceTest Case: 8.1.1-duplicate-modifier-2Expected Result: FAIL
Regression Test:
tcltest::test 8.1.1-duplicate-modifier-1 { compile time error to specify a class modifier twice } { compile [saveas T811dm1.java { public public class T811dm1 {} }] } {FAIL}
compile time error to specify a class modifier twiceTest Case: 8.1.1-duplicate-modifier-3Expected Result: FAIL
Regression Test:
tcltest::test 8.1.1-duplicate-modifier-2 { compile time error to specify a class modifier twice } { compile [saveas T811dm2.java { abstract abstract class T811dm2 {} }] } {FAIL}
compile time error to specify a class modifier twiceTest Case: 8.1.1-duplicate-modifier-4Expected Result: FAIL
Regression Test:
tcltest::test 8.1.1-duplicate-modifier-3 { compile time error to specify a class modifier twice } { compile [saveas T811dm3.java { final final class T811dm3 {} }] } {FAIL}
compile time error to specify a class modifier twiceExpected Result: FAIL
Regression Test:
tcltest::test 8.1.1-duplicate-modifier-4 { compile time error to specify a class modifier twice } { compile [saveas T811dm4.java { strictfp strictfp class T811dm4 {} }] } {FAIL}
tests/jls/classes/class-declaration/class-modifiers/abstract-classes
declare an abstract classTest Case: 8.1.1.1-2Expected Result: PASS
Regression Test:
tcltest::test 8.1.1.1-1 { declare an abstract class } { compile [saveas T8111_1.java "abstract class T8111_1 {}"] } {PASS}
Compile time error on attempt to create an instance of an abstract class, even if it has no abstract methodsTest Case: 8.1.1.1-3Expected Result: FAIL
Regression Test:
tcltest::test 8.1.1.1-2 { Compile time error on attempt to create an instance of an abstract class, even if it has no abstract methods } { compile [saveas T8111_2.java { abstract class T8111_2 { Object o = new T8111_2(); } }] } {FAIL}
declare an abstract class with an abstract methodTest Case: 8.1.1.1-4Expected Result: PASS
Regression Test:
tcltest::test 8.1.1.1-3 { declare an abstract class with an abstract method } { compile [saveas T8111_3.java { abstract class T8111_3 { abstract void foo(); } }] } {PASS}
a non-abstract class can not have an abstract methodTest Case: 8.1.1.1-5Expected Result: FAIL
Regression Test:
tcltest::test 8.1.1.1-4 { a non-abstract class can not have an abstract method } { empty_class T8111_4 { abstract void foo(); } } {FAIL}
An attempt to inherit from an abstract superclass containing an abstract method without implementing the abstract method or declaring the subclass abstract is a compile time errorTest Case: 8.1.1.1-6Expected Result: FAIL
Regression Test:
tcltest::test 8.1.1.1-5 { An attempt to inherit from an abstract superclass containing an abstract method without implementing the abstract method or declaring the subclass abstract is a compile time error } { compile [saveas T8111_5a.java { abstract class T8111_5a { abstract void foo(); } class T8111_5b extends T8111_5a {} }] } {FAIL}
An attempt to inherit from an abstract superclass that extends another class that has an abstract method without implementing the abstract method or declaring the subclass abstract should generate a compile time errorTest Case: 8.1.1.1-7Expected Result: FAIL
Regression Test:
tcltest::test 8.1.1.1-6 { An attempt to inherit from an abstract superclass that extends another class that has an abstract method without implementing the abstract method or declaring the subclass abstract should generate a compile time error } { compile [saveas T8111_6a.java { abstract class T8111_6a { abstract void foo(); } abstract class T8111_6b extends T8111_6a {} class T8111_6c extends T8111_6b {} }] } {FAIL}
inherit from an abstract class with an abstract method, the subclass must be marked as abstractTest Case: 8.1.1.1-8Expected Result: PASS
Regression Test:
tcltest::test 8.1.1.1-7 { inherit from an abstract class with an abstract method, the subclass must be marked as abstract } { compile [saveas T8111_7a.java { abstract class T8111_7a { abstract void foo(); } abstract class T8111_7b extends T8111_7a {} }] } {PASS}
Compile time error on attempt to create an instance of an abstract class that inherits from and abstract classTest Case: 8.1.1.1-9Expected Result: FAIL
Regression Test:
tcltest::test 8.1.1.1-8 { Compile time error on attempt to create an instance of an abstract class that inherits from and abstract class } { compile [saveas T8111_8.java { abstract class T8111_8 { abstract void foo(); Object o = new T8111_8(); } }] } {FAIL}
It should be possible to inherit from an abstract class that defines no abstract methods, the subclass does not need to be abstractTest Case: 8.1.1.1-10Expected Result: PASS
Regression Test:
tcltest::test 8.1.1.1-9 { It should be possible to inherit from an abstract class that defines no abstract methods, the subclass does not need to be abstract } { compile [saveas T8111_9a.java { abstract class T8111_9a {} class T8111_9b extends T8111_9a {} }] } {PASS}
Inherit from an abstract class with no methods that also inherits from an abstract class with no methods, subclass does not need to be abstractTest Case: 8.1.1.1-11Expected Result: PASS
Regression Test:
tcltest::test 8.1.1.1-10 { Inherit from an abstract class with no methods that also inherits from an abstract class with no methods, subclass does not need to be abstract } { compile [saveas T8111_10a.java { abstract class T8111_10a {} abstract class T8111_10b extends T8111_10a {} class T8111_10c extends T8111_10b {} }] } {PASS}
Implement an abstract method inherited from an abstract superclassTest Case: 8.1.1.1-12Expected Result: PASS
Regression Test:
tcltest::test 8.1.1.1-11 { Implement an abstract method inherited from an abstract superclass } { compile [saveas T8111_11a.java { abstract class T8111_11a { abstract void foo(); } abstract class T8111_11b extends T8111_11a {} class T8111_11c extends T8111_11b { void foo() {} } }] } {PASS}
A compile time error should be generated when an abstract class has two methods with the same signature but different return types, this would create an abstract class that could not be sub-classedTest Case: 8.1.1.1-default-abstract-1Expected Result: FAIL
Regression Test:
tcltest::test 8.1.1.1-12 { A compile time error should be generated when an abstract class has two methods with the same signature but different return types, this would create an abstract class that could not be sub-classed } { compile [saveas T8111_12a.java { interface T8111_12a { void foo(); } abstract class T8111_12b implements T8111_12a { public abstract int foo(); } }] } {FAIL}
Default access abstract methods are not inherited across class boundaries, but do affect whether the class must be abstractTest Case: 8.1.1.1-default-abstract-2Expected Result: FAIL
Regression Test:
tcltest::test 8.1.1.1-default-abstract-1 { Default access abstract methods are not inherited across class boundaries, but do affect whether the class must be abstract } { compile [saveas p1/T8111da1a.java { package p1; public abstract class T8111da1a { abstract void m(); } }] [saveas T8111da1b.java { class T8111da1b extends p1.T8111da1a {} }] } {FAIL}
Default access abstract methods are not inherited across class boundaries, but do affect whether the class must be abstractTest Case: 8.1.1.1-default-abstract-3Expected Result: PASS
Regression Test:
tcltest::test 8.1.1.1-default-abstract-2 { Default access abstract methods are not inherited across class boundaries, but do affect whether the class must be abstract } { compile [saveas p1/T8111da2a.java { package p1; public abstract class T8111da2a { abstract void m(); } }] [saveas T8111da2b.java { abstract class T8111da2b extends p1.T8111da2a {} }] } {PASS}
Default access abstract methods are not inherited across class boundaries, but do affect whether the class must be abstractTest Case: 8.1.1.1-default-abstract-4Expected Result: FAIL
Regression Test:
tcltest::test 8.1.1.1-default-abstract-3 { Default access abstract methods are not inherited across class boundaries, but do affect whether the class must be abstract } { compile [saveas p1/T8111da3a.java { package p1; public abstract class T8111da3a { abstract void m(); } }] [saveas T8111da3b.java { abstract class T8111da3b extends p1.T8111da3a {} class T8111da3c extends T8111da3b {} }] } {FAIL}
Default access abstract methods are not inherited across class boundaries, but do affect whether the class must be abstractTest Case: 8.1.1.1-default-abstract-5Expected Result: PASS
Regression Test:
tcltest::test 8.1.1.1-default-abstract-4 { Default access abstract methods are not inherited across class boundaries, but do affect whether the class must be abstract } { compile [saveas p1/T8111da4a.java { package p1; public abstract class T8111da4a { abstract void m(); } }] [saveas T8111da4b.java { abstract class T8111da4b extends p1.T8111da4a {} abstract class T8111da4c extends T8111da4b {} }] } {PASS}
Default access abstract methods are not inherited across class boundaries, but do affect whether the class must be abstractTest Case: 8.1.1.1-default-abstract-6Expected Result: FAIL
Regression Test:
tcltest::test 8.1.1.1-default-abstract-5 { Default access abstract methods are not inherited across class boundaries, but do affect whether the class must be abstract } { compile [saveas p1/T8111da5a.java { package p1; public abstract class T8111da5a { abstract void m(); } }] [saveas p2/T8111da5b.java { package p2; public abstract class T8111da5b extends p1.T8111da5a {} }] [saveas p1/T8111da5c.java { package p1; public class T8111da5c extends p2.T8111da5b {} }] } {FAIL}
Default access abstract methods are not inherited across class boundaries, but do affect whether the class must be abstractTest Case: 8.1.1.1-default-abstract-7Expected Result: PASS
Regression Test:
tcltest::test 8.1.1.1-default-abstract-6 { Default access abstract methods are not inherited across class boundaries, but do affect whether the class must be abstract } { compile [saveas p1/T8111da6a.java { package p1; public abstract class T8111da6a { abstract void m(); } }] [saveas p2/T8111da6b.java { package p2; public abstract class T8111da6b extends p1.T8111da6a {} }] [saveas p1/T8111da6c.java { package p1; public abstract class T8111da6c extends p2.T8111da6b {} }] } {PASS}
Default access abstract methods are not inherited across class boundaries, but do affect whether the class must be abstractTest Case: 8.1.1.1-default-abstract-8Expected Result: FAIL
Regression Test:
tcltest::test 8.1.1.1-default-abstract-7 { Default access abstract methods are not inherited across class boundaries, but do affect whether the class must be abstract } { compile [saveas p1/T8111da7b.java { package p1; abstract class T8111da7a { abstract void m(); } public abstract class T8111da7b extends T8111da7a {} }] [saveas T8111da7c.java { abstract class T8111da7c extends p1.T8111da7b {} class T8111da7d extends T8111da7c {} }] } {FAIL}
Default access abstract methods are not inherited across class boundaries, but do affect whether the class must be abstractTest Case: 8.1.1.1-default-abstract-9Expected Result: PASS
Regression Test:
tcltest::test 8.1.1.1-default-abstract-8 { Default access abstract methods are not inherited across class boundaries, but do affect whether the class must be abstract } { compile [saveas p1/T8111da8b.java { package p1; abstract class T8111da8a { abstract void m(); } public abstract class T8111da8b extends T8111da8a {} }] [saveas T8111da8c.java { abstract class T8111da8c extends p1.T8111da8b {} abstract class T8111da8d extends T8111da8c {} }] } {PASS}
Default access abstract methods are not inherited across class boundaries, but do affect whether the class must be abstractTest Case: 8.1.1.1-default-abstract-10Expected Result: PASS
Regression Test:
tcltest::test 8.1.1.1-default-abstract-9 { Default access abstract methods are not inherited across class boundaries, but do affect whether the class must be abstract } { compile [saveas p1/T8111da9a.java { package p1; public abstract class T8111da9a { abstract void m(); } }] [saveas p2/T8111da9b.java { package p2; public abstract class T8111da9b extends p1.T8111da9a {} class T8111da9d extends p1.T8111da9c {} }] [saveas p1/T8111da9c.java { package p1; public abstract class T8111da9c extends p2.T8111da9b { void m() {} // overrides a.m(), even though a.m() is not inherited! } }] } {PASS}
Default access abstract methods are not inherited across class boundaries, but do affect whether the class must be abstractTest Case: 8.1.1.1-default-abstract-11Expected Result: PASS
Regression Test:
tcltest::test 8.1.1.1-default-abstract-10 { Default access abstract methods are not inherited across class boundaries, but do affect whether the class must be abstract } { compile [saveas p1/T8111da10a.java { package p1; public abstract class T8111da10a { abstract void m(); } class T8111da10c extends p2.T8111da10b { void m() {} // overrides a.m(), even though a.m() is not inherited! } }] [saveas p2/T8111da10b.java { package p2; public abstract class T8111da10b extends p1.T8111da10a {} }] } {PASS}
Default access abstract methods are not inherited across class boundaries, but do affect whether the class must be abstractTest Case: 8.1.1.1-default-abstract-12Expected Result: OK
Regression Test:
tcltest::test 8.1.1.1-default-abstract-11 { Default access abstract methods are not inherited across class boundaries, but do affect whether the class must be abstract } { ok_pass_or_warn [compile [saveas p1/T8111da11a.java { package p1; public abstract class T8111da11a { abstract void m(); } }] [saveas T8111da11b.java { abstract class T8111da11b extends p1.T8111da11a { // b.m() does not implement a.m(), since it is not accessible; no concrete // subclass of b can exist (either it would be out of p1, and still not // implement a.m(), or it would be in p1, and cannot override a.m and b.m // simultaneously) protected int m() { return 1; } } }]] } {OK}
Default access abstract methods are not inherited across class boundaries, but do affect whether the class must be abstractTest Case: 8.1.1.1-default-abstract-13Expected Result: OK
Regression Test:
tcltest::test 8.1.1.1-default-abstract-12 { Default access abstract methods are not inherited across class boundaries, but do affect whether the class must be abstract } { ok_pass_or_warn [compile [saveas p1/T8111da12a.java { package p1; public abstract class T8111da12a { abstract void m(); } }] [saveas T8111da12b.java { interface T8111da12b { int m(); } abstract class T8111da12c extends p1.T8111da12a implements T8111da12b { // c is legal: since a.m is not inherited, there are no conflicting // signatures. However, no concrete subclass of c can exist (either it // would be out of p1, and not implement a.m(), or it would be in p1, and // cannot override a.m and b.m simultaneously) } }]] } {OK}
Default access abstract methods are not inherited across class boundaries, but do affect whether the class must be abstractTest Case: 8.1.1.1-default-abstract-14Expected Result: FAIL
Regression Test:
tcltest::test 8.1.1.1-default-abstract-13 { Default access abstract methods are not inherited across class boundaries, but do affect whether the class must be abstract } { compile [saveas p1/T8111da13a.java { package p1; public class T8111da13a { public abstract class C { abstract void m(); } public interface I { void m(); } } }] [saveas T8111da13b.java { class T8111da13b extends p1.T8111da13a { class D extends C implements I { // this implements I.m, but not C.m, since that was not accessible // therefore, C.m remains unimplemented, and D must be abstract public void m() {} } } }] } {FAIL}
Default access abstract methods are not inherited across class boundaries, but do affect whether the class must be abstractTest Case: 8.1.1.1-default-abstract-15Expected Result: PASS
Regression Test:
tcltest::test 8.1.1.1-default-abstract-14 { Default access abstract methods are not inherited across class boundaries, but do affect whether the class must be abstract } { compile [saveas p1/T8111da14a.java { package p1; public class T8111da14a { public abstract class C { abstract void m(); } public interface I { void m(); } } }] [saveas T8111da14b.java { class T8111da14b extends p1.T8111da14a { abstract class D extends C implements I { // this implements I.m, but not C.m, since that was not accessible // therefore, C.m remains unimplemented, and D must be abstract public void m() {} } } }] } {PASS}
Default access abstract methods are not inherited across class boundaries, but do affect whether the class must be abstractTest Case: 8.1.1.1-default-abstract-16Expected Result: FAIL
Regression Test:
tcltest::test 8.1.1.1-default-abstract-15 { Default access abstract methods are not inherited across class boundaries, but do affect whether the class must be abstract } { compile [saveas p1/T8111da15a.java { package p1; public class T8111da15a { public abstract class C { abstract void m(); } public interface I { void m(); } } }] [saveas T8111da15b.java { class T8111da15b extends p1.T8111da15a { abstract class D extends C implements I { // this implements I.m, but not C.m, since that was not accessible // therefore, C.m remains unimplemented, and E must be abstract public void m() {} } class E extends D {} } }] } {FAIL}
Default access abstract methods are not inherited across class boundaries, but do affect whether the class must be abstractTest Case: 8.1.1.1-default-abstract-17Expected Result: PASS
Regression Test:
tcltest::test 8.1.1.1-default-abstract-16 { Default access abstract methods are not inherited across class boundaries, but do affect whether the class must be abstract } { compile [saveas p1/T8111da16a.java { package p1; public class T8111da16a { public abstract class C { abstract void m(); } public interface I { void m() throws Exception; } } }] [saveas T8111da16b.java { class T8111da16b extends p1.T8111da16a { abstract class D extends C implements I { // since C.m is not accessible, this only implements I.m, and hence can // throw. However, since C.m remains unimplemented, a concrete subclass // will have to override D.m and lose the throws clause public void m() throws Exception {} } } }] } {PASS}
Default access abstract methods are not inherited across class boundaries, but do affect whether the class must be abstractTest Case: 8.1.1.1-default-abstract-18Expected Result: FAIL
Regression Test:
tcltest::test 8.1.1.1-default-abstract-17 { Default access abstract methods are not inherited across class boundaries, but do affect whether the class must be abstract } { compile [saveas p1/T8111da17a.java { package p1; public class T8111da17a { public abstract class C { abstract void m(); } public interface I { void m() throws Exception; } } class T8111da17c extends p2.T8111da17b { class E extends D { // This overrides and implements C.m (even though B.m was not inherited) // so it cannot throw public void m() throws Exception {} } } }] [saveas p2/T8111da17b.java { package p2; public class T8111da17b extends p1.T8111da17a { abstract class D extends C implements I { // since C.m is not accessible, this only implements I.m, and hence can // throw. However, since C.m remains unimplemented, a concrete subclass // will have to override D.m and lose the throws clause public void m() throws Exception {} } } }] } {FAIL}
Default access abstract methods are not inherited across class boundaries, but do affect whether the class must be abstractTest Case: 8.1.1.1-default-abstract-19Expected Result: PASS
Regression Test:
tcltest::test 8.1.1.1-default-abstract-18 { Default access abstract methods are not inherited across class boundaries, but do affect whether the class must be abstract } { compile [saveas p1/T8111da18a.java { package p1; public class T8111da18a { public abstract class C { abstract void m(); } public interface I { void m() throws Exception; } } class T8111da18c extends p2.T8111da18b { class E extends D { // This overrides and implements C.m (even though B.m was not inherited) // so it cannot throw public void m() {} } } }] [saveas p2/T8111da18b.java { package p2; public class T8111da18b extends p1.T8111da18a { public abstract class D extends C implements I { // since C.m is not accessible, this only implements I.m, and hence can // throw. However, since C.m remains unimplemented, a concrete subclass // will have to override D.m and lose the throws clause public void m() throws Exception {} } } }] } {PASS}
Default access abstract methods are not inherited across class boundaries, but do affect whether the class must be abstractTest Case: 8.1.1.1-default-abstract-20Expected Result: FAIL
Regression Test:
tcltest::test 8.1.1.1-default-abstract-19 { Default access abstract methods are not inherited across class boundaries, but do affect whether the class must be abstract } { compile [saveas p1/T8111da19a.java { package p1; public class T8111da19a { abstract class C { abstract void m(); } interface I { void m(); } protected abstract class C1 extends C implements I {} } }] [saveas T8111da19b.java { class T8111da19b extends p1.T8111da19a { class D extends C1 { // this implements I.m, but not C.m, since that was not accessible // therefore, C.m remains unimplemented, and D must be abstract public void m() {} } } }] } {FAIL}
Default access abstract methods are not inherited across class boundaries, but do affect whether the class must be abstractTest Case: 8.1.1.1-default-abstract-21Expected Result: PASS
Regression Test:
tcltest::test 8.1.1.1-default-abstract-20 { Default access abstract methods are not inherited across class boundaries, but do affect whether the class must be abstract } { compile [saveas p1/T8111da20a.java { package p1; public class T8111da20a { abstract class C { abstract void m(); } interface I { void m(); } protected abstract class C1 extends C implements I {} } }] [saveas T8111da20b.java { class T8111da20b extends p1.T8111da20a { abstract class D extends C1 { // this implements I.m, but not C.m, since that was not accessible // therefore, C.m remains unimplemented, and D must be abstract public void m() {} } } }] } {PASS}
Default access abstract methods are not inherited across class boundaries, but do affect whether the class must be abstractTest Case: 8.1.1.1-default-abstract-22Expected Result: FAIL
Regression Test:
tcltest::test 8.1.1.1-default-abstract-21 { Default access abstract methods are not inherited across class boundaries, but do affect whether the class must be abstract } { compile [saveas p1/T8111da21a.java { package p1; public class T8111da21a { abstract class C { abstract void m(); } interface I { void m(); } protected abstract class C1 extends C implements I {} } }] [saveas T8111da21b.java { class T8111da21b extends p1.T8111da21a { abstract class D extends C1 { // this implements I.m, but not C.m, since that was not accessible // therefore, C.m remains unimplemented, and E must be abstract public void m() {} } class E extends D {} } }] } {FAIL}
Default access abstract methods are not inherited across class boundaries, but do affect whether the class must be abstractTest Case: 8.1.1.1-default-abstract-23Expected Result: PASS
Regression Test:
tcltest::test 8.1.1.1-default-abstract-22 { Default access abstract methods are not inherited across class boundaries, but do affect whether the class must be abstract } { compile [saveas p1/T8111da22a.java { package p1; public class T8111da22a { abstract class C { abstract void m(); } interface I { void m() throws Exception; } protected abstract class C1 extends C implements I {} } }] [saveas T8111da22b.java { class T8111da22b extends p1.T8111da22a { abstract class D extends C1 { // since C.m is not accessible, this only implements I.m, and hence can // throw. However, since C.m remains unimplemented, a concrete subclass // will have to override D.m and lose the throws clause public void m() throws Exception {} } } }] } {PASS}
Default access abstract methods are not inherited across class boundaries, but do affect whether the class must be abstractTest Case: 8.1.1.1-default-abstract-24Expected Result: FAIL
Regression Test:
tcltest::test 8.1.1.1-default-abstract-23 { Default access abstract methods are not inherited across class boundaries, but do affect whether the class must be abstract } { compile [saveas p1/T8111da23a.java { package p1; public class T8111da23a { abstract class C { abstract void m(); } interface I { void m() throws Exception; } protected abstract class C1 extends C implements I {} } class T8111da23c extends p2.T8111da23b { class E extends D { // This overrides and implements C.m (even though B.m was not inherited) // so it cannot throw public void m() throws Exception {} } } }] [saveas p2/T8111da23b.java { package p2; public class T8111da23b extends p1.T8111da23a { abstract class D extends C1 { // since C.m is not accessible, this only implements I.m, and hence can // throw. However, since C.m remains unimplemented, a concrete subclass // will have to override D.m and lose the throws clause public void m() throws Exception {} } } }] } {FAIL}
Default access abstract methods are not inherited across class boundaries, but do affect whether the class must be abstractTest Case: 8.1.1.1-default-abstract-25Expected Result: PASS
Regression Test:
tcltest::test 8.1.1.1-default-abstract-24 { Default access abstract methods are not inherited across class boundaries, but do affect whether the class must be abstract } { compile [saveas p1/T8111da24a.java { package p1; public class T8111da24a { abstract class C { abstract void m(); } interface I { void m() throws Exception; } protected abstract class C1 extends C implements I {} } class T8111da24c extends p2.T8111da24b { class E extends D { // This overrides and implements C.m (even though B.m was not inherited) // so it cannot throw public void m() {} } } }] [saveas p2/T8111da24b.java { package p2; public class T8111da24b extends p1.T8111da24a { public abstract class D extends C1 { // since C.m is not accessible, this only implements I.m, and hence can // throw. However, since C.m remains unimplemented, a concrete subclass // will have to override D.m and lose the throws clause public void m() throws Exception {} } } }] } {PASS}
Default access abstract methods are not inherited across class boundaries, but do affect whether the class must be abstractExpected Result: PASS
Regression Test:
tcltest::test 8.1.1.1-default-abstract-25 { Default access abstract methods are not inherited across class boundaries, but do affect whether the class must be abstract } { compile [saveas p1/T8111da25a.java { package p1; public abstract class T8111da25a { abstract void m(); } }] [saveas p2/T8111da25b.java { package p2; public abstract class T8111da25b extends p1.T8111da25a { // the change in signature is legal, since a.m is not inherited abstract int m() throws Exception; } class T8111da25d extends p1.T8111da25c { // With the implementation of b.m, there are no abstract methods in d int m() throws Exception { return 1; } } }] [saveas p1/T8111da25c.java { package p1; public abstract class T8111da25c extends p2.T8111da25b { // this class must be abstract, even though it implements a.m void m() {} // overrides the non-inherited a.m! } }] } {PASS}
tests/jls/classes/class-declaration/class-modifiers/final-classes
a final class cannot also be declared abstractTest Case: 8.1.1.2-invalid-subclass-1Expected Result: FAIL
Regression Test:
tcltest::test 8.1.1.2-conflicting-modifier-1 { a final class cannot also be declared abstract } { compile [saveas T8112cm1.java { final abstract class T8112cm1 {} }] } {FAIL}
A compile-time error occurs if the name of a final class appears in the extends clause of another class declarationTest Case: 8.1.1.2-invalid-subclass-2Expected Result: FAIL
Regression Test:
tcltest::test 8.1.1.2-invalid-subclass-1 { A compile-time error occurs if the name of a final class appears in the extends clause of another class declaration } { compile [saveas T8112is1.java { final class T8112is1_super {} class T8112is1 extends T8112is1_super {} }] } {FAIL}
A final class can not be extended via an anymous innerclassExpected Result: FAIL
Regression Test:
tcltest::test 8.1.1.2-invalid-subclass-2 { A final class can not be extended via an anymous innerclass } { compile [saveas T8112is2.java { final class T8112is2 { Object o = new T8112is2() {}; } }] } {FAIL}
tests/jls/classes/class-declaration/inner-classes-and-enclosing-instances
Static variables inside inner class must be compile-time constantsTest Case: 8.1.2-static-2Expected Result: FAIL
Regression Test:
tcltest::test 8.1.2-static-1 { Static variables inside inner class must be compile-time constants } { empty_class T812s1 { class I { // not primitive or String private final static String[] k = {"test", "test2"}; } } } {FAIL}
Static variables inside inner class must be compile-time constantTest Case: 8.1.2-static-3Expected Result: PASS
Regression Test:
tcltest::test 8.1.2-static-2 { Static variables inside inner class must be compile-time constant } { empty_class T812s2 { class I { // good private final static int k = 5; } } } {PASS}
Static variables inside inner class must be compile-time constantTest Case: 8.1.2-static-4Expected Result: FAIL
Regression Test:
tcltest::test 8.1.2-static-3 { Static variables inside inner class must be compile-time constant } { empty_class T812s3 { class I { // not final private static int k = 5; } } } {FAIL}
Static variables inside inner class must be compile-time constantTest Case: 8.1.2-static-5Expected Result: FAIL
Regression Test:
tcltest::test 8.1.2-static-4 { Static variables inside inner class must be compile-time constant } { empty_class T812s4 { class I { // not constant private static int k = new Integer(5).intValue(); } } } {FAIL}
static initializers are not allowed in anonymous classesTest Case: 8.1.2-static-6Expected Result: FAIL
Regression Test:
tcltest::test 8.1.2-static-5 { static initializers are not allowed in anonymous classes } { empty_class T812s5 { Object o = new Object() { static {} }; } } {FAIL}
syntax error in illegal static initializers should not cause core dump (jikes bug 343)Test Case: 8.1.2-static-7Expected Result: FAIL
Regression Test:
tcltest::test 8.1.2-static-6 { syntax error in illegal static initializers should not cause core dump (jikes bug 343) } { empty_class T812s6 { Object o = new Object() { static { a } }; } } {FAIL}
local classes in static context still may not have static membersTest Case: 8.1.2-static-8Expected Result: FAIL
Regression Test:
tcltest::test 8.1.2-static-7 { local classes in static context still may not have static members } { empty_main T812s7 { class Local { // in static main static int i; } } } {FAIL}
local classes in static context still may not have static membersTest Case: 8.1.2-static-9Expected Result: FAIL
Regression Test:
tcltest::test 8.1.2-static-8 { local classes in static context still may not have static members } { empty_main T812s8 { class Local { // in static main static void foo() {} } } } {FAIL}
local classes in static context still may not have static membersTest Case: 8.1.2-static-10Expected Result: FAIL
Regression Test:
tcltest::test 8.1.2-static-9 { local classes in static context still may not have static members } { empty_main T812s9 { class Local { // in static main static {} } } } {FAIL}
local classes in static context still may not have static membersTest Case: 8.1.2-static-11Expected Result: FAIL
Regression Test:
tcltest::test 8.1.2-static-10 { local classes in static context still may not have static members } { empty_main T812s10 { class Local { // in static main static class Inner {} } } } {FAIL}
local classes in static context still may not have static membersTest Case: 8.1.2-static-12Expected Result: FAIL
Regression Test:
tcltest::test 8.1.2-static-11 { local classes in static context still may not have static members } { empty_main T812s11 { class Local { // in static main interface Inner {} } } } {FAIL}
anonymous classes in static context still may not have static membersTest Case: 8.1.2-static-13Expected Result: FAIL
Regression Test:
tcltest::test 8.1.2-static-12 { anonymous classes in static context still may not have static members } { empty_main T812s12 { new Object() { // in static main static int i; }; } } {FAIL}
anonymous classes in static context still may not have static membersTest Case: 8.1.2-static-14Expected Result: FAIL
Regression Test:
tcltest::test 8.1.2-static-13 { anonymous classes in static context still may not have static members } { empty_main T812s13 { new Object() { // in static main static void foo() {} }; } } {FAIL}
anonymous classes in static context still may not have static membersTest Case: 8.1.2-static-15Expected Result: FAIL
Regression Test:
tcltest::test 8.1.2-static-14 { anonymous classes in static context still may not have static members } { empty_main T812s14 { new Object() { // in static main static {} }; } } {FAIL}
anonymous classes in static context still may not have static membersTest Case: 8.1.2-static-16Expected Result: FAIL
Regression Test:
tcltest::test 8.1.2-static-15 { anonymous classes in static context still may not have static members } { empty_main T812s15 { new Object() { // in static main static class Inner {} }; } } {FAIL}
anonymous classes in static context still may not have static membersTest Case: 8.1.2-static-17Expected Result: FAIL
Regression Test:
tcltest::test 8.1.2-static-16 { anonymous classes in static context still may not have static members } { empty_main T812s16 { new Object() { // in static main interface Inner {} }; } } {FAIL}
anonymous classes in static context still may not have static membersTest Case: 8.1.2-enclosing-1Expected Result: FAIL
Regression Test:
tcltest::test 8.1.2-static-17 { anonymous classes in static context still may not have static members } { empty_class T812s17 { T812s17(Object o) {} T812s17() { // static context in explicit constructor invocation this(new Object() { static int i; }); } } } {FAIL}
A parameter used but not declared in an inner class must be declared finalTest Case: 8.1.2-enclosing-2Expected Result: FAIL
Regression Test:
tcltest::test 8.1.2-enclosing-1 { A parameter used but not declared in an inner class must be declared final } { empty_class T812e1 { void foo(int i) { new Object() { int j = i = 0; }; } } } {FAIL}
A local used but not declared in an inner class must be declared finalTest Case: 8.1.2-enclosing-3Expected Result: FAIL
Regression Test:
tcltest::test 8.1.2-enclosing-2 { A local used but not declared in an inner class must be declared final } { empty_class T812e2 { void foo() { int i = 0; new Object() { int j = i = 0; }; } } } {FAIL}
A blank final field may not be assigned within an inner classTest Case: 8.1.2-enclosing-4Expected Result: FAIL
Regression Test:
tcltest::test 8.1.2-enclosing-3 { A blank final field may not be assigned within an inner class } { empty_class T812e3 { void foo() { final int i; new Object() { int j = i = 0; }; } } } {FAIL}
A final field may not be assigned within an inner classTest Case: 8.1.2-enclosing-5Expected Result: FAIL
Regression Test:
tcltest::test 8.1.2-enclosing-4 { A final field may not be assigned within an inner class } { empty_class T812e4 { void foo() { final int i = 0; new Object() { int j = i = 0; }; } } } {FAIL}
A final parameter may not be assigned within an inner classExpected Result: FAIL
Regression Test:
tcltest::test 8.1.2-enclosing-5 { A final parameter may not be assigned within an inner class } { empty_class T812e5 { void foo(final int i) { new Object() { int j = i = 0; }; } } } {FAIL}
tests/jls/classes/class-declaration/superclasses-and-subclasses
Circular dependencies are illegalTest Case: 8.1.3-circular-2Expected Result: FAIL
Regression Test:
tcltest::test 8.1.3-circular-1 { Circular dependencies are illegal } { compile [saveas T813c1.java { class T813c1 implements T813c1.Inner { interface Inner {} } }] } {FAIL}
Circular dependencies are illegalTest Case: 8.1.3-circular-3Expected Result: FAIL
Regression Test:
tcltest::test 8.1.3-circular-2 { Circular dependencies are illegal } { compile [saveas T813c2.java { class T813c2 extends T813c2.Inner { class Inner {} } }] } {FAIL}
Circular dependencies are illegalTest Case: 8.1.3-circular-4Expected Result: FAIL
Regression Test:
tcltest::test 8.1.3-circular-3 { Circular dependencies are illegal } { compile [saveas T813c3.java { class T813c3 extends T813c3 {} }] } {FAIL}
Circular dependencies are illegalTest Case: 8.1.3-circular-5Expected Result: FAIL
Regression Test:
tcltest::test 8.1.3-circular-4 { Circular dependencies are illegal } { compile [saveas T813c4.java { class T813c4_1 extends T813c4_2 {} class T813c4_2 extends T813c4_1 {} }] } {FAIL}
Circular dependencies are illegalTest Case: 8.1.3-circular-6Expected Result: FAIL
Regression Test:
tcltest::test 8.1.3-circular-5 { Circular dependencies are illegal } { compile [saveas T813c5.java { class T813c5_1 implements T813c5_2.Inner2 { interface Inner1 {} } class T813c5_2 { interface Inner2 extends T813c5_1.Inner1 {} } }] } {FAIL}
Circular dependencies are illegalTest Case: 8.1.3-non-circular-1Expected Result: FAIL
Regression Test:
tcltest::test 8.1.3-circular-6 { Circular dependencies are illegal } { empty_class T813c6 { void foo() { class Local extends Local {} } } } {FAIL}
In spite of cross-referencing, this declaration is not circular, but is legalTest Case: 8.1.3-object-1Expected Result: PASS
Regression Test:
tcltest::test 8.1.3-non-circular-1 { In spite of cross-referencing, this declaration is not circular, but is legal } { compile [saveas T813nc1.java { class T813nc1 { static class Inner1 extends Two.Inner2 {} } class Two extends T813nc1 { static class Inner2 {} } }] } {PASS}
Object must not have an extends clauseTest Case: 8.1.3-object-2Expected Result: FAIL
Regression Test:
tcltest::test 8.1.3-object-1 { Object must not have an extends clause } { set result [compile -classpath T813o1 [saveas T813o1/java/lang/Object.java { package java.lang; public class Object extends Object { public native boolean equals(Object o); public native int hashCode(); public native String toString(); protected native void finalize() throws Throwable; protected native Object clone() throws CloneNotSupportedException; public final native Class getClass(); public final native void notify() throws IllegalMonitorStateException; public final native void notifyAll() throws IllegalMonitorStateException; public final native void wait() throws IllegalMonitorStateException, InterruptedException; public final native void wait(long ms) throws IllegalMonitorStateException, InterruptedException; public final native void wait(long ms, int ns) throws IllegalMonitorStateException, InterruptedException; } }]] saveas T813o1/java/dummy "need this for cleanup of directory we create" saveas T813o1/dummy "need this for cleanup of directory we create" return $result } {FAIL}
Object must not have an extends clauseTest Case: 8.1.3-object-3Expected Result: FAIL
Regression Test:
tcltest::test 8.1.3-object-2 { Object must not have an extends clause } { set result [compile -classpath T813o2 [saveas T813o2/java/lang/Object.java { package java.lang; class C {} public class Object extends C { public native boolean equals(Object o); public native int hashCode(); public native String toString(); protected native void finalize() throws Throwable; protected native Object clone() throws CloneNotSupportedException; public final native Class getClass(); public final native void notify() throws IllegalMonitorStateException; public final native void notifyAll() throws IllegalMonitorStateException; public final native void wait() throws IllegalMonitorStateException, InterruptedException; public final native void wait(long ms) throws IllegalMonitorStateException, InterruptedException; public final native void wait(long ms, int ns) throws IllegalMonitorStateException, InterruptedException; } }]] saveas T813o2/java/dummy "need this for cleanup of directory we create" saveas T813o2/dummy "need this for cleanup of directory we create" return $result } {FAIL}
Object must not have an extends clauseTest Case: 8.1.3-object-4Expected Result: PASS
Regression Test:
tcltest::test 8.1.3-object-3 { Object must not have an extends clause } { set result [compile -classpath T813o3 [saveas T813o3/java/lang/Object.java { package java.lang; public class Object { public native boolean equals(Object o); public native int hashCode(); public native String toString(); protected native void finalize() throws Throwable; protected native Object clone() throws CloneNotSupportedException; public final native Class getClass(); public final native void notify() throws IllegalMonitorStateException; public final native void notifyAll() throws IllegalMonitorStateException; public final native void wait() throws IllegalMonitorStateException, InterruptedException; public final native void wait(long ms) throws IllegalMonitorStateException, InterruptedException; public final native void wait(long ms, int ns) throws IllegalMonitorStateException, InterruptedException; } }]] saveas T813o3/java/dummy "need this for cleanup of directory we create" saveas T813o3/dummy "need this for cleanup of directory we create" return $result } {PASS}
A class with no extends clause implicitly extends java.lang.Object, even if it is shadowedTest Case: 8.1.3-superclass-1Expected Result: PASS
Regression Test:
tcltest::test 8.1.3-object-4 { A class with no extends clause implicitly extends java.lang.Object, even if it is shadowed } { compile [saveas T813o4.java "class Object {}"] } {PASS}
A superclass must be accessibleTest Case: 8.1.3-superclass-2Expected Result: FAIL
Regression Test:
tcltest::test 8.1.3-superclass-1 { A superclass must be accessible } { compile [saveas T813s1.java "class T813s1 extends NoSuchClass {}"] } {FAIL}
A superclass must be accessibleTest Case: 8.1.3-superclass-3Expected Result: FAIL
Regression Test:
tcltest::test 8.1.3-superclass-2 { A superclass must be accessible } { compile [saveas p1/T813s2a.java { package p1; class T813s2a {} }] [saveas T813s2b.java { class T813s2b extends p1.T813s2a {} }] } {FAIL}
A superclass must be a classTest Case: 8.1.3-superclass-4Expected Result: FAIL
Regression Test:
tcltest::test 8.1.3-superclass-3 { A superclass must be a class } { compile [saveas T813s3a.java { interface T813s3a {} class T813s3b extends T813s3a {} }] } {FAIL}
A superclass must be non-finalTest Case: 8.1.3-superclass-5Expected Result: FAIL
Regression Test:
tcltest::test 8.1.3-superclass-4 { A superclass must be non-final } { compile [saveas T813s4a.java { final class T813s4a {} class T813s4b extends T813s4a {} }] } {FAIL}
A superclass must be accessibleTest Case: 8.1.3-superclass-6Expected Result: FAIL
Regression Test:
tcltest::test 8.1.3-superclass-5 { A superclass must be accessible } { compile [saveas p1/T813s5a.java { package p1; public class T813s5a { protected static class Inner {} } }] [saveas T813s5b.java { class T813s5b extends p1.T813s5a.Inner {} }] } {FAIL}
A superclass must be accessibleTest Case: 8.1.3-superclass-7Expected Result: FAIL
Regression Test:
tcltest::test 8.1.3-superclass-6 { A superclass must be accessible } { compile [saveas T813s6a.java { class T813s6a { private static class Inner {} } class T813s6b extends T813s6a.Inner {} }] } {FAIL}
A superclass must be accessibleTest Case: 8.1.3-superclass-8Expected Result: PASS
Regression Test:
tcltest::test 8.1.3-superclass-7 { A superclass must be accessible } { compile [saveas p1/T813s7a.java { package p1; public class T813s7a { protected class Inner {} } }] [saveas T813s7b.java { class T813s7b extends p1.T813s7a { class Sub extends Inner {} } }] } {PASS}
A superclass must be accessibleTest Case: 8.1.3-superclass-9Expected Result: PASS
Regression Test:
tcltest::test 8.1.3-superclass-8 { A superclass must be accessible } { empty_class T813s8 { private class One {} class Two extends One {} } } {PASS}
Test for accessible inner superclass - Jikes bug 3202Test Case: 8.1.3-superclass-10Expected Result: PASS
Regression Test:
tcltest::test 8.1.3-superclass-9 { Test for accessible inner superclass - Jikes bug 3202 } { compile [saveas T813s9_1.java { class T813s9_1 { class One {} } class T813s9_2 extends T813s9_1 { class Two extends One {} } class T813s9_3 extends T813s9_2 { class Three extends Two {} } }] } {PASS}
A superclass name may be non-canonicalTest Case: 8.1.3-superclass-11Expected Result: PASS
Regression Test:
tcltest::test 8.1.3-superclass-10 { A superclass name may be non-canonical } { compile [saveas T813s10a.java { class T813s10a { static class Super {} } class T813s10b extends T813s10a {} class T813s10c extends T813s10b.Super {} }] } {PASS}
A superclass name may be non-canonicalTest Case: 8.1.3-superclass-12Expected Result: PASS
Regression Test:
tcltest::test 8.1.3-superclass-11 { A superclass name may be non-canonical } { compile [saveas T813s11a.java { class T813s11a { static class Super {} } class T813s11b extends T813s11a { class C extends Super {} } }] } {PASS}
A superclass name may be non-canonicalTest Case: 8.1.3-superclass-13Expected Result: PASS
Regression Test:
tcltest::test 8.1.3-superclass-12 { A superclass name may be non-canonical } { compile [saveas T813s12a.java { class T813s12a { static class Super {} } class T813s12b extends T813s12a { class C extends T813s12b.Super {} } }] } {PASS}
A superclass name may be non-canonicalExpected Result: PASS
Regression Test:
tcltest::test 8.1.3-superclass-13 { A superclass name may be non-canonical } { compile [saveas T813s13a.java { class T813s13a { static class Super {} } class T813s13b extends T813s13a { class C extends Super {} } class T813s13c extends T813s13b.Super {} }] } {PASS}
tests/jls/classes/class-declaration/superinterfaces
Object must not have an implements clause. The JLS doesn't list this, but compare 8.1.3 for extends clausesTest Case: 8.1.4-superinterface-1Expected Result: FAIL
Regression Test:
tcltest::test 8.1.4-object-1 { Object must not have an implements clause. The JLS doesn't list this, but compare 8.1.3 for extends clauses } { set result [compile -classpath T814o1 [saveas T814o1/java/lang/Object.java { package java.lang; interface I {} public class Object implements I { public native boolean equals(Object o); public native int hashCode(); public native String toString(); protected native void finalize() throws Throwable; protected native Object clone() throws CloneNotSupportedException; public final native Class getClass(); public final native void notify() throws IllegalMonitorStateException; public final native void notifyAll() throws IllegalMonitorStateException; public final native void wait() throws IllegalMonitorStateException, InterruptedException; public final native void wait(long ms) throws IllegalMonitorStateException, InterruptedException; public final native void wait(long ms, int ns) throws IllegalMonitorStateException, InterruptedException; } }]] saveas T814o1/java/dummy "need this for cleanup of directory we create" saveas T814o1/dummy "need this for cleanup of directory we create" return $result } {FAIL}
A superinterface must be accessibleTest Case: 8.1.4-superinterface-2Expected Result: FAIL
Regression Test:
tcltest::test 8.1.4-superinterface-1 { A superinterface must be accessible } { compile [saveas T814s1.java "class T814s1 implements NoSuchType {}"] } {FAIL}
A superinterface must be accessibleTest Case: 8.1.4-superinterface-3Expected Result: FAIL
Regression Test:
tcltest::test 8.1.4-superinterface-2 { A superinterface must be accessible } { compile [saveas p1/T814s2a.java { package p1; interface T814s2a {} }] [saveas T814s2b.java { class T814s2b implements p1.T814s2a {} }] } {FAIL}
A superinterface must be an interfaceTest Case: 8.1.4-superinterface-4Expected Result: FAIL
Regression Test:
tcltest::test 8.1.4-superinterface-3 { A superinterface must be an interface } { compile [saveas T814s3a.java { class T814s3a {} class T814s3b implements T814s3a {} }] } {FAIL}
A superinterface must be accessibleTest Case: 8.1.4-superinterface-5Expected Result: FAIL
Regression Test:
tcltest::test 8.1.4-superinterface-4 { A superinterface must be accessible } { compile [saveas p1/T814s4a.java { package p1; public class T814s4a { protected interface Inner {} } }] [saveas T814s4b.java { class T814s4b implements p1.T814s4a.Inner {} }] } {FAIL}
A superinterface must be accessibleTest Case: 8.1.4-superinterface-6Expected Result: FAIL
Regression Test:
tcltest::test 8.1.4-superinterface-5 { A superinterface must be accessible } { compile [saveas T814s5a.java { class T814s5a { private interface Inner {} } class T814s5b implements T814s5a.Inner {} }] } {FAIL}
A superinterface must be accessibleTest Case: 8.1.4-superinterface-7Expected Result: PASS
Regression Test:
tcltest::test 8.1.4-superinterface-6 { A superinterface must be accessible } { compile [saveas p1/T814s6a.java { package p1; public class T814s6a { protected interface Inner {} } }] [saveas T814s6b.java { class T814s6b extends p1.T814s6a { class Sub implements Inner {} } }] } {PASS}
A superinterface must be accessibleTest Case: 8.1.4-superinterface-8Expected Result: PASS
Regression Test:
tcltest::test 8.1.4-superinterface-7 { A superinterface must be accessible } { empty_class T814s7 { private interface One {} class Two implements One {} } } {PASS}
A superinterface name may be non-canonicalTest Case: 8.1.4-superinterface-9Expected Result: PASS
Regression Test:
tcltest::test 8.1.4-superinterface-8 { A superinterface name may be non-canonical } { compile [saveas T814s8a.java { class T814s8a { interface Super {} } class T814s8b extends T814s8a {} class T814s8c implements T814s8b.Super {} }] } {PASS}
A superinterface name may be non-canonicalTest Case: 8.1.4-superinterface-10Expected Result: PASS
Regression Test:
tcltest::test 8.1.4-superinterface-9 { A superinterface name may be non-canonical } { compile [saveas T814s9a.java { class T814s9a { interface Super {} } class T814s9b extends T814s9a { class C implements Super {} } }] } {PASS}
A superinterface name may be non-canonicalTest Case: 8.1.4-superinterface-11Expected Result: PASS
Regression Test:
tcltest::test 8.1.4-superinterface-10 { A superinterface name may be non-canonical } { compile [saveas T814s10a.java { class T814s10a { interface Super {} } class T814s10b extends T814s10a { class C implements T814s10b.Super {} } }] } {PASS}
A superinterface name may be non-canonicalTest Case: 8.1.4-duplicate-1Expected Result: PASS
Regression Test:
tcltest::test 8.1.4-superinterface-11 { A superinterface name may be non-canonical } { compile [saveas T814s11a.java { class T814s11a { interface Super {} } class T814s11b extends T814s11a { class C implements Super {} } class T814s11c implements T814s11b.Super {} }] } {PASS}
A class may not have duplicate superinterfacesTest Case: 8.1.4-duplicate-2Expected Result: FAIL
Regression Test:
tcltest::test 8.1.4-duplicate-1 { A class may not have duplicate superinterfaces } { compile [saveas T814d1.java { class T814d1 implements Cloneable, Cloneable {} }] } {FAIL}
A class may not have duplicate superinterfacesTest Case: 8.1.4-duplicate-3Expected Result: FAIL
Regression Test:
tcltest::test 8.1.4-duplicate-2 { A class may not have duplicate superinterfaces } { compile [saveas T814d2.java { class T814d2 implements java.lang.Cloneable, Cloneable {} }] } {FAIL}
A class may not have duplicate superinterfacesTest Case: 8.1.4-duplicate-4Expected Result: PASS
Regression Test:
tcltest::test 8.1.4-duplicate-3 { A class may not have duplicate superinterfaces } { compile [saveas T814d3a.java { interface T814d3a {} interface T814d3b extends T814d3a {} class T814d3c implements T814d3a, T814d3b {} }] } {PASS}
A class may not have duplicate superinterfacesTest Case: 8.1.4-abstract-1Expected Result: FAIL
Regression Test:
tcltest::test 8.1.4-duplicate-4 { A class may not have duplicate superinterfaces } { compile [saveas T814d4a.java { class T814d4a { interface I {} } class T814d4b extends T814d4a {} class T814d4c implements T814d4a.I, T814d4b.I {} }] } {FAIL}
A class must implement, or inherit an implementation, of all methods of its superinterfaces, or be abstractTest Case: 8.1.4-abstract-2Expected Result: PASS
Regression Test:
tcltest::test 8.1.4-abstract-1 { A class must implement, or inherit an implementation, of all methods of its superinterfaces, or be abstract } { compile [saveas T814a1a.java { interface T814a1a { String toString(); } class T814a1b implements T814a1a {} }] } {PASS}
A class must implement, or inherit an implementation, of all methods of its superinterfaces, or be abstractTest Case: 8.1.4-abstract-3Expected Result: FAIL
Regression Test:
tcltest::test 8.1.4-abstract-2 { A class must implement, or inherit an implementation, of all methods of its superinterfaces, or be abstract } { compile [saveas T814a2a.java { interface T814a2a { String foo(); } class T814a2b implements T814a2a {} }] } {FAIL}
A class must implement, or inherit an implementation, of all methods of its superinterfaces, or be abstractTest Case: 8.1.4-abstract-4Expected Result: PASS
Regression Test:
tcltest::test 8.1.4-abstract-3 { A class must implement, or inherit an implementation, of all methods of its superinterfaces, or be abstract } { compile [saveas T814a3a.java { interface T814a3a { String foo(); } abstract class T814a3b implements T814a3a {} }] } {PASS}
A class must implement, or inherit an implementation, of all methods of its superinterfaces, or be abstractTest Case: 8.1.4-conflict-1Expected Result: PASS
Regression Test:
tcltest::test 8.1.4-abstract-4 { A class must implement, or inherit an implementation, of all methods of its superinterfaces, or be abstract } { compile [saveas T814a4.java { interface Fish { int getNumberOfScales(); } interface Piano { int getNumberOfScales(); } class T814a4 implements Fish, Piano { // You can tune a piano, but can you tuna fish? public int getNumberOfScales() { return 91; } } }] } {PASS}
Multiple superinterfaces must not conflictTest Case: 8.1.4-conflict-2Expected Result: FAIL
Regression Test:
tcltest::test 8.1.4-conflict-1 { Multiple superinterfaces must not conflict } { compile [saveas T814c1.java { interface Fish { int getNumberOfScales(); } interface StringBass { double getNumberOfScales(); } class T814c1 implements Fish, StringBass { public double getNumberOfScales() { return 91; } } }] } {FAIL}
Multiple superinterfaces must not conflictTest Case: 8.1.4-conflict-3Expected Result: PASS
Regression Test:
tcltest::test 8.1.4-conflict-2 { Multiple superinterfaces must not conflict } { compile [saveas T814c2a.java { class E1 extends Exception {} class E2 extends Exception {} class E3 extends Exception {} interface T814c2a { void foo() throws E1, E2; } interface T814c2b { void foo() throws E2, E3; } class T814c2c implements T814c2a, T814c2b { public void foo() throws E2 {} } }] } {PASS}
Multiple superinterfaces must not conflictExpected Result: FAIL
Regression Test:
tcltest::test 8.1.4-conflict-3 { Multiple superinterfaces must not conflict } { compile [saveas T814c3.java { class E1 extends Exception {} class E2 extends Exception {} class E3 extends Exception {} interface T814c3a { void foo() throws E1, E2; } interface T814c3b { void foo() throws E2, E3; } class T814c3c implements T814c3a, T814c3b { public void foo() throws E1, E3 {} } }] } {FAIL}
tests/jls/classes/class-members
members declared public are accessible in a subclassTest Case: 8.2-accessibility-inherited-member-2Expected Result: PASS
Regression Test:
tcltest::test 8.2-accessibility-inherited-member-1 { members declared public are accessible in a subclass } { saveas T82aim1.java { class T82aim1 { public int foo; } class T82aim1_Test extends T82aim1 { void bar() { foo = 0; } } } compile T82aim1.java } {PASS}
members declared public are accessible in a subclassTest Case: 8.2-accessibility-inherited-member-3Expected Result: PASS
Regression Test:
tcltest::test 8.2-accessibility-inherited-member-2 { members declared public are accessible in a subclass } { saveas T82aim2.java { class T82aim2 { public void foo() {} } class T82aim2_Test extends T82aim2 { void bar() { foo(); } } } compile T82aim2.java } {PASS}
members declared protected are accessible in a subclassTest Case: 8.2-accessibility-inherited-member-4Expected Result: PASS
Regression Test:
tcltest::test 8.2-accessibility-inherited-member-3 { members declared protected are accessible in a subclass } { saveas T82aim3.java { class T82aim3 { protected int foo; } class T82aim3_Test extends T82aim3 { void bar() { foo = 0; } } } compile T82aim3.java } {PASS}
members declared protected are accessible in a subclassTest Case: 8.2-accessibility-inherited-member-5Expected Result: PASS
Regression Test:
tcltest::test 8.2-accessibility-inherited-member-4 { members declared protected are accessible in a subclass } { saveas T82aim4.java { class T82aim4 { protected void foo() {} } class T82aim4_Test extends T82aim4 { void bar() { foo(); } } } compile T82aim4.java } {PASS}
members declared private are not accessible in a subclassTest Case: 8.2-accessibility-inherited-member-6Expected Result: FAIL
Regression Test:
tcltest::test 8.2-accessibility-inherited-member-5 { members declared private are not accessible in a subclass } { saveas T82aim5.java { class T82aim5 { private int foo; } class T82aim5_Test extends T82aim5 { void bar() { foo = 0; } } } compile T82aim5.java } {FAIL}
members declared private are not accessible in a subclassTest Case: 8.2-accessibility-inherited-member-7Expected Result: FAIL
Regression Test:
tcltest::test 8.2-accessibility-inherited-member-6 { members declared private are not accessible in a subclass } { saveas T82aim6.java { class T82aim6 { private void foo() {} } class T82aim6_Test extends T82aim6 { void bar() { foo(); } } } compile T82aim6.java } {FAIL}
members with default protection are accessible in a subclassTest Case: 8.2-accessibility-inherited-member-8Expected Result: PASS
Regression Test:
tcltest::test 8.2-accessibility-inherited-member-7 { members with default protection are accessible in a subclass } { saveas T82aim7.java { class T82aim7 { int foo; } class T82aim7_Test extends T82aim7 { void bar() { foo = 0; } } } compile T82aim7.java } {PASS}
members with default protection are accessible in a subclassTest Case: 8.2-constructor-not-inherited-1Expected Result: PASS
Regression Test:
tcltest::test 8.2-accessibility-inherited-member-8 { members with default protection are accessible in a subclass } { saveas T82aim8.java { class T82aim8 { void foo() {} } class T82aim8_Test extends T82aim8 { void bar() { foo(); } } } compile T82aim8.java } {PASS}
A constructor is not a class member and is therefore not inheritedExpected Result: FAIL
Regression Test:
tcltest::test 8.2-constructor-not-inherited-1 { A constructor is not a class member and is therefore not inherited } { saveas T82cni1.java { class T82cni1 { public T82cni1() {} public T82cni1(int value) {} } class T82cni1_Test extends T82cni1 { Object o = new T82cni1_Test(0); } } compile T82cni1.java } {FAIL}
tests/jls/classes/field-declarations
A class inherits non-private accessible fields that it does not hide by redeclarationTest Case: 8.3-inheritance-2Expected Result: FAIL
Regression Test:
tcltest::test 8.3-inheritance-1 { A class inherits non-private accessible fields that it does not hide by redeclaration } { empty_class T83i1 { private int i; static class Inner extends T83i1 { int j = i; // i not inherited, and enclosing i not available } } } {FAIL}
A class inherits non-private accessible fields that it does not hide by redeclarationTest Case: 8.3-inheritance-3Expected Result: FAIL
Regression Test:
tcltest::test 8.3-inheritance-2 { A class inherits non-private accessible fields that it does not hide by redeclaration } { empty_class T83i2 { private int i; class Inner extends T83i2 { int j = this.i; // i not inherited } } } {FAIL}
A class inherits non-private accessible fields that it does not hide by redeclarationTest Case: 8.3-inheritance-4Expected Result: FAIL
Regression Test:
tcltest::test 8.3-inheritance-3 { A class inherits non-private accessible fields that it does not hide by redeclaration } { empty_class T83i3 { int i; static class One extends T83i3 { private int i; // T83i3.i not inherited... } static class Two extends One { int j = i; // ...so neither i is inherited; T83i3.i not available } } } {FAIL}
A class inherits non-private accessible fields that it does not hide by redeclarationTest Case: 8.3-inheritance-5Expected Result: FAIL
Regression Test:
tcltest::test 8.3-inheritance-4 { A class inherits non-private accessible fields that it does not hide by redeclaration } { empty_class T83i4 { int i; class One extends T83i4 { private int i; // T83i4.i not inherited... } class Two extends One { Two() { T83i4.this.super(); } int j = this.i; // ...so neither i is inherited } } } {FAIL}
A class inherits non-private accessible fields that it does not hide by redeclarationTest Case: 8.3-inheritance-6Expected Result: FAIL
Regression Test:
tcltest::test 8.3-inheritance-5 { A class inherits non-private accessible fields that it does not hide by redeclaration } { compile [saveas p1/T83i5a.java { package p1; public class T83i5a { public int i; static class Inner extends p2.T83i5b { int j = i; // package i not inherited from b, enclosing i not available } } }] [saveas p2/T83i5b.java { package p2; public class T83i5b extends p1.T83i5a { int i; // hides T83i5a.i } }] } {FAIL}
A class inherits non-private accessible fields that it does not hide by redeclarationTest Case: 8.3-inheritance-7Expected Result: FAIL
Regression Test:
tcltest::test 8.3-inheritance-6 { A class inherits non-private accessible fields that it does not hide by redeclaration } { compile [saveas p1/T83i6a.java { package p1; public class T83i6a { public int i; class Inner extends p2.T83i6b { int j = this.i; // package i not inherited from b } } }] [saveas p2/T83i6b.java { package p2; public class T83i6b extends p1.T83i6a { int i; // hides T83i6a.i } }] } {FAIL}
A class inherits non-private accessible fields that it does not hide by redeclarationTest Case: 8.3-inheritance-8Expected Result: PASS
Regression Test:
tcltest::test 8.3-inheritance-7 { A class inherits non-private accessible fields that it does not hide by redeclaration } { empty_class T83i7 { class One { int i; } class Two extends One { { i = this.i; } } } } {PASS}
Multiple fields may be inherited with the same name, causing no problems if no ambiguous reference is madeTest Case: 8.3-inheritance-9Expected Result: PASS
Regression Test:
tcltest::test 8.3-inheritance-8 { Multiple fields may be inherited with the same name, causing no problems if no ambiguous reference is made } { empty_class T83i8 { interface I { int i = 1; } class C { int i; } class Sub extends C implements I {} } } {PASS}
Inheritance along multiple paths is still single inheritanceTest Case: 8.3-name-1Expected Result: PASS
Regression Test:
tcltest::test 8.3-inheritance-9 { Inheritance along multiple paths is still single inheritance } { empty_class T83i9 { interface Super { int i = 1; } interface I1 extends Super {} interface I2 extends Super {} class C implements I1, I2 { int j = i; } } } {PASS}
Duplicate field names are forbiddenTest Case: 8.3-name-2Expected Result: FAIL
Regression Test:
tcltest::test 8.3-name-1 { Duplicate field names are forbidden } { empty_class T83n1 { int i, i; } } {FAIL}
Field names may match method and type namesTest Case: 8.3-hiding-1Expected Result: PASS
Regression Test:
tcltest::test 8.3-name-2 { Field names may match method and type names } { empty_class T83n2 { int i; void i() {} class i {} } } {PASS}
Fields can hide supertype fields regardless of accessibility relationshipsTest Case: 8.3-hiding-2Expected Result: PASS
Regression Test:
tcltest::test 8.3-hiding-1 { Fields can hide supertype fields regardless of accessibility relationships } { empty_class T83h1 { class One { public int pub; protected int pro; int pack; private int priv; } class Two extends One { private int pub; private int pro; private int pack; private int priv; } class Three extends One { int pub; int pro; int pack; int priv; } class Four extends One { protected int pub; protected int pro; protected int pack; protected int priv; } class Five extends One { public int pub; public int pro; public int pack; public int priv; } } } {PASS}
Fields can hide supertype fields regardless of type relationshipsTest Case: 8.3-hiding-3Expected Result: PASS
Regression Test:
tcltest::test 8.3-hiding-2 { Fields can hide supertype fields regardless of type relationships } { empty_class T83h2 { class One { int i; } class Two extends One { Object i; } } } {PASS}
Fields can hide supertype fields regardless of instance relationshipsTest Case: 8.3-hiding-4Expected Result: PASS
Regression Test:
tcltest::test 8.3-hiding-3 { Fields can hide supertype fields regardless of instance relationships } { empty_class T83h3 { static class One { static int stat; int inst; } static class Two extends One { int stat; static int inst; } } } {PASS}
Fields can hide supertype fields regardless of modifier relationshipsExpected Result: PASS
Regression Test:
tcltest::test 8.3-hiding-4 { Fields can hide supertype fields regardless of modifier relationships } { empty_class T83h4 { class One { final int fin = 1; transient int trans; volatile int vol; int plain; } class Two extends One { int fin; int trans; int vol; int plain; } class Three extends One { final int fin = 1; final int trans = 1; final int vol = 1; final int plain = 1; } class Four extends One { transient int fin; transient int trans; transient int vol; transient int plain; } class Five extends One { volatile int fin; volatile int trans; volatile int vol; volatile int plain; } } } {PASS}
tests/jls/classes/field-declarations/field-modifiers
Multiple access modifiers is an errorTest Case: 8.3.1-access-2Expected Result: FAIL
Regression Test:
tcltest::test 8.3.1-access-1 { Multiple access modifiers is an error } { empty_class T831access1 { public public int i; } } {FAIL}
Multiple access modifiers is an errorTest Case: 8.3.1-access-3Expected Result: FAIL
Regression Test:
tcltest::test 8.3.1-access-2 { Multiple access modifiers is an error } { empty_class T831access2 { public protected int i; } } {FAIL}
Multiple access modifiers is an errorTest Case: 8.3.1-access-4Expected Result: FAIL
Regression Test:
tcltest::test 8.3.1-access-3 { Multiple access modifiers is an error } { empty_class T831access3 { public private int i; } } {FAIL}
Multiple access modifiers is an errorTest Case: 8.3.1-access-5Expected Result: FAIL
Regression Test:
tcltest::test 8.3.1-access-4 { Multiple access modifiers is an error } { empty_class T831access4 { protected public int i; } } {FAIL}
Multiple access modifiers is an errorTest Case: 8.3.1-access-6Expected Result: FAIL
Regression Test:
tcltest::test 8.3.1-access-5 { Multiple access modifiers is an error } { empty_class T831access5 { protected protected int i; } } {FAIL}
Multiple access modifiers is an errorTest Case: 8.3.1-access-7Expected Result: FAIL
Regression Test:
tcltest::test 8.3.1-access-6 { Multiple access modifiers is an error } { empty_class T831access6 { protected private int i; } } {FAIL}
Multiple access modifiers is an errorTest Case: 8.3.1-access-8Expected Result: FAIL
Regression Test:
tcltest::test 8.3.1-access-7 { Multiple access modifiers is an error } { empty_class T831access7 { private public int i; } } {FAIL}
Multiple access modifiers is an errorTest Case: 8.3.1-access-9Expected Result: FAIL
Regression Test:
tcltest::test 8.3.1-access-8 { Multiple access modifiers is an error } { empty_class T831access8 { private protected int i; } } {FAIL}
Multiple access modifiers is an errorTest Case: 8.3.1-access-10Expected Result: FAIL
Regression Test:
tcltest::test 8.3.1-access-9 { Multiple access modifiers is an error } { empty_class T831access9 { private private int i; } } {FAIL}
A single access modifier is legalTest Case: 8.3.1-access-11Expected Result: PASS
Regression Test:
tcltest::test 8.3.1-access-10 { A single access modifier is legal } { empty_class T831access10 { public int i; } } {PASS}
A single access modifier is legalTest Case: 8.3.1-access-12Expected Result: PASS
Regression Test:
tcltest::test 8.3.1-access-11 { A single access modifier is legal } { empty_class T831access11 { protected int i; } } {PASS}
A single access modifier is legalTest Case: 8.3.1-access-13Expected Result: PASS
Regression Test:
tcltest::test 8.3.1-access-12 { A single access modifier is legal } { empty_class T831access12 { private int i; } } {PASS}
No access modifier is legalTest Case: 8.3.1-static-1Expected Result: PASS
Regression Test:
tcltest::test 8.3.1-access-13 { No access modifier is legal } { empty_class T831access13 { int i; } } {PASS}
static alone is legalTest Case: 8.3.1-static-2Expected Result: PASS
Regression Test:
tcltest::test 8.3.1-static-1 { static alone is legal } { empty_class T831static1 { static int i; } } {PASS}
public static is legalTest Case: 8.3.1-static-3Expected Result: PASS
Regression Test:
tcltest::test 8.3.1-static-2 { public static is legal } { empty_class T831static2 { public static int i; } } {PASS}
static public is legal, but not in the preferred orderTest Case: 8.3.1-static-4Expected Result: OK
Regression Test:
tcltest::test 8.3.1-static-3 { static public is legal, but not in the preferred order } { ok_pass_or_warn [empty_class T831static3 { static public int i; }] } {OK}
protected static is legalTest Case: 8.3.1-static-5Expected Result: PASS
Regression Test:
tcltest::test 8.3.1-static-4 { protected static is legal } { empty_class T831static4 { protected static int i; } } {PASS}
static protected is legal, but not in the preferred orderTest Case: 8.3.1-static-6Expected Result: OK
Regression Test:
tcltest::test 8.3.1-static-5 { static protected is legal, but not in the preferred order } { ok_pass_or_warn [empty_class T831static5 { static protected int i; }] } {OK}
private static is legalTest Case: 8.3.1-static-7Expected Result: PASS
Regression Test:
tcltest::test 8.3.1-static-6 { private static is legal } { empty_class T831static6 { private static int i; } } {PASS}
static private is legal, but not in the preferred orderTest Case: 8.3.1-static-8Expected Result: OK
Regression Test:
tcltest::test 8.3.1-static-7 { static private is legal, but not in the preferred order } { ok_pass_or_warn [empty_class T831static7 { static private int i; }] } {OK}
static static is illegalTest Case: 8.3.1-static-9Expected Result: FAIL
Regression Test:
tcltest::test 8.3.1-static-8 { static static is illegal } { empty_class T831static8 { static static int i; } } {FAIL}
static final is legalTest Case: 8.3.1-static-10Expected Result: PASS
Regression Test:
tcltest::test 8.3.1-static-9 { static final is legal } { empty_class T831static9 { static final int i = 1; } } {PASS}
final static is legal, but not in the preferred orderTest Case: 8.3.1-static-11Expected Result: OK
Regression Test:
tcltest::test 8.3.1-static-10 { final static is legal, but not in the preferred order } { ok_pass_or_warn [empty_class T831static10 { final static int i = 1; }] } {OK}
static transient is legalTest Case: 8.3.1-static-12Expected Result: PASS
Regression Test:
tcltest::test 8.3.1-static-11 { static transient is legal } { empty_class T831static11 { static transient int i; } } {PASS}
transient static is legal, but not in the preferred orderTest Case: 8.3.1-static-13Expected Result: OK
Regression Test:
tcltest::test 8.3.1-static-12 { transient static is legal, but not in the preferred order } { ok_pass_or_warn [empty_class T831static12 { transient static int i; }] } {OK}
static volatile is legalTest Case: 8.3.1-static-14Expected Result: PASS
Regression Test:
tcltest::test 8.3.1-static-13 { static volatile is legal } { empty_class T831static13 { static volatile int i; } } {PASS}
volatile static is legal, but not in the preferred orderTest Case: 8.3.1-final-1Expected Result: OK
Regression Test:
tcltest::test 8.3.1-static-14 { volatile static is legal, but not in the preferred order } { ok_pass_or_warn [empty_class T831static14 { volatile static int i; }] } {OK}
final alone is legalTest Case: 8.3.1-final-2Expected Result: PASS
Regression Test:
tcltest::test 8.3.1-final-1 { final alone is legal } { empty_class T831final1 { final int i = 1; } } {PASS}
public final is legalTest Case: 8.3.1-final-3Expected Result: PASS
Regression Test:
tcltest::test 8.3.1-final-2 { public final is legal } { empty_class T831final2 { public final int i = 1; } } {PASS}
final public is legal, but not in the preferred orderTest Case: 8.3.1-final-4Expected Result: OK
Regression Test:
tcltest::test 8.3.1-final-3 { final public is legal, but not in the preferred order } { ok_pass_or_warn [empty_class T831final3 { final public int i = 1; }] } {OK}
protected final is legalTest Case: 8.3.1-final-5Expected Result: PASS
Regression Test:
tcltest::test 8.3.1-final-4 { protected final is legal } { empty_class T831final4 { protected final int i = 1; } } {PASS}
final protected is legal, but not in the preferred orderTest Case: 8.3.1-final-6Expected Result: OK
Regression Test:
tcltest::test 8.3.1-final-5 { final protected is legal, but not in the preferred order } { ok_pass_or_warn [empty_class T831final5 { final protected int i = 1; }] } {OK}
private final is legal, but redundantTest Case: 8.3.1-final-7Expected Result: OK
Regression Test:
tcltest::test 8.3.1-final-6 { private final is legal, but redundant } { ok_pass_or_warn [empty_class T831final6 { private final int i = 1; }] } {OK}
final private is legal, but redundant, and not in the preferred orderTest Case: 8.3.1-final-8Expected Result: OK
Regression Test:
tcltest::test 8.3.1-final-7 { final private is legal, but redundant, and not in the preferred order } { ok_pass_or_warn [empty_class T831final7 { final private int i = 1; }] } {OK}
final final is illegalTest Case: 8.3.1-final-9Expected Result: FAIL
Regression Test:
tcltest::test 8.3.1-final-8 { final final is illegal } { empty_class T831final8 { final final int i = 1; } } {FAIL}
final transient is legalTest Case: 8.3.1-final-10Expected Result: PASS
Regression Test:
tcltest::test 8.3.1-final-9 { final transient is legal } { empty_class T831final9 { final transient int i = 1; } } {PASS}
transient final is legal, but not in the preferred orderTest Case: 8.3.1-final-11Expected Result: OK
Regression Test:
tcltest::test 8.3.1-final-10 { transient final is legal, but not in the preferred order } { ok_pass_or_warn [empty_class T831final10 { transient final int i = 1; }] } {OK}
final volatile is illegalTest Case: 8.3.1-final-12Expected Result: FAIL
Regression Test:
tcltest::test 8.3.1-final-11 { final volatile is illegal } { empty_class T831final11 { final volatile int i = 1; } } {FAIL}
volatile final is illegalTest Case: 8.3.1-transient-1Expected Result: FAIL
Regression Test:
tcltest::test 8.3.1-final-12 { volatile final is illegal } { empty_class T831final12 { volatile final int i = 1; } } {FAIL}
transient alone is legalTest Case: 8.3.1-transient-2Expected Result: PASS
Regression Test:
tcltest::test 8.3.1-transient-1 { transient alone is legal } { empty_class T831transient1 { transient int i; } } {PASS}
public transient is legalTest Case: 8.3.1-transient-3Expected Result: PASS
Regression Test:
tcltest::test 8.3.1-transient-2 { public transient is legal } { empty_class T831transient2 { public transient int i; } } {PASS}
transient public is legal, but not in the preferred orderTest Case: 8.3.1-transient-4Expected Result: OK
Regression Test:
tcltest::test 8.3.1-transient-3 { transient public is legal, but not in the preferred order } { ok_pass_or_warn [empty_class T831transient3 { transient public int i; }] } {OK}
protected transient is legalTest Case: 8.3.1-transient-5Expected Result: PASS
Regression Test:
tcltest::test 8.3.1-transient-4 { protected transient is legal } { empty_class T831transient4 { protected transient int i; } } {PASS}
transient protected is legal, but not in the preferred orderTest Case: 8.3.1-transient-6Expected Result: OK
Regression Test:
tcltest::test 8.3.1-transient-5 { transient protected is legal, but not in the preferred order } { ok_pass_or_warn [empty_class T831transient5 { transient protected int i; }] } {OK}
private transient is legalTest Case: 8.3.1-transient-7Expected Result: PASS
Regression Test:
tcltest::test 8.3.1-transient-6 { private transient is legal } { empty_class T831transient6 { private transient int i; } } {PASS}
transient private is legal, but not in the preferred orderTest Case: 8.3.1-transient-8Expected Result: OK
Regression Test:
tcltest::test 8.3.1-transient-7 { transient private is legal, but not in the preferred order } { ok_pass_or_warn [empty_class T831transient7 { transient private int i; }] } {OK}
transient transient is illegalTest Case: 8.3.1-transient-9Expected Result: FAIL
Regression Test:
tcltest::test 8.3.1-transient-8 { transient transient is illegal } { empty_class T831transient8 { transient transient int i; } } {FAIL}
transient volatile is legalTest Case: 8.3.1-transient-10Expected Result: PASS
Regression Test:
tcltest::test 8.3.1-transient-9 { transient volatile is legal } { empty_class T831transient9 { transient volatile int i; } } {PASS}
volatile transient is legal, but not in the preferred orderTest Case: 8.3.1-volatile-1Expected Result: OK
Regression Test:
tcltest::test 8.3.1-transient-10 { volatile transient is legal, but not in the preferred order } { ok_pass_or_warn [empty_class T831transient10 { volatile transient int i; }] } {OK}
volatile alone is legalTest Case: 8.3.1-volatile-2Expected Result: PASS
Regression Test:
tcltest::test 8.3.1-volatile-1 { volatile alone is legal } { empty_class T831volatile1 { volatile int i; } } {PASS}
public volatile is legalTest Case: 8.3.1-volatile-3Expected Result: PASS
Regression Test:
tcltest::test 8.3.1-volatile-2 { public volatile is legal } { empty_class T831volatile2 { public volatile int i; } } {PASS}
volatile public is legal, but not in the preferred orderTest Case: 8.3.1-volatile-4Expected Result: OK
Regression Test:
tcltest::test 8.3.1-volatile-3 { volatile public is legal, but not in the preferred order } { ok_pass_or_warn [empty_class T831volatile3 { volatile public int i; }] } {OK}
protected volatile is legalTest Case: 8.3.1-volatile-5Expected Result: PASS
Regression Test:
tcltest::test 8.3.1-volatile-4 { protected volatile is legal } { empty_class T831volatile4 { protected volatile int i; } } {PASS}
volatile protected is legal, but not in the preferred orderTest Case: 8.3.1-volatile-6Expected Result: OK
Regression Test:
tcltest::test 8.3.1-volatile-5 { volatile protected is legal, but not in the preferred order } { ok_pass_or_warn [empty_class T831volatile5 { volatile protected int i; }] } {OK}
private volatile is legalTest Case: 8.3.1-volatile-7Expected Result: PASS
Regression Test:
tcltest::test 8.3.1-volatile-6 { private volatile is legal } { empty_class T831volatile6 { private volatile int i; } } {PASS}
volatile private is legal, but not in the preferred orderTest Case: 8.3.1-volatile-8Expected Result: OK
Regression Test:
tcltest::test 8.3.1-volatile-7 { volatile private is legal, but not in the preferred order } { ok_pass_or_warn [empty_class T831volatile7 { volatile private int i; }] } {OK}
volatile volatile is illegalTest Case: 8.3.1-big-1Expected Result: FAIL
Regression Test:
tcltest::test 8.3.1-volatile-8 { volatile volatile is illegal } { empty_class T831volatile8 { volatile volatile int i; } } {FAIL}
largest number of modifiers allowedTest Case: 8.3.1-big-2Expected Result: PASS
Regression Test:
tcltest::test 8.3.1-big-1 { largest number of modifiers allowed } { empty_class T831big1 { public static transient volatile int i; } } {PASS}
largest number of modifiers allowedTest Case: 8.3.1-big-3Expected Result: PASS
Regression Test:
tcltest::test 8.3.1-big-2 { largest number of modifiers allowed } { empty_class T831big2 { protected static final transient int i = 1; } } {PASS}
modifiers stress testTest Case: 8.3.1-bad-1Expected Result: FAIL
Regression Test:
tcltest::test 8.3.1-big-3 { modifiers stress test } { empty_class T831big3 { public static final protected private abstract transient volatile strictfp native synchronized public static final int i = 1; } } {FAIL}
abstract fields don't existTest Case: 8.3.1-bad-2Expected Result: FAIL
Regression Test:
tcltest::test 8.3.1-bad-1 { abstract fields don't exist } { empty_class T831bad1 { abstract int i; } } {FAIL}
synchronized fields don't existTest Case: 8.3.1-bad-3Expected Result: FAIL
Regression Test:
tcltest::test 8.3.1-bad-2 { synchronized fields don't exist } { empty_class T831bad2 { synchronized int i; } } {FAIL}
native fields don't existTest Case: 8.3.1-bad-4Expected Result: FAIL
Regression Test:
tcltest::test 8.3.1-bad-3 { native fields don't exist } { empty_class T831bad3 { native int i; } } {FAIL}
strictfp fields don't existExpected Result: FAIL
Regression Test:
tcltest::test 8.3.1-bad-4 { strictfp fields don't exist } { empty_class T831bad4 { strictfp int i; } } {FAIL}
tests/jls/classes/field-declarations/field-modifiers/static-fields
public is a valid static FieldModifierTest Case: 8.3.1.1-valid-modifier-2Expected Result: PASS
Regression Test:
tcltest::test 8.3.1.1-valid-modifier-1 { public is a valid static FieldModifier } { empty_class T8311vm1 { public static int i; } } {PASS}
protected is a valid static FieldModifierTest Case: 8.3.1.1-valid-modifier-3Expected Result: PASS
Regression Test:
tcltest::test 8.3.1.1-valid-modifier-2 { protected is a valid static FieldModifier } { empty_class T8311vm2 { protected static int i; } } {PASS}
private is a valid static FieldModifierTest Case: 8.3.1.1-valid-modifier-4Expected Result: PASS
Regression Test:
tcltest::test 8.3.1.1-valid-modifier-3 { private is a valid static FieldModifier } { empty_class T8311vm3 { private static int i; } } {PASS}
final is a valid static FieldModifierTest Case: 8.3.1.1-valid-modifier-5Expected Result: PASS
Regression Test:
tcltest::test 8.3.1.1-valid-modifier-4 { final is a valid static FieldModifier } { empty_class T8311vm4 { final static int i = 0; } } {PASS}
transient is a valid static FieldModifierTest Case: 8.3.1.1-valid-modifier-6Expected Result: PASS
Regression Test:
tcltest::test 8.3.1.1-valid-modifier-5 { transient is a valid static FieldModifier } { empty_class T8311vm5 { transient static int i; } } {PASS}
volatile is a valid static FieldModifierTest Case: 8.3.1.1-other-1Expected Result: PASS
Regression Test:
tcltest::test 8.3.1.1-valid-modifier-6 { volatile is a valid static FieldModifier } { empty_class T8311vm6 { volatile static int i; } } {PASS}
access an initialized final static field in another class that has not yet been compiledTest Case: 8.3.1.1-other-2Expected Result: PASS
Regression Test:
tcltest::test 8.3.1.1-other-1 { access an initialized final static field in another class that has not yet been compiled } { saveas T8311o1_1.java { class T8311o1_1 { int i = T8311o1_2.i; } } saveas T8311o1_2.java { class T8311o1_2 { final static int i = 0; } } compile T8311o1_1.java T8311o1_2.java } {PASS}
access an uninitialized final static field in another class that has not yet been compiledExpected Result: PASS
Regression Test:
tcltest::test 8.3.1.1-other-2 { access an uninitialized final static field in another class that has not yet been compiled } { saveas T8311o2_1.java { class T8311o2_1 { int i = T8311o2_2.i; } } saveas T8311o2_2.java { class T8311o2_2 { final static int i; static { i = 0; } } } compile T8311o2_1.java T8311o2_2.java } {PASS}
tests/jls/classes/field-declarations/field-modifiers/final-fields
instance and class fields may be finalTest Case: 8.3.1.2-final-2Expected Result: PASS
Regression Test:
tcltest::test 8.3.1.2-final-1 { instance and class fields may be final } { empty_class T8312f1 { final int i = 1; static final int j = 2; } } {PASS}
blank final class variables must be assigned in an initializerTest Case: 8.3.1.2-final-3Expected Result: FAIL
Regression Test:
tcltest::test 8.3.1.2-final-2 { blank final class variables must be assigned in an initializer } { empty_class T8312f2 { static final int i; } } {FAIL}
blank final class variables must be assigned in an initializerTest Case: 8.3.1.2-final-4Expected Result: FAIL
Regression Test:
tcltest::test 8.3.1.2-final-3 { blank final class variables must be assigned in an initializer } { empty_class T8312f3 { static final int i; static { if (false) i = 1; } } } {FAIL}
blank final class variables must be assigned in an initializerTest Case: 8.3.1.2-final-5Expected Result: FAIL
Regression Test:
tcltest::test 8.3.1.2-final-4 { blank final class variables must be assigned in an initializer } { empty_class T8312f4 { static final int i; static int j = (true ? 1 : (i = 2)); } } {FAIL}
blank final class variables must be assigned in an initializerTest Case: 8.3.1.2-final-6Expected Result: PASS
Regression Test:
tcltest::test 8.3.1.2-final-5 { blank final class variables must be assigned in an initializer } { empty_class T8312f5 { static final int i; static { i = 1; } } } {PASS}
blank final class variables must be assigned in an initializerTest Case: 8.3.1.2-final-7Expected Result: PASS
Regression Test:
tcltest::test 8.3.1.2-final-6 { blank final class variables must be assigned in an initializer } { empty_class T8312f6 { static final int i; static int j = i = 1; } } {PASS}
blank final instance variables must be assigned by the end of every constructorTest Case: 8.3.1.2-final-8Expected Result: FAIL
Regression Test:
tcltest::test 8.3.1.2-final-7 { blank final instance variables must be assigned by the end of every constructor } { empty_class T8312f7 { final int i; } } {FAIL}
blank final instance variables must be assigned by the end of every constructorTest Case: 8.3.1.2-final-9Expected Result: FAIL
Regression Test:
tcltest::test 8.3.1.2-final-8 { blank final instance variables must be assigned by the end of every constructor } { empty_class T8312f8 { final int i; { if (false) i = 1; } } } {FAIL}
blank final instance variables must be assigned by the end of every constructorTest Case: 8.3.1.2-final-10Expected Result: FAIL
Regression Test:
tcltest::test 8.3.1.2-final-9 { blank final instance variables must be assigned by the end of every constructor } { empty_class T8312f9 { final int i; T8312f9() { if (false) i = 1; } } } {FAIL}
blank final instance variables must be assigned by the end of every constructorTest Case: 8.3.1.2-final-11Expected Result: FAIL
Regression Test:
tcltest::test 8.3.1.2-final-10 { blank final instance variables must be assigned by the end of every constructor } { empty_class T8312f10 { final int i; { if (false) i = 1; } T8312f10() { if (false) i = 1; } } } {FAIL}
blank final instance variables must be assigned by the end of every constructorTest Case: 8.3.1.2-final-12Expected Result: FAIL
Regression Test:
tcltest::test 8.3.1.2-final-11 { blank final instance variables must be assigned by the end of every constructor } { empty_class T8312f11 { final int i; T8312f11(int j){ } T8312f11() { i = 1; } } } {FAIL}
blank final instance variables must be assigned by the end of every constructorTest Case: 8.3.1.2-final-13Expected Result: FAIL
Regression Test:
tcltest::test 8.3.1.2-final-12 { blank final instance variables must be assigned by the end of every constructor } { empty_class T8312f12 { final int i; int j = (true ? 1 : (i = 2)); } } {FAIL}
blank final instance variables must be assigned by the end of every constructorTest Case: 8.3.1.2-final-14Expected Result: PASS
Regression Test:
tcltest::test 8.3.1.2-final-13 { blank final instance variables must be assigned by the end of every constructor } { empty_class T8312f13 { final int i; int j = i = 1; } } {PASS}
blank final instance variables must be assigned by the end of every constructorTest Case: 8.3.1.2-final-15Expected Result: PASS
Regression Test:
tcltest::test 8.3.1.2-final-14 { blank final instance variables must be assigned by the end of every constructor } { empty_class T8312f14 { final int i; { i = 1; } } } {PASS}
blank final instance variables must be assigned by the end of every constructorTest Case: 8.3.1.2-final-16Expected Result: PASS
Regression Test:
tcltest::test 8.3.1.2-final-15 { blank final instance variables must be assigned by the end of every constructor } { empty_class T8312f15 { final int i; T8312f15() { i = 1; } } } {PASS}
blank final instance variables must be assigned by the end of every constructorTest Case: 8.3.1.2-final-17Expected Result: PASS
Regression Test:
tcltest::test 8.3.1.2-final-16 { blank final instance variables must be assigned by the end of every constructor } { empty_class T8312f16 { final int i; T8312f16(int j) { this(); } T8312f16() { i = 1; } } } {PASS}
blank final instance variables must be assigned by the end of every constructorTest Case: 8.3.1.2-final-18Expected Result: FAIL
Regression Test:
tcltest::test 8.3.1.2-final-17 { blank final instance variables must be assigned by the end of every constructor } { empty_class T8312f17 { final int i; T8312f17() { if (true) return; i = 1; } } } {FAIL}
blank final instance variables must be assigned by the end of every constructorTest Case: 8.3.1.2-final-19Expected Result: PASS
Regression Test:
tcltest::test 8.3.1.2-final-18 { blank final instance variables must be assigned by the end of every constructor } { empty_class T8312f18 { final int i; T8312f18() { if (false) return; i = 1; } } } {PASS}
blank final instance variables must be assigned by the end of every constructorTest Case: 8.3.1.2-final-20Expected Result: FAIL
Regression Test:
tcltest::test 8.3.1.2-final-19 { blank final instance variables must be assigned by the end of every constructor } { empty_class T8312f19 { final int i; T8312f19(boolean b) { if (b) return; i = 1; } } } {FAIL}
blank final instance variables must be assigned by the end of every constructorTest Case: 8.3.1.2-final-21Expected Result: PASS
Regression Test:
tcltest::test 8.3.1.2-final-20 { blank final instance variables must be assigned by the end of every constructor } { empty_class T8312f20 { final int i; T8312f20() { l: try { return; // discarded by abrupt finally } finally { break l; } i = 1; } } } {PASS}
blank final instance variables must be assigned by the end of every constructorTest Case: 8.3.1.2-final-22Expected Result: FAIL
Regression Test:
tcltest::test 8.3.1.2-final-21 { blank final instance variables must be assigned by the end of every constructor } { empty_class T8312f21 { final int i; T8312f21(boolean b) { try { if (b) return; } finally { } i = 1; } } } {FAIL}
blank final instance variables must be assigned by the end of every constructorTest Case: 8.3.1.2-final-23Expected Result: PASS
Regression Test:
tcltest::test 8.3.1.2-final-22 { blank final instance variables must be assigned by the end of every constructor } { empty_class T8312f22 { final int i; T8312f22() { while (true); } } } {PASS}
blank final instance variables must be assigned by the end of every constructorTest Case: 8.3.1.2-final-24Expected Result: PASS
Regression Test:
tcltest::test 8.3.1.2-final-23 { blank final instance variables must be assigned by the end of every constructor } { empty_class T8312f23 { final int i; T8312f23(boolean b) { while (b || true); } } } {PASS}
blank final instance variables must be assigned by the end of every constructorTest Case: 8.3.1.2-final-25Expected Result: FAIL
Regression Test:
tcltest::test 8.3.1.2-final-24 { blank final instance variables must be assigned by the end of every constructor } { empty_class T8312f24 { final int i; T8312f24() { return; } } } {FAIL}
blank final instance variables must be assigned by the end of every constructorTest Case: 8.3.1.2-final-26Expected Result: PASS
Regression Test:
tcltest::test 8.3.1.2-final-25 { blank final instance variables must be assigned by the end of every constructor } { empty_class T8312f25 { final int i; T8312f25() { try { return; // intervening finally assigns i } finally { i = 1; } } } } {PASS}
blank final instance variables must be assigned by the end of every constructorTest Case: 8.3.1.2-final-27Expected Result: PASS
Regression Test:
tcltest::test 8.3.1.2-final-26 { blank final instance variables must be assigned by the end of every constructor } { empty_class T8312f26 { final int i; T8312f26(boolean b) { try { if (b) return; // intervening finally assigns i } finally { i = 1; } } } } {PASS}
blank final instance variables must be assigned by the end of every constructorTest Case: 8.3.1.2-final-28Expected Result: PASS
Regression Test:
tcltest::test 8.3.1.2-final-27 { blank final instance variables must be assigned by the end of every constructor } { empty_class T8312f27 { final int i; T8312f27(boolean b) { l: try { if (b) return; // intervening finally assigns i else break l; // intervening finally assigns i } finally { i = 1; } } } } {PASS}
blank final instance variables must be assigned by the end of every constructorTest Case: 8.3.1.2-final-29Expected Result: PASS
Regression Test:
tcltest::test 8.3.1.2-final-28 { blank final instance variables must be assigned by the end of every constructor } { empty_class T8312f28 { final int i; T8312f28(boolean b) { l: try { break l; // intervening finally assigns i } finally { i = 1; } } } } {PASS}
blank final instance variables must be assigned by the end of every constructorExpected Result: PASS
Regression Test:
tcltest::test 8.3.1.2-final-29 { blank final instance variables must be assigned by the end of every constructor } { empty_class T8312f29 { final int i; T8312f29(boolean b) { l: do try { continue l; // intervening finally assigns i } finally { i = 1; } while (false); } } } {PASS}
tests/jls/classes/field-declarations/initialization-of-fields
A class variable initializer may not complete abruptly with a checked exceptionTest Case: 8.3.2-abrupt-2Expected Result: FAIL
Regression Test:
tcltest::test 8.3.2-abrupt-1 { A class variable initializer may not complete abruptly with a checked exception } { empty_class T832a1 { static int m() throws ClassNotFoundException { return 1; } static int i = m(); } } {FAIL}
An instance variable initializer may not complete abruptly with a checked exception, unless all constructors have a compatible throws clauseTest Case: 8.3.2-abrupt-3Expected Result: FAIL
Regression Test:
tcltest::test 8.3.2-abrupt-2 { An instance variable initializer may not complete abruptly with a checked exception, unless all constructors have a compatible throws clause } { empty_class T832a2 { int m() throws ClassNotFoundException { return 1; } int i = m(); } } {FAIL}
An instance variable initializer may not complete abruptly with a checked exception, unless all constructors have a compatible throws clauseTest Case: 8.3.2-abrupt-4Expected Result: PASS
Regression Test:
tcltest::test 8.3.2-abrupt-3 { An instance variable initializer may not complete abruptly with a checked exception, unless all constructors have a compatible throws clause } { empty_class T832a3 { int m() throws ClassNotFoundException { return 1; } int i = m(); T832a3() throws ClassNotFoundException {} } } {PASS}
An instance variable initializer may not complete abruptly with a checked exception, unless all constructors have a compatible throws clauseTest Case: 8.3.2-abrupt-5Expected Result: FAIL
Regression Test:
tcltest::test 8.3.2-abrupt-4 { An instance variable initializer may not complete abruptly with a checked exception, unless all constructors have a compatible throws clause } { empty_class T832a4 { int m() throws ClassNotFoundException { return 1; } int i = m(); T832a4() throws ClassNotFoundException {} T832a4(int i) {} } } {FAIL}
An instance variable initializer may not complete abruptly with a checked exception, unless all constructors have a compatible throws clauseTest Case: 8.3.2-abrupt-6Expected Result: PASS
Regression Test:
tcltest::test 8.3.2-abrupt-5 { An instance variable initializer may not complete abruptly with a checked exception, unless all constructors have a compatible throws clause } { empty_class T832a5 { int m() throws ClassNotFoundException { return 1; } int i = m(); T832a5() throws Throwable {} } } {PASS}
An instance variable initializer may not complete abruptly with a checked exception, unless all constructors have a compatible throws clause; the generated constructor in an anonymous class always has the right throws clauseTest Case: 8.3.2-abrupt-7Expected Result: PASS
Regression Test:
tcltest::test 8.3.2-abrupt-6 { An instance variable initializer may not complete abruptly with a checked exception, unless all constructors have a compatible throws clause; the generated constructor in an anonymous class always has the right throws clause } { empty_main T832a6 { try { new Object() { int m() throws ClassNotFoundException { return 1; } int i = m(); }; } catch (ClassNotFoundException e) { } } } {PASS}
An instance variable initializer may not complete abruptly with a checked exception, unless all constructors have a compatible throws clause; the generated constructor in an anonymous class always has the right throws clauseTest Case: 8.3.2-abrupt-8Expected Result: PASS
Regression Test:
tcltest::test 8.3.2-abrupt-7 { An instance variable initializer may not complete abruptly with a checked exception, unless all constructors have a compatible throws clause; the generated constructor in an anonymous class always has the right throws clause } { empty_class T832a7 { void foo() throws ClassNotFoundException { new Object() { int m() throws ClassNotFoundException { return 1; } int i = m(); }; } } } {PASS}
A class variable initializer may not complete abruptly with a checked exceptionExpected Result: FAIL
Regression Test:
tcltest::test 8.3.2-abrupt-8 { A class variable initializer may not complete abruptly with a checked exception } { compile [saveas T832a8a.java { class T832a8a { int j = T832a8b.i; } }] [saveas T832a8b.java { class T832a8b { static int i() throws Exception { return 1; } static final int i = i(); } }] } {FAIL}
tests/jls/classes/field-declarations/initialization-of-fields/initializers-for-class-variables
Class field initializers cannot refer to this, not even implicitlyTest Case: 8.3.2.1-this-2Expected Result: FAIL
Regression Test:
tcltest::test 8.3.2.1-this-1 { Class field initializers cannot refer to this, not even implicitly } { empty_class T8321t1 { static String s = toString(); } } {FAIL}
Class field initializers cannot refer to this, not even implicitlyTest Case: 8.3.2.1-this-3Expected Result: FAIL
Regression Test:
tcltest::test 8.3.2.1-this-2 { Class field initializers cannot refer to this, not even implicitly } { empty_class T8321t2 { static String s = this.toString(); } } {FAIL}
Class field initializers cannot refer to this, not even implicitlyTest Case: 8.3.2.1-super-1Expected Result: FAIL
Regression Test:
tcltest::test 8.3.2.1-this-3 { Class field initializers cannot refer to this, not even implicitly } { empty_class T8321t3 { static String s = T8321t3.this.toString(); } } {FAIL}
Class field initializers cannot refer to superTest Case: 8.3.2.1-super-2Expected Result: FAIL
Regression Test:
tcltest::test 8.3.2.1-super-1 { Class field initializers cannot refer to super } { empty_class T8321s1 { static String s = super.toString(); } } {FAIL}
Class field initializers cannot refer to superExpected Result: FAIL
Regression Test:
tcltest::test 8.3.2.1-super-2 { Class field initializers cannot refer to super } { empty_class T8321s2 { static String s = T8321s2.super.toString(); } } {FAIL}
tests/jls/classes/field-declarations/initialization-of-fields/initializers-for-instance-variables
Instance field initializers may use static members, regardless of their declaration orderTest Case: 8.3.2.2-this-1Expected Result: PASS
Regression Test:
tcltest::test 8.3.2.2-static-1 { Instance field initializers may use static members, regardless of their declaration order } { empty_class T8322st1 { float f = j; static int j = 1; } } {PASS}
Instance field initializers may refer to this, even implicitlyTest Case: 8.3.2.2-this-2Expected Result: PASS
Regression Test:
tcltest::test 8.3.2.2-this-1 { Instance field initializers may refer to this, even implicitly } { empty_class T8322t1 { String s = toString(); } } {PASS}
Instance field initializers may refer to this, even implicitlyTest Case: 8.3.2.2-this-3Expected Result: PASS
Regression Test:
tcltest::test 8.3.2.2-this-2 { Instance field initializers may refer to this, even implicitly } { empty_class T8322t2 { String s = this.toString(); } } {PASS}
Instance field initializers may refer to this, even implicitlyTest Case: 8.3.2.2-super-1Expected Result: PASS
Regression Test:
tcltest::test 8.3.2.2-this-3 { Instance field initializers may refer to this, even implicitly } { empty_class T8322t3 { String s = T8322t3.this.toString(); } } {PASS}
Instance field initializers may refer to superTest Case: 8.3.2.2-super-2Expected Result: PASS
Regression Test:
tcltest::test 8.3.2.2-super-1 { Instance field initializers may refer to super } { empty_class T8322s1 { String s = super.toString(); } } {PASS}
Instance field initializers may refer to superExpected Result: PASS
Regression Test:
tcltest::test 8.3.2.2-super-2 { Instance field initializers may refer to super } { empty_class T8322s2 { String s = T8322s2.super.toString(); } } {PASS}
tests/jls/classes/field-declarations/initialization-of-fields/restrictions
Simple usage before declaration legal if 1. not in initializer; 2. simple assignment; or 3. not in declaring classTest Case: 8.3.2.3-illegal-forward-instance-2Expected Result: FAIL
Regression Test:
tcltest::test 8.3.2.3-illegal-forward-instance-1 { Simple usage before declaration legal if 1. not in initializer; 2. simple assignment; or 3. not in declaring class } { empty_class T8323ifi1 { int i = j; int j = 1; } } {FAIL}
Simple usage before declaration legal if 1. not in initializer; 2. simple assignment; or 3. not in declaring classTest Case: 8.3.2.3-illegal-forward-instance-3Expected Result: FAIL
Regression Test:
tcltest::test 8.3.2.3-illegal-forward-instance-2 { Simple usage before declaration legal if 1. not in initializer; 2. simple assignment; or 3. not in declaring class } { empty_class T8323ifi2 { { int i = j; } int j = 1; } } {FAIL}
Simple usage before declaration legal if 1. not in initializer; 2. simple assignment; or 3. not in declaring classTest Case: 8.3.2.3-illegal-forward-instance-4Expected Result: FAIL
Regression Test:
tcltest::test 8.3.2.3-illegal-forward-instance-3 { Simple usage before declaration legal if 1. not in initializer; 2. simple assignment; or 3. not in declaring class } { empty_class T8323ifi3 { int i = j += 1; int j = 1; } } {FAIL}
Simple usage before declaration legal if 1. not in initializer; 2. simple assignment; or 3. not in declaring classTest Case: 8.3.2.3-illegal-forward-instance-5Expected Result: FAIL
Regression Test:
tcltest::test 8.3.2.3-illegal-forward-instance-4 { Simple usage before declaration legal if 1. not in initializer; 2. simple assignment; or 3. not in declaring class } { empty_class T8323ifi4 { { j += 1; } int j = 1; } } {FAIL}
Simple usage before declaration legal if 1. not in initializer; 2. simple assignment; or 3. not in declaring classTest Case: 8.3.2.3-illegal-forward-instance-6Expected Result: FAIL
Regression Test:
tcltest::test 8.3.2.3-illegal-forward-instance-5 { Simple usage before declaration legal if 1. not in initializer; 2. simple assignment; or 3. not in declaring class } { empty_class T8323ifi5 { int i = j++; int j = 1; } } {FAIL}
Simple usage before declaration legal if 1. not in initializer; 2. simple assignment; or 3. not in declaring classTest Case: 8.3.2.3-illegal-forward-instance-7Expected Result: FAIL
Regression Test:
tcltest::test 8.3.2.3-illegal-forward-instance-6 { Simple usage before declaration legal if 1. not in initializer; 2. simple assignment; or 3. not in declaring class } { empty_class T8323ifi6 { { j++; } int j = 1; } } {FAIL}
Reading a variable is not legal before declaration, even if it was assigned before declarationTest Case: 8.3.2.3-illegal-forward-instance-8Expected Result: FAIL
Regression Test:
tcltest::test 8.3.2.3-illegal-forward-instance-7 { Reading a variable is not legal before declaration, even if it was assigned before declaration } { empty_class T8323ifi7 { int i = (i = 1) + i; } } {FAIL}
Reading a variable is not legal before declaration, even if it was assigned before declarationTest Case: 8.3.2.3-illegal-forward-instance-9Expected Result: FAIL
Regression Test:
tcltest::test 8.3.2.3-illegal-forward-instance-8 { Reading a variable is not legal before declaration, even if it was assigned before declaration } { empty_class T8323ifi8 { int j = i = 1; int i = i; } } {FAIL}
Reading a variable is not legal before declaration, even if it was assigned before declarationTest Case: 8.3.2.3-legal-forward-instance-1Expected Result: FAIL
Regression Test:
tcltest::test 8.3.2.3-illegal-forward-instance-9 { Reading a variable is not legal before declaration, even if it was assigned before declaration } { empty_class T8323ifi9 { int j = i = 1; int k = i; int i; } } {FAIL}
Simple usage before declaration legal if 1. not in initializer; 2. simple assignment; or 3. not in declaring classTest Case: 8.3.2.3-legal-forward-instance-2Expected Result: PASS
Regression Test:
tcltest::test 8.3.2.3-legal-forward-instance-1 { Simple usage before declaration legal if 1. not in initializer; 2. simple assignment; or 3. not in declaring class } { empty_class T8323lfi1 { int i = this.j; // not simple usage int j = 1; } } {PASS}
Simple usage before declaration legal if 1. not in initializer; 2. simple assignment; or 3. not in declaring classTest Case: 8.3.2.3-legal-forward-instance-3Expected Result: PASS
Regression Test:
tcltest::test 8.3.2.3-legal-forward-instance-2 { Simple usage before declaration legal if 1. not in initializer; 2. simple assignment; or 3. not in declaring class } { empty_class T8323lfi2 { void foo() { int i = j; } // not in initializer int j = 1; } } {PASS}
Simple usage before declaration legal if 1. not in initializer; 2. simple assignment; or 3. not in declaring classTest Case: 8.3.2.3-legal-forward-instance-4Expected Result: PASS
Regression Test:
tcltest::test 8.3.2.3-legal-forward-instance-3 { Simple usage before declaration legal if 1. not in initializer; 2. simple assignment; or 3. not in declaring class } { empty_class T8323lfi3 { T8323lfi3() { int i = j; } // not in initializer int j = 1; } } {PASS}
Simple usage before declaration legal if 1. not in initializer; 2. simple assignment; or 3. not in declaring classTest Case: 8.3.2.3-legal-forward-instance-5Expected Result: PASS
Regression Test:
tcltest::test 8.3.2.3-legal-forward-instance-4 { Simple usage before declaration legal if 1. not in initializer; 2. simple assignment; or 3. not in declaring class } { empty_class T8323lfi4 { int i = j = 2; // simple assignment int j = 1; } } {PASS}
Simple usage before declaration legal if 1. not in initializer; 2. simple assignment; or 3. not in declaring classTest Case: 8.3.2.3-legal-forward-instance-6Expected Result: PASS
Regression Test:
tcltest::test 8.3.2.3-legal-forward-instance-5 { Simple usage before declaration legal if 1. not in initializer; 2. simple assignment; or 3. not in declaring class } { empty_class T8323lfi5 { { j = 2; } // simple assignment int j = 1; } } {PASS}
Simple usage before declaration legal if 1. not in initializer; 2. simple assignment; or 3. not in declaring classTest Case: 8.3.2.3-legal-forward-instance-7Expected Result: PASS
Regression Test:
tcltest::test 8.3.2.3-legal-forward-instance-6 { Simple usage before declaration legal if 1. not in initializer; 2. simple assignment; or 3. not in declaring class } { empty_class T8323lfi6 { int i = new Object(){ int bar() { return j; } }.bar(); // not in declaring class int j = 1; } } {PASS}
Simple usage before declaration legal if 1. not in initializer; 2. simple assignment; or 3. not in declaring classTest Case: 8.3.2.3-legal-forward-instance-8Expected Result: PASS
Regression Test:
tcltest::test 8.3.2.3-legal-forward-instance-7 { Simple usage before declaration legal if 1. not in initializer; 2. simple assignment; or 3. not in declaring class } { empty_class T8323lfi7 { { new Object(){ { j++; } }; } // not in declaring class int j = 1; } } {PASS}
Simple usage before declaration legal if 1. not in initializer; 2. simple assignment; or 3. not in declaring classTest Case: 8.3.2.3-legal-forward-instance-9Expected Result: PASS
Regression Test:
tcltest::test 8.3.2.3-legal-forward-instance-8 { Simple usage before declaration legal if 1. not in initializer; 2. simple assignment; or 3. not in declaring class } { empty_class T8323lfi8 { int i = j; // j is static static int j = 1; } } {PASS}
Simple usage before declaration legal if 1. not in initializer; 2. simple assignment; or 3. not in declaring classTest Case: 8.3.2.3-legal-forward-instance-10Expected Result: PASS
Regression Test:
tcltest::test 8.3.2.3-legal-forward-instance-9 { Simple usage before declaration legal if 1. not in initializer; 2. simple assignment; or 3. not in declaring class } { empty_class T8323lfi9 { { j++; } // j is static static int j = 1; } } {PASS}
Simple usage before declaration legal if 1. not in initializer; 2. simple assignment; or 3. not in declaring classTest Case: 8.3.2.3-legal-forward-instance-11Expected Result: PASS
Regression Test:
tcltest::test 8.3.2.3-legal-forward-instance-10 { Simple usage before declaration legal if 1. not in initializer; 2. simple assignment; or 3. not in declaring class } { empty_class T8323lfi10 { final int i = j; // j is static static final int j = 1; void foo(int n) { switch (n) { case 0: case i: // i == 1 } } } } {PASS}
Simple usage before declaration legal if 1. not in initializer; 2. simple assignment; or 3. not in declaring classTest Case: 8.3.2.3-legal-forward-instance-12Expected Result: PASS
Regression Test:
tcltest::test 8.3.2.3-legal-forward-instance-11 { Simple usage before declaration legal if 1. not in initializer; 2. simple assignment; or 3. not in declaring class } { empty_class T8323lfi11 { final int i = this.j; // not simple usage final int j = 1; } } {PASS}
Simple usage before declaration legal if 1. not in initializer; 2. simple assignment; or 3. not in declaring classTest Case: 8.3.2.3-illegal-forward-static-1Expected Result: PASS
Regression Test:
tcltest::test 8.3.2.3-legal-forward-instance-12 { Simple usage before declaration legal if 1. not in initializer; 2. simple assignment; or 3. not in declaring class } { empty_class T83231fi12 { int j = i = 1; final int i; } } {PASS}
Simple usage before declaration legal if 1. not in initializer; 2. simple assignment; or 3. not in declaring classTest Case: 8.3.2.3-illegal-forward-static-2Expected Result: FAIL
Regression Test:
tcltest::test 8.3.2.3-illegal-forward-static-1 { Simple usage before declaration legal if 1. not in initializer; 2. simple assignment; or 3. not in declaring class } { empty_class T8323ifs1 { static int i = j; static int j = 1; } } {FAIL}
Simple usage before declaration legal if 1. not in initializer; 2. simple assignment; or 3. not in declaring classTest Case: 8.3.2.3-illegal-forward-static-3Expected Result: FAIL
Regression Test:
tcltest::test 8.3.2.3-illegal-forward-static-2 { Simple usage before declaration legal if 1. not in initializer; 2. simple assignment; or 3. not in declaring class } { empty_class T8323ifs2 { static { int i = j; } static int j = 1; } } {FAIL}
Simple usage before declaration legal if 1. not in initializer; 2. simple assignment; or 3. not in declaring classTest Case: 8.3.2.3-illegal-forward-static-4Expected Result: FAIL
Regression Test:
tcltest::test 8.3.2.3-illegal-forward-static-3 { Simple usage before declaration legal if 1. not in initializer; 2. simple assignment; or 3. not in declaring class } { empty_class T8323ifs3 { static int i = j += 1; static int j = 1; } } {FAIL}
Simple usage before declaration legal if 1. not in initializer; 2. simple assignment; or 3. not in declaring classTest Case: 8.3.2.3-illegal-forward-static-5Expected Result: FAIL
Regression Test:
tcltest::test 8.3.2.3-illegal-forward-static-4 { Simple usage before declaration legal if 1. not in initializer; 2. simple assignment; or 3. not in declaring class } { empty_class T8323ifs4 { static { j += 1; } static int j = 1; } } {FAIL}
Simple usage before declaration legal if 1. not in initializer; 2. simple assignment; or 3. not in declaring classTest Case: 8.3.2.3-illegal-forward-static-6Expected Result: FAIL
Regression Test:
tcltest::test 8.3.2.3-illegal-forward-static-5 { Simple usage before declaration legal if 1. not in initializer; 2. simple assignment; or 3. not in declaring class } { empty_class T8323ifs5 { static int i = j++; static int j = 1; } } {FAIL}
Simple usage before declaration legal if 1. not in initializer; 2. simple assignment; or 3. not in declaring classTest Case: 8.3.2.3-illegal-forward-static-7Expected Result: FAIL
Regression Test:
tcltest::test 8.3.2.3-illegal-forward-static-6 { Simple usage before declaration legal if 1. not in initializer; 2. simple assignment; or 3. not in declaring class } { empty_class T8323ifs6 { static { j++; } static int j = 1; } } {FAIL}
Reading a variable is not legal before declaration, even if it was assigned before declarationTest Case: 8.3.2.3-illegal-forward-static-8Expected Result: FAIL
Regression Test:
tcltest::test 8.3.2.3-illegal-forward-static-7 { Reading a variable is not legal before declaration, even if it was assigned before declaration } { empty_class T8323ifs7 { static int i = (i = 1) + i; } } {FAIL}
Reading a variable is not legal before declaration, even if it was assigned before declarationTest Case: 8.3.2.3-illegal-forward-static-9Expected Result: FAIL
Regression Test:
tcltest::test 8.3.2.3-illegal-forward-static-8 { Reading a variable is not legal before declaration, even if it was assigned before declaration } { empty_class T8323ifs8 { static int j = i = 1; static int i = i; } } {FAIL}
Reading a variable is not legal before declaration, even if it was assigned before declarationTest Case: 8.3.2.3-illegal-forward-static-10Expected Result: FAIL
Regression Test:
tcltest::test 8.3.2.3-illegal-forward-static-9 { Reading a variable is not legal before declaration, even if it was assigned before declaration } { empty_class T8323ifs9 { static int j = i = 1; static int k = i; static int i; } } {FAIL}
Reading a variable is not legal before declaration, even though other classes may trigger out-of-order readsTest Case: 8.3.2.3-legal-forward-static-1Expected Result: FAIL
Regression Test:
tcltest::test 8.3.2.3-illegal-forward-static-10 { Reading a variable is not legal before declaration, even though other classes may trigger out-of-order reads } { compile [saveas T8323ifs10a.java { class T8323ifs10a { int k = T8323ifs10b.i; } }] [saveas T8323ifs10b.java { class T8323ifs10b { static final int i = j; static int j; } }] } {FAIL}
Simple usage before declaration legal if 1. not in initializer; 2. simple assignment; or 3. not in declaring classTest Case: 8.3.2.3-legal-forward-static-2Expected Result: PASS
Regression Test:
tcltest::test 8.3.2.3-legal-forward-static-1 { Simple usage before declaration legal if 1. not in initializer; 2. simple assignment; or 3. not in declaring class } { empty_class T8323lfs1 { static int i = T8323lfs1.j; // not simple usage static int j = 1; } } {PASS}
Simple usage before declaration legal if 1. not in initializer; 2. simple assignment; or 3. not in declaring classTest Case: 8.3.2.3-legal-forward-static-3Expected Result: PASS
Regression Test:
tcltest::test 8.3.2.3-legal-forward-static-2 { Simple usage before declaration legal if 1. not in initializer; 2. simple assignment; or 3. not in declaring class } { empty_class T8323lfs2 { static void foo() { int i = j; } // not in initializer static int j = 1; } } {PASS}
Simple usage before declaration legal if 1. not in initializer; 2. simple assignment; or 3. not in declaring classTest Case: 8.3.2.3-legal-forward-static-4Expected Result: PASS
Regression Test:
tcltest::test 8.3.2.3-legal-forward-static-3 { Simple usage before declaration legal if 1. not in initializer; 2. simple assignment; or 3. not in declaring class } { empty_class T8323lfs3 { T8323lfs3() { int i = j; } // not in initializer int j = 1; } } {PASS}
Simple usage before declaration legal if 1. not in initializer; 2. simple assignment; or 3. not in declaring classTest Case: 8.3.2.3-legal-forward-static-5Expected Result: PASS
Regression Test:
tcltest::test 8.3.2.3-legal-forward-static-4 { Simple usage before declaration legal if 1. not in initializer; 2. simple assignment; or 3. not in declaring class } { empty_class T8323lfs4 { static int i = j = 2; // simple assignment static int j = 1; } } {PASS}
Simple usage before declaration legal if 1. not in initializer; 2. simple assignment; or 3. not in declaring classTest Case: 8.3.2.3-legal-forward-static-6Expected Result: PASS
Regression Test:
tcltest::test 8.3.2.3-legal-forward-static-5 { Simple usage before declaration legal if 1. not in initializer; 2. simple assignment; or 3. not in declaring class } { empty_class T8323lfs5 { static { j = 2; } // simple assignment static int j = 1; } } {PASS}
Simple usage before declaration legal if 1. not in initializer; 2. simple assignment; or 3. not in declaring classTest Case: 8.3.2.3-legal-forward-static-7Expected Result: PASS
Regression Test:
tcltest::test 8.3.2.3-legal-forward-static-6 { Simple usage before declaration legal if 1. not in initializer; 2. simple assignment; or 3. not in declaring class } { empty_class T8323lfs6 { static int i = new Object(){ int bar() { return j; } }.bar(); // not in declaring class static int j = 1; } } {PASS}
Simple usage before declaration legal if 1. not in initializer; 2. simple assignment; or 3. not in declaring classTest Case: 8.3.2.3-legal-forward-static-8Expected Result: PASS
Regression Test:
tcltest::test 8.3.2.3-legal-forward-static-7 { Simple usage before declaration legal if 1. not in initializer; 2. simple assignment; or 3. not in declaring class } { empty_class T8323lfs7 { static { new Object(){ { j++; } }; } // not in declaring class static int j = 1; } } {PASS}
Simple usage before declaration legal if 1. not in initializer; 2. simple assignment; or 3. not in declaring classTest Case: 8.3.2.3-legal-forward-static-9Expected Result: PASS
Regression Test:
tcltest::test 8.3.2.3-legal-forward-static-8 { Simple usage before declaration legal if 1. not in initializer; 2. simple assignment; or 3. not in declaring class } { empty_class T8323lfs8 { static final int i = T8323lfs8.j; // not simple usage static final int j = 1; } } {PASS}
Simple usage before declaration legal if 1. not in initializer; 2. simple assignment; or 3. not in declaring classTest Case: 8.3.2.3-legal-forward-static-10Expected Result: PASS
Regression Test:
tcltest::test 8.3.2.3-legal-forward-static-9 { Simple usage before declaration legal if 1. not in initializer; 2. simple assignment; or 3. not in declaring class } { empty_class T83231fs9 { static int j = i = 1; static final int i; } } {PASS}
Simple usage before declaration legal if 1. not in initializer; 2. simple assignment; or 3. not in declaring classExpected Result: PASS
Regression Test:
tcltest::test 8.3.2.3-legal-forward-static-10 { Simple usage before declaration legal if 1. not in initializer; 2. simple assignment; or 3. not in declaring class } { empty_class T8323lfs10 { static final int j = T8323lfs10.k; static final int k = new Q().i; private static class Q { static int i = 1; } } } {PASS}
tests/jls/classes/method-declarations/method-modifiers
Multiple access modifiers is an errorTest Case: 8.4.3-access-2Expected Result: FAIL
Regression Test:
tcltest::test 8.4.3-access-1 { Multiple access modifiers is an error } { empty_class T843access1 { public public void foo() {} } } {FAIL}
Multiple access modifiers is an errorTest Case: 8.4.3-access-3Expected Result: FAIL
Regression Test:
tcltest::test 8.4.3-access-2 { Multiple access modifiers is an error } { empty_class T843access2 { public protected void foo() {} } } {FAIL}
Multiple access modifiers is an errorTest Case: 8.4.3-access-4Expected Result: FAIL
Regression Test:
tcltest::test 8.4.3-access-3 { Multiple access modifiers is an error } { empty_class T843access3 { public private void foo() {} } } {FAIL}
Multiple access modifiers is an errorTest Case: 8.4.3-access-5Expected Result: FAIL
Regression Test:
tcltest::test 8.4.3-access-4 { Multiple access modifiers is an error } { empty_class T843access4 { protected public void foo() {} } } {FAIL}
Multiple access modifiers is an errorTest Case: 8.4.3-access-6Expected Result: FAIL
Regression Test:
tcltest::test 8.4.3-access-5 { Multiple access modifiers is an error } { empty_class T843access5 { protected protected void foo() {} } } {FAIL}
Multiple access modifiers is an errorTest Case: 8.4.3-access-7Expected Result: FAIL
Regression Test:
tcltest::test 8.4.3-access-6 { Multiple access modifiers is an error } { empty_class T843access6 { protected private void foo() {} } } {FAIL}
Multiple access modifiers is an errorTest Case: 8.4.3-access-8Expected Result: FAIL
Regression Test:
tcltest::test 8.4.3-access-7 { Multiple access modifiers is an error } { empty_class T843access7 { private public void foo() {} } } {FAIL}
Multiple access modifiers is an errorTest Case: 8.4.3-access-9Expected Result: FAIL
Regression Test:
tcltest::test 8.4.3-access-8 { Multiple access modifiers is an error } { empty_class T843access8 { private protected void foo() {} } } {FAIL}
Multiple access modifiers is an errorTest Case: 8.4.3-access-10Expected Result: FAIL
Regression Test:
tcltest::test 8.4.3-access-9 { Multiple access modifiers is an error } { empty_class T843access9 { private private void foo() {} } } {FAIL}
A single access modifier is legalTest Case: 8.4.3-access-11Expected Result: PASS
Regression Test:
tcltest::test 8.4.3-access-10 { A single access modifier is legal } { empty_class T843access10 { public void foo() {} } } {PASS}
A single access modifier is legalTest Case: 8.4.3-access-12Expected Result: PASS
Regression Test:
tcltest::test 8.4.3-access-11 { A single access modifier is legal } { empty_class T843access11 { protected void foo() {} } } {PASS}
A single access modifier is legalTest Case: 8.4.3-access-13Expected Result: PASS
Regression Test:
tcltest::test 8.4.3-access-12 { A single access modifier is legal } { empty_class T843access12 { private void foo() {} } } {PASS}
No access modifier is legalTest Case: 8.4.3-abstract-1Expected Result: PASS
Regression Test:
tcltest::test 8.4.3-access-13 { No access modifier is legal } { empty_class T843access13 { void foo() {} } } {PASS}
abstract alone is legalTest Case: 8.4.3-abstract-2Expected Result: PASS
Regression Test:
tcltest::test 8.4.3-abstract-1 { abstract alone is legal } { compile [saveas T843abstract1.java { abstract class T843abstract1 { abstract void foo(); } }] } {PASS}
public abstract is legalTest Case: 8.4.3-abstract-3Expected Result: PASS
Regression Test:
tcltest::test 8.4.3-abstract-2 { public abstract is legal } { compile [saveas T843abstract2.java { abstract class T843abstract2 { public abstract void foo(); } }] } {PASS}
abstract public is legal, but not in the preferred orderTest Case: 8.4.3-abstract-4Expected Result: OK
Regression Test:
tcltest::test 8.4.3-abstract-3 { abstract public is legal, but not in the preferred order } { ok_pass_or_warn [compile [saveas T843abstract3.java { abstract class T843abstract3 { abstract public void foo(); } }]] } {OK}
protected abstract is legalTest Case: 8.4.3-abstract-5Expected Result: PASS
Regression Test:
tcltest::test 8.4.3-abstract-4 { protected abstract is legal } { compile [saveas T843abstract4.java { abstract class T843abstract4 { protected abstract void foo(); } }] } {PASS}
abstract protected is legal, but not in the preferred orderTest Case: 8.4.3-abstract-6Expected Result: OK
Regression Test:
tcltest::test 8.4.3-abstract-5 { abstract protected is legal, but not in the preferred order } { ok_pass_or_warn [compile [saveas T843abstract5.java { abstract class T843abstract5 { abstract protected void foo(); } }]] } {OK}
private abstract is illegalTest Case: 8.4.3-abstract-7Expected Result: FAIL
Regression Test:
tcltest::test 8.4.3-abstract-6 { private abstract is illegal } { compile [saveas T843abstract6.java { abstract class T843abstract6 { private abstract void foo(); } }] } {FAIL}
abstract private is illegalTest Case: 8.4.3-abstract-8Expected Result: FAIL
Regression Test:
tcltest::test 8.4.3-abstract-7 { abstract private is illegal } { compile [saveas T843abstract7.java { abstract class T843abstract7 { abstract private void foo(); } }] } {FAIL}
abstract abstract is illegalTest Case: 8.4.3-abstract-9Expected Result: FAIL
Regression Test:
tcltest::test 8.4.3-abstract-8 { abstract abstract is illegal } { compile [saveas T843abstract8.java { abstract class T843abstract8 { abstract abstract void foo(); } }] } {FAIL}
static abstract is illegalTest Case: 8.4.3-abstract-10Expected Result: FAIL
Regression Test:
tcltest::test 8.4.3-abstract-9 { static abstract is illegal } { compile [saveas T843abstract9.java { abstract class T843abstract9 { static abstract void foo(); } }] } {FAIL}
abstract static is illegalTest Case: 8.4.3-abstract-11Expected Result: FAIL
Regression Test:
tcltest::test 8.4.3-abstract-10 { abstract static is illegal } { compile [saveas T843abstract10.java { abstract class T843abstract10 { abstract static void foo(); } }] } {FAIL}
final abstract is illegalTest Case: 8.4.3-abstract-12Expected Result: FAIL
Regression Test:
tcltest::test 8.4.3-abstract-11 { final abstract is illegal } { compile [saveas T843abstract11.java { abstract class T843abstract11 { final abstract void foo(); } }] } {FAIL}
abstract final is illegalTest Case: 8.4.3-abstract-13Expected Result: FAIL
Regression Test:
tcltest::test 8.4.3-abstract-12 { abstract final is illegal } { compile [saveas T843abstract12.java { abstract class T843abstract12 { abstract final void foo(); } }] } {FAIL}
synchronized abstract is illegalTest Case: 8.4.3-abstract-14Expected Result: FAIL
Regression Test:
tcltest::test 8.4.3-abstract-13 { synchronized abstract is illegal } { compile [saveas T843abstract13.java { abstract class T843abstract13 { synchronized abstract void foo(); } }] } {FAIL}
abstract synchronized is illegalTest Case: 8.4.3-abstract-15Expected Result: FAIL
Regression Test:
tcltest::test 8.4.3-abstract-14 { abstract synchronized is illegal } { compile [saveas T843abstract14.java { abstract class T843abstract14 { abstract synchronized void foo(); } }] } {FAIL}
native abstract is illegalTest Case: 8.4.3-abstract-16Expected Result: FAIL
Regression Test:
tcltest::test 8.4.3-abstract-15 { native abstract is illegal } { compile [saveas T843abstract15.java { abstract class T843abstract15 { native abstract void foo(); } }] } {FAIL}
abstract native is illegalTest Case: 8.4.3-abstract-17Expected Result: FAIL
Regression Test:
tcltest::test 8.4.3-abstract-16 { abstract native is illegal } { compile [saveas T843abstract16.java { abstract class T843abstract16 { abstract native void foo(); } }] } {FAIL}
strictfp abstract is illegalTest Case: 8.4.3-abstract-18Expected Result: FAIL
Regression Test:
tcltest::test 8.4.3-abstract-17 { strictfp abstract is illegal } { compile [saveas T843abstract17.java { abstract class T843abstract17 { strictfp abstract void foo(); } }] } {FAIL}
abstract strictfp is illegalTest Case: 8.4.3-static-1Expected Result: FAIL
Regression Test:
tcltest::test 8.4.3-abstract-18 { abstract strictfp is illegal } { compile [saveas T843abstract18.java { abstract class T843abstract18 { abstract strictfp void foo(); } }] } {FAIL}
static alone is legalTest Case: 8.4.3-static-2Expected Result: PASS
Regression Test:
tcltest::test 8.4.3-static-1 { static alone is legal } { empty_class T843static1 { static void foo() {} } } {PASS}
public static is legalTest Case: 8.4.3-static-3Expected Result: PASS
Regression Test:
tcltest::test 8.4.3-static-2 { public static is legal } { empty_class T843static2 { public static void foo() {} } } {PASS}
static public is legal, but not in the preferred orderTest Case: 8.4.3-static-4Expected Result: OK
Regression Test:
tcltest::test 8.4.3-static-3 { static public is legal, but not in the preferred order } { ok_pass_or_warn [empty_class T843static3 { static public void foo() {} }] } {OK}
protected static is legalTest Case: 8.4.3-static-5Expected Result: PASS
Regression Test:
tcltest::test 8.4.3-static-4 { protected static is legal } { empty_class T843static4 { protected static void foo() {} } } {PASS}
static protected is legal, but not in the preferred orderTest Case: 8.4.3-static-6Expected Result: OK
Regression Test:
tcltest::test 8.4.3-static-5 { static protected is legal, but not in the preferred order } { ok_pass_or_warn [empty_class T843static5 { static protected void foo() {} }] } {OK}
private static is legalTest Case: 8.4.3-static-7Expected Result: PASS
Regression Test:
tcltest::test 8.4.3-static-6 { private static is legal } { empty_class T843static6 { private static void foo() {} } } {PASS}
static private is legal, but not in the preferred orderTest Case: 8.4.3-static-8Expected Result: OK
Regression Test:
tcltest::test 8.4.3-static-7 { static private is legal, but not in the preferred order } { ok_pass_or_warn [empty_class T843static7 { static private void foo() {} }] } {OK}
static static is illegalTest Case: 8.4.3-static-9Expected Result: FAIL
Regression Test:
tcltest::test 8.4.3-static-8 { static static is illegal } { empty_class T843static8 { static static void foo() {} } } {FAIL}
static final is legalTest Case: 8.4.3-static-10Expected Result: PASS
Regression Test:
tcltest::test 8.4.3-static-9 { static final is legal } { empty_class T843static9 { static final void foo() {} } } {PASS}
final static is legal, but not in the preferred orderTest Case: 8.4.3-static-11Expected Result: OK
Regression Test:
tcltest::test 8.4.3-static-10 { final static is legal, but not in the preferred order } { ok_pass_or_warn [empty_class T843static10 { final static void foo() {} }] } {OK}
static synchronized is legalTest Case: 8.4.3-static-12Expected Result: PASS
Regression Test:
tcltest::test 8.4.3-static-11 { static synchronized is legal } { empty_class T843static11 { static synchronized void foo() {} } } {PASS}
synchronized static is legal, but not in the preferred orderTest Case: 8.4.3-static-13Expected Result: OK
Regression Test:
tcltest::test 8.4.3-static-12 { synchronized static is legal, but not in the preferred order } { ok_pass_or_warn [empty_class T843static12 { synchronized static void foo() {} }] } {OK}
static native is legalTest Case: 8.4.3-static-14Expected Result: PASS
Regression Test:
tcltest::test 8.4.3-static-13 { static native is legal } { empty_class T843static13 { static native void foo(); } } {PASS}
native static is legal, but not in the preferred orderTest Case: 8.4.3-static-15Expected Result: OK
Regression Test:
tcltest::test 8.4.3-static-14 { native static is legal, but not in the preferred order } { ok_pass_or_warn [empty_class T843static14 { native static void foo(); }] } {OK}
static strictfp is legalTest Case: 8.4.3-static-16Expected Result: PASS
Regression Test:
tcltest::test 8.4.3-static-15 { static strictfp is legal } { empty_class T843static15 { static strictfp void foo() {} } } {PASS}
strictfp static is legal, but not in the preferred orderTest Case: 8.4.3-final-1Expected Result: OK
Regression Test:
tcltest::test 8.4.3-static-16 { strictfp static is legal, but not in the preferred order } { ok_pass_or_warn [empty_class T843static16 { strictfp static void foo() {} }] } {OK}
final alone is legalTest Case: 8.4.3-final-2Expected Result: PASS
Regression Test:
tcltest::test 8.4.3-final-1 { final alone is legal } { empty_class T843final1 { final void foo() {} } } {PASS}
public final is legalTest Case: 8.4.3-final-3Expected Result: PASS
Regression Test:
tcltest::test 8.4.3-final-2 { public final is legal } { empty_class T843final2 { public final void foo() {} } } {PASS}
final public is legal, but not in the preferred orderTest Case: 8.4.3-final-4Expected Result: OK
Regression Test:
tcltest::test 8.4.3-final-3 { final public is legal, but not in the preferred order } { ok_pass_or_warn [empty_class T843final3 { final public void foo() {} }] } {OK}
protected final is legalTest Case: 8.4.3-final-5Expected Result: PASS
Regression Test:
tcltest::test 8.4.3-final-4 { protected final is legal } { empty_class T843final4 { protected final void foo() {} } } {PASS}
final protected is legal, but not in the preferred orderTest Case: 8.4.3-final-6Expected Result: OK
Regression Test:
tcltest::test 8.4.3-final-5 { final protected is legal, but not in the preferred order } { ok_pass_or_warn [empty_class T843final5 { final protected void foo() {} }] } {OK}
private final is legal, but redundantTest Case: 8.4.3-final-7Expected Result: OK
Regression Test:
tcltest::test 8.4.3-final-6 { private final is legal, but redundant } { ok_pass_or_warn [empty_class T843final6 { private final void foo() {} }] } {OK}
final private is legal, but redundant, and not in the preferred orderTest Case: 8.4.3-final-8Expected Result: OK
Regression Test:
tcltest::test 8.4.3-final-7 { final private is legal, but redundant, and not in the preferred order } { ok_pass_or_warn [empty_class T843final7 { final private void foo() {} }] } {OK}
final final is illegalTest Case: 8.4.3-final-9Expected Result: FAIL
Regression Test:
tcltest::test 8.4.3-final-8 { final final is illegal } { empty_class T843final8 { final final void foo() {} } } {FAIL}
final synchronized is legalTest Case: 8.4.3-final-10Expected Result: PASS
Regression Test:
tcltest::test 8.4.3-final-9 { final synchronized is legal } { empty_class T843final9 { final synchronized void foo() {} } } {PASS}
synchronized final is legal, but not in the preferred orderTest Case: 8.4.3-final-11Expected Result: OK
Regression Test:
tcltest::test 8.4.3-final-10 { synchronized final is legal, but not in the preferred order } { ok_pass_or_warn [empty_class T843final10 { synchronized final void foo() {} }] } {OK}
final native is legalTest Case: 8.4.3-final-12Expected Result: PASS
Regression Test:
tcltest::test 8.4.3-final-11 { final native is legal } { empty_class T843final11 { final native void foo(); } } {PASS}
native final is legal, but not in the preferred orderTest Case: 8.4.3-final-13Expected Result: OK
Regression Test:
tcltest::test 8.4.3-final-12 { native final is legal, but not in the preferred order } { ok_pass_or_warn [empty_class T843final12 { native final void foo(); }] } {OK}
final strictfp is legalTest Case: 8.4.3-final-14Expected Result: PASS
Regression Test:
tcltest::test 8.4.3-final-13 { final strictfp is legal } { empty_class T843final13 { final strictfp void foo() {} } } {PASS}
strictfp final is legal, but not in the preferred orderTest Case: 8.4.3-final-15Expected Result: OK
Regression Test:
tcltest::test 8.4.3-final-14 { strictfp final is legal, but not in the preferred order } { ok_pass_or_warn [empty_class T843final14 { strictfp final void foo() {} }] } {OK}
final in a final class is legal, but redundantTest Case: 8.4.3-synchronized-1Expected Result: OK
Regression Test:
tcltest::test 8.4.3-final-15 { final in a final class is legal, but redundant } { ok_pass_or_warn [compile [saveas T843final15.java { final class T843final15 { final void foo() {} } }]] } {OK}
synchronized alone is legalTest Case: 8.4.3-synchronized-2Expected Result: PASS
Regression Test:
tcltest::test 8.4.3-synchronized-1 { synchronized alone is legal } { empty_class T843synchronized1 { synchronized void foo() {} } } {PASS}
public synchronized is legalTest Case: 8.4.3-synchronized-3Expected Result: PASS
Regression Test:
tcltest::test 8.4.3-synchronized-2 { public synchronized is legal } { empty_class T843synchronized2 { public synchronized void foo() {} } } {PASS}
synchronized public is legal, but not in the preferred orderTest Case: 8.4.3-synchronized-4Expected Result: OK
Regression Test:
tcltest::test 8.4.3-synchronized-3 { synchronized public is legal, but not in the preferred order } { ok_pass_or_warn [empty_class T843synchronized3 { synchronized public void foo() {} }] } {OK}
protected synchronized is legalTest Case: 8.4.3-synchronized-5Expected Result: PASS
Regression Test:
tcltest::test 8.4.3-synchronized-4 { protected synchronized is legal } { empty_class T843synchronized4 { protected synchronized void foo() {} } } {PASS}
synchronized protected is legal, but not in the preferred orderTest Case: 8.4.3-synchronized-6Expected Result: OK
Regression Test:
tcltest::test 8.4.3-synchronized-5 { synchronized protected is legal, but not in the preferred order } { ok_pass_or_warn [empty_class T843synchronized5 { synchronized protected void foo() {} }] } {OK}
private synchronized is legalTest Case: 8.4.3-synchronized-7Expected Result: PASS
Regression Test:
tcltest::test 8.4.3-synchronized-6 { private synchronized is legal } { empty_class T843synchronized6 { private synchronized void foo() {} } } {PASS}
synchronized private is legal, but not in the preferred orderTest Case: 8.4.3-synchronized-8Expected Result: OK
Regression Test:
tcltest::test 8.4.3-synchronized-7 { synchronized private is legal, but not in the preferred order } { ok_pass_or_warn [empty_class T843synchronized7 { synchronized private void foo() {} }] } {OK}
synchronized synchronized is illegalTest Case: 8.4.3-synchronized-9Expected Result: FAIL
Regression Test:
tcltest::test 8.4.3-synchronized-8 { synchronized synchronized is illegal } { empty_class T843synchronized8 { synchronized synchronized void foo() {} } } {FAIL}
synchronized native is legalTest Case: 8.4.3-synchronized-10Expected Result: PASS
Regression Test:
tcltest::test 8.4.3-synchronized-9 { synchronized native is legal } { empty_class T843synchronized9 { synchronized native void foo(); } } {PASS}
native synchronized is legal, but not in the preferred orderTest Case: 8.4.3-synchronized-11Expected Result: OK
Regression Test:
tcltest::test 8.4.3-synchronized-10 { native synchronized is legal, but not in the preferred order } { ok_pass_or_warn [empty_class T843synchronized10 { native synchronized void foo(); }] } {OK}
synchronized strictfp is legalTest Case: 8.4.3-synchronized-12Expected Result: PASS
Regression Test:
tcltest::test 8.4.3-synchronized-11 { synchronized strictfp is legal } { empty_class T843synchronized11 { synchronized strictfp void foo() {} } } {PASS}
strictfp synchronized is legal, but not in the preferred orderTest Case: 8.4.3-native-1Expected Result: OK
Regression Test:
tcltest::test 8.4.3-synchronized-12 { strictfp synchronized is legal, but not in the preferred order } { ok_pass_or_warn [empty_class T843synchronized12 { strictfp synchronized void foo() {} }] } {OK}
native alone is legalTest Case: 8.4.3-native-2Expected Result: PASS
Regression Test:
tcltest::test 8.4.3-native-1 { native alone is legal } { empty_class T843native1 { native void foo(); } } {PASS}
public native is legalTest Case: 8.4.3-native-3Expected Result: PASS
Regression Test:
tcltest::test 8.4.3-native-2 { public native is legal } { empty_class T843native2 { public native void foo(); } } {PASS}
native public is legal, but not in the preferred orderTest Case: 8.4.3-native-4Expected Result: OK
Regression Test:
tcltest::test 8.4.3-native-3 { native public is legal, but not in the preferred order } { ok_pass_or_warn [empty_class T843native3 { native public void foo(); }] } {OK}
protected native is legalTest Case: 8.4.3-native-5Expected Result: PASS
Regression Test:
tcltest::test 8.4.3-native-4 { protected native is legal } { empty_class T843native4 { protected native void foo(); } } {PASS}
native protected is legal, but not in the preferred orderTest Case: 8.4.3-native-6Expected Result: OK
Regression Test:
tcltest::test 8.4.3-native-5 { native protected is legal, but not in the preferred order } { ok_pass_or_warn [empty_class T843native5 { native protected void foo(); }] } {OK}
private native is legalTest Case: 8.4.3-native-7Expected Result: PASS
Regression Test:
tcltest::test 8.4.3-native-6 { private native is legal } { empty_class T843native6 { private native void foo(); } } {PASS}
native private is legal, but not in the preferred orderTest Case: 8.4.3-native-8Expected Result: OK
Regression Test:
tcltest::test 8.4.3-native-7 { native private is legal, but not in the preferred order } { ok_pass_or_warn [empty_class T843native7 { native private void foo(); }] } {OK}
native native is illegalTest Case: 8.4.3-native-9Expected Result: FAIL
Regression Test:
tcltest::test 8.4.3-native-8 { native native is illegal } { empty_class T843native8 { native native void foo(); } } {FAIL}
native strictfp is illegalTest Case: 8.4.3-native-10Expected Result: FAIL
Regression Test:
tcltest::test 8.4.3-native-9 { native strictfp is illegal } { empty_class T843native9 { native strictfp void foo(); } } {FAIL}
strictfp native is illegalTest Case: 8.4.3-strictfp-1Expected Result: FAIL
Regression Test:
tcltest::test 8.4.3-native-10 { strictfp native is illegal } { empty_class T843native10 { strictfp native void foo(); } } {FAIL}
strictfp alone is legalTest Case: 8.4.3-strictfp-2Expected Result: PASS
Regression Test:
tcltest::test 8.4.3-strictfp-1 { strictfp alone is legal } { empty_class T843strictfp1 { strictfp void foo() {} } } {PASS}
public strictfp is legalTest Case: 8.4.3-strictfp-3Expected Result: PASS
Regression Test:
tcltest::test 8.4.3-strictfp-2 { public strictfp is legal } { empty_class T843strictfp2 { public strictfp void foo() {} } } {PASS}
strictfp public is legal, but not in the preferred orderTest Case: 8.4.3-strictfp-4Expected Result: OK
Regression Test:
tcltest::test 8.4.3-strictfp-3 { strictfp public is legal, but not in the preferred order } { ok_pass_or_warn [empty_class T843strictfp3 { strictfp public void foo() {} }] } {OK}
protected strictfp is legalTest Case: 8.4.3-strictfp-5Expected Result: PASS
Regression Test:
tcltest::test 8.4.3-strictfp-4 { protected strictfp is legal } { empty_class T843strictfp4 { protected strictfp void foo() {} } } {PASS}
strictfp protected is legal, but not in the preferred orderTest Case: 8.4.3-strictfp-6Expected Result: OK
Regression Test:
tcltest::test 8.4.3-strictfp-5 { strictfp protected is legal, but not in the preferred order } { ok_pass_or_warn [empty_class T843strictfp5 { strictfp protected void foo() {} }] } {OK}
private strictfp is legalTest Case: 8.4.3-strictfp-7Expected Result: PASS
Regression Test:
tcltest::test 8.4.3-strictfp-6 { private strictfp is legal } { empty_class T843strictfp6 { private strictfp void foo() {} } } {PASS}
strictfp private is legal, but not in the preferred orderTest Case: 8.4.3-strictfp-8Expected Result: OK
Regression Test:
tcltest::test 8.4.3-strictfp-7 { strictfp private is legal, but not in the preferred order } { ok_pass_or_warn [empty_class T843strictfp7 { strictfp private void foo() {} }] } {OK}
strictfp strictfp is illegalTest Case: 8.4.3-strictfp-9Expected Result: FAIL
Regression Test:
tcltest::test 8.4.3-strictfp-8 { strictfp strictfp is illegal } { empty_class T843strictfp8 { strictfp strictfp void foo() {} } } {FAIL}
strictfp in a strictfp class is legal, but redundantTest Case: 8.4.3-big-1Expected Result: OK
Regression Test:
tcltest::test 8.4.3-strictfp-9 { strictfp in a strictfp class is legal, but redundant } { ok_pass_or_warn [compile [saveas T843strictfp9.java { strictfp class T843strictfp9 { strictfp void foo() {} } }]] } {OK}
largest number of modifiers allowedTest Case: 8.4.3-big-2Expected Result: PASS
Regression Test:
tcltest::test 8.4.3-big-1 { largest number of modifiers allowed } { empty_class T843big1 { public static final synchronized strictfp void foo() {} } } {PASS}
largest number of modifiers allowedTest Case: 8.4.3-big-3Expected Result: PASS
Regression Test:
tcltest::test 8.4.3-big-2 { largest number of modifiers allowed } { empty_class T843big2 { protected static final synchronized native void foo(); } } {PASS}
modifiers stress testTest Case: 8.4.3-bad-1Expected Result: FAIL
Regression Test:
tcltest::test 8.4.3-big-3 { modifiers stress test } { empty_class T843big3 { public protected private static abstract final synchronized native strictfp public protected private static abstract final synchronized native strictfp void foo(); } } {FAIL}
transient methods don't existTest Case: 8.4.3-bad-2Expected Result: FAIL
Regression Test:
tcltest::test 8.4.3-bad-1 { transient methods don't exist } { empty_class T843bad1 { transient void foo() {} } } {FAIL}
volatile methods don't existExpected Result: FAIL
Regression Test:
tcltest::test 8.4.3-bad-2 { volatile methods don't exist } { empty_class T843bad2 { volatile void foo() {} } } {FAIL}
tests/jls/classes/method-declarations/method-body
{} is a valid method bodyTest Case: 8.4.5-2Expected Result: PASS
Regression Test:
tcltest::test 8.4.5-1 { {} is a valid method body} { compile [saveas EmptyBlockMethodBody.java { public class EmptyBlockMethodBody { public void foo() {} } }] } {PASS}
only a native or abstract method can have no method bodyTest Case: 8.4.5-3Expected Result: FAIL
Regression Test:
tcltest::test 8.4.5-2 { only a native or abstract method can have no method body } { compile [saveas InvalidEmptyMethodBody.java { public class InvalidEmptyMethodBody { public void foo() ; } }] } {FAIL}
a native method does not have a bodyTest Case: 8.4.5-4Expected Result: PASS
Regression Test:
tcltest::test 8.4.5-3 { a native method does not have a body } { compile [saveas EmptyNativeMethodBody.java { public class EmptyNativeMethodBody { public native void foo(); } }] } {PASS}
a native method can not have a bodyTest Case: 8.4.5-5Expected Result: FAIL
Regression Test:
tcltest::test 8.4.5-4 { a native method can not have a body } { compile [saveas InvalidNativeMethodBody.java { public class InvalidNativeMethodBody { public native void foo() {} } }] } {FAIL}
an abstract method does not have a bodyTest Case: 8.4.5-6Expected Result: PASS
Regression Test:
tcltest::test 8.4.5-5 { an abstract method does not have a body } { compile [saveas EmptyAbstractMethodBody.java { public abstract class EmptyAbstractMethodBody { public abstract void foo(); } }] } {PASS}
an abstract method can not have a bodyTest Case: 8.4.5-7Expected Result: FAIL
Regression Test:
tcltest::test 8.4.5-6 { an abstract method can not have a body } { compile [saveas InvalidAbstractMethodBody.java { public abstract class InvalidAbstractMethodBody { public abstract void foo() {} } }] } {FAIL}
non void method without a return is invalidTest Case: 8.4.5-8Expected Result: FAIL
Regression Test:
tcltest::test 8.4.5-7 { non void method without a return is invalid } { compile [saveas NoReturnInNonVoid.java { public class NoReturnInNonVoid { public boolean foo() {} } }] } {FAIL}
a void method with a non expression return is validTest Case: 8.4.5-9Expected Result: PASS
Regression Test:
tcltest::test 8.4.5-8 { a void method with a non expression return is valid } { compile [saveas NoExpressionReturnInVoid.java { public class NoExpressionReturnInVoid { public void foo() { return; } } }] } {PASS}
a return with no expression in a non void method is invalidTest Case: 8.4.5-10Expected Result: FAIL
Regression Test:
tcltest::test 8.4.5-9 { a return with no expression in a non void method is invalid } { compile [saveas ConflictingReturnInNonVoid.java { public class ConflictingReturnInNonVoid { public boolean foo() { int i = 0; if (i == 1) { return true; } else { return; } } } }] } {FAIL}
a return with an expression in a void method is invalidTest Case: 8.4.5-11Expected Result: FAIL
Regression Test:
tcltest::test 8.4.5-10 { a return with an expression in a void method is invalid } { compile [saveas ConflictingReturnInVoid.java { public class ConflictingReturnInVoid { public void foo() { int i = 0; if (i == 1) { return true; } else { return; } } } }] } {FAIL}
a method with an exceptional exit does not require a return ?Expected Result: PASS
Regression Test:
tcltest::test 8.4.5-11 { a method with an exceptional exit does not require a return ? } { compile [saveas ExceptionalReturnInNonVoid.java { public class ExceptionalReturnInNonVoid { public boolean foo() { throw new RuntimeException("foo()"); } } }] } {PASS}
tests/jls/classes/method-declarations/inheritance-overriding-and-hiding
Abstract classes no longer need Miranda methods (generated place-holders in classes which inherit an abstract method from an interface without overriding it)Test Case: 8.4.6-miranda-2Expected Result: FAIL
Regression Test:
tcltest::test 8.4.6-miranda-1 { Abstract classes no longer need Miranda methods (generated place-holders in classes which inherit an abstract method from an interface without overriding it) } { compile [saveas T846m1a.java { interface T846m1a { void m(); } }] [saveas T846m1b.java { // If a compiler still inserts Miranda methods, then class b will have a // bogus declaration "abstract void m();" abstract class T846m1b implements T846m1a {} }] # Now, leave b in .class form only, and recompile a to lose m() delete T846m1b.java compile [saveas T846m1a.java { interface T846m1a {} }] # The real test: if c inherits b.m(), the compiler goofed in compiling b compile -classpath . [saveas T846m1c.java { abstract class T846m1c extends T846m1b { void foo() { m(); } } }] } {FAIL}
Abstract classes no longer need Miranda methods (generated place-holders in classes which inherit an abstract method from an interface without overriding it)Test Case: 8.4.6-miranda-3Expected Result: PASS
Regression Test:
tcltest::test 8.4.6-miranda-2 { Abstract classes no longer need Miranda methods (generated place-holders in classes which inherit an abstract method from an interface without overriding it) } { compile [saveas T846m2b.java { interface T846m2a { void m(); } abstract class T846m2b implements T846m2a {} }] # Now, leave b in .class form only. If c can't find m(), the compiler # goofed by looking for Miranda methods in b instead of inheriting from a compile -classpath . [saveas T846m2c.java { abstract class T846m2c extends T846m2b { void foo() { m(); } } }] } {PASS}
Abstract classes no longer need Miranda methods (generated place-holders in classes which inherit an abstract method from an interface without overriding it)Test Case: 8.4.6-miranda-4Expected Result: FAIL
Regression Test:
tcltest::test 8.4.6-miranda-3 { Abstract classes no longer need Miranda methods (generated place-holders in classes which inherit an abstract method from an interface without overriding it) } { compile [saveas T846m3b.java { interface T846m3a { void m(); } abstract class T846m3b implements T846m3a {} }] # Now, leave b in .class form only. If c avoids implementing m(), the compiler # goofed by looking for Miranda methods in b instead of inheriting from a compile -classpath . [saveas T846m3c.java { class T846m3c extends T846m3b {} }] } {FAIL}
Abstract classes no longer need Miranda methods (generated place-holders in classes which inherit an abstract method from an interface without overriding it)Test Case: 8.4.6-inheritance-1Expected Result: FAIL
Regression Test:
tcltest::test 8.4.6-miranda-4 { Abstract classes no longer need Miranda methods (generated place-holders in classes which inherit an abstract method from an interface without overriding it) } { compile [saveas T846m4b.java { interface T846m4a { void m(); } abstract class T846m4b implements T846m4a {} }] # Now, leave b in .class form only. If c changes accessibility, the compiler # goofed by looking for Miranda methods in b instead of inheriting from a compile -classpath . [saveas T846m4c.java { abstract class T846m4c extends T846m4b { abstract void m(); } }] } {FAIL}
A class inherits non-private accessible methods that it does not hide by redeclarationTest Case: 8.4.6-inheritance-2Expected Result: FAIL
Regression Test:
tcltest::test 8.4.6-inheritance-1 { A class inherits non-private accessible methods that it does not hide by redeclaration } { empty_class T846i1 { private int m() { return 1; } static class Inner extends T846i1 { int j = m(); // m not inherited, and enclosing m not available } } } {FAIL}
A class inherits non-private accessible methods that it does not hide by redeclarationTest Case: 8.4.6-inheritance-3Expected Result: FAIL
Regression Test:
tcltest::test 8.4.6-inheritance-2 { A class inherits non-private accessible methods that it does not hide by redeclaration } { empty_class T846i2 { private int m() { return 1; } class Inner extends T846i2 { int j = this.m(); // m not inherited } } } {FAIL}
A class inherits non-private accessible methods that it does not hide by redeclaration.Test Case: 8.4.6-inheritance-4Expected Result: FAIL
Regression Test:
tcltest::test 8.4.6-inheritance-3 { A class inherits non-private accessible methods that it does not hide by redeclaration. } { compile [saveas p1/T846i3a.java { package p1; public class T846i3a { int m() { return 1; } static class Inner extends p2.T846i3b { // package m not inherited from b, enclosing m unavailable int j = m(); } } }] [saveas p2/T846i3b.java { package p2; public class T846i3b extends p1.T846i3a { static int m() { return 1; } // does not override or hide T846i3a.m } }] } {FAIL}
A class inherits non-private accessible methods that it does not hide by redeclaration.Test Case: 8.4.6-inheritance-5Expected Result: FAIL
Regression Test:
tcltest::test 8.4.6-inheritance-4 { A class inherits non-private accessible methods that it does not hide by redeclaration. } { compile [saveas p1/T846i4a.java { package p1; public class T846i4a { int m() { return 1; } class Inner extends p2.T846i4b { // package m not inherited from b int j = this.m(); } } }] [saveas p2/T846i4b.java { package p2; public class T846i4b extends p1.T846i4a { static int m() { return 1; } // does not override or hide T846i4a.m } }] } {FAIL}
A class inherits non-private accessible methods that it does not hide by redeclaration.Test Case: 8.4.6-inheritance-6Expected Result: FAIL
Regression Test:
tcltest::test 8.4.6-inheritance-5 { A class inherits non-private accessible methods that it does not hide by redeclaration. } { compile [saveas p1/T846i5a.java { package p1; public class T846i5a { static int m() { return 1; } class Inner extends p2.T846i5b { // the superclass did not inherit m int j = this.m(); } } }] [saveas p2/T846i5b.java { package p2; public class T846i5b extends p1.T846i5a { int m() { return 1; } // does not override or hide T846i5a.m } }] } {FAIL}
A class inherits non-private accessible methods that it does not hide by redeclarationExpected Result: PASS
Regression Test:
tcltest::test 8.4.6-inheritance-6 { A class inherits non-private accessible methods that it does not hide by redeclaration } { empty_class T846i6 { class One { int m() { return 1; } } class Two extends One { { m(); this.m(); } } } } {PASS}
tests/jls/classes/method-declarations/inheritance-overriding-and-hiding/overriding
instance methods may not override staticTest Case: 8.4.6.1-override-2Expected Result: FAIL
Regression Test:
tcltest::test 8.4.6.1-override-1 { instance methods may not override static } { empty_class T8461o1 { static class One { static void m() {} } static class Two extends One { void m() {} } } } {FAIL}
overloading does not affect overridingTest Case: 8.4.6.1-override-3Expected Result: PASS
Regression Test:
tcltest::test 8.4.6.1-override-2 { overloading does not affect overriding } { empty_class T8461o2 { static class One { static void m() {} } static class Two extends One { int m(int i) throws Exception { return 1; } } static class Three extends Two { { m(); this.m(); try { m(1); this.m(1); } catch (Exception e) { } } } } } {PASS}
instance methods cannot override what is not accessible in superclassTest Case: 8.4.6.1-override-4Expected Result: PASS
Regression Test:
tcltest::test 8.4.6.1-override-3 { instance methods cannot override what is not accessible in superclass } { compile [saveas p1/T8461o3a.java { package p1; public class T8461o3a { static int m() { return 1; } } }] [saveas T8461o3b.java { class T8461o3b extends p1.T8461o3a { void m() throws Exception {} } }] } {PASS}
instance methods cannot override what is not accessible in superclassTest Case: 8.4.6.1-override-5Expected Result: FAIL
Regression Test:
tcltest::test 8.4.6.1-override-4 { instance methods cannot override what is not accessible in superclass } { compile [saveas p1/T8461o4a.java { package p1; public class T8461o4a { static void m() {} } class T8461o4c extends p2.T8461o4b { // if a.m were not static, this would override it. Therefore, there is // a conflict, and this instance method is overriding a static method, even // though a.m is not inherited void m() {} } }] [saveas p2/T8461o4b.java { package p2; public class T8461o4b extends p1.T8461o4a {} }] } {FAIL}
non-abstract methods implement abstract ones that they overrideTest Case: 8.4.6.1-override-6Expected Result: PASS
Regression Test:
tcltest::test 8.4.6.1-override-5 { non-abstract methods implement abstract ones that they override } { empty_class T8461o5 { interface I { void m(); } class C implements I { public void m() {} } } } {PASS}
instance methods cannot override what is not accessible in superclassExpected Result: FAIL
Regression Test:
tcltest::test 8.4.6.1-override-6 { instance methods cannot override what is not accessible in superclass } { compile [saveas p1/T8461o6a.java { package p1; public class T8461o6a { static void m() {} } class T8461o6c extends p2.T8461o6b { // if a.m were not static, this would override it. Therefore, there is // a conflict, and this instance method is overriding a static method, even // though a.m is not inherited protected void m() {} } }] [saveas p2/T8461o6b.java { package p2; public class T8461o6b extends p1.T8461o6a { protected void m() {} // legal } }] } {FAIL}
tests/jls/classes/method-declarations/inheritance-overriding-and-hiding/hiding
static methods may not override instanceTest Case: 8.4.6.2-hiding-2Expected Result: FAIL
Regression Test:
tcltest::test 8.4.6.2-hiding-1 { static methods may not override instance } { empty_class T8462h1 { static class One { void m() {} } static class Two extends One { static void m() {} } } } {FAIL}
overloading does not affect hidingTest Case: 8.4.6.2-hiding-3Expected Result: PASS
Regression Test:
tcltest::test 8.4.6.2-hiding-2 { overloading does not affect hiding } { empty_class T8462h2 { static class One { void m() {} } static class Two extends One { static int m(int i) throws Exception { return 1; } } static class Three extends Two { { m(); this.m(); try { m(1); this.m(1); } catch (Exception e) { } } } } } {PASS}
static methods cannot hide what is not accessible in superclassTest Case: 8.4.6.2-hiding-4Expected Result: PASS
Regression Test:
tcltest::test 8.4.6.2-hiding-3 { static methods cannot hide what is not accessible in superclass } { compile [saveas p1/T8462h3a.java { package p1; public class T8462h3a { int m() { return 1; } } }] [saveas T8462h3b.java { class T8462h3b extends p1.T8462h3a { static void m() throws Exception {} } }] } {PASS}
static methods cannot hide what is not accessible in superclassTest Case: 8.4.6.2-hiding-5Expected Result: FAIL
Regression Test:
tcltest::test 8.4.6.2-hiding-4 { static methods cannot hide what is not accessible in superclass } { compile [saveas p1/T8462h4a.java { package p1; public class T8462h4a { void m() {} } class T8462h4c extends p2.T8462h4b { // if this were not static, it would override a.m. Therefore, there is // a conflict, and this static method is hiding an instance method, even // though a.m is not inherited static void m() {} } }] [saveas p2/T8462h4b.java { package p2; public class T8462h4b extends p1.T8462h4a {} }] } {FAIL}
static methods cannot implement abstract onesTest Case: 8.4.6.2-hiding-6Expected Result: FAIL
Regression Test:
tcltest::test 8.4.6.2-hiding-5 { static methods cannot implement abstract ones } { empty_class T8462h5 { interface I { void m(); } static class C implements I { public static void m() {} } } } {FAIL}
static methods cannot hide what is not accessible in superclassExpected Result: FAIL
Regression Test:
tcltest::test 8.4.6.2-hiding-6 { static methods cannot hide what is not accessible in superclass } { compile [saveas p1/T8462h6a.java { package p1; public class T8462h6a { void m() {} } class T8462h6c extends p2.T8462h6b { // if this were not static, it would override a.m. Therefore, there is // a conflict, and this static method is hiding an instance method, even // though a.m is not inherited protected static void m() {} } }] [saveas p2/T8462h6b.java { package p2; public class T8462h6b extends p1.T8462h6a { protected static void m() {} // legal } }] } {FAIL}
tests/jls/classes/method-declarations/inheritance-overriding-and-hiding/requirements
Access of overriding or hiding methods must equal or exceed prior accessTest Case: 8.4.6.3-modifier-2Expected Result: PASS
Regression Test:
tcltest::test 8.4.6.3-modifier-1 { Access of overriding or hiding methods must equal or exceed prior access } { empty_class T8463m1 { static class One { public void pub() {} protected void pro() {} void pack() {} public static void spub() {} protected static void spro() {} static void spack() {} } static class Two extends One { public void pub() {} public void pro() {} public void pack() {} public static void spub() {} public static void spro() {} public static void spack() {} } static class Three extends One { protected static void spro() {} protected static void spack() {} } static class Four extends One { static void spack() {} } } } {PASS}
Access of overriding or hiding methods must equal or exceed prior accessTest Case: 8.4.6.3-modifier-3Expected Result: FAIL
Regression Test:
tcltest::test 8.4.6.3-modifier-2 { Access of overriding or hiding methods must equal or exceed prior access } { empty_class T8463m2 { class One { public void pub() {} } class Two extends One { protected void pub() {} } } } {FAIL}
Access of overriding or hiding methods must equal or exceed prior accessTest Case: 8.4.6.3-modifier-4Expected Result: FAIL
Regression Test:
tcltest::test 8.4.6.3-modifier-3 { Access of overriding or hiding methods must equal or exceed prior access } { empty_class T8463m3 { class One { public void pub() {} } class Two extends One { void pub() {} } } } {FAIL}
Access of overriding or hiding methods must equal or exceed prior accessTest Case: 8.4.6.3-modifier-5Expected Result: FAIL
Regression Test:
tcltest::test 8.4.6.3-modifier-4 { Access of overriding or hiding methods must equal or exceed prior access } { empty_class T8463m4 { class One { public void pub() {} } class Two extends One { private void pub() {} } } } {FAIL}
Access of overriding or hiding methods must equal or exceed prior accessTest Case: 8.4.6.3-modifier-6Expected Result: FAIL
Regression Test:
tcltest::test 8.4.6.3-modifier-5 { Access of overriding or hiding methods must equal or exceed prior access } { empty_class T8463m5 { class One { protected void pro() {} } class Two extends One { void pro() {} } } } {FAIL}
Access of overriding or hiding methods must equal or exceed prior accessTest Case: 8.4.6.3-modifier-7Expected Result: FAIL
Regression Test:
tcltest::test 8.4.6.3-modifier-6 { Access of overriding or hiding methods must equal or exceed prior access } { empty_class T8463m6 { class One { protected void pro() {} } class Two extends One { private void pro() {} } } } {FAIL}
Access of overriding or hiding methods must equal or exceed prior accessTest Case: 8.4.6.3-modifier-8Expected Result: FAIL
Regression Test:
tcltest::test 8.4.6.3-modifier-7 { Access of overriding or hiding methods must equal or exceed prior access } { empty_class T8463m7 { class One { void pack() {} } class Two extends One { private void pack() {} } } } {FAIL}
Access of overriding or hiding methods must equal or exceed prior accessTest Case: 8.4.6.3-modifier-9Expected Result: FAIL
Regression Test:
tcltest::test 8.4.6.3-modifier-8 { Access of overriding or hiding methods must equal or exceed prior access } { empty_class T8463m8 { static class One { public static void pub() {} } static class Two extends One { protected static void pub() {} } } } {FAIL}
Access of overriding or hiding methods must equal or exceed prior accessTest Case: 8.4.6.3-modifier-10Expected Result: FAIL
Regression Test:
tcltest::test 8.4.6.3-modifier-9 { Access of overriding or hiding methods must equal or exceed prior access } { empty_class T8463m9 { static class One { public static void pub() {} } static class Two extends One { static void pub() {} } } } {FAIL}
Access of overriding or hiding methods must equal or exceed prior accessTest Case: 8.4.6.3-modifier-11Expected Result: FAIL
Regression Test:
tcltest::test 8.4.6.3-modifier-10 { Access of overriding or hiding methods must equal or exceed prior access } { empty_class T8463m10 { static class One { public static void pub() {} } static class Two extends One { private static void pub() {} } } } {FAIL}
Access of overriding or hiding methods must equal or exceed prior accessTest Case: 8.4.6.3-modifier-12Expected Result: FAIL
Regression Test:
tcltest::test 8.4.6.3-modifier-11 { Access of overriding or hiding methods must equal or exceed prior access } { empty_class T8463m11 { static class One { protected static void pro() {} } static class Two extends One { static void pro() {} } } } {FAIL}
Access of overriding or hiding methods must equal or exceed prior accessTest Case: 8.4.6.3-modifier-13Expected Result: FAIL
Regression Test:
tcltest::test 8.4.6.3-modifier-12 { Access of overriding or hiding methods must equal or exceed prior access } { empty_class T8463m12 { static class One { protected static void pro() {} } static class Two extends One { private static void pro() {} } } } {FAIL}
Access of overriding or hiding methods must equal or exceed prior accessTest Case: 8.4.6.3-modifier-14Expected Result: FAIL
Regression Test:
tcltest::test 8.4.6.3-modifier-13 { Access of overriding or hiding methods must equal or exceed prior access } { empty_class T8463m13 { static class One { static void pack() {} } static class Two extends One { private static void pack() {} } } } {FAIL}
strictfp, abstract, native, and synchronized modifiers may change in overridden or hidden versionsTest Case: 8.4.6.3-private-1Expected Result: PASS
Regression Test:
tcltest::test 8.4.6.3-modifier-14 { strictfp, abstract, native, and synchronized modifiers may change in overridden or hidden versions } { empty_class T8463m14 { abstract static class One { strictfp void strict() {} abstract void abs(); native void nat(); synchronized void synch() {} static strictfp void sstrict() {} static native void snat(); static synchronized void ssynch() {} } abstract static class Two extends One { abstract void strict(); native void abs(); synchronized void nat() {} strictfp void synch() {} static native void sstrict(); static synchronized void snat() {} static strictfp void ssynch() {} } } } {PASS}
private methods are not overridden or hiddenTest Case: 8.4.6.3-default-1Expected Result: PASS
Regression Test:
tcltest::test 8.4.6.3-private-1 { private methods are not overridden or hidden } { empty_class T8463p1 { static class One { private final int m() { return 1; } } static class Two extends One { private static void m() {} } static class Three extends Two { Object m() { return null; } } } } {PASS}
It is possible to avoid inheriting a package scope method, but it must still be overridden correctlyTest Case: 8.4.6.3-default-2Expected Result: FAIL
Regression Test:
tcltest::test 8.4.6.3-default-1 { It is possible to avoid inheriting a package scope method, but it must still be overridden correctly } { compile [saveas p1/T8463d1a.java { package p1; public class T8463d1a { void m() {} } class T8463d1c extends p2.T8463d1b { // conflicting return type, even though a.m() not inherited int m() { return 1; } } }] [saveas p2/T8463d1b.java { package p2; public class T8463d1b extends p1.T8463d1a {} }] } {FAIL}
It is possible to avoid inheriting a package scope method, but it must still be hidden correctlyTest Case: 8.4.6.3-default-3Expected Result: FAIL
Regression Test:
tcltest::test 8.4.6.3-default-2 { It is possible to avoid inheriting a package scope method, but it must still be hidden correctly } { compile [saveas p1/T8463d2a.java { package p1; public class T8463d2a { static void m() {} } class T8463d2c extends p2.T8463d2b { // conflicting return type, even though a.m() not inherited static int m() { return 1; } } }] [saveas p2/T8463d2b.java { package p2; public class T8463d2b extends p1.T8463d2a {} }] } {FAIL}
It is possible to avoid inheriting a package scope method, but it must still be overridden correctlyTest Case: 8.4.6.3-default-4Expected Result: FAIL
Regression Test:
tcltest::test 8.4.6.3-default-3 { It is possible to avoid inheriting a package scope method, but it must still be overridden correctly } { compile [saveas p1/T8463d3a.java { package p1; public class T8463d3a { void m() {} } class T8463d3c extends p2.T8463d3b { // conflicting throws clause, even though a.m() not inherited void m() throws Exception {} } }] [saveas p2/T8463d3b.java { package p2; public class T8463d3b extends p1.T8463d3a {} }] } {FAIL}
It is possible to avoid inheriting a package scope method, but it must still be hidden correctlyTest Case: 8.4.6.3-default-5Expected Result: FAIL
Regression Test:
tcltest::test 8.4.6.3-default-4 { It is possible to avoid inheriting a package scope method, but it must still be hidden correctly } { compile [saveas p1/T8463d4a.java { package p1; public class T8463d4a { static void m() {} } class T8463d4c extends p2.T8463d4b { // conflicting throws clause, even though a.m() not inherited static void m() throws Exception {} } }] [saveas p2/T8463d4b.java { package p2; public class T8463d4b extends p1.T8463d4a {} }] } {FAIL}
It is possible to avoid inheriting a package scope method, but it must still be overridden correctlyTest Case: 8.4.6.3-default-6Expected Result: FAIL
Regression Test:
tcltest::test 8.4.6.3-default-5 { It is possible to avoid inheriting a package scope method, but it must still be overridden correctly } { compile [saveas p1/T8463d5a.java { package p1; public class T8463d5a { final void m() {} } class T8463d5c extends p2.T8463d5b { // can't override final a.m, even though not inherited void m() {} } }] [saveas p2/T8463d5b.java { package p2; public class T8463d5b extends p1.T8463d5a {} }] } {FAIL}
It is possible to avoid inheriting a package scope method, but it must still be hidden correctlyTest Case: 8.4.6.3-default-7Expected Result: FAIL
Regression Test:
tcltest::test 8.4.6.3-default-6 { It is possible to avoid inheriting a package scope method, but it must still be hidden correctly } { compile [saveas p1/T8463d6a.java { package p1; public class T8463d6a { static final void m() {} } class T8463d6c extends p2.T8463d6b { // can't override final a.m, even though not inherited static void m() {} } }] [saveas p2/T8463d6b.java { package p2; public class T8463d6b extends p1.T8463d6a {} }] } {FAIL}
It is possible to avoid inheriting a package scope method, but it must still be overridden correctlyTest Case: 8.4.6.3-default-8Expected Result: FAIL
Regression Test:
tcltest::test 8.4.6.3-default-7 { It is possible to avoid inheriting a package scope method, but it must still be overridden correctly } { compile [saveas p1/T8463d7a.java { package p1; public class T8463d7a { void m() {} } class T8463d7c extends p2.T8463d7b { // conflicting return type, even though a.m() not inherited public int m() { return 1; } } }] [saveas p2/T8463d7b.java { package p2; public class T8463d7b extends p1.T8463d7a { public int m() { return 1; } } }] } {FAIL}
It is possible to avoid inheriting a package scope method, but it must still be hidden correctlyTest Case: 8.4.6.3-default-9Expected Result: FAIL
Regression Test:
tcltest::test 8.4.6.3-default-8 { It is possible to avoid inheriting a package scope method, but it must still be hidden correctly } { compile [saveas p1/T8463d8a.java { package p1; public class T8463d8a { static void m() {} } class T8463d8c extends p2.T8463d8b { // conflicting return type, even though a.m() not inherited public static int m() { return 1; } } }] [saveas p2/T8463d8b.java { package p2; public class T8463d8b extends p1.T8463d8a { public static int m() { return 1; } } }] } {FAIL}
It is possible to avoid inheriting a package scope method, but it must still be overridden correctlyTest Case: 8.4.6.3-default-10Expected Result: FAIL
Regression Test:
tcltest::test 8.4.6.3-default-9 { It is possible to avoid inheriting a package scope method, but it must still be overridden correctly } { compile [saveas p1/T8463d9a.java { package p1; public class T8463d9a { void m() {} } class T8463d9c extends p2.T8463d9b { // conflicting throws clause, even though a.m() not inherited public void m() throws Exception {} } }] [saveas p2/T8463d9b.java { package p2; public class T8463d9b extends p1.T8463d9a { public void m() throws Exception {} } }] } {FAIL}
It is possible to avoid inheriting a package scope method, but it must still be hidden correctlyTest Case: 8.4.6.3-default-11Expected Result: FAIL
Regression Test:
tcltest::test 8.4.6.3-default-10 { It is possible to avoid inheriting a package scope method, but it must still be hidden correctly } { compile [saveas p1/T8463d10a.java { package p1; public class T8463d10a { static void m() {} } class T8463d10c extends p2.T8463d10b { // conflicting throws clause, even though a.m() not inherited public static void m() throws Exception {} } }] [saveas p2/T8463d10b.java { package p2; public class T8463d10b extends p1.T8463d10a { public static void m() throws Exception {} } }] } {FAIL}
It is possible to avoid inheriting a package scope method, but it must still be overridden correctlyTest Case: 8.4.6.3-default-12Expected Result: FAIL
Regression Test:
tcltest::test 8.4.6.3-default-11 { It is possible to avoid inheriting a package scope method, but it must still be overridden correctly } { compile [saveas p1/T8463d11a.java { package p1; public class T8463d11a { final void m() {} } class T8463d11c extends p2.T8463d11b { // can't override final a.m, even though not inherited public void m() {} } }] [saveas p2/T8463d11b.java { package p2; public class T8463d11b extends p1.T8463d11a { public void m() {} } }] } {FAIL}
It is possible to avoid inheriting a package scope method, but it must still be hidden correctlyTest Case: 8.4.6.3-default-13Expected Result: FAIL
Regression Test:
tcltest::test 8.4.6.3-default-12 { It is possible to avoid inheriting a package scope method, but it must still be hidden correctly } { compile [saveas p1/T8463d12a.java { package p1; public class T8463d12a { static final void m() {} } class T8463d12c extends p2.T8463d12b { // can't override final a.m, even though not inherited public static void m() {} } }] [saveas p2/T8463d12b.java { package p2; public class T8463d12b extends p1.T8463d12a { public static void m() {} } }] } {FAIL}
It is possible to avoid inheriting a package scope method, but it must still be overridden correctlyTest Case: 8.4.6.3-default-14Expected Result: FAIL
Regression Test:
tcltest::test 8.4.6.3-default-13 { It is possible to avoid inheriting a package scope method, but it must still be overridden correctly } { compile [saveas p1/T8463d13a.java { package p1; public class T8463d13a { public class E1 extends Exception {} public class E2 extends Exception {} void m() throws E1 {} } class T8463d13c extends p2.T8463d13b { // conflicting throws clause, even though a.m() not inherited public void m() throws E2 {} } }] [saveas p2/T8463d13b.java { package p2; public class T8463d13b extends p1.T8463d13a { public void m() throws E2 {} } }] } {FAIL}
It is possible to avoid inheriting a package scope method, but it must still be hidden correctlyTest Case: 8.4.6.3-signature-1Expected Result: FAIL
Regression Test:
tcltest::test 8.4.6.3-default-14 { It is possible to avoid inheriting a package scope method, but it must still be hidden correctly } { compile [saveas p1/T8463d14a.java { package p1; public class T8463d14a { public class E1 extends Exception {} public class E2 extends Exception {} static void m() throws E1 {} } class T8463d14c extends p2.T8463d14b { // conflicting throws clause, even though a.m() not inherited public static void m() throws E2 {} } }] [saveas p2/T8463d14b.java { package p2; public class T8463d14b extends p1.T8463d14a { public static void m() throws E2 {} } }] } {FAIL}
return types must not conflictTest Case: 8.4.6.3-signature-2Expected Result: FAIL
Regression Test:
tcltest::test 8.4.6.3-signature-1 { return types must not conflict } { empty_class T8463s1 { class One { int m() { return 1; } } class Two extends One { void m() {} } } } {FAIL}
return types must not conflictTest Case: 8.4.6.3-signature-3Expected Result: FAIL
Regression Test:
tcltest::test 8.4.6.3-signature-2 { return types must not conflict } { empty_class T8463s2 { static class One { static int m() { return 1; } } static class Two extends One { static void m() {} } } } {FAIL}
throws clauses must be compatibleTest Case: 8.4.6.3-signature-4Expected Result: FAIL
Regression Test:
tcltest::test 8.4.6.3-signature-3 { throws clauses must be compatible } { empty_class T8463s3 { class One { void m() {} } class Two extends One { void m() throws Exception {} } } } {FAIL}
throws clauses must be compatibleTest Case: 8.4.6.3-signature-5Expected Result: FAIL
Regression Test:
tcltest::test 8.4.6.3-signature-4 { throws clauses must be compatible } { empty_class T8463s4 { static class One { static void m() {} } static class Two extends One { static void m() throws Exception {} } } } {FAIL}
throws clauses must be compatibleTest Case: 8.4.6.3-signature-6Expected Result: PASS
Regression Test:
tcltest::test 8.4.6.3-signature-5 { throws clauses must be compatible } { empty_class T8463s5 { class E1 extends Exception {} class E2 extends Exception {} class E3 extends Exception {} interface I1 { void m() throws E1, E2; } interface I2 { void m() throws E2, E3; } class C implements I1, I2 { public void m() throws E2 {} } class D extends C { public void m() {} } } } {PASS}
throws clauses must be compatibleTest Case: 8.4.6.3-signature-7Expected Result: FAIL
Regression Test:
tcltest::test 8.4.6.3-signature-6 { throws clauses must be compatible } { empty_class T8463s6 { class E1 extends Exception {} class E2 extends Exception {} class E3 extends Exception {} interface I1 { void m() throws E1, E2; } interface I2 { void m() throws E2, E3; } class C implements I1, I2 { public void m() throws E1 {} } } } {FAIL}
throws clauses must be compatibleTest Case: 8.4.6.3-signature-8Expected Result: FAIL
Regression Test:
tcltest::test 8.4.6.3-signature-7 { throws clauses must be compatible } { empty_class T8463s7 { class E1 extends Exception {} class E2 extends Exception {} class E3 extends Exception {} interface I1 { void m() throws E1, E2; } interface I2 { void m() throws E2, E3; } class C implements I1, I2 { public void m() throws E3 {} } } } {FAIL}
throws clauses must be compatibleTest Case: 8.4.6.3-signature-9Expected Result: PASS
Regression Test:
tcltest::test 8.4.6.3-signature-8 { throws clauses must be compatible } { empty_class T8463s8 { class E1 extends Exception {} class E2 extends Exception {} interface I1 { void m() throws E1; } interface I2 { void m() throws E2; } abstract class C implements I1, I2 {} class D extends C { public void m() {} } } } {PASS}
throws clauses must be compatibleTest Case: 8.4.6.3-signature-10Expected Result: FAIL
Regression Test:
tcltest::test 8.4.6.3-signature-9 { throws clauses must be compatible } { empty_class T8463s9 { class E1 extends Exception {} class E2 extends Exception {} interface I1 { void m() throws E1; } interface I2 { void m() throws E2; } abstract class C implements I1, I2 {} class D extends C { public void m() throws E1 {} } } } {FAIL}
throws clauses must be compatibleTest Case: 8.4.6.3-signature-11Expected Result: FAIL
Regression Test:
tcltest::test 8.4.6.3-signature-10 { throws clauses must be compatible } { empty_class T8463s10 { class E1 extends Exception {} class E2 extends Exception {} interface I1 { void m() throws E1; } interface I2 { void m() throws E2; } abstract class C implements I1, I2 {} class D extends C { public void m() throws E2 {} } } } {FAIL}
throws clauses must be compatibleTest Case: 8.4.6.3-signature-12Expected Result: PASS
Regression Test:
tcltest::test 8.4.6.3-signature-11 { throws clauses must be compatible } { empty_class T8463s11 { class E1 extends Exception {} class E2 extends Exception {} abstract class C1 { public abstract void m() throws E1; } interface I { void m() throws E2; } abstract class C2 extends C1 implements I {} class D extends C2 { public void m() {} } } } {PASS}
throws clauses must be compatibleTest Case: 8.4.6.3-signature-13Expected Result: FAIL
Regression Test:
tcltest::test 8.4.6.3-signature-12 { throws clauses must be compatible } { empty_class T8463s12 { class E1 extends Exception {} class E2 extends Exception {} abstract class C1 { public abstract void m() throws E1; } interface I { void m() throws E2; } abstract class C2 extends C1 implements I {} class D extends C2 { public void m() throws E1 {} } } } {FAIL}
throws clauses must be compatibleTest Case: 8.4.6.3-signature-14Expected Result: FAIL
Regression Test:
tcltest::test 8.4.6.3-signature-13 { throws clauses must be compatible } { empty_class T8463s13 { class E1 extends Exception {} class E2 extends Exception {} abstract class C1 { public abstract void m() throws E1; } interface I { void m() throws E2; } abstract class C2 extends C1 implements I {} class D extends C2 { public void m() throws E2 {} } } } {FAIL}
throws clauses must be compatibleTest Case: 8.4.6.3-signature-15Expected Result: PASS
Regression Test:
tcltest::test 8.4.6.3-signature-14 { throws clauses must be compatible } { empty_class T8463s14 { class E1 extends Exception {} class E2 extends Exception {} abstract class C1 { abstract void m() throws E1; // note non-public accessibility } interface I { void m() throws E2; } abstract class C2 extends C1 implements I {} class D extends C2 { public void m() {} } } } {PASS}
throws clauses must be compatibleTest Case: 8.4.6.3-signature-16Expected Result: FAIL
Regression Test:
tcltest::test 8.4.6.3-signature-15 { throws clauses must be compatible } { empty_class T8463s15 { class E1 extends Exception {} class E2 extends Exception {} abstract class C1 { abstract void m() throws E1; // note non-public accessibility } interface I { void m() throws E2; } abstract class C2 extends C1 implements I {} class D extends C2 { public void m() throws E1 {} } } } {FAIL}
throws clauses must be compatibleExpected Result: FAIL
Regression Test:
tcltest::test 8.4.6.3-signature-16 { throws clauses must be compatible } { empty_class T8463s16 { class E1 extends Exception {} class E2 extends Exception {} abstract class C1 { abstract void m() throws E1; // note non-public accessibility } interface I { void m() throws E2; } abstract class C2 extends C1 implements I {} class D extends C2 { public void m() throws E2 {} } } } {FAIL}
tests/jls/classes/method-declarations/inheritance-overriding-and-hiding/inheriting-same-signature
multiple inheritance is not a problemTest Case: 8.4.6.4-multiple-2Expected Result: PASS
Regression Test:
tcltest::test 8.4.6.4-multiple-1 { multiple inheritance is not a problem } { empty_class T8464m1 { interface I1 { void m(); } interface I2 { void m(); } abstract class C implements I1, I2 { { m(); } } } } {PASS}
multiple paths still gives single inheritanceTest Case: 8.4.6.4-multiple-3Expected Result: PASS
Regression Test:
tcltest::test 8.4.6.4-multiple-2 { multiple paths still gives single inheritance } { empty_class T8464m2 { interface Super { void m(); } interface I1 extends Super {} interface I2 extends Super {} abstract class C implements I1, I2 { { m(); } } } } {PASS}
It is possible to have access to multiple methods, when one is not inherited across package boundaries. The inherited method need not match the hidden one.Test Case: 8.4.6.4-multiple-4Expected Result: PASS
Regression Test:
tcltest::test 8.4.6.4-multiple-3 { It is possible to have access to multiple methods, when one is not inherited across package boundaries. The inherited method need not match the hidden one. } { compile [saveas p1/T8464m3a.java { package p1; public class T8464m3a { int m() { return 1; } } class T8464m3c extends p2.T8464m3b { // inherited static b.m() does not clash with accessible instance a.m() int i = m(); } }] [saveas p2/T8464m3b.java { package p2; public class T8464m3b extends p1.T8464m3a { protected static int m() { return 1; } } }] } {PASS}
It is possible to have access to multiple methods, when one is not inherited across package boundaries. The inherited method need not match the hidden one.Test Case: 8.4.6.4-multiple-5Expected Result: PASS
Regression Test:
tcltest::test 8.4.6.4-multiple-4 { It is possible to have access to multiple methods, when one is not inherited across package boundaries. The inherited method need not match the hidden one. } { compile [saveas p1/T8464m4a.java { package p1; public class T8464m4a { void m() {} } class T8464m4c extends p2.T8464m4b { // inherited return type of b.m() does not clash with accessible a.m() int i = m(); } }] [saveas p2/T8464m4b.java { package p2; public class T8464m4b extends p1.T8464m4a { protected int m() { return 1; } } }] } {PASS}
It is possible to have access to multiple methods, when one is not inherited across package boundaries. The inherited method need not match the hidden one.Test Case: 8.4.6.4-multiple-6Expected Result: PASS
Regression Test:
tcltest::test 8.4.6.4-multiple-5 { It is possible to have access to multiple methods, when one is not inherited across package boundaries. The inherited method need not match the hidden one. } { compile [saveas p1/T8464m5a.java { package p1; public class T8464m5a { public class E extends Exception {} void m() {} } class T8464m5c extends p2.T8464m5b { // inherited throws clause of b.m() does not clash with accessible a.m() { try { m(); } catch (E e) { } } } }] [saveas p2/T8464m5b.java { package p2; public class T8464m5b extends p1.T8464m5a { protected void m() throws E {} } }] } {PASS}
It is possible to have access to multiple methods, when one is not inherited across package boundaries. The inherited method need not match the hidden one.Test Case: 8.4.6.4-multiple-7Expected Result: PASS
Regression Test:
tcltest::test 8.4.6.4-multiple-6 { It is possible to have access to multiple methods, when one is not inherited across package boundaries. The inherited method need not match the hidden one. } { compile [saveas p1/T8464m6a.java { package p1; public class T8464m6a { int m() throws Exception { return 1; } } class T8464m6c extends p2.T8464m6b { // inherited of b.m() does not clash with throws clause of accessible a.m() int i = m(); } }] [saveas p2/T8464m6b.java { package p2; public class T8464m6b extends p1.T8464m6a { protected int m() { return 1; } } }] } {PASS}
It is possible to have access to multiple methods, when one is not inherited across package boundaries. The inherited method need not match the hidden one.Test Case: 8.4.6.4-multiple-8Expected Result: PASS
Regression Test:
tcltest::test 8.4.6.4-multiple-7 { It is possible to have access to multiple methods, when one is not inherited across package boundaries. The inherited method need not match the hidden one. } { compile [saveas p1/T8464m7a.java { package p1; public class T8464m7a { final int m() { return 1; } } class T8464m7c extends p2.T8464m7b { // inherited b.m() does not violate final accessible a.m() int i = m(); } }] [saveas p2/T8464m7b.java { package p2; public class T8464m7b extends p1.T8464m7a { protected int m() { return 1; } } }] } {PASS}
It is possible to have access to multiple methods, when one is not inherited across package boundaries. The inherited method need not match the hidden one.Test Case: 8.4.6.4-multiple-9Expected Result: PASS
Regression Test:
tcltest::test 8.4.6.4-multiple-8 { It is possible to have access to multiple methods, when one is not inherited across package boundaries. The inherited method need not match the hidden one. } { compile [saveas p1/T8464m8a.java { package p1; public class T8464m8a { final int m() { return 1; } } abstract class T8464m8c extends p2.T8464m8b { // inherited abstract b.m() can be implemented outside package p1. // Therefore, even though accessible a.m() is final, it need not provide // the implementation of b.m() since it is not inherited // Note, however, that no concrete subclass of b can live in p1. int i = m(); } }] [saveas p2/T8464m8b.java { package p2; public abstract class T8464m8b extends p1.T8464m8a { protected abstract int m(); } }] } {PASS}
multiple inheritance is not a problemTest Case: 8.4.6.4-multiple-10Expected Result: PASS
Regression Test:
tcltest::test 8.4.6.4-multiple-9 { multiple inheritance is not a problem } { empty_class T8464m9 { interface I { void m(); } class C { public void m() {} } class D extends C implements I { { m(); } } } } {PASS}
multiple paths still gives single inheritanceTest Case: 8.4.6.4-multiple-11Expected Result: PASS
Regression Test:
tcltest::test 8.4.6.4-multiple-10 { multiple paths still gives single inheritance } { empty_class T8464m10 { interface I { void m(); } abstract class C implements I {} abstract class D extends C implements I { { m(); } } } } {PASS}
It is possible to have access to multiple methods, when one is not inherited across package boundaries. The inherited method need not match the hidden one.Test Case: 8.4.6.4-abstract-1Expected Result: PASS
Regression Test:
tcltest::test 8.4.6.4-multiple-11 { It is possible to have access to multiple methods, when one is not inherited across package boundaries. The inherited method need not match the hidden one. } { compile [saveas p1/T8464m11a.java { package p1; public abstract class T8464m11a { abstract int m(); } abstract class T8464m11c extends p2.T8464m11b { // inherited b.m() is concrete, but does not implement a.m() int i = m(); } }] [saveas p2/T8464m11b.java { package p2; public abstract class T8464m11b extends p1.T8464m11a { protected int m() { return 1; } } }] } {PASS}
in multiple inheritance, a non-abstract method must implement the inherited abstract onesTest Case: 8.4.6.4-abstract-2Expected Result: FAIL
Regression Test:
tcltest::test 8.4.6.4-abstract-1 { in multiple inheritance, a non-abstract method must implement the inherited abstract ones } { empty_class T8464a1 { interface I { void m(); } class C { void m() {} } class D extends C implements I {} // C.m() not public } } {FAIL}
in multiple inheritance, a non-abstract method must implement the inherited abstract onesTest Case: 8.4.6.4-abstract-3Expected Result: FAIL
Regression Test:
tcltest::test 8.4.6.4-abstract-2 { in multiple inheritance, a non-abstract method must implement the inherited abstract ones } { empty_class T8464a2 { interface I { void m(); } static class C { public static void m() {} } static class D extends C implements I {} // C.m() static } } {FAIL}
in multiple inheritance, a non-abstract method must implement the inherited abstract onesTest Case: 8.4.6.4-abstract-4Expected Result: FAIL
Regression Test:
tcltest::test 8.4.6.4-abstract-3 { in multiple inheritance, a non-abstract method must implement the inherited abstract ones } { empty_class T8464a3 { interface I { void m(); } class C { public int m() { return 1; } } class D extends C implements I {} // C.m() has wrong return type } } {FAIL}
in multiple inheritance, a non-abstract method must implement the inherited abstract onesTest Case: 8.4.6.4-abstract-5Expected Result: FAIL
Regression Test:
tcltest::test 8.4.6.4-abstract-4 { in multiple inheritance, a non-abstract method must implement the inherited abstract ones } { empty_class T8464a4 { interface I { void m(); } class C { public void m() throws Exception {} } class D extends C implements I {} // C.m() has incompatible throws } } {FAIL}
in multiple inheritance, a non-abstract method must implement the inherited abstract onesTest Case: 8.4.6.4-abstract-6Expected Result: PASS
Regression Test:
tcltest::test 8.4.6.4-abstract-5 { in multiple inheritance, a non-abstract method must implement the inherited abstract ones } { empty_class T8464a5 { interface I { void m() throws Exception; } class C { public void m() {} } class D extends C implements I {} } } {PASS}
in multiple inheritance with no implementation, all abstract methods are inherited, regardless of throws clausesTest Case: 8.4.6.4-abstract-7Expected Result: PASS
Regression Test:
tcltest::test 8.4.6.4-abstract-6 { in multiple inheritance with no implementation, all abstract methods are inherited, regardless of throws clauses } { empty_class T8464a6 { class E1 extends Exception {} class E2 extends Exception {} interface I1 { void m() throws E1; } interface I2 { void m() throws E2; } abstract class C implements I1, I2 {} } } {PASS}
in multiple inheritance with no implementation, all abstract methods are inheritedTest Case: 8.4.6.4-abstract-8Expected Result: PASS
Regression Test:
tcltest::test 8.4.6.4-abstract-7 { in multiple inheritance with no implementation, all abstract methods are inherited } { empty_class T8464a7 { abstract class C { abstract void m(); // note non-public accessibility } interface I { void m(); } abstract class D extends C implements I {} } } {PASS}
in multiple inheritance with no implementation, all abstract methods are inherited, regardless of throws clausesTest Case: 8.4.6.4-abstract-9Expected Result: PASS
Regression Test:
tcltest::test 8.4.6.4-abstract-8 { in multiple inheritance with no implementation, all abstract methods are inherited, regardless of throws clauses } { empty_class T8464a8 { class E1 extends Exception {} class E2 extends Exception {} abstract class C { public abstract void m() throws E1; } interface I { void m() throws E2; } abstract class D extends C implements I {} } } {PASS}
in multiple inheritance with no implementation, all abstract methods must have same return typeTest Case: 8.4.6.4-abstract-10Expected Result: FAIL
Regression Test:
tcltest::test 8.4.6.4-abstract-9 { in multiple inheritance with no implementation, all abstract methods must have same return type } { empty_class T8464a9 { interface I1 { void m(); } interface I2 { int m(); } abstract class C implements I1, I2 {} } } {FAIL}
in multiple inheritance with no implementation, all abstract methods must have same return typeExpected Result: FAIL
Regression Test:
tcltest::test 8.4.6.4-abstract-10 { in multiple inheritance with no implementation, all abstract methods must have same return type } { empty_class T8464a9 { abstract class C { public abstract void m(); } interface I { int m(); } abstract class D extends C implements I {} } } {FAIL}
tests/jls/classes/member-type-declarations
A class inherits non-private accessible types that it does not hide by redeclarationTest Case: 8.5-inheritance-2Expected Result: FAIL
Regression Test:
tcltest::test 8.5-inheritance-1 { A class inherits non-private accessible types that it does not hide by redeclaration } { empty_class T85i1 { private class C {} class Inner extends T85i1 { Inner.C c; } } } {FAIL}
A class inherits non-private accessible types that it does not hide by redeclarationTest Case: 8.5-inheritance-3Expected Result: FAIL
Regression Test:
tcltest::test 8.5-inheritance-2 { A class inherits non-private accessible types that it does not hide by redeclaration } { empty_class T85i2 { class C {} static class One extends T85i2 { private class C {} // T85i2.C not inherited... } static class Two extends One { Two.C c; // ...so neither C is inherited } } } {FAIL}
A class inherits non-private accessible types that it does not hide by redeclarationTest Case: 8.5-inheritance-4Expected Result: FAIL
Regression Test:
tcltest::test 8.5-inheritance-3 { A class inherits non-private accessible types that it does not hide by redeclaration } { compile [saveas p1/T85i3a.java { package p1; public class T85i3a { public class C {} static class Inner extends p2.T85i3b { Inner.C c; // package C not inherited from b } } }] [saveas p2/T85i3b.java { package p2; public class T85i3b extends p1.T85i3a { class C {} // hides T85i3a.C } }] } {FAIL}
A class inherits non-private accessible types that it does not hide by redeclarationTest Case: 8.5-inheritance-5Expected Result: PASS
Regression Test:
tcltest::test 8.5-inheritance-4 { A class inherits non-private accessible types that it does not hide by redeclaration } { empty_class T85i4 { class One { class C {} } class Two extends One { C c = new Two.C(); } } } {PASS}
Multiple types may be inherited with the same name, causing no problems if no ambiguous reference is madeTest Case: 8.5-inheritance-6Expected Result: PASS
Regression Test:
tcltest::test 8.5-inheritance-5 { Multiple types may be inherited with the same name, causing no problems if no ambiguous reference is made } { empty_class T85i5 { interface I { class Dup {} } class C { class Dup {} } class Sub extends C implements I {} } } {PASS}
Inheritance along multiple paths is still single inheritanceTest Case: 8.5-name-1Expected Result: PASS
Regression Test:
tcltest::test 8.5-inheritance-6 { Inheritance along multiple paths is still single inheritance } { empty_class T85i6 { interface Super { class C {} } interface I1 extends Super {} interface I2 extends Super {} class Sub implements I1, I2 { C c = new Sub.C(); } } } {PASS}
Duplicate type names are forbiddenTest Case: 8.5-hiding-1Expected Result: FAIL
Regression Test:
tcltest::test 8.5-name-1 { Duplicate type names are forbidden } { empty_class T85n1 { class Dup {} interface Dup {} } } {FAIL}
Types can hide supertype types regardless of accessibility relationshipsTest Case: 8.5-hiding-2Expected Result: PASS
Regression Test:
tcltest::test 8.5-hiding-1 { Types can hide supertype types regardless of accessibility relationships } { empty_class T85h1 { class One { public class Pub {} protected class Pro {} class Pack {} private class Priv {} } class Two extends One { private class Pub {} private class Pro {} private class Pack {} private class Priv {} } class Three extends One { class Pub {} class Pro {} class Pack {} class Priv {} } class Four extends One { protected class Pub {} protected class Pro {} protected class Pack {} protected class Priv {} } class Five extends One { public class Pub {} public class Pro {} public class Pack {} public class Priv {} } } } {PASS}
Types can hide supertype types regardless of type relationshipsTest Case: 8.5-hiding-3Expected Result: PASS
Regression Test:
tcltest::test 8.5-hiding-2 { Types can hide supertype types regardless of type relationships } { empty_class T85h2 { static class One { class C {} interface I {} } static class Two extends One { interface C {} class I {} } } } {PASS}
Types can hide supertype types regardless of instance relationshipsTest Case: 8.5-hiding-4Expected Result: PASS
Regression Test:
tcltest::test 8.5-hiding-3 { Types can hide supertype types regardless of instance relationships } { empty_class T85h3 { static class One { static class Stat {} class Inst {} } static class Two extends One { class Stat {} static class Inst {} } } } {PASS}
Types can hide supertype types regardless of modifier relationshipsExpected Result: PASS
Regression Test:
tcltest::test 8.5-hiding-4 { Types can hide supertype types regardless of modifier relationships } { empty_class T85h4 { class One { abstract class Abs {} final class Fin {} strictfp class Strict {} } class Two extends One { final class Abs {} strictfp class Fin {} abstract class Strict {} } } } {PASS}
tests/jls/classes/member-type-declarations/access-modifiers
public is a valid ClassModifier for a member classTest Case: 8.5.1-valid-modifier-2Expected Result: PASS
Regression Test:
tcltest::test 8.5.1-valid-modifier-1 { public is a valid ClassModifier for a member class } { empty_class T851vm1 { public class Inner {} } } {PASS}
protected is a valid ClassModifier for a member classTest Case: 8.5.1-valid-modifier-3Expected Result: PASS
Regression Test:
tcltest::test 8.5.1-valid-modifier-2 { protected is a valid ClassModifier for a member class } { empty_class T851vm2 { protected class Inner {} } } {PASS}
private is a valid ClassModifier for a member classTest Case: 8.5.1-valid-modifier-4Expected Result: PASS
Regression Test:
tcltest::test 8.5.1-valid-modifier-3 { private is a valid ClassModifier for a member class } { empty_class T851vm3 { protected class Inner {} } } {PASS}
static is a valid ClassModifier for a member classTest Case: 8.5.1-valid-modifier-5Expected Result: PASS
Regression Test:
tcltest::test 8.5.1-valid-modifier-4 { static is a valid ClassModifier for a member class } { empty_class T851vm4 { static class Member {} } } {PASS}
strictfp is a valid ClassModifier for a member classTest Case: 8.5.1-duplicate-modifier-1Expected Result: PASS
Regression Test:
tcltest::test 8.5.1-valid-modifier-5 { strictfp is a valid ClassModifier for a member class } { empty_class T851vm5 { strictfp class Member {} } } {PASS}
compile time error to specify a class modifier twiceTest Case: 8.5.1-duplicate-modifier-2Expected Result: FAIL
Regression Test:
tcltest::test 8.5.1-duplicate-modifier-1 { compile time error to specify a class modifier twice } { empty_class T851dm1 { static static class Member {} } } {FAIL}
compile time error to specify a class modifier twiceTest Case: 8.5.1-duplicate-modifier-3Expected Result: FAIL
Regression Test:
tcltest::test 8.5.1-duplicate-modifier-2 { compile time error to specify a class modifier twice } { empty_class T851dm2 { protected protected class Inner {} } } {FAIL}
compile time error to specify a class modifier twiceTest Case: 8.5.1-conflicting-modifier-1Expected Result: FAIL
Regression Test:
tcltest::test 8.5.1-duplicate-modifier-3 { compile time error to specify a class modifier twice } { empty_class T851dm3 { private private class Inner {} } } {FAIL}
conflicting modifiers must generate a compile time errorTest Case: 8.5.1-conflicting-modifier-2Expected Result: FAIL
Regression Test:
tcltest::test 8.5.1-conflicting-modifier-1 { conflicting modifiers must generate a compile time error } { empty_class T851cm1 { public private class Inner {} } } {FAIL}
conflicting modifiers must generate a compile time errorTest Case: 8.5.1-conflicting-modifier-3Expected Result: FAIL
Regression Test:
tcltest::test 8.5.1-conflicting-modifier-2 { conflicting modifiers must generate a compile time error } { empty_class T851cm2 { public protected class Inner {} } } {FAIL}
conflicting modifiers must generate a compile time errorTest Case: 8.5.1-conflicting-modifier-4Expected Result: FAIL
Regression Test:
tcltest::test 8.5.1-conflicting-modifier-3 { conflicting modifiers must generate a compile time error } { empty_class T851cm3 { protected public class Inner {} } } {FAIL}
conflicting modifiers must generate a compile time errorTest Case: 8.5.1-conflicting-modifier-5Expected Result: FAIL
Regression Test:
tcltest::test 8.5.1-conflicting-modifier-4 { conflicting modifiers must generate a compile time error } { empty_class T851cm4 { protected private class Inner {} } } {FAIL}
conflicting modifiers must generate a compile time errorTest Case: 8.5.1-conflicting-modifier-6Expected Result: FAIL
Regression Test:
tcltest::test 8.5.1-conflicting-modifier-5 { conflicting modifiers must generate a compile time error } { empty_class T851cm5 { private public class Inner {} } } {FAIL}
conflicting modifiers must generate a compile time errorExpected Result: FAIL
Regression Test:
tcltest::test 8.5.1-conflicting-modifier-6 { conflicting modifiers must generate a compile time error } { empty_class T851cm6 { private protected class Inner {} } } {FAIL}
tests/jls/classes/member-type-declarations/static-member-type-declarations
a member type with the static modifier may use static members of the enclosing classTest Case: 8.5.2-static-member-usage-2Expected Result: PASS
Regression Test:
tcltest::test 8.5.2-static-member-usage-1 { a member type with the static modifier may use static members of the enclosing class } { empty_class T852smu1 { static int foo; static class T852smu1_Test { T852smu1_Test() { foo = 0; } } } } {PASS}
a member type with the static modifier may use static members of the enclosing classTest Case: 8.5.2-non-static-member-usage-1Expected Result: PASS
Regression Test:
tcltest::test 8.5.2-static-member-usage-2 { a member type with the static modifier may use static members of the enclosing class } { empty_class T852smu2 { static void foo() {} static class T852smu2_Test { T852smu2_Test() { foo(); } } } } {PASS}
It is a compile-time error if a static class contains a usage of a non-static member of the enclosing classTest Case: 8.5.2-non-static-member-usage-2Expected Result: FAIL
Regression Test:
tcltest::test 8.5.2-non-static-member-usage-1 { It is a compile-time error if a static class contains a usage of a non-static member of the enclosing class } { empty_class T852nsmu1 { int foo; static class T852nsmu1_Test { T852nsmu1_Test() { foo = 0; } } } } {FAIL}
It is a compile-time error if a static class contains a usage of a non-static member of the enclosing classTest Case: 8.5.2-accessible-static-member-usage-1Expected Result: FAIL
Regression Test:
tcltest::test 8.5.2-non-static-member-usage-2 { It is a compile-time error if a static class contains a usage of a non-static member of the enclosing class } { empty_class T852nsmu2 { void foo() {} static class T852nsmu2_Test { T852nsmu2_Test() { foo(); } } } } {FAIL}
a member type with the static modifer may access private static members of the enclosing classTest Case: 8.5.2-accessible-static-member-usage-2Expected Result: PASS
Regression Test:
tcltest::test 8.5.2-accessible-static-member-usage-1 { a member type with the static modifer may access private static members of the enclosing class } { empty_class T852asmu1 { private static int foo; static class T852asmu1_Test { T852asmu1_Test() { foo = 0; } } } } {PASS}
a member type with the static modifer may access private static members of the enclosing classTest Case: 8.5.2-inherited-non-static-member-usage-1Expected Result: PASS
Regression Test:
tcltest::test 8.5.2-accessible-static-member-usage-2 { a member type with the static modifer may access private static members of the enclosing class } { empty_class T852asmu2 { private static void foo() {} static class T852asmu2_Test { T852asmu2_Test() { foo(); } } } } {PASS}
a static member type may use non-static members of a superclass that happens to be the enclosing classTest Case: 8.5.2-inherited-non-static-member-usage-2Expected Result: PASS
Regression Test:
tcltest::test 8.5.2-inherited-non-static-member-usage-1 { a static member type may use non-static members of a superclass that happens to be the enclosing class } { empty_class T852insmu1 { int foo; static class T852insmu1_Test extends T852insmu1 { T852insmu1_Test() { foo = 0; } } } } {PASS}
a static member type may use non-static members of a superclass that happens to be the enclosing classTest Case: 8.5.2-accessible-inherited-non-static-member-usage-1Expected Result: PASS
Regression Test:
tcltest::test 8.5.2-inherited-non-static-member-usage-2 { a static member type may use non-static members of a superclass that happens to be the enclosing class } { empty_class T852insmu2 { void foo() {} static class T852insmu2_Test extends T852insmu2 { T852insmu2_Test() { foo(); } } } } {PASS}
a static member type may use private non-static members of a superclass that happens to be the enclosing classTest Case: 8.5.2-accessible-inherited-non-static-member-usage-2Expected Result: PASS
Regression Test:
tcltest::test 8.5.2-accessible-inherited-non-static-member-usage-1 { a static member type may use private non-static members of a superclass that happens to be the enclosing class } { empty_class T852ainsmu1 { private int foo; static class T852ainsmu1_Test extends T852ainsmu1 { T852ainsmu1_Test() { super.foo = 0; } } } } {PASS}
a static member type may use private non-static members of a superclass that happens to be the enclosing classExpected Result: PASS
Regression Test:
tcltest::test 8.5.2-accessible-inherited-non-static-member-usage-2 { a static member type may use private non-static members of a superclass that happens to be the enclosing class } { empty_class T852ainsmu2 { private void foo() {} static class T852ainsmu2_Test extends T852ainsmu2 { T852ainsmu2_Test() { super.foo(); } } } } {PASS}
tests/jls/classes/instance-initializers
Instance initializers of non-anonymous classes may throw checked exceptions only if all constructors have compatible throws clausesTest Case: 8.6-checked-exception-2Expected Result: FAIL
Regression Test:
tcltest::test 8.6-checked-exception-1 { Instance initializers of non-anonymous classes may throw checked exceptions only if all constructors have compatible throws clauses } { empty_class T86ce1 { { if (true) throw new ClassNotFoundException(); } } } {FAIL}
Instance initializers of non-anonymous classes may throw checked exceptions only if all constructors have compatible throws clausesTest Case: 8.6-checked-exception-3Expected Result: PASS
Regression Test:
tcltest::test 8.6-checked-exception-2 { Instance initializers of non-anonymous classes may throw checked exceptions only if all constructors have compatible throws clauses } { empty_class T86ce2 { { if (true) throw new ClassNotFoundException(); } T86ce2() throws ClassNotFoundException {} } } {PASS}
Instance initializers of non-anonymous classes may throw checked exceptions only if all constructors have compatible throws clausesTest Case: 8.6-checked-exception-4Expected Result: FAIL
Regression Test:
tcltest::test 8.6-checked-exception-3 { Instance initializers of non-anonymous classes may throw checked exceptions only if all constructors have compatible throws clauses } { empty_class T86ce3 { { if (true) throw new ClassNotFoundException(); } T86ce3() throws ClassNotFoundException {} T86ce3(int i) {} } } {FAIL}
Instance initializers of non-anonymous classes may throw checked exceptions only if all constructors have compatible throws clausesTest Case: 8.6-checked-exception-5Expected Result: PASS
Regression Test:
tcltest::test 8.6-checked-exception-4 { Instance initializers of non-anonymous classes may throw checked exceptions only if all constructors have compatible throws clauses } { empty_class T86ce4 { { if (true) throw new ClassNotFoundException(); } T86ce4() throws Throwable {} } } {PASS}
Instance initializers of anonymous classes may throw any exception, and the generated constructor must automatically throw such exceptionsTest Case: 8.6-checked-exception-6Expected Result: PASS
Regression Test:
tcltest::test 8.6-checked-exception-5 { Instance initializers of anonymous classes may throw any exception, and the generated constructor must automatically throw such exceptions } { empty_main T86ce5 { try { new Object() { { if (true) throw new ClassNotFoundException(); } }; } catch (ClassNotFoundException e) { } } } {PASS}
Instance initializers of anonymous classes may throw any exception, and the generated constructor must automatically throw such exceptionsTest Case: 8.6-checked-exception-7Expected Result: PASS
Regression Test:
tcltest::test 8.6-checked-exception-6 { Instance initializers of anonymous classes may throw any exception, and the generated constructor must automatically throw such exceptions } { empty_class T86ce6 { void foo() throws ClassNotFoundException { new Object() { { if (true) throw new ClassNotFoundException(); } }; } } } {PASS}
Instance initializers of non-anonymous classes may throw checked exceptions only if all constructors have compatible throws clausesTest Case: 8.6-checked-exception-8Expected Result: FAIL
Regression Test:
tcltest::test 8.6-checked-exception-7 { Instance initializers of non-anonymous classes may throw checked exceptions only if all constructors have compatible throws clauses } { empty_class T86ce7 { int m() throws ClassNotFoundException { return 1; } { m(); } } } {FAIL}
Instance initializers of non-anonymous classes may throw checked exceptions only if all constructors have compatible throws clausesTest Case: 8.6-checked-exception-9Expected Result: PASS
Regression Test:
tcltest::test 8.6-checked-exception-8 { Instance initializers of non-anonymous classes may throw checked exceptions only if all constructors have compatible throws clauses } { empty_class T86ce8 { int m() throws ClassNotFoundException { return 1; } { m(); } T86ce8() throws ClassNotFoundException {} } } {PASS}
Instance initializers of non-anonymous classes may throw checked exceptions only if all constructors have compatible throws clausesTest Case: 8.6-checked-exception-10Expected Result: FAIL
Regression Test:
tcltest::test 8.6-checked-exception-9 { Instance initializers of non-anonymous classes may throw checked exceptions only if all constructors have compatible throws clauses } { empty_class T86ce9 { int m() throws ClassNotFoundException { return 1; } { m(); } T86ce9() throws ClassNotFoundException {} T86ce9(int i) {} } } {FAIL}
Instance initializers of non-anonymous classes may throw checked exceptions only if all constructors have compatible throws clausesTest Case: 8.6-checked-exception-11Expected Result: PASS
Regression Test:
tcltest::test 8.6-checked-exception-10 { Instance initializers of non-anonymous classes may throw checked exceptions only if all constructors have compatible throws clauses } { empty_class T86ce10 { int m() throws ClassNotFoundException { return 1; } { m(); } T86ce10() throws Throwable {} } } {PASS}
Instance initializers of anonymous classes may throw any exception, and the generated constructor must automatically throw such exceptionsTest Case: 8.6-checked-exception-12Expected Result: PASS
Regression Test:
tcltest::test 8.6-checked-exception-11 { Instance initializers of anonymous classes may throw any exception, and the generated constructor must automatically throw such exceptions } { empty_main T86ce11 { try { new Object() { int m() throws ClassNotFoundException { return 1; } { m(); } }; } catch (ClassNotFoundException e) { } } } {PASS}
Instance initializers of anonymous classes may throw any exception, and the generated constructor must automatically throw such exceptionsTest Case: 8.6-complete-1Expected Result: PASS
Regression Test:
tcltest::test 8.6-checked-exception-12 { Instance initializers of anonymous classes may throw any exception, and the generated constructor must automatically throw such exceptions } { empty_class T86ce12 { void foo() throws ClassNotFoundException { new Object() { int m() throws ClassNotFoundException { return 1; } { m(); } }; } } } {PASS}
Instance initializers must be able to complete normallyTest Case: 8.6-complete-2Expected Result: FAIL
Regression Test:
tcltest::test 8.6-complete-1 { Instance initializers must be able to complete normally } { empty_class T86c1 { { throw new RuntimeException(); } } } {FAIL}
Instance initializers must be able to complete normallyTest Case: 8.6-complete-3Expected Result: FAIL
Regression Test:
tcltest::test 8.6-complete-2 { Instance initializers must be able to complete normally } { empty_class T86c2 { { throw new RuntimeException(); } T86c2() throws RuntimeException {} } } {FAIL}
Instance initializers must be able to complete normally, by 14.20, if(true) always completes normallyTest Case: 8.6-complete-4Expected Result: PASS
Regression Test:
tcltest::test 8.6-complete-3 { Instance initializers must be able to complete normally, by 14.20, if(true) always completes normally } { empty_class T86c3 { { if (true) throw new RuntimeException(); } } } {PASS}
Instance initializers must be able to complete normallyTest Case: 8.6-complete-5Expected Result: PASS
Regression Test:
tcltest::test 8.6-complete-4 { Instance initializers must be able to complete normally } { empty_class T86c4 { int m() throws ClassNotFoundException { return 1; } { m(); } T86c4() throws ClassNotFoundException {} } } {PASS}
Instance initializers must be able to complete normallyTest Case: 8.6-complete-6Expected Result: FAIL
Regression Test:
tcltest::test 8.6-complete-5 { Instance initializers must be able to complete normally } { empty_class T86c5 { { while (true); } } } {FAIL}
Instance initializers must be able to complete normally, by 14.20, if(true) always completes normallyTest Case: 8.6-return-1Expected Result: PASS
Regression Test:
tcltest::test 8.6-complete-6 { Instance initializers must be able to complete normally, by 14.20, if(true) always completes normally } { empty_class T86c6 { { if (true) while (true); } } } {PASS}
Instance initializers may not returnTest Case: 8.6-return-2Expected Result: FAIL
Regression Test:
tcltest::test 8.6-return-1 { Instance initializers may not return } { empty_class T86r1 { { return; } } } {FAIL}
Instance initializers may not returnTest Case: 8.6-return-3Expected Result: FAIL
Regression Test:
tcltest::test 8.6-return-2 { Instance initializers may not return } { empty_class T86r2 { { if (false) return; } } } {FAIL}
Instance initializers may not returnTest Case: 8.6-return-4Expected Result: FAIL
Regression Test:
tcltest::test 8.6-return-3 { Instance initializers may not return } { empty_class T86r3 { { return 1; } } } {FAIL}
Instance initializers may not returnTest Case: 8.6-this-1Expected Result: FAIL
Regression Test:
tcltest::test 8.6-return-4 { Instance initializers may not return } { empty_class T86r4 { { if (false) return 1; } } } {FAIL}
Instance initializers may access thisTest Case: 8.6-super-1Expected Result: PASS
Regression Test:
tcltest::test 8.6-this-1 { Instance initializers may access this } { empty_class T86t1 { { this.toString(); } } } {PASS}
Instance initializers may access superTest Case: 8.6-modifier-1Expected Result: PASS
Regression Test:
tcltest::test 8.6-super-1 { Instance initializers may access super } { empty_class T86s1 { { super.toString(); } } } {PASS}
Instance initializers may not have modifiersTest Case: 8.6-modifier-2Expected Result: FAIL
Regression Test:
tcltest::test 8.6-modifier-1 { Instance initializers may not have modifiers } { empty_class T86m1 { public {} } } {FAIL}
Instance initializers may not have modifiersTest Case: 8.6-modifier-3Expected Result: FAIL
Regression Test:
tcltest::test 8.6-modifier-2 { Instance initializers may not have modifiers } { empty_class T86m2 { protected {} } } {FAIL}
Instance initializers may not have modifiersTest Case: 8.6-modifier-4Expected Result: FAIL
Regression Test:
tcltest::test 8.6-modifier-3 { Instance initializers may not have modifiers } { empty_class T86m3 { private {} } } {FAIL}
Instance initializers may not have modifiersTest Case: 8.6-modifier-5Expected Result: FAIL
Regression Test:
tcltest::test 8.6-modifier-4 { Instance initializers may not have modifiers } { empty_class T86m4 { final {} } } {FAIL}
Instance initializers may not have modifiersTest Case: 8.6-modifier-6Expected Result: FAIL
Regression Test:
tcltest::test 8.6-modifier-5 { Instance initializers may not have modifiers } { empty_class T86m5 { synchronized {} } } {FAIL}
Instance initializers may not have modifiersTest Case: 8.6-modifier-7Expected Result: FAIL
Regression Test:
tcltest::test 8.6-modifier-6 { Instance initializers may not have modifiers } { empty_class T86m6 { volatile {} } } {FAIL}
Instance initializers may not have modifiersTest Case: 8.6-modifier-8Expected Result: FAIL
Regression Test:
tcltest::test 8.6-modifier-7 { Instance initializers may not have modifiers } { empty_class T86m7 { transient {} } } {FAIL}
Instance initializers may not have modifiersTest Case: 8.6-modifier-9Expected Result: FAIL
Regression Test:
tcltest::test 8.6-modifier-8 { Instance initializers may not have modifiers } { empty_class T86m8 { native {} } } {FAIL}
Instance initializers may not have modifiersTest Case: 8.6-modifier-10Expected Result: FAIL
Regression Test:
tcltest::test 8.6-modifier-9 { Instance initializers may not have modifiers } { empty_class T86m9 { abstract {} } } {FAIL}
Instance initializers may not have modifiersExpected Result: FAIL
Regression Test:
tcltest::test 8.6-modifier-10 { Instance initializers may not have modifiers } { empty_class T86m10 { strictfp {} } } {FAIL}
tests/jls/classes/static-initializers
Static initializers may not throw checked exceptionsTest Case: 8.7-checked-exception-2Expected Result: FAIL
Regression Test:
tcltest::test 8.7-checked-exception-1 { Static initializers may not throw checked exceptions } { empty_class T87ce1 { static { if (false) throw new ClassNotFoundException(); } } } {FAIL}
Static initializers may not throw checked exceptionsTest Case: 8.7-checked-exception-3Expected Result: FAIL
Regression Test:
tcltest::test 8.7-checked-exception-2 { Static initializers may not throw checked exceptions } { empty_class T87ce2 { static int m() throws ClassNotFoundException { return 1; } static { m(); } } } {FAIL}
Static initializers may not throw checked exceptionsTest Case: 8.7-complete-1Expected Result: FAIL
Regression Test:
tcltest::test 8.7-checked-exception-3 { Static initializers may not throw checked exceptions } { empty_class T87ce3 { static int m() throws ClassNotFoundException { return 1; } static { if (false) m(); } } } {FAIL}
Static initializers must be able to complete normallyTest Case: 8.7-complete-2Expected Result: FAIL
Regression Test:
tcltest::test 8.7-complete-1 { Static initializers must be able to complete normally } { empty_class T87c1 { static { throw new RuntimeException(); } } } {FAIL}
Static initializers must be able to complete normally, by 14.20, if(true) always completes normallyTest Case: 8.7-complete-3Expected Result: PASS
Regression Test:
tcltest::test 8.7-complete-2 { Static initializers must be able to complete normally, by 14.20, if(true) always completes normally } { empty_class T87c2 { static { if (true) throw new RuntimeException(); } } } {PASS}
Static initializers must be able to complete normallyTest Case: 8.7-complete-4Expected Result: FAIL
Regression Test:
tcltest::test 8.7-complete-3 { Static initializers must be able to complete normally } { empty_class T87c3 { static { while (true); } } } {FAIL}
Static initializers must be able to complete normally, by 14.20, if(true) always completes normallyTest Case: 8.7-return-1Expected Result: PASS
Regression Test:
tcltest::test 8.7-complete-4 { Static initializers must be able to complete normally, by 14.20, if(true) always completes normally } { empty_class T87c4 { static { if (true) while (true); } } } {PASS}
Static initializers may not returnTest Case: 8.7-return-2Expected Result: FAIL
Regression Test:
tcltest::test 8.7-return-1 { Static initializers may not return } { empty_class T87r1 { static { return; } } } {FAIL}
Static initializers may not returnTest Case: 8.7-return-3Expected Result: FAIL
Regression Test:
tcltest::test 8.7-return-2 { Static initializers may not return } { empty_class T87r2 { static { if (false) return; } } } {FAIL}
Static initializers may not returnTest Case: 8.7-return-4Expected Result: FAIL
Regression Test:
tcltest::test 8.7-return-3 { Static initializers may not return } { empty_class T87r3 { static { return 1; } } } {FAIL}
Static initializers may not returnTest Case: 8.7-this-1Expected Result: FAIL
Regression Test:
tcltest::test 8.7-return-4 { Static initializers may not return } { empty_class T87r4 { static { if (false) return 1; } } } {FAIL}
Static initializers may not access thisTest Case: 8.7-this-2Expected Result: FAIL
Regression Test:
tcltest::test 8.7-this-1 { Static initializers may not access this } { empty_class T87t1 { static { this.toString(); } } } {FAIL}
Static initializers may not access this, not even implicitlyTest Case: 8.7-super-1Expected Result: FAIL
Regression Test:
tcltest::test 8.7-this-2 { Static initializers may not access this, not even implicitly } { empty_class T87t2 { static { toString(); } } } {FAIL}
Static initializers may not access superTest Case: 8.7-modifier-1Expected Result: FAIL
Regression Test:
tcltest::test 8.7-super-1 { Static initializers may not access super } { empty_class T87s1 { static { super.toString(); } } } {FAIL}
Static initializers may not have modifiersTest Case: 8.7-modifier-2Expected Result: FAIL
Regression Test:
tcltest::test 8.7-modifier-1 { Static initializers may not have modifiers } { empty_class T87m1 { public static {} } } {FAIL}
Static initializers may not have modifiersTest Case: 8.7-modifier-3Expected Result: FAIL
Regression Test:
tcltest::test 8.7-modifier-2 { Static initializers may not have modifiers } { empty_class T87m2 { protected static {} } } {FAIL}
Static initializers may not have modifiersTest Case: 8.7-modifier-4Expected Result: FAIL
Regression Test:
tcltest::test 8.7-modifier-3 { Static initializers may not have modifiers } { empty_class T87m3 { private static {} } } {FAIL}
Static initializers may not have modifiersTest Case: 8.7-modifier-5Expected Result: FAIL
Regression Test:
tcltest::test 8.7-modifier-4 { Static initializers may not have modifiers } { empty_class T87m4 { final static {} } } {FAIL}
Static initializers may not have modifiersTest Case: 8.7-modifier-6Expected Result: FAIL
Regression Test:
tcltest::test 8.7-modifier-5 { Static initializers may not have modifiers } { empty_class T87m5 { synchronized static {} } } {FAIL}
Static initializers may not have modifiersTest Case: 8.7-modifier-7Expected Result: FAIL
Regression Test:
tcltest::test 8.7-modifier-6 { Static initializers may not have modifiers } { empty_class T87m6 { volatile static {} } } {FAIL}
Static initializers may not have modifiersTest Case: 8.7-modifier-8Expected Result: FAIL
Regression Test:
tcltest::test 8.7-modifier-7 { Static initializers may not have modifiers } { empty_class T87m7 { transient static {} } } {FAIL}
Static initializers may not have modifiersTest Case: 8.7-modifier-9Expected Result: FAIL
Regression Test:
tcltest::test 8.7-modifier-8 { Static initializers may not have modifiers } { empty_class T87m8 { native static {} } } {FAIL}
Static initializers may not have modifiersTest Case: 8.7-modifier-10Expected Result: FAIL
Regression Test:
tcltest::test 8.7-modifier-9 { Static initializers may not have modifiers } { empty_class T87m9 { abstract static {} } } {FAIL}
Static initializers may not have modifiersTest Case: 8.7-modifier-11Expected Result: FAIL
Regression Test:
tcltest::test 8.7-modifier-10 { Static initializers may not have modifiers } { empty_class T87m10 { strictfp static {} } } {FAIL}
Static initializers may not have modifiersTest Case: 8.7-modifier-12Expected Result: FAIL
Regression Test:
tcltest::test 8.7-modifier-11 { Static initializers may not have modifiers } { empty_class T87m11 { static public {} } } {FAIL}
Static initializers may not have modifiersTest Case: 8.7-modifier-13Expected Result: FAIL
Regression Test:
tcltest::test 8.7-modifier-12 { Static initializers may not have modifiers } { empty_class T87m12 { static protected {} } } {FAIL}
Static initializers may not have modifiersTest Case: 8.7-modifier-14Expected Result: FAIL
Regression Test:
tcltest::test 8.7-modifier-13 { Static initializers may not have modifiers } { empty_class T87m13 { static private {} } } {FAIL}
Static initializers may not have modifiersTest Case: 8.7-modifier-15Expected Result: FAIL
Regression Test:
tcltest::test 8.7-modifier-14 { Static initializers may not have modifiers } { empty_class T87m14 { static final {} } } {FAIL}
Static initializers may not have modifiersTest Case: 8.7-modifier-16Expected Result: FAIL
Regression Test:
tcltest::test 8.7-modifier-15 { Static initializers may not have modifiers } { empty_class T87m15 { static synchronized {} } } {FAIL}
Static initializers may not have modifiersTest Case: 8.7-modifier-17Expected Result: FAIL
Regression Test:
tcltest::test 8.7-modifier-16 { Static initializers may not have modifiers } { empty_class T87m16 { static volatile {} } } {FAIL}
Static initializers may not have modifiersTest Case: 8.7-modifier-18Expected Result: FAIL
Regression Test:
tcltest::test 8.7-modifier-17 { Static initializers may not have modifiers } { empty_class T87m17 { static transient {} } } {FAIL}
Static initializers may not have modifiersTest Case: 8.7-modifier-19Expected Result: FAIL
Regression Test:
tcltest::test 8.7-modifier-18 { Static initializers may not have modifiers } { empty_class T87m18 { static native {} } } {FAIL}
Static initializers may not have modifiersTest Case: 8.7-modifier-20Expected Result: FAIL
Regression Test:
tcltest::test 8.7-modifier-19 { Static initializers may not have modifiers } { empty_class T87m19 { static abstract {} } } {FAIL}
Static initializers may not have modifiersTest Case: 8.7-modifier-21Expected Result: FAIL
Regression Test:
tcltest::test 8.7-modifier-20 { Static initializers may not have modifiers } { empty_class T87m20 { static strictfp {} } } {FAIL}
Static initializers may not have modifiersExpected Result: FAIL
Regression Test:
tcltest::test 8.7-modifier-21 { Static initializers may not have modifiers } { empty_class T87m21 { static static {} } } {FAIL}
tests/jls/classes/constructor-declarations
SimpleTypeName in the ConstructorDeclarator must be the simple name of the class that contains the constructor declarationTest Case: 8.8-simpletypename-2Expected Result: PASS
Regression Test:
tcltest::test 8.8-simpletypename-1 { SimpleTypeName in the ConstructorDeclarator must be the simple name of the class that contains the constructor declaration } { empty_class T88stn1 "T88stn1() {}" } {PASS}
SimpleTypeName in the ConstructorDeclarator must be the simple name of the class that contains the constructor declarationTest Case: 8.8-simpletypename-3Expected Result: FAIL
Regression Test:
tcltest::test 8.8-simpletypename-2 { SimpleTypeName in the ConstructorDeclarator must be the simple name of the class that contains the constructor declaration } { empty_class T88stn2 "not_ctor() {}" } {FAIL}
SimpleTypeName in the ConstructorDeclarator must be the simple name of the class that contains the constructor declarationTest Case: 8.8-simpletypename-4Expected Result: FAIL
Regression Test:
tcltest::test 8.8-simpletypename-3 { SimpleTypeName in the ConstructorDeclarator must be the simple name of the class that contains the constructor declaration } { empty_class T88stn3 { class Inner { not_ctor() {} } } } {FAIL}
SimpleTypeName in the ConstructorDeclarator must be the simple name of the class that contains the constructor declarationTest Case: 8.8-example-1Expected Result: FAIL
Regression Test:
tcltest::test 8.8-simpletypename-4 { SimpleTypeName in the ConstructorDeclarator must be the simple name of the class that contains the constructor declaration } { empty_main T88stn4 { class Local { Local() {} // trigger jikes bug 179 not_ctor() {} } } } {FAIL}
JLS exampleExpected Result: PASS
Regression Test:
tcltest::test 8.8-example-1 { JLS example } { empty_class Point { int x, y; Point(int x, int y) { this.x = x; this.y = y; } } } {PASS}
tests/jls/classes/constructor-declarations/formal-parameters
See 8.4.1Test Case: 8.8.1-formal-parameters-2Expected Result: PASS
Regression Test:
tcltest::test 8.8.1-formal-parameters-1 { See 8.4.1 } { empty_class T881fp1 "T881fp1() {}" } {PASS}
See 8.4.1Test Case: 8.8.1-formal-parameters-3Expected Result: PASS
Regression Test:
tcltest::test 8.8.1-formal-parameters-2 { See 8.4.1 } { empty_class T881fp2 "T881fp2(int i) {}" } {PASS}
See 8.4.1Test Case: 8.8.1-formal-parameters-4Expected Result: PASS
Regression Test:
tcltest::test 8.8.1-formal-parameters-3 { See 8.4.1 } { empty_class T881fp3 "T881fp3(int i, Object j) {}" } {PASS}
See 8.4.1Test Case: 8.8.1-formal-parameters-5Expected Result: PASS
Regression Test:
tcltest::test 8.8.1-formal-parameters-4 { See 8.4.1 } { empty_class T881fp4 "T881fp4(int i, final Object j) {}" } {PASS}
See 8.4.1Test Case: 8.8.1-formal-parameters-6Expected Result: PASS
Regression Test:
tcltest::test 8.8.1-formal-parameters-5 { See 8.4.1 } { empty_class T881fp5 {T881fp5(int[] arr, Object j) {}} } {PASS}
See 8.4.1Test Case: 8.8.1-invalid-formal-parameters-1Expected Result: PASS
Regression Test:
tcltest::test 8.8.1-formal-parameters-6 { See 8.4.1 } { empty_class T881fp6 {T881fp6(final int[] arr) {}} } {PASS}
See 8.4.1Test Case: 8.8.1-invalid-formal-parameters-2Expected Result: FAIL
Regression Test:
tcltest::test 8.8.1-invalid-formal-parameters-1 { See 8.4.1 } { empty_class T881ifp1 "T881ifp1(int i, ) {}" } {FAIL}
See 8.4.1Test Case: 8.8.1-invalid-formal-parameters-3Expected Result: FAIL
Regression Test:
tcltest::test 8.8.1-invalid-formal-parameters-2 { See 8.4.1 } { empty_class T881ifp2 "T881ifp2(int i, foo) {}" } {FAIL}
See 8.4.1Test Case: 8.8.1-invalid-formal-parameters-4Expected Result: FAIL
Regression Test:
tcltest::test 8.8.1-invalid-formal-parameters-3 { See 8.4.1 } { empty_class T881ifp3 "T881ifp3(int i, int) {}" } {FAIL}
See 8.4.1Expected Result: FAIL
Regression Test:
tcltest::test 8.8.1-invalid-formal-parameters-4 { See 8.4.1 } { empty_class T881ifp4 "T881ifp4(int i, final int) {}" } {FAIL}
tests/jls/classes/constructor-declarations/constructor-signature
The signature of a constructor consists of the number and types of formal parameters to the constructorTest Case: 8.8.2-invalid-signature-1Expected Result: PASS
Regression Test:
tcltest::test 8.8.2-signature-1 { The signature of a constructor consists of the number and types of formal parameters to the constructor } { empty_class T882s1 { T882s1() {} T882s1(int i) {} T882s1(Object o) {} } } {PASS}
A class may not declare two constructors with the same signature, or a compile-time error occursExpected Result: FAIL
Regression Test:
tcltest::test 8.8.2-invalid-signature-1 { A class may not declare two constructors with the same signature, or a compile-time error occurs } { empty_class T882is1 { T882is1(int i) {} T882is1(int j) {} } } {FAIL}
tests/jls/classes/constructor-declarations/constructor-modifiers
ConstructorModifier can be public, protected, or privateTest Case: 8.8.3-modifiers-2Expected Result: PASS
Regression Test:
tcltest::test 8.8.3-modifiers-1 { ConstructorModifier can be public, protected, or private } { empty_class T883m1 "public T883m1() {}" } {PASS}
ConstructorModifier can be public, protected, or privateTest Case: 8.8.3-modifiers-3Expected Result: PASS
Regression Test:
tcltest::test 8.8.3-modifiers-2 { ConstructorModifier can be public, protected, or private } { empty_class T883m2 "protected T883m2() {}" } {PASS}
ConstructorModifier can be public, protected, or privateTest Case: 8.8.3-duplicate-modifiers-1Expected Result: PASS
Regression Test:
tcltest::test 8.8.3-modifiers-3 { ConstructorModifier can be public, protected, or private } { empty_class T883m3 "private T883m3() {}" } {PASS}
A compile-time error occurs if the same modifier appears more than once in a constructor declarationTest Case: 8.8.3-duplicate-modifiers-2Expected Result: FAIL
Regression Test:
tcltest::test 8.8.3-duplicate-modifiers-1 { A compile-time error occurs if the same modifier appears more than once in a constructor declaration } { empty_class T883dm1 "public public T883dm1() {}" } {FAIL}
A compile-time error occurs if the same modifier appears more than once in a constructor declarationTest Case: 8.8.3-duplicate-modifiers-3Expected Result: FAIL
Regression Test:
tcltest::test 8.8.3-duplicate-modifiers-2 { A compile-time error occurs if the same modifier appears more than once in a constructor declaration } { empty_class T883dm2 "protected protected T883dm2() {}" } {FAIL}
A compile-time error occurs if the same modifier appears more than once in a constructor declarationTest Case: 8.8.3-multiple-modifiers-1Expected Result: FAIL
Regression Test:
tcltest::test 8.8.3-duplicate-modifiers-3 { A compile-time error occurs if the same modifier appears more than once in a constructor declaration } { empty_class T883dm3 "private private T883dm3() {}" } {FAIL}
A compile-time error occurs if a constructor declaration has more than one of public, protected, and privateTest Case: 8.8.3-multiple-modifiers-2Expected Result: FAIL
Regression Test:
tcltest::test 8.8.3-multiple-modifiers-1 { A compile-time error occurs if a constructor declaration has more than one of public, protected, and private } { empty_class T883mm1 "public protected T883mm1() {}" } {FAIL}
A compile-time error occurs if a constructor declaration has more than one of public, protected, and privateTest Case: 8.8.3-multiple-modifiers-3Expected Result: FAIL
Regression Test:
tcltest::test 8.8.3-multiple-modifiers-2 { A compile-time error occurs if a constructor declaration has more than one of public, protected, and private } { empty_class T883mm2 "public private T883mm2() {}" } {FAIL}
A compile-time error occurs if a constructor declaration has more than one of public, protected, and privateTest Case: 8.8.3-multiple-modifiers-4Expected Result: FAIL
Regression Test:
tcltest::test 8.8.3-multiple-modifiers-3 { A compile-time error occurs if a constructor declaration has more than one of public, protected, and private } { empty_class T883mm3 "protected public T883mm3() {}" } {FAIL}
A compile-time error occurs if a constructor declaration has more than one of public, protected, and privateTest Case: 8.8.3-multiple-modifiers-5Expected Result: FAIL
Regression Test:
tcltest::test 8.8.3-multiple-modifiers-4 { A compile-time error occurs if a constructor declaration has more than one of public, protected, and private } { empty_class T883mm4 "protected private T883mm4() {}" } {FAIL}
A compile-time error occurs if a constructor declaration has more than one of public, protected, and privateTest Case: 8.8.3-multiple-modifiers-6Expected Result: FAIL
Regression Test:
tcltest::test 8.8.3-multiple-modifiers-5 { A compile-time error occurs if a constructor declaration has more than one of public, protected, and private } { empty_class T883mm5 "private public T883mm5() {}" } {FAIL}
A compile-time error occurs if a constructor declaration has more than one of public, protected, and privateTest Case: 8.8.3-invalid-modifiers-1Expected Result: FAIL
Regression Test:
tcltest::test 8.8.3-multiple-modifiers-6 { A compile-time error occurs if a constructor declaration has more than one of public, protected, and private } { empty_class T883mm6 "private protected T883mm6() {}" } {FAIL}
A constructor cannot be abstract, static, final, native, strictfp, or synchronizedTest Case: 8.8.3-invalid-modifiers-2Expected Result: FAIL
Regression Test:
tcltest::test 8.8.3-invalid-modifiers-1 { A constructor cannot be abstract, static, final, native, strictfp, or synchronized } { empty_class T883im1 "abstract T883im1() {}" } {FAIL}
A constructor cannot be abstract, static, final, native, strictfp, or synchronizedTest Case: 8.8.3-invalid-modifiers-3Expected Result: FAIL
Regression Test:
tcltest::test 8.8.3-invalid-modifiers-2 { A constructor cannot be abstract, static, final, native, strictfp, or synchronized } { empty_class T883im2 "static T883im2() {}" } {FAIL}
A constructor cannot be abstract, static, final, native, strictfp, or synchronizedTest Case: 8.8.3-invalid-modifiers-4Expected Result: FAIL
Regression Test:
tcltest::test 8.8.3-invalid-modifiers-3 { A constructor cannot be abstract, static, final, native, strictfp, or synchronized } { empty_class T883im3 "final T883im3() {}" } {FAIL}
A constructor cannot be abstract, static, final, native, strictfp, or synchronizedTest Case: 8.8.3-invalid-modifiers-5Expected Result: FAIL
Regression Test:
tcltest::test 8.8.3-invalid-modifiers-4 { A constructor cannot be abstract, static, final, native, strictfp, or synchronized } { empty_class T883im4 "native T883im4() {}" } {FAIL}
A constructor cannot be abstract, static, final, native, strictfp, or synchronizedTest Case: 8.8.3-invalid-modifiers-6Expected Result: FAIL
Regression Test:
tcltest::test 8.8.3-invalid-modifiers-5 { A constructor cannot be abstract, static, final, native, strictfp, or synchronized } { empty_class T883im5 "strictfp T883im5() {}" } {FAIL}
A constructor cannot be abstract, static, final, native, strictfp, or synchronizedExpected Result: FAIL
Regression Test:
tcltest::test 8.8.3-invalid-modifiers-6 { A constructor cannot be abstract, static, final, native, strictfp, or synchronized } { empty_class T883im6 "synchronized T883im6() {}" } {FAIL}
tests/jls/classes/constructor-declarations/constructor-body
A return statement may be used in the body of a constructor if it does not include an expressionTest Case: 8.8.5-return-statement-2Expected Result: PASS
Regression Test:
tcltest::test 8.8.5-return-statement-1 { A return statement may be used in the body of a constructor if it does not include an expression } { empty_class T885rs1 "T885rs1() { return; }" } {PASS}
A return statement may be used in the body of a constructor if it does not include an expressionTest Case: 8.8.5-example-1Expected Result: FAIL
Regression Test:
tcltest::test 8.8.5-return-statement-2 { A return statement may be used in the body of a constructor if it does not include an expression } { empty_class T885rs2 "T885rs2() { return 1; }" } {FAIL}
JLS exampleExpected Result: PASS
Regression Test:
tcltest::test 8.8.5-example-1 { JLS example } { saveas Point.java { class Point { int x, y; Point(int x, int y) { this.x = x; this.y = y; } } class ColoredPoint extends Point { static final int WHITE = 0, BLACK = 1; int color; ColoredPoint(int x, int y) { this(x, y, WHITE); } ColoredPoint(int x, int y, int color) { super(x, y); this.color = color; } } } compile Point.java } {PASS}
tests/jls/classes/constructor-declarations/constructor-body/explicit-constructor-invocations
An ExplicitConstructorInvocation must appear before the optional BlockStatementsTest Case: 8.8.5.1-before-block-statements-this-2Expected Result: PASS
Regression Test:
tcltest::test 8.8.5.1-before-block-statements-this-1 { An ExplicitConstructorInvocation must appear before the optional BlockStatements } { empty_class T8851bbst1 { T8851bbst1() {} T8851bbst1(int i) { this(); {} } } } {PASS}
An ExplicitConstructorInvocation must appear before the optional BlockStatementsTest Case: 8.8.5.1-before-block-statements-this-3Expected Result: FAIL
Regression Test:
tcltest::test 8.8.5.1-before-block-statements-this-2 { An ExplicitConstructorInvocation must appear before the optional BlockStatements } { empty_class T8851bbst2 { T8851bbst2() {} T8851bbst2(int i) { {} this(); } } } {FAIL}
An ExplicitConstructorInvocation must appear before the optional BlockStatementsTest Case: 8.8.5.1-before-block-statements-super-1Expected Result: FAIL
Regression Test:
tcltest::test 8.8.5.1-before-block-statements-this-3 { An ExplicitConstructorInvocation must appear before the optional BlockStatements } { empty_class T8851bbst3 { T8851bbst3() {} T8851bbst3(int i) { ; this(); } } } {FAIL}
An ExplicitConstructorInvocation must appear before the optional BlockStatementsTest Case: 8.8.5.1-before-block-statements-super-2Expected Result: PASS
Regression Test:
tcltest::test 8.8.5.1-before-block-statements-super-1 { An ExplicitConstructorInvocation must appear before the optional BlockStatements } { empty_class T8851bbss1 { T8851bbss1(int i) { super(); {} } } } {PASS}
An ExplicitConstructorInvocation must appear before the optional BlockStatementsTest Case: 8.8.5.1-before-block-statements-super-3Expected Result: FAIL
Regression Test:
tcltest::test 8.8.5.1-before-block-statements-super-2 { An ExplicitConstructorInvocation must appear before the optional BlockStatements } { empty_class T8851bbss2 { T8851bbss2(int i) { {} super(); } } } {FAIL}
An ExplicitConstructorInvocation must appear before the optional BlockStatementsTest Case: 8.8.5.1-multiple-this-invocations-1Expected Result: FAIL
Regression Test:
tcltest::test 8.8.5.1-before-block-statements-super-3 { An ExplicitConstructorInvocation must appear before the optional BlockStatements } { empty_class T8851bbss3 { T8851bbss3(int i) { ; super(); } } } {FAIL}
It is a compile-time error for a constructor to invoke itselfTest Case: 8.8.5.1-multiple-this-invocations-2Expected Result: FAIL
Regression Test:
tcltest::test 8.8.5.1-multiple-this-invocations-1 { It is a compile-time error for a constructor to invoke itself } { empty_class T8851mti1 { T8851mti1() { this(); } } } {FAIL}
It is a compile-time error for a constructor to indirectly invoke itself through a series of one or more explicit constructor invocations involving thisTest Case: 8.8.5.1-multiple-this-invocations-3Expected Result: FAIL
Regression Test:
tcltest::test 8.8.5.1-multiple-this-invocations-2 { It is a compile-time error for a constructor to indirectly invoke itself through a series of one or more explicit constructor invocations involving this } { empty_class T8851mti2 { T8851mti2() { this(0); } T8851mti2(int i) { this(); } } } {FAIL}
It is a compile-time error for a constructor to indirectly invoke itself through a series of one or more explicit constructor invocations involving thisTest Case: 8.8.5.1-accessible-implicit-super-invocation-1Expected Result: FAIL
Regression Test:
tcltest::test 8.8.5.1-multiple-this-invocations-3 { It is a compile-time error for a constructor to indirectly invoke itself through a series of one or more explicit constructor invocations involving this } { empty_class T8851mti3 { T8851mti3() { this(0); } T8851mti3(int i) { this("noggy"); } T8851mti3(String s) { this(true); } T8851mti3(boolean state) { this(); } } } {FAIL}
If a constructor body does not begin with an explicit constructor invocation, then the constructor body is implicitly assumed by the compiler to begin with a superclass constructor invocationTest Case: 8.8.5.1-accessible-implicit-super-invocation-2Expected Result: PASS
Regression Test:
tcltest::test 8.8.5.1-accessible-implicit-super-invocation-1 { If a constructor body does not begin with an explicit constructor invocation, then the constructor body is implicitly assumed by the compiler to begin with a superclass constructor invocation } { empty_class T8851aisi1 { T8851aisi1(int i) {} } } {PASS}
An implicit constructor for an inner class can gain access to a private constructor in the enclosing classTest Case: 8.8.5.1-accessible-implicit-super-invocation-3Expected Result: PASS
Regression Test:
tcltest::test 8.8.5.1-accessible-implicit-super-invocation-2 { An implicit constructor for an inner class can gain access to a private constructor in the enclosing class } { empty_class T8851aisi2 { private T8851aisi2() {} static class T8851aisi2_Inner extends T8851aisi2 { T8851aisi2_Inner() {} } } } {PASS}
An implicit constructor for an inner class can gain access to a private constructor in the enclosing classTest Case: 8.8.5.1-accessible-explicit-super-invocation-1Expected Result: PASS
Regression Test:
tcltest::test 8.8.5.1-accessible-implicit-super-invocation-3 { An implicit constructor for an inner class can gain access to a private constructor in the enclosing class } { empty_class T8851aisi3 { private T8851aisi3() {} class T8851aisi3_Inner extends T8851aisi3 { T8851aisi3_Inner() {} } } } {PASS}
explicit superclass constructor invocationTest Case: 8.8.5.1-accessible-explicit-super-invocation-2Expected Result: PASS
Regression Test:
tcltest::test 8.8.5.1-accessible-explicit-super-invocation-1 { explicit superclass constructor invocation } { empty_class T8851aesi1 { T8851aesi1(int i) { super(); } } } {PASS}
An explicit constructor for an inner class can gain access to a private constructor in the enclosing classTest Case: 8.8.5.1-accessible-explicit-super-invocation-3Expected Result: PASS
Regression Test:
tcltest::test 8.8.5.1-accessible-explicit-super-invocation-2 { An explicit constructor for an inner class can gain access to a private constructor in the enclosing class } { empty_class T8851aesi2 { private T8851aesi2() {} static class T8851aesi2_Inner extends T8851aesi2 { T8851aesi2_Inner() { super(); } } } } {PASS}
An explicit constructor for an inner class can gain access to a private constructor in the enclosing classTest Case: 8.8.5.1-accessible-explicit-super-invocation-args-1Expected Result: PASS
Regression Test:
tcltest::test 8.8.5.1-accessible-explicit-super-invocation-3 { An explicit constructor for an inner class can gain access to a private constructor in the enclosing class } { empty_class T8851aesi3 { private T8851aesi3() {} class T8851aesi3_Inner extends T8851aesi3 { T8851aesi3_Inner() { super(); } } } } {PASS}
explicit superclass constructor invocationTest Case: 8.8.5.1-accessible-explicit-super-invocation-args-2Expected Result: PASS
Regression Test:
tcltest::test 8.8.5.1-accessible-explicit-super-invocation-args-1 { explicit superclass constructor invocation } { compile [saveas T8851aesia1.java { class T8851aesia1_super { T8851aesia1_super(int i) {} } class T8851aesia1 extends T8851aesia1_super { T8851aesia1() { super(1); } } }] } {PASS}
explicit superclass constructor invocationTest Case: 8.8.5.1-accessible-explicit-super-invocation-args-3Expected Result: PASS
Regression Test:
tcltest::test 8.8.5.1-accessible-explicit-super-invocation-args-2 { explicit superclass constructor invocation } { compile [saveas T8851aesia2.java { class T8851aesia2_super { T8851aesia2_super(Object o) {} } class T8851aesia2 extends T8851aesia2_super { T8851aesia2() { super(null); } } }] } {PASS}
a private constructor in an enclosing class is accessibleTest Case: 8.8.5.1-accessible-explicit-super-invocation-args-4Expected Result: PASS
Regression Test:
tcltest::test 8.8.5.1-accessible-explicit-super-invocation-args-3 { a private constructor in an enclosing class is accessible } { compile [saveas T8851aesia3.java { class T8851aesia3_super { private T8851aesia3_super(int i) {} static class T8851aesia3 extends T8851aesia3_super { T8851aesia3() { super(1); } } } }] } {PASS}
a private constructor in an enclosing class is accessibleTest Case: 8.8.5.1-accessible-explicit-super-invocation-args-5Expected Result: PASS
Regression Test:
tcltest::test 8.8.5.1-accessible-explicit-super-invocation-args-4 { a private constructor in an enclosing class is accessible } { compile [saveas T8851aesia4.java { class T8851aesia4_super { private T8851aesia4_super(Object o) {} static class T8851aesia4 extends T8851aesia4_super { T8851aesia4() { super(null); } } } }] } {PASS}
pass lots of types to multiple accessible constructorsTest Case: 8.8.5.1-inaccessible-implicit-super-invocation-1Expected Result: PASS
Regression Test:
tcltest::test 8.8.5.1-accessible-explicit-super-invocation-args-5 { pass lots of types to multiple accessible constructors } { compile [saveas T8851aesia5.java { class T8851aesia5_super { private T8851aesia5_super(Object o) {} private T8851aesia5_super(String s) {} private T8851aesia5_super(boolean state) {} private T8851aesia5_super(int i) {} private T8851aesia5_super(long l) {} private T8851aesia5_super(float f) {} private T8851aesia5_super(double d) {} private T8851aesia5_super(String s, char c) {} private T8851aesia5_super(double d, short s) {} private T8851aesia5_super(byte b, float f) {} static class T8851aesia5_o extends T8851aesia5_super { T8851aesia5_o() { super( new Object() ); } } static class T8851aesia5_s extends T8851aesia5_super { T8851aesia5_s() { super("hello"); } } class T8851aesia5_b extends T8851aesia5_super { T8851aesia5_b() { super(true); } } class T8851aesia5_i extends T8851aesia5_super { T8851aesia5_i() { super(1); } } class T8851aesia5_f extends T8851aesia5_super { T8851aesia5_f() { super(0.0F); } } class T8851aesia5_d extends T8851aesia5_super { T8851aesia5_d() { super(0.0D); } } Object l_obj = new T8851aesia5_super(0L) { void foo() {} }; Object sb_obj = new T8851aesia5_super("hello", 'b') { void foo() {} }; Object bf_obj = new T8851aesia5_super((byte) 2, 1.0F) { void foo() {} }; } }] } {PASS}
A private constructor is not accessible in a subclassTest Case: 8.8.5.1-inaccessible-explicit-super-invocation-1Expected Result: FAIL
Regression Test:
tcltest::test 8.8.5.1-inaccessible-implicit-super-invocation-1 { A private constructor is not accessible in a subclass } { compile [saveas T8851iisi1.java { class T8851iisi1_super { private T8851iisi1_super() {} } class T8851iisi1 extends T8851iisi1_super { T8851iisi1() {} } }] } {FAIL}
A private constructor is not accessible in a subclassTest Case: 8.8.5.1-inaccessible-explicit-super-invocation-args-1Expected Result: FAIL
Regression Test:
tcltest::test 8.8.5.1-inaccessible-explicit-super-invocation-1 { A private constructor is not accessible in a subclass } { compile [saveas T8851iesi1.java { class T8851iesi1_super { private T8851iesi1_super() {} } class T8851iesi1 extends T8851iesi1_super { T8851iesi1() { super(); } } }] } {FAIL}
A private constructor is not accessible in a subclassTest Case: 8.8.5.1-inaccessible-explicit-super-invocation-args-2Expected Result: FAIL
Regression Test:
tcltest::test 8.8.5.1-inaccessible-explicit-super-invocation-args-1 { A private constructor is not accessible in a subclass } { compile [saveas T8851iesia1.java { class T8851iesia1_super { private T8851iesia1_super(int i) {} } class T8851iesia1 extends T8851iesia1_super { T8851iesia1() { super(1); } } }] } {FAIL}
A private constructor is not accessible in a subclassTest Case: 8.8.5.1-example-1Expected Result: FAIL
Regression Test:
tcltest::test 8.8.5.1-inaccessible-explicit-super-invocation-args-2 { A private constructor is not accessible in a subclass } { compile [saveas T8851iesia2.java { class T8851iesia2_super { private T8851iesia2_super(Object o) {} } class T8851iesia2 extends T8851iesia2_super { T8851iesia2() { super(null); } } }] } {FAIL}
Example of qualified superconstructorTest Case: 8.8.5.1-example-2Expected Result: PASS
Regression Test:
tcltest::test 8.8.5.1-example-1 { Example of qualified superconstructor } { empty_class T8851e1 { static class Outer { class Inner {} } static class ChildOfInner extends Outer.Inner { ChildOfInner() { (new Outer()).super(); } } } } {PASS}
Example of error accessing instance fieldTest Case: 8.8.5.1-example-3Expected Result: FAIL
Regression Test:
tcltest::test 8.8.5.1-example-2 { Example of error accessing instance field } { empty_class T8851e2 { static class Point { int x, y; Point(int x, int y) { this.x = x; this.y = y; } } static class ColoredPoint extends Point { int color; ColoredPoint(int x, int y) { this(x, y, color); } } } } {FAIL}
Example of error accessing instance field when anonymous class is in explicit constructor invocationTest Case: 8.8.5.1-example-4Expected Result: FAIL
Regression Test:
tcltest::test 8.8.5.1-example-3 { Example of error accessing instance field when anonymous class is in explicit constructor invocation } { empty_class T8851e3 { static class Top { int x; class Dummy { Dummy(Object o) {} } class Inside extends Dummy { Inside() { super(new Object() { int r = x; }); // error } } } } } {FAIL}
Example of legal access of parameter when anonymous class is in explicit constructor invocationTest Case: 8.8.5.1-ambiguous-super-1Expected Result: PASS
Regression Test:
tcltest::test 8.8.5.1-example-4 { Example of legal access of parameter when anonymous class is in explicit constructor invocation } { empty_class T8851e4 { static class Top { int x; class Dummy { Dummy(Object o) {} } class Inside extends Dummy { Inside(final int y) { super(new Object() { int r = y; }); // correct } } } } } {PASS}
The constructor to call must not be ambiguousTest Case: 8.8.5.1-ambiguous-super-2Expected Result: FAIL
Regression Test:
tcltest::test 8.8.5.1-ambiguous-super-1 { The constructor to call must not be ambiguous } { compile [saveas T8851as1a.java { class T8851as1a { T8851as1a(String s) {} T8851as1a(Integer i) {} } class T8851as1b extends T8851as1a { T8851as1b() { super(null); // ambiguous } } }] } {FAIL}
The constructor to call must not be ambiguousTest Case: 8.8.5.1-ambiguous-super-3Expected Result: PASS
Regression Test:
tcltest::test 8.8.5.1-ambiguous-super-2 { The constructor to call must not be ambiguous } { compile [saveas T8851as2a.java { class T8851as2a { T8851as2a(String s) {} private T8851as2a(Integer i) {} } class T8851as2b extends T8851as2a { T8851as2b() { super(null); // calls T8851as2a(String) } } }] } {PASS}
The constructor to call must not be ambiguousTest Case: 8.8.5.1-ambiguous-super-4Expected Result: FAIL
Regression Test:
tcltest::test 8.8.5.1-ambiguous-super-3 { The constructor to call must not be ambiguous } { compile [saveas p1/T8851as3a.java { package p1; public class T8851as3a { public T8851as3a(String s) {} protected T8851as3a(Integer i) {} } }] [saveas T8851as3b.java { class T8851as3b extends p1.T8851as3a { T8851as3b() { super(null); // ambiguous } } }] } {FAIL}
The constructor to call must not be ambiguousTest Case: 8.8.5.1-ambiguous-super-5Expected Result: PASS
Regression Test:
tcltest::test 8.8.5.1-ambiguous-super-4 { The constructor to call must not be ambiguous } { empty_class T8851as4 { A a = new A(); static class A { private A() {} // compiler creates A(T8851as4$1 dummy) { this(); } A(String s) {} } static class B extends A { B() { // no ambiguity between real A(String), synthetic A(dummy) super(null); } } } } {PASS}
The constructor to call must not be ambiguousTest Case: 8.8.5.1-alternate-constructor-invocation-1Expected Result: PASS
Regression Test:
tcltest::test 8.8.5.1-ambiguous-super-5 { The constructor to call must not be ambiguous } { compile [saveas T8851as5a.java { class T8851as5a { A a = new A(); static class A { private A() {} // compiler creates A(T8851as5a$1 dummy) { this(); } A(String s) {} } } }] delete T8851as5a.java compile -classpath . [saveas T8851as5b.java { class T8851as5b extends T8851as5a.A { T8851as5b() { // no ambiguity between real A(String), synthetic A(dummy) super(null); } } }] } {PASS}
An alternate constructor invocation invokes a constructor of the same classTest Case: 8.8.5.1-alternate-constructor-invocation-2Expected Result: PASS
Regression Test:
tcltest::test 8.8.5.1-alternate-constructor-invocation-1 { An alternate constructor invocation invokes a constructor of the same class } { empty_class T8851aci1 { T8851aci1() { this(0); } T8851aci1(int i) {} } } {PASS}
An alternate constructor invocation can invoke a chain of constructors in the same classTest Case: 8.8.5.1-alternate-constructor-invocation-3Expected Result: PASS
Regression Test:
tcltest::test 8.8.5.1-alternate-constructor-invocation-2 { An alternate constructor invocation can invoke a chain of constructors in the same class } { empty_class T8851aci2 { T8851aci2() { this(0); } T8851aci2(int i) { this("noggy"); } T8851aci2(String s) { this(true); } T8851aci2(boolean state) { } } } {PASS}
An alternate constructor must existTest Case: 8.8.5.1-ambiguous-this-1Expected Result: FAIL
Regression Test:
tcltest::test 8.8.5.1-alternate-constructor-invocation-3 { An alternate constructor must exist } { empty_class T8851aci3 { T8851aci3(int i) { this(); } } } {FAIL}
The constructor to call must not be ambiguousTest Case: 8.8.5.1-ambiguous-this-2Expected Result: FAIL
Regression Test:
tcltest::test 8.8.5.1-ambiguous-this-1 { The constructor to call must not be ambiguous } { empty_class T8851at1 { T8851at1(String s) {} T8851at1(Integer i) { this(null); // ambiguous, even though T8851at1(Integer) is invalid } } } {FAIL}
The constructor to call must not be ambiguousTest Case: 8.8.5.1-ambiguous-this-3Expected Result: FAIL
Regression Test:
tcltest::test 8.8.5.1-ambiguous-this-2 { The constructor to call must not be ambiguous } { empty_class T8851at2 { T8851at2(String s) {} T8851at2(Integer i) {} T8851at2() { this(null); // ambiguous } } } {FAIL}
The constructor to call must not be ambiguousTest Case: 8.8.5.1-qualified-1Expected Result: PASS
Regression Test:
tcltest::test 8.8.5.1-ambiguous-this-3 { The constructor to call must not be ambiguous } { empty_class T8851at3 { A a = new A(); static class A { private A() {} // compiler creates A(T8851at3$1 dummy) { this(); } A(String s) {} A(int i) { // no ambiguity between real A(String), synthetic A(dummy) this(null); } } } } {PASS}
Qualified explicit invocation allows one to specify the enclosing instance of the superclassTest Case: 8.8.5.1-qualified-2Expected Result: PASS
Regression Test:
tcltest::test 8.8.5.1-qualified-1 { Qualified explicit invocation allows one to specify the enclosing instance of the superclass } { compile [saveas T8851q1.java { class T8851q1 { class Inner {} } class Sub1 extends T8851q1.Inner { Sub1() { new T8851q1().super(); } } }] } {PASS}
Qualified explicit invocation allows one to specify the enclosing instance of the superclassTest Case: 8.8.5.1-qualified-3Expected Result: PASS
Regression Test:
tcltest::test 8.8.5.1-qualified-2 { Qualified explicit invocation allows one to specify the enclosing instance of the superclass } { compile [saveas T8851q2.java { class T8851q2 { class Inner {} } class Sub2 extends T8851q2.Inner { Sub2() { new T8851q2(){}.super(); } } }] } {PASS}
Qualified explicit invocation allows one to specify the enclosing instance of the superclassTest Case: 8.8.5.1-qualified-4Expected Result: PASS
Regression Test:
tcltest::test 8.8.5.1-qualified-3 { Qualified explicit invocation allows one to specify the enclosing instance of the superclass } { compile [saveas T8851q3.java { class T8851q3 { class Inner {} } class Sub3 extends T8851q3.Inner { Sub3() { // this will not execute, but must compile ((T8851q3) null).super(); } } }] } {PASS}
Qualified explicit invocation allows one to specify the enclosing instance of the superclassTest Case: 8.8.5.1-qualified-5Expected Result: PASS
Regression Test:
tcltest::test 8.8.5.1-qualified-4 { Qualified explicit invocation allows one to specify the enclosing instance of the superclass } { compile [saveas T8851q4.java { class T8851q4 { class Inner {} } class Sub4 extends T8851q4.Inner { Sub4(T8851q4 t) { // using a parameter is legal t.super(); } } }] } {PASS}
Qualified explicit invocation allows one to specify the enclosing instance of the superclassTest Case: 8.8.5.1-qualified-6Expected Result: FAIL
Regression Test:
tcltest::test 8.8.5.1-qualified-5 { Qualified explicit invocation allows one to specify the enclosing instance of the superclass } { compile [saveas T8851q5.java { class T8851q5 { class Inner {} } class Sub5 extends T8851q5.Inner { T8851q5 t; Sub5() { // using a member declared in this class is illegal t.super(); } } }] } {FAIL}
Qualified explicit invocation allows one to specify the enclosing instance of the superclassTest Case: 8.8.5.1-qualified-7Expected Result: FAIL
Regression Test:
tcltest::test 8.8.5.1-qualified-6 { Qualified explicit invocation allows one to specify the enclosing instance of the superclass } { compile [saveas T8851q6.java { class T8851q6 { class Inner { T8851q6 t; } } class Sub6 extends T8851q6.Inner { Sub6() { // using an inherited member is not legal t.super(); } } }] } {FAIL}
There is no qualified this() explicit constructor invocationTest Case: 8.8.5.1-qualified-8Expected Result: FAIL
Regression Test:
tcltest::test 8.8.5.1-qualified-7 { There is no qualified this() explicit constructor invocation } { empty_class T8851q7 { class Inner { Inner() {} Inner(int i) { new T8851q7().this(); } } } } {FAIL}
Qualified explicit constructors must have a superclass that is an inner classTest Case: 8.8.5.1-qualified-9Expected Result: FAIL
Regression Test:
tcltest::test 8.8.5.1-qualified-8 { Qualified explicit constructors must have a superclass that is an inner class } { empty_class T8851q8 { T8851q8() { new Object().super(); } } } {FAIL}
Qualified explicit constructors must have a superclass that is an inner classTest Case: 8.8.5.1-qualified-10Expected Result: FAIL
Regression Test:
tcltest::test 8.8.5.1-qualified-9 { Qualified explicit constructors must have a superclass that is an inner class } { compile [saveas T8851q9.java { class T8851q9 { static class Inner {} } class Sub9 extends T8851q9.Inner { Sub9() { new T8851q9().super(); } } }] } {FAIL}
Qualified explicit constructors are allowed even when the enclosing class of the superclass can be determined alreadyTest Case: 8.8.5.1-qualified-11Expected Result: PASS
Regression Test:
tcltest::test 8.8.5.1-qualified-10 { Qualified explicit constructors are allowed even when the enclosing class of the superclass can be determined already } { empty_class T8851q10 { class One {} class Two extends One { Two() { new T8851q10().super(); } Two(int i) {} } } } {PASS}
Explicit constructors may reference qualified this or super which names an enclosing classTest Case: 8.8.5.1-qualified-12Expected Result: PASS
Regression Test:
tcltest::test 8.8.5.1-qualified-11 { Explicit constructors may reference qualified this or super which names an enclosing class } { empty_class T8851q11 { class A {} class B extends A { B() { T8851q11.this.super(); } } } } {PASS}
Explicit constructors may reference qualified this or super which names an enclosing classTest Case: 8.8.5.1-qualified-13Expected Result: PASS
Regression Test:
tcltest::test 8.8.5.1-qualified-12 { Explicit constructors may reference qualified this or super which names an enclosing class } { empty_class T8851q12 { class Super { Middle m; } class Middle extends Super { class A {} class B extends A { B() { Middle.super.m.super(); } } } } } {PASS}
Explicit constructors may reference qualified this or super which names an enclosing classTest Case: 8.8.5.1-qualified-14Expected Result: FAIL
Regression Test:
tcltest::test 8.8.5.1-qualified-13 { Explicit constructors may reference qualified this or super which names an enclosing class } { empty_class T8851q13 { T8851q13(Object o) {} class Middle extends T8851q13 { Middle(int i) { super(null); } Middle() { // Here, the innermost instance of T8851q13 to enclose // new Middle is this super(new Middle(1).new Inner() {}); } class Inner {} } } } {FAIL}
Explicit constructors may reference qualified this or super which names an enclosing classTest Case: 8.8.5.1-qualified-15Expected Result: PASS
Regression Test:
tcltest::test 8.8.5.1-qualified-14 { Explicit constructors may reference qualified this or super which names an enclosing class } { empty_class T8851q14 { T8851q14(Object o) {} class Middle extends T8851q14 { Middle(int i) { super(null); } Middle() { // Here, new Middle is a member of Middle super(T8851q14.this.new Middle(1).new Inner() {}); } class Inner {} } } } {PASS}
Explicit constructors may reference qualified this or super which names an enclosing classTest Case: 8.8.5.1-qualified-16Expected Result: FAIL
Regression Test:
tcltest::test 8.8.5.1-qualified-15 { Explicit constructors may reference qualified this or super which names an enclosing class } { empty_class T8851q15 { T8851q15(Object o) {} private class Middle extends T8851q15 { Middle(int i) { super(null); } Middle() { // Here, the innermost instance of T8851q15 to enclose // new Middle is this super(new Middle(1).new Inner() {}); } class Inner {} } } } {FAIL}
Explicit constructors may reference qualified this or super which names an enclosing classTest Case: 8.8.5.1-qualified-17Expected Result: PASS
Regression Test:
tcltest::test 8.8.5.1-qualified-16 { Explicit constructors may reference qualified this or super which names an enclosing class } { empty_class T8851q16 { T8851q16(Object o) {} private class Middle extends T8851q16 { Middle(int i) { super(null); } Middle() { // Here, new Middle is a member of T8851q16, since it was // private and not inherited as a member of Middle super(T8851q16.this.new Middle(1).new Inner() {}); } class Inner {} } } } {PASS}
Explicit constructors may reference qualified this or super which names an enclosing classTest Case: 8.8.5.1-qualified-18Expected Result: PASS
Regression Test:
tcltest::test 8.8.5.1-qualified-17 { Explicit constructors may reference qualified this or super which names an enclosing class } { compile [saveas T8851q17.java { class T8851q17 { T8851q17(Object o) {} } class T8851q17a { class Middle extends T8851q17 { Middle(int i) { super(null); } Middle() { // Here, the innermost instance of T8851q17a to enclose // new Middle is T8851q17a.this super(new Middle(1).new Inner() {}); } class Inner {} } } }] } {PASS}
Explicit constructors may reference qualified this or super which names an enclosing classExpected Result: PASS
Regression Test:
tcltest::test 8.8.5.1-qualified-18 { Explicit constructors may reference qualified this or super which names an enclosing class } { compile [saveas T8851q18.java { class T8851q18 { T8851q18(Object o) {} } class T8851q18a { class Middle extends T8851q18 { Middle(int i) { super(null); } Middle() { // Here, the innermost instance of T8851q18a to enclose // new Middle is T8851q18a.this super(T8851q18a.this.new Middle(1).new Inner() {}); } class Inner {} } } }] } {PASS}
tests/jls/classes/constructor-declarations/constructor-overloading
An overloaded constructor is resolved at compiler time as described in 15.9.3Expected Result: PASS
Regression Test:
tcltest::test 8.8.6-overloaded-1 { An overloaded constructor is resolved at compiler time as described in 15.9.3 } { empty_class T886o1 { T886o1(Object o) {} T886o1(String s) {} void foo() { Object obj = new T886o1(""); } } } {PASS}
tests/jls/classes/constructor-declarations/default-constructor
If a class contains no constructor declarations, then a default constructor that takes no parameters is automatically providedTest Case: 8.8.7-default-2Expected Result: PASS
Regression Test:
tcltest::test 8.8.7-default-1 { If a class contains no constructor declarations, then a default constructor that takes no parameters is automatically provided } { empty_class T887d1 { Object o = new T887d1(); } } {PASS}
If a class contains no constructor declarations, then a default constructor that takes no parameters is automatically providedTest Case: 8.8.7-throws-1Expected Result: PASS
Regression Test:
tcltest::test 8.8.7-default-2 { If a class contains no constructor declarations, then a default constructor that takes no parameters is automatically provided } { saveas T887d2.java { class T887d2_super {} class T887d2_subclass extends T887d2_super {} class T887d2 { Object o = new T887d2_subclass(); } } compile T887d2.java } {PASS}
A default constructor has no throws clauseTest Case: 8.8.7-inaccessible-default-constructor-toplevel-1Expected Result: FAIL
Regression Test:
tcltest::test 8.8.7-throws-1 { A default constructor has no throws clause } { saveas T887t1.java { class T887t1_super { T887t1_super() throws Exception { throw new Exception(); } } class T887t1_subclass extends T887t1_super {} } compile T887t1.java } {FAIL}
A private constructor is not accessible in a subclassTest Case: 8.8.7-inaccessible-default-constructor-toplevel-2Expected Result: FAIL
Regression Test:
tcltest::test 8.8.7-inaccessible-default-constructor-toplevel-1 { A private constructor is not accessible in a subclass } { saveas T887idct1.java { class T887idct1_super { private T887idct1_super() {} } class T887idct1_subclass extends T887idct1_super {} } compile T887idct1.java } {FAIL}
A constructor with default accessibility in some other package is not accessible in a subclassTest Case: 8.8.7-accessible-default-constructor-inner-1Expected Result: FAIL
Regression Test:
tcltest::test 8.8.7-inaccessible-default-constructor-toplevel-2 { A constructor with default accessibility in some other package is not accessible in a subclass } { saveas T887idct2_super.java { package T887idct2_pkg; public class T887idct2_super { T887idct2_super() {} } } saveas T887idct2.java { import T887idct2_pkg.T887idct2_super; class T887idct2_subclass extends T887idct2_super {} } compile T887idct2_super.java T887idct2.java } {FAIL}
A constructor with private accessibility can be accessed from a nested class defined in the same classTest Case: 8.8.7-accessible-default-constructor-inner-2Expected Result: PASS
Regression Test:
tcltest::test 8.8.7-accessible-default-constructor-inner-1 { A constructor with private accessibility can be accessed from a nested class defined in the same class } { empty_class T887adci1 { private T887adci1() {} static class T887adci1_nested extends T887adci1 {} } } {PASS}
A constructor with private accessibility can be accessed from an inner class defined inside the same classTest Case: 8.8.7-accessible-default-constructor-inner-3Expected Result: PASS
Regression Test:
tcltest::test 8.8.7-accessible-default-constructor-inner-2 { A constructor with private accessibility can be accessed from an inner class defined inside the same class } { empty_class T887adci2 { private T887adci2() {} class T887adci2_inner extends T887adci2 {} } } {PASS}
A constructor with private accessibility can be accessed from an inner anonymous class defined inside the same classTest Case: 8.8.7-accessible-default-constructor-inner-4Expected Result: PASS
Regression Test:
tcltest::test 8.8.7-accessible-default-constructor-inner-3 { A constructor with private accessibility can be accessed from an inner anonymous class defined inside the same class } { empty_class T887adci3 { private T887adci3() {} Object o = new T887adci3() {}; } } {PASS}
A constructor with private accessibility can be accessed from a static anonymous class defined inside the same classTest Case: 8.8.7-accessible-default-constructor-inner-5Expected Result: PASS
Regression Test:
tcltest::test 8.8.7-accessible-default-constructor-inner-4 { A constructor with private accessibility can be accessed from a static anonymous class defined inside the same class } { empty_class T887adci4 { private T887adci4() {} static Object o = new T887adci4() {}; } } {PASS}
A constructor with private accessibility can be accessed from an inner local class defined inside the same classTest Case: 8.8.7-accessible-default-constructor-inner-6Expected Result: PASS
Regression Test:
tcltest::test 8.8.7-accessible-default-constructor-inner-5 { A constructor with private accessibility can be accessed from an inner local class defined inside the same class } { empty_class T887adci5 { private T887adci5() {} { class T887adci5_inner_local extends T887adci5 {} } } } {PASS}
A constructor with private accessibility can be accessed from a static local class defined inside the same classTest Case: 8.8.7-accessible-default-constructor-inner-7Expected Result: PASS
Regression Test:
tcltest::test 8.8.7-accessible-default-constructor-inner-6 { A constructor with private accessibility can be accessed from a static local class defined inside the same class } { empty_class T887adci6 { private T887adci6() {} static { class T887adci6_static_local extends T887adci6 {} } } } {PASS}
A constructor with private accessibility can be accessed from a nested class defined in the same classTest Case: 8.8.7-accessible-default-constructor-inner-8Expected Result: PASS
Regression Test:
tcltest::test 8.8.7-accessible-default-constructor-inner-7 { A constructor with private accessibility can be accessed from a nested class defined in the same class } { empty_class T887adci7 { static class A { private A() {} } static class B extends A {} } } {PASS}
A constructor with private accessibility can be accessed from an inner class defined inside the same classTest Case: 8.8.7-accessible-default-constructor-inner-9Expected Result: PASS
Regression Test:
tcltest::test 8.8.7-accessible-default-constructor-inner-8 { A constructor with private accessibility can be accessed from an inner class defined inside the same class } { empty_class T887adci8 { static class A { private A() {} } class B extends A {} } } {PASS}
A constructor with private accessibility can be accessed from an inner anonymous class defined inside the same classTest Case: 8.8.7-accessible-default-constructor-inner-10Expected Result: PASS
Regression Test:
tcltest::test 8.8.7-accessible-default-constructor-inner-9 { A constructor with private accessibility can be accessed from an inner anonymous class defined inside the same class } { empty_class T887adci9 { static class A { private A() {} } Object o = new A() {}; } } {PASS}
A constructor with private accessibility can be accessed from a static anonymous class defined inside the same classTest Case: 8.8.7-accessible-default-constructor-inner-11Expected Result: PASS
Regression Test:
tcltest::test 8.8.7-accessible-default-constructor-inner-10 { A constructor with private accessibility can be accessed from a static anonymous class defined inside the same class } { empty_class T887adci10 { static class A { private A() {} } static Object o = new A() {}; } } {PASS}
A constructor with private accessibility can be accessed from an inner local class defined inside the same classTest Case: 8.8.7-accessible-default-constructor-inner-12Expected Result: PASS
Regression Test:
tcltest::test 8.8.7-accessible-default-constructor-inner-11 { A constructor with private accessibility can be accessed from an inner local class defined inside the same class } { empty_class T887adci11 { static class A { private A() {} } { class B extends A {} } } } {PASS}
A constructor with private accessibility can be accessed from a static local class defined inside the same classTest Case: 8.8.7-accessible-default-constructor-inner-13Expected Result: PASS
Regression Test:
tcltest::test 8.8.7-accessible-default-constructor-inner-12 { A constructor with private accessibility can be accessed from a static local class defined inside the same class } { empty_class T887adci12 { static class A { private A() {} } static { class B extends A {} } } } {PASS}
A constructor with private accessibility can be accessed from a nested class defined in the same class. However, there is no enclosing class with respect to the superclass.Test Case: 8.8.7-accessible-default-constructor-inner-14Expected Result: FAIL
Regression Test:
tcltest::test 8.8.7-accessible-default-constructor-inner-13 { A constructor with private accessibility can be accessed from a nested class defined in the same class. However, there is no enclosing class with respect to the superclass. } { empty_class T887adci13 { class A { private A() {} } static class B extends A {} } } {FAIL}
A constructor with private accessibility can be accessed from an inner class defined inside the same classTest Case: 8.8.7-accessible-default-constructor-inner-15Expected Result: PASS
Regression Test:
tcltest::test 8.8.7-accessible-default-constructor-inner-14 { A constructor with private accessibility can be accessed from an inner class defined inside the same class } { empty_class T887adci14 { class A { private A() {} } class B extends A {} } } {PASS}
A constructor with private accessibility can be accessed from an inner anonymous class defined inside the same classTest Case: 8.8.7-accessible-default-constructor-inner-16Expected Result: PASS
Regression Test:
tcltest::test 8.8.7-accessible-default-constructor-inner-15 { A constructor with private accessibility can be accessed from an inner anonymous class defined inside the same class } { empty_class T887adci15 { class A { private A() {} } Object o = new A() {}; } } {PASS}
A constructor with private accessibility can be accessed from a static anonymous class defined inside the same classTest Case: 8.8.7-accessible-default-constructor-inner-17Expected Result: PASS
Regression Test:
tcltest::test 8.8.7-accessible-default-constructor-inner-16 { A constructor with private accessibility can be accessed from a static anonymous class defined inside the same class } { empty_class T887adci16 { class A { private A() {} } static Object o = new T887adci16().new A() {}; } } {PASS}
A constructor with private accessibility can be accessed from an inner local class defined inside the same classTest Case: 8.8.7-accessible-default-constructor-inner-18Expected Result: PASS
Regression Test:
tcltest::test 8.8.7-accessible-default-constructor-inner-17 { A constructor with private accessibility can be accessed from an inner local class defined inside the same class } { empty_class T887adci17 { class A { private A() {} } { class B extends A {} } } } {PASS}
A constructor with private accessibility can be accessed from a static local class defined inside the same class. However, there is no enclosing class with respect to the superclass.Test Case: 8.8.7-accessible-default-constructor-inner-19Expected Result: FAIL
Regression Test:
tcltest::test 8.8.7-accessible-default-constructor-inner-18 { A constructor with private accessibility can be accessed from a static local class defined inside the same class. However, there is no enclosing class with respect to the superclass. } { empty_class T887adci18 { class A { private A() {} } static { class B extends A {} } } } {FAIL}
A constructor with private accessibility can be accessed from an inner class defined inside the same classTest Case: 8.8.7-accessible-default-constructor-inner-20Expected Result: PASS
Regression Test:
tcltest::test 8.8.7-accessible-default-constructor-inner-19 { A constructor with private accessibility can be accessed from an inner class defined inside the same class } { empty_class T887adci19 { static { class A { private A() {} class B extends A {} } } } } {PASS}
A constructor with private accessibility can be accessed from an inner anonymous class defined inside the same classTest Case: 8.8.7-accessible-default-constructor-inner-21Expected Result: PASS
Regression Test:
tcltest::test 8.8.7-accessible-default-constructor-inner-20 { A constructor with private accessibility can be accessed from an inner anonymous class defined inside the same class } { empty_class T887adci20 { static { class A { private A() {} Object o = new A() {}; } } } } {PASS}
A constructor with private accessibility can be accessed from a static anonymous class defined inside the same classTest Case: 8.8.7-accessible-default-constructor-inner-22Expected Result: PASS
Regression Test:
tcltest::test 8.8.7-accessible-default-constructor-inner-21 { A constructor with private accessibility can be accessed from a static anonymous class defined inside the same class } { empty_class T887adci21 { static { class A { private A() {} } new A() {}; } } } {PASS}
A constructor with private accessibility can be accessed from an inner local class defined inside the same classTest Case: 8.8.7-accessible-default-constructor-inner-23Expected Result: PASS
Regression Test:
tcltest::test 8.8.7-accessible-default-constructor-inner-22 { A constructor with private accessibility can be accessed from an inner local class defined inside the same class } { empty_class T887adci22 { static { class A { private A() {} { class B extends A {} } } } } } {PASS}
A constructor with private accessibility can be accessed from a static local class defined inside the same class.Test Case: 8.8.7-accessible-default-constructor-inner-24Expected Result: PASS
Regression Test:
tcltest::test 8.8.7-accessible-default-constructor-inner-23 { A constructor with private accessibility can be accessed from a static local class defined inside the same class. } { empty_class T887adci23 { static { class A { private A() {} } class B extends A {} } } } {PASS}
A constructor with private accessibility can be accessed from an inner class defined inside the same classTest Case: 8.8.7-accessible-default-constructor-inner-25Expected Result: PASS
Regression Test:
tcltest::test 8.8.7-accessible-default-constructor-inner-24 { A constructor with private accessibility can be accessed from an inner class defined inside the same class } { empty_class T887adci24 { { class A { private A() {} class B extends A {} } } } } {PASS}
A constructor with private accessibility can be accessed from an inner anonymous class defined inside the same classTest Case: 8.8.7-accessible-default-constructor-inner-26Expected Result: PASS
Regression Test:
tcltest::test 8.8.7-accessible-default-constructor-inner-25 { A constructor with private accessibility can be accessed from an inner anonymous class defined inside the same class } { empty_class T887adci25 { { class A { private A() {} } new A() {}; } } } {PASS}
A constructor with private accessibility can be accessed from a static anonymous class defined inside the same class. However, there is no enclosing class for the superclass.Test Case: 8.8.7-accessible-default-constructor-inner-27Expected Result: FAIL
Regression Test:
tcltest::test 8.8.7-accessible-default-constructor-inner-26 { A constructor with private accessibility can be accessed from a static anonymous class defined inside the same class. However, there is no enclosing class for the superclass.} { empty_class T887adci26 { T887adci26(Object o) {} { class A { private A() {} } class B extends T887adci26 { B() { super(new A() {}); } } } } } {FAIL}
A constructor with private accessibility can be accessed from an inner local class defined inside the same classTest Case: 8.8.7-accessible-default-constructor-inner-28Expected Result: PASS
Regression Test:
tcltest::test 8.8.7-accessible-default-constructor-inner-27 { A constructor with private accessibility can be accessed from an inner local class defined inside the same class } { empty_class T887adci27 { { class A { private A() {} } class B extends A {} } } } {PASS}
A constructor with private accessibility can be accessed from an inner class of an anonymous classTest Case: 8.8.7-accessible-default-constructor-inner-29Expected Result: PASS
Regression Test:
tcltest::test 8.8.7-accessible-default-constructor-inner-28 { A constructor with private accessibility can be accessed from an inner class of an anonymous class } { empty_class T887adci28 { Object o = new Object() { class Inner { private Inner() {} } }.new Inner(); } } {PASS}
A constructor with private accessibility can be accessed from an inner class of an anonymous classExpected Result: PASS
Regression Test:
tcltest::test 8.8.7-accessible-default-constructor-inner-29 { A constructor with private accessibility can be accessed from an inner class of an anonymous class } { empty_class T887adci29 { Object o = new Object() { class Inner { private Inner() {} } }.new Inner(){}; } } {PASS}
tests/jls/interfaces/interface-declarations
An interface may not have the same simple name as an enclosing typeTest Case: 9.1-enclosing-2Expected Result: FAIL
Regression Test:
tcltest::test 9.1-enclosing-1 { An interface may not have the same simple name as an enclosing type } { empty_class T91e1 { interface T91e1 {} } } {FAIL}
An interface may not have the same simple name as an enclosing typeTest Case: 9.1-enclosing-3Expected Result: FAIL
Regression Test:
tcltest::test 9.1-enclosing-2 { An interface may not have the same simple name as an enclosing type } { empty_class T91e2 { static class Foo { interface T91e2 {} } } } {FAIL}
An interface may not have the same simple name as an enclosing typeTest Case: 9.1-enclosing-4Expected Result: FAIL
Regression Test:
tcltest::test 9.1-enclosing-3 { An interface may not have the same simple name as an enclosing type } { compile [saveas T91e3.java { interface T91e3 { interface T91e3 {} } }] } {FAIL}
An interface may not have the same simple name as an enclosing typeExpected Result: PASS
Regression Test:
tcltest::test 9.1-enclosing-4 { An interface may not have the same simple name as an enclosing type } { compile [saveas T91e4.java { interface T91e4 { Object o = new T91e4() {}; // anonymous classes have no simple name } }] } {PASS}
tests/jls/interfaces/interface-declarations/interface-modifiers
should generate error on synchronized interfaceTest Case: 9.1.1-2Expected Result: FAIL
Regression Test:
tcltest::test 9.1.1-1 {should generate error on synchronized interface} { compile [saveas SynchronizedInterface.java "synchronized interface SynchronizedInterface {}"] } {FAIL}
adding the synchronized keyword to an interface declared as public triggers a bug in the javac shipped with jdk 1.1Test Case: 9.1.1-3Expected Result: FAIL
Regression Test:
tcltest::test 9.1.1-2 {adding the synchronized keyword to an interface declared as public triggers a bug in the javac shipped with jdk 1.1} { compile [saveas PublicSynchronizedInterface.java "public synchronized interface PublicSynchronizedInterface {}"] } {FAIL}
an interface may be publicTest Case: 9.1.1-4Expected Result: PASS
Regression Test:
tcltest::test 9.1.1-3 {an interface may be public} { compile [saveas PublicInterface.java "public interface PublicInterface {}"] } {PASS}
should generate an error if a modifier is given more than onceTest Case: 9.1.1-5Expected Result: FAIL
Regression Test:
tcltest::test 9.1.1-4 {should generate an error if a modifier is given more than once} { compile [saveas PublicPublicInterface.java "public public interface PublicPublicInterface {}"] } {FAIL}
The access modifier protected pertains only to member interfacesTest Case: 9.1.1-6Expected Result: FAIL
Regression Test:
tcltest::test 9.1.1-5 {The access modifier protected pertains only to member interfaces} { compile [saveas ProtectedInterface.java "protected interface ProtectedInterface {}"] } {FAIL}
The access modifier private pertains only to member interfacesTest Case: 9.1.1-7Expected Result: FAIL
Regression Test:
tcltest::test 9.1.1-6 {The access modifier private pertains only to member interfaces} { compile [saveas PrivateInterface.java "private interface PrivateInterface {}"] } {FAIL}
The access modifier static pertains only to member interfacesTest Case: 9.1.1-8Expected Result: FAIL
Regression Test:
tcltest::test 9.1.1-7 {The access modifier static pertains only to member interfaces} { compile [saveas StaticInterface.java "static interface StaticInterface {}"] } {FAIL}
An interface may be strictfpTest Case: 9.1.1-9Expected Result: PASS
Regression Test:
tcltest::test 9.1.1-8 { An interface may be strictfp } { compile [saveas T9118.java "strictfp interface T9118 {}"] } {PASS}
Error declaring strictfp more than onceTest Case: 9.1.1-10Expected Result: FAIL
Regression Test:
tcltest::test 9.1.1-9 { Error declaring strictfp more than once } { compile [saveas T9119.java "strictfp strictfp interface T9119 {}"] } {FAIL}
An interface may be redundantly declared abstractTest Case: 9.1.1-11Expected Result: OK
Regression Test:
tcltest::test 9.1.1-10 { An interface may be redundantly declared abstract } { ok_pass_or_warn [compile [saveas T91110.java "abstract interface T91110 {}"]] } {OK}
Error declaring abstract more than onceTest Case: 9.1.1-12Expected Result: FAIL
Regression Test:
tcltest::test 9.1.1-11 { Error declaring abstract more than once } { compile [saveas T91111.java "abstract abstract interface T91111 {}"] } {FAIL}
Error declaring finalTest Case: 9.1.1-13Expected Result: FAIL
Regression Test:
tcltest::test 9.1.1-12 { Error declaring final } { compile [saveas T91112.java "final interface T91112 {}"] } {FAIL}
Error declaring nativeTest Case: 9.1.1-14Expected Result: FAIL
Regression Test:
tcltest::test 9.1.1-13 { Error declaring native } { compile [saveas T91113.java "native interface T91113 {}"] } {FAIL}
Error declaring transientTest Case: 9.1.1-15Expected Result: FAIL
Regression Test:
tcltest::test 9.1.1-14 { Error declaring transient } { compile [saveas T91114.java "transient interface T91114 {}"] } {FAIL}
Error declaring volatileTest Case: 9.1.1-16Expected Result: FAIL
Regression Test:
tcltest::test 9.1.1-15 { Error declaring volatile } { compile [saveas T91115.java "volatile interface T91115 {}"] } {FAIL}
longest legal combinationTest Case: 9.1.1-17Expected Result: OK
Regression Test:
tcltest::test 9.1.1-16 { longest legal combination } { ok_pass_or_warn [compile [saveas T91116.java { public abstract strictfp interface T91116 {} }]] } {OK}
stress testTest Case: 9.1.1-in-class-1Expected Result: FAIL
Regression Test:
tcltest::test 9.1.1-17 { stress test } { compile [saveas T91117.java { public abstract strictfp protected private static final transient synchronized volatile native public abstract strictfp interface T91117 {} }] } {FAIL}
may be publicTest Case: 9.1.1-in-class-2Expected Result: PASS
Regression Test:
tcltest::test 9.1.1-in-class-1 { may be public } { empty_class T911ic1 "public interface I {}" } {PASS}
may be protectedTest Case: 9.1.1-in-class-3Expected Result: PASS
Regression Test:
tcltest::test 9.1.1-in-class-2 { may be protected } { empty_class T911ic2 "protected interface I {}" } {PASS}
may be privateTest Case: 9.1.1-in-class-4Expected Result: PASS
Regression Test:
tcltest::test 9.1.1-in-class-3 { may be private } { empty_class T911ic3 "private interface I {}" } {PASS}
may not have multiple access modifiersTest Case: 9.1.1-in-class-5Expected Result: FAIL
Regression Test:
tcltest::test 9.1.1-in-class-4 { may not have multiple access modifiers } { empty_class T911ic4 "public public interface I {}" } {FAIL}
may not have multiple access modifiersTest Case: 9.1.1-in-class-6Expected Result: FAIL
Regression Test:
tcltest::test 9.1.1-in-class-5 { may not have multiple access modifiers } { empty_class T911ic5 "public protected interface I {}" } {FAIL}
may not have multiple access modifiersTest Case: 9.1.1-in-class-7Expected Result: FAIL
Regression Test:
tcltest::test 9.1.1-in-class-6 { may not have multiple access modifiers } { empty_class T911ic6 "public private interface I {}" } {FAIL}
may not have multiple access modifiersTest Case: 9.1.1-in-class-8Expected Result: FAIL
Regression Test:
tcltest::test 9.1.1-in-class-7 { may not have multiple access modifiers } { empty_class T911ic7 "protected public interface I {}" } {FAIL}
may not have multiple access modifiersTest Case: 9.1.1-in-class-9Expected Result: FAIL
Regression Test:
tcltest::test 9.1.1-in-class-8 { may not have multiple access modifiers } { empty_class T911ic8 "protected protected interface I {}" } {FAIL}
may not have multiple access modifiersTest Case: 9.1.1-in-class-10Expected Result: FAIL
Regression Test:
tcltest::test 9.1.1-in-class-9 { may not have multiple access modifiers } { empty_class T911ic9 "protected public interface I {}" } {FAIL}
may not have multiple access modifiersTest Case: 9.1.1-in-class-11Expected Result: FAIL
Regression Test:
tcltest::test 9.1.1-in-class-10 { may not have multiple access modifiers } { empty_class T911ic10 "private public interface I {}" } {FAIL}
may not have multiple access modifiersTest Case: 9.1.1-in-class-12Expected Result: FAIL
Regression Test:
tcltest::test 9.1.1-in-class-11 { may not have multiple access modifiers } { empty_class T911ic11 "private protected interface I {}" } {FAIL}
may not have multiple access modifiersTest Case: 9.1.1-in-class-13Expected Result: FAIL
Regression Test:
tcltest::test 9.1.1-in-class-12 { may not have multiple access modifiers } { empty_class T911ic12 "private private interface I {}" } {FAIL}
may be redundantly abstractTest Case: 9.1.1-in-class-14Expected Result: OK
Regression Test:
tcltest::test 9.1.1-in-class-13 { may be redundantly abstract } { ok_pass_or_warn [empty_class T911ic13 "abstract interface I {}"] } {OK}
may not have abstract twiceTest Case: 9.1.1-in-class-15Expected Result: FAIL
Regression Test:
tcltest::test 9.1.1-in-class-14 { may not have abstract twice } { empty_class T911ic14 "abstract abstract interface I {}" } {FAIL}
may be redundantly staticTest Case: 9.1.1-in-class-16Expected Result: OK
Regression Test:
tcltest::test 9.1.1-in-class-15 { may be redundantly static } { ok_pass_or_warn [empty_class T911ic15 "static interface I {}"] } {OK}
may not have static twiceTest Case: 9.1.1-in-class-17Expected Result: FAIL
Regression Test:
tcltest::test 9.1.1-in-class-16 { may not have static twice } { empty_class T911ic16 "static static interface I {}" } {FAIL}
may be strictfpTest Case: 9.1.1-in-class-18Expected Result: PASS
Regression Test:
tcltest::test 9.1.1-in-class-17 { may be strictfp } { empty_class T911ic17 "strictfp interface I {}" } {PASS}
may not have strictfp twiceTest Case: 9.1.1-in-class-19Expected Result: FAIL
Regression Test:
tcltest::test 9.1.1-in-class-18 { may not have strictfp twice } { empty_class T911ic18 "strictfp strictfp interface I {}" } {FAIL}
may not be finalTest Case: 9.1.1-in-class-20Expected Result: FAIL
Regression Test:
tcltest::test 9.1.1-in-class-19 { may not be final } { empty_class T911ic19 "final interface I {}" } {FAIL}
may not be synchronizedTest Case: 9.1.1-in-class-21Expected Result: FAIL
Regression Test:
tcltest::test 9.1.1-in-class-20 { may not be synchronized } { empty_class T911ic20 "synchronized interface I {}" } {FAIL}
may not be nativeTest Case: 9.1.1-in-class-22Expected Result: FAIL
Regression Test:
tcltest::test 9.1.1-in-class-21 { may not be native } { empty_class T911ic21 "native interface I {}" } {FAIL}
may not be transientTest Case: 9.1.1-in-class-23Expected Result: FAIL
Regression Test:
tcltest::test 9.1.1-in-class-22 { may not be transient } { empty_class T911ic22 "transient interface I {}" } {FAIL}
may not be volatileTest Case: 9.1.1-in-class-24Expected Result: FAIL
Regression Test:
tcltest::test 9.1.1-in-class-23 { may not be volatile } { empty_class T911ic23 "volatile interface I {}" } {FAIL}
longest legal combinationTest Case: 9.1.1-in-class-25Expected Result: OK
Regression Test:
tcltest::test 9.1.1-in-class-24 { longest legal combination } { ok_pass_or_warn [empty_class T911ic24 { public abstract static strictfp interface I {} }] } {OK}
stress testTest Case: 9.1.1-in-interface-1Expected Result: FAIL
Regression Test:
tcltest::test 9.1.1-in-class-25 { stress test } { empty_class T911ic25 { public static abstract strictfp protected private final transient synchronized volatile native public static abstract strictfp interface I {} } } {FAIL}
may be redundantly publicTest Case: 9.1.1-in-interface-2Expected Result: OK
Regression Test:
tcltest::test 9.1.1-in-interface-1 { may be redundantly public } { ok_pass_or_warn [compile [saveas T911ii1.java { interface T911ii1 { public interface I {} } }]] } {OK}
may not be protectedTest Case: 9.1.1-in-interface-3Expected Result: FAIL
Regression Test:
tcltest::test 9.1.1-in-interface-2 { may not be protected } { compile [saveas T911ii2.java { interface T911ii2 { protected interface I {} } }] } {FAIL}
may not be privateTest Case: 9.1.1-in-interface-4Expected Result: FAIL
Regression Test:
tcltest::test 9.1.1-in-interface-3 { may not be private } { compile [saveas T911ii3.java { interface T911ii3 { private interface I {} } }] } {FAIL}
may not have public twiceTest Case: 9.1.1-in-interface-5Expected Result: FAIL
Regression Test:
tcltest::test 9.1.1-in-interface-4 { may not have public twice } { compile [saveas T911ii4.java { interface T911ii4 { public public interface I {} } }] } {FAIL}
may be redundantly abstractTest Case: 9.1.1-in-interface-6Expected Result: OK
Regression Test:
tcltest::test 9.1.1-in-interface-5 { may be redundantly abstract } { ok_pass_or_warn [compile [saveas T911ii5.java { interface T911ii5 { abstract interface I {} } }]] } {OK}
may not have abstract twiceTest Case: 9.1.1-in-interface-7Expected Result: FAIL
Regression Test:
tcltest::test 9.1.1-in-interface-6 { may not have abstract twice } { compile [saveas T911ii6.java { interface T911ii6 { abstract abstract interface I {} } }] } {FAIL}
may be redundantly staticTest Case: 9.1.1-in-interface-8Expected Result: OK
Regression Test:
tcltest::test 9.1.1-in-interface-7 { may be redundantly static } { ok_pass_or_warn [compile [saveas T911ii7.java { interface T911ii7 { static interface I {} } }]] } {OK}
may not have static twiceTest Case: 9.1.1-in-interface-9Expected Result: FAIL
Regression Test:
tcltest::test 9.1.1-in-interface-8 { may not have static twice } { compile [saveas T911ii8.java { interface T911ii8 { static static interface I {} } }] } {FAIL}
may be strictfpTest Case: 9.1.1-in-interface-10Expected Result: PASS
Regression Test:
tcltest::test 9.1.1-in-interface-9 { may be strictfp } { compile [saveas T911ii9.java { interface T911ii9 { strictfp interface I {} } }] } {PASS}
may not have strictfp twiceTest Case: 9.1.1-in-interface-11Expected Result: FAIL
Regression Test:
tcltest::test 9.1.1-in-interface-10 { may not have strictfp twice } { compile [saveas T911ii10.java { interface T911ii10 { strictfp strictfp interface I {} } }] } {FAIL}
may not be finalTest Case: 9.1.1-in-interface-12Expected Result: FAIL
Regression Test:
tcltest::test 9.1.1-in-interface-11 { may not be final } { compile [saveas T911ii11.java { interface T911ii11 { final interface I {} } }] } {FAIL}
may not be synchronizedTest Case: 9.1.1-in-interface-13Expected Result: FAIL
Regression Test:
tcltest::test 9.1.1-in-interface-12 { may not be synchronized } { compile [saveas T911ii11.java { interface T911ii11 { synchronized interface I {} } }] } {FAIL}
may not be nativeTest Case: 9.1.1-in-interface-14Expected Result: FAIL
Regression Test:
tcltest::test 9.1.1-in-interface-13 { may not be native } { compile [saveas T911ii11.java { interface T911ii11 { native interface I {} } }] } {FAIL}
may not be transientTest Case: 9.1.1-in-interface-15Expected Result: FAIL
Regression Test:
tcltest::test 9.1.1-in-interface-14 { may not be transient } { compile [saveas T911ii11.java { interface T911ii11 { transient interface I {} } }] } {FAIL}
may not be volatileTest Case: 9.1.1-in-interface-16Expected Result: FAIL
Regression Test:
tcltest::test 9.1.1-in-interface-15 { may not be volatile } { compile [saveas T911ii11.java { interface T911ii11 { volatile interface I {} } }] } {FAIL}
longest legal combinationTest Case: 9.1.1-in-interface-17Expected Result: OK
Regression Test:
tcltest::test 9.1.1-in-interface-16 { longest legal combination } { ok_pass_or_warn [compile [saveas T911ii16.java { interface T911ii16 { public abstract static strictfp interface I {} } }]] } {OK}
stress testExpected Result: FAIL
Regression Test:
tcltest::test 9.1.1-in-interface-17 { stress test } { compile [saveas T911ii17.java { interface T911ii17 { public static abstract strictfp protected private final transient synchronized volatile native public static abstract strictfp interface I {} } }] } {FAIL}
tests/jls/interfaces/interface-declarations/interface-modifiers/abstract-interfaces
The compiler may generate a warning when abstract modifier is applied to an implicitly abstract interfaceTest Case: 9.1.1.1-2Expected Result: OK
Regression Test:
tcltest::test 9.1.1.1-1 { The compiler may generate a warning when abstract modifier is applied to an implicitly abstract interface } { saveas AbstractInterface.java "abstract interface AbstractInterface {}" ok_pass_or_warn [compile AbstractInterface.java] } {OK}
The compiler may generate a warning when abstract modifier is applied to an implicitly abstract inner interfaceTest Case: 9.1.1.1-3Expected Result: OK
Regression Test:
tcltest::test 9.1.1.1-2 { The compiler may generate a warning when abstract modifier is applied to an implicitly abstract inner interface } { saveas AbstractInnerInterface.java { public class AbstractInnerInterface { abstract interface Inter {} } } ok_pass_or_warn [compile AbstractInnerInterface.java] } {OK}
The compiler may generate a warning when abstract modifier is applied to an implicitly abstract inner interface that is defined inside another interfaceExpected Result: OK
Regression Test:
tcltest::test 9.1.1.1-3 { The compiler may generate a warning when abstract modifier is applied to an implicitly abstract inner interface that is defined inside another interface } { saveas AbstractInnerInterface_InInnerface.java { public interface AbstractInnerInterface_InInnerface { abstract interface Inter {} } } ok_pass_or_warn [compile AbstractInnerInterface_InInnerface.java] } {OK}
tests/jls/interfaces/interface-declarations/superinterfaces-and-subinterfaces
All interfaces in the extends clause must be accessibleTest Case: 9.1.2-accessible-2Expected Result: FAIL
Regression Test:
tcltest::test 9.1.2-accessible-1 { All interfaces in the extends clause must be accessible } { compile [saveas T912a1a.java { class T912a1a { private interface I {} } interface T912a1b extends T912a1a.I {} }] } {FAIL}
All interfaces in the extends clause must be accessibleTest Case: 9.1.2-accessible-3Expected Result: PASS
Regression Test:
tcltest::test 9.1.2-accessible-2 { All interfaces in the extends clause must be accessible } { compile [saveas T912a2a.java { interface T912a2a {} interface T912a2b {} interface T912a2c {} interface T912a2d extends T912a2a, T912a2b, T912a2c {} }] } {PASS}
All interfaces in the extends clause must be accessibleTest Case: 9.1.2-accessible-4Expected Result: FAIL
Regression Test:
tcltest::test 9.1.2-accessible-3 { All interfaces in the extends clause must be accessible } { compile [saveas p1/T912a3a.java { package p1; public class T912a3a { protected interface I {} } }] [saveas T912a3b.java { interface T912a3b extends p1.T912a3a.I {} }] } {FAIL}
All interfaces in the extends clause must be accessibleTest Case: 9.1.2-accessible-5Expected Result: FAIL
Regression Test:
tcltest::test 9.1.2-accessible-4 { All interfaces in the extends clause must be accessible } { compile [saveas p1/T912a4a.java { package p1; interface T912a4a {} }] [saveas T912a4b.java { interface T912a4b extends p1.T912a4a {} }] } {FAIL}
All interfaces in the extends clause must be accessibleTest Case: 9.1.2-accessible-6Expected Result: PASS
Regression Test:
tcltest::test 9.1.2-accessible-5 { All interfaces in the extends clause must be accessible } { compile [saveas p1/T912a5a.java { package p1; public class T912a5a { protected interface I {} } }] [saveas T912a5b.java { class T912a5b extends p1.T912a5a { interface Sub extends I {} } }] } {PASS}
All interfaces in the extends clause must be accessibleTest Case: 9.1.2-interface-1Expected Result: PASS
Regression Test:
tcltest::test 9.1.2-accessible-6 { All interfaces in the extends clause must be accessible } { empty_class T912a6 { private interface One {} interface Two extends One {} } } {PASS}
All types in the extends clause must be interfacesTest Case: 9.1.2-interface-2Expected Result: FAIL
Regression Test:
tcltest::test 9.1.2-interface-1 { All types in the extends clause must be interfaces } { empty_class T912i1 { interface I extends Object {} } } {FAIL}
All types in the extends clause must be interfacesTest Case: 9.1.2-interface-3Expected Result: FAIL
Regression Test:
tcltest::test 9.1.2-interface-2 { All types in the extends clause must be interfaces } { empty_class T912i2 { class C {} interface I extends C {} } } {FAIL}
A superinterface name may be non-canonicalTest Case: 9.1.2-interface-4Expected Result: PASS
Regression Test:
tcltest::test 9.1.2-interface-3 { A superinterface name may be non-canonical } { compile [saveas T912i3a.java { class T912i3a { interface Super {} } class T912i3b extends T912i3a {} interface T912i3c extends T912i3b.Super {} }] } {PASS}
A superinterface name may be non-canonicalTest Case: 9.1.2-interface-5Expected Result: PASS
Regression Test:
tcltest::test 9.1.2-interface-4 { A superinterface name may be non-canonical } { compile [saveas T912i4a.java { class T912i4a { interface Super {} } class T912i4b extends T912i4a { interface C extends Super {} } }] } {PASS}
A superinterface name may be non-canonicalTest Case: 9.1.2-interface-6Expected Result: PASS
Regression Test:
tcltest::test 9.1.2-interface-5 { A superinterface name may be non-canonical } { compile [saveas T912i5a.java { class T912i5a { interface Super {} } class T912i5b extends T912i5a { interface C extends T912i5b.Super {} } }] } {PASS}
A superinterface name may be non-canonicalTest Case: 9.1.2-circular-1Expected Result: PASS
Regression Test:
tcltest::test 9.1.2-interface-6 { A superinterface name may be non-canonical } { compile [saveas T912i6a.java { class T912i6a { interface Super {} } class T912i6b extends T912i6a { interface C extends Super {} } interface T912i6c extends T912i6b.Super {} }] } {PASS}
An interface must not depend on itselfTest Case: 9.1.2-circular-2Expected Result: FAIL
Regression Test:
tcltest::test 9.1.2-circular-1 { An interface must not depend on itself } { compile [saveas T912c1.java "interface T912c1 extends T912c1 {}"] } {FAIL}
An interface must not depend on itselfTest Case: 9.1.2-circular-3Expected Result: FAIL
Regression Test:
tcltest::test 9.1.2-circular-2 { An interface must not depend on itself } { compile [saveas T912c2.java { interface T912c2 extends T912c2.I { interface I {} } }] } {FAIL}
An interface must not depend on itselfTest Case: 9.1.2-circular-4Expected Result: FAIL
Regression Test:
tcltest::test 9.1.2-circular-3 { An interface must not depend on itself } { compile [saveas T912c3a.java { interface T912c3a extends T912c3b {} interface T912c3b extends T912c3a {} }] } {FAIL}
An interface must not depend on itselfTest Case: 9.1.2-circular-5Expected Result: FAIL
Regression Test:
tcltest::test 9.1.2-circular-4 { An interface must not depend on itself } { compile [saveas T912c4a.java { interface T912c4a extends T912c4b.Inner2 { interface Inner1 {} } interface T912c4b { interface Inner2 extends T912c4a.Inner1 {} } }] } {FAIL}
An interface must not depend on itselfTest Case: 9.1.2-unique-1Expected Result: PASS
Regression Test:
tcltest::test 9.1.2-circular-5 { An interface must not depend on itself } { compile [saveas T912c5a.java { interface T912c5a { interface Inner1 extends T912c5b.Inner2 {} } interface T912c5b extends T912c5a { interface Inner2 {} } }] } {PASS}
The extends clause must not list an element twice, by any nameTest Case: 9.1.2-unique-2Expected Result: FAIL
Regression Test:
tcltest::test 9.1.2-unique-1 { The extends clause must not list an element twice, by any name } { compile [saveas T912u1.java { interface T912u1 extends Cloneable, Cloneable {} }] } {FAIL}
The extends clause must not list an element twice, by any nameTest Case: 9.1.2-unique-3Expected Result: FAIL
Regression Test:
tcltest::test 9.1.2-unique-2 { The extends clause must not list an element twice, by any name } { compile [saveas T912u2.java { interface T912u2 extends java.lang.Cloneable, Cloneable {} }] } {FAIL}
The extends clause must not list an element twice, by any nameTest Case: 9.1.2-unique-4Expected Result: FAIL
Regression Test:
tcltest::test 9.1.2-unique-3 { The extends clause must not list an element twice, by any name } { compile [saveas T912u3a.java { class T912u3a { interface I1 {} } class T912u3b extends T912u3a {} interface T912u3c extends T912u3a.I1, T912u3b.I1 {} }] } {FAIL}
An interface may inherit the same superinterface via more than one pathTest Case: 9.1.2-supertype-1Expected Result: PASS
Regression Test:
tcltest::test 9.1.2-unique-4 { An interface may inherit the same superinterface via more than one path } { compile [saveas T912u4a.java { interface T912u4a {} interface T912u4b extends T912u4a {} interface T912u4c extends T912u4a, T912u4b {} }] } {PASS}
Test for accessible inner supertype - Jikes bug 3202Expected Result: PASS
Regression Test:
tcltest::test 9.1.2-supertype-1 { Test for accessible inner supertype - Jikes bug 3202 } { compile [saveas T912s1_1.java { interface T912s1_1 { interface One {} } interface T912s1_2 extends T912s1_1 { interface Two extends One {} } interface T912s1_3 extends T912s1_2 { interface Three extends Two {} } }] } {PASS}
tests/jls/interfaces/interface-declarations/interface-body-and-member-declarations
An interface may include a field declarationTest Case: 9.1.3-body-2Expected Result: PASS
Regression Test:
tcltest::test 9.1.3-body-1 { An interface may include a field declaration } { empty_class T913b1 "interface I { int i = 1; }" } {PASS}
An interface may include an abstract method declarationTest Case: 9.1.3-body-3Expected Result: PASS
Regression Test:
tcltest::test 9.1.3-body-2 { An interface may include an abstract method declaration } { empty_class T913b2 "interface I { void m(); }" } {PASS}
An interface may include a class declarationTest Case: 9.1.3-body-4Expected Result: PASS
Regression Test:
tcltest::test 9.1.3-body-3 { An interface may include a class declaration } { empty_class T913b3 "interface I { class C {} }" } {PASS}
An interface may include an interface declarationTest Case: 9.1.3-body-5Expected Result: PASS
Regression Test:
tcltest::test 9.1.3-body-4 { An interface may include an interface declaration } { empty_class T913b4 "interface I { interface I1 {} }" } {PASS}
An interface may include an empty declarationTest Case: 9.1.3-body-6Expected Result: PASS
Regression Test:
tcltest::test 9.1.3-body-5 { An interface may include an empty declaration } { empty_class T913b5 "interface I { ; }" } {PASS}
An interface may not have a constructorTest Case: 9.1.3-body-7Expected Result: FAIL
Regression Test:
tcltest::test 9.1.3-body-6 { An interface may not have a constructor } { empty_class T913b6 "interface I { I() {} }" } {FAIL}
An interface may not have an instance initializerTest Case: 9.1.3-body-8Expected Result: FAIL
Regression Test:
tcltest::test 9.1.3-body-7 { An interface may not have an instance initializer } { empty_class T913b7 "interface I { {} }" } {FAIL}
An interface may not have a static initializerExpected Result: FAIL
Regression Test:
tcltest::test 9.1.3-body-8 { An interface may not have a static initializer } { empty_class T913b8 "interface I { static {} }" } {FAIL}
tests/jls/interfaces/interface-members
Interfaces implicitly have all public method members of ObjectTest Case: 9.2-implicit-2Expected Result: PASS
Regression Test:
tcltest::test 9.2-implicit-1 { Interfaces implicitly have all public method members of Object } { empty_class T92i1 { interface I {} void foo(I i) { i.getClass(); i.toString(); i.equals(null); i.hashCode(); try { i.wait(); i.wait(1); i.wait(1, 0); i.notifyAll(); i.notify(); } catch (Throwable t) { } } } } {PASS}
It is an error for an interface method to conflict with a public one from ObjectTest Case: 9.2-implicit-3Expected Result: FAIL
Regression Test:
tcltest::test 9.2-implicit-2 { It is an error for an interface method to conflict with a public one from Object } { empty_class T92i2 "interface I { int toString(); }" } {FAIL}
It is an error for an interface method to conflict with a public one from ObjectTest Case: 9.2-implicit-4Expected Result: FAIL
Regression Test:
tcltest::test 9.2-implicit-3 { It is an error for an interface method to conflict with a public one from Object } { empty_class T92i3 "interface I { String toString() throws Exception; }" } {FAIL}
It is an error for an interface method to conflict with a public one from ObjectTest Case: 9.2-implicit-5Expected Result: FAIL
Regression Test:
tcltest::test 9.2-implicit-4 { It is an error for an interface method to conflict with a public one from Object } { empty_class T92i4 "interface I { Class getClass(); }" } {FAIL}
An interface may redeclare a non-final method of ObjectTest Case: 9.2-implicit-6Expected Result: PASS
Regression Test:
tcltest::test 9.2-implicit-5 { An interface may redeclare a non-final method of Object } { empty_class T92i5 "interface I { String toString() throws Error; }" } {PASS}
Interfaces do not implicitly have any protected methods from Object. Javac compiles this, but the resulting class causes a VerifyError, so it should not have compiled.Test Case: 9.2-implicit-7Expected Result: FAIL
Regression Test:
tcltest::test 9.2-implicit-6 { Interfaces do not implicitly have any protected methods from Object. Javac compiles this, but the resulting class causes a VerifyError, so it should not have compiled. } { compile [saveas T92i6.java { interface T92i6 extends Cloneable { class Inner { Object bar(T92i6 i) { try { // Because this call is nested in the interface, it would have // full access to protected i.clone() if that existed. return i.clone(); } catch (CloneNotSupportedException e) { return null; } } } } }] } {FAIL}
Interfaces do not implicitly have any protected methods from Object. Javac compiles this, but the resulting class causes a VerifyError, so it should not have compiled.Test Case: 9.2-implicit-8Expected Result: FAIL
Regression Test:
tcltest::test 9.2-implicit-7 { Interfaces do not implicitly have any protected methods from Object. Javac compiles this, but the resulting class causes a VerifyError, so it should not have compiled. } { compile [saveas T92i7.java { interface T92i7 extends Cloneable { class Inner { void bar(T92i7 i) { try { // Because this call is nested in the interface, it would have // full access to protected i.finalize() if that existed. i.finalize(); } catch (Throwable t) { } } } } }] } {FAIL}
Interfaces do not implicitly have any protected methods from Object. Thus, this declaration is legal (although the interface is unimplementable) - see Jikes bug 2878Test Case: 9.2-implicit-9Expected Result: OK
Regression Test:
tcltest::test 9.2-implicit-8 { Interfaces do not implicitly have any protected methods from Object. Thus, this declaration is legal (although the interface is unimplementable) - see Jikes bug 2878 } { ok_pass_or_warn [empty_class T92i8 "interface I { int clone(); }"] } {OK}
Interfaces do not implicitly have any protected methods from Object. Thus, this declaration is legal - see Jikes bug 2878Test Case: 9.2-implicit-10Expected Result: OK
Regression Test:
tcltest::test 9.2-implicit-9 { Interfaces do not implicitly have any protected methods from Object. Thus, this declaration is legal - see Jikes bug 2878 } { ok_pass_or_warn [empty_class T92i9 { interface I { Object clone() throws java.io.IOException; } }] } {OK}
Interfaces do not implicitly have any protected methods from Object. Thus, this declaration is legal (although the interface is unimplementable) - see Jikes bug 2878Test Case: 9.2-implicit-11Expected Result: OK
Regression Test:
tcltest::test 9.2-implicit-10 { Interfaces do not implicitly have any protected methods from Object. Thus, this declaration is legal (although the interface is unimplementable) - see Jikes bug 2878 } { ok_pass_or_warn [empty_class T92i10 "interface I { int finalize(); }"] } {OK}
Proof that the interfaces of tests 8 and 10 are unimplementable, although the interface itself is legal - see Jikes bug 2878Test Case: 9.2-implicit-12Expected Result: FAIL
Regression Test:
tcltest::test 9.2-implicit-11 { Proof that the interfaces of tests 8 and 10 are unimplementable, although the interface itself is legal - see Jikes bug 2878} { empty_class T92i11 { interface I { int clone(); } abstract class C implements I {} } } {FAIL}
Proof that the interfaces of tests 8 and 10 are unimplementable, although the interface itself is legal - see Jikes bug 2878Test Case: 9.2-implicit-13Expected Result: FAIL
Regression Test:
tcltest::test 9.2-implicit-12 { Proof that the interfaces of tests 8 and 10 are unimplementable, although the interface itself is legal - see Jikes bug 2878} { empty_class T92i12 { interface I { int finalize(); } abstract class C implements I {} } } {FAIL}
Although an interface may extend the throws clause for clone(), implementing classes can only throw the common subset of checked exceptions as compared to Object.cloneTest Case: 9.2-implicit-14Expected Result: OK
Regression Test:
tcltest::test 9.2-implicit-13 { Although an interface may extend the throws clause for clone(), implementing classes can only throw the common subset of checked exceptions as compared to Object.clone } { ok_pass_or_warn [empty_class T92i13 { interface I { Object clone() throws java.io.IOException; } class C implements I { public Object clone() { return null; } } }] } {OK}
Although an interface may extend the throws clause for clone(), implementing classes can only throw the common subset of checked exceptions as compared to Object.cloneTest Case: 9.2-implicit-15Expected Result: FAIL
Regression Test:
tcltest::test 9.2-implicit-14 { Although an interface may extend the throws clause for clone(), implementing classes can only throw the common subset of checked exceptions as compared to Object.clone } { empty_class T92i14 { interface I { Object clone() throws java.io.IOException; } class C implements I { public Object clone() throws CloneNotSupportedException { return null; } } } } {FAIL}
Although an interface may extend the throws clause for clone(), implementing classes can only throw the common subset of checked exceptions as compared to Object.cloneTest Case: 9.2-implicit-16Expected Result: FAIL
Regression Test:
tcltest::test 9.2-implicit-15 { Although an interface may extend the throws clause for clone(), implementing classes can only throw the common subset of checked exceptions as compared to Object.clone } { empty_class T92i15 { interface I { Object clone() throws java.io.IOException; } class C implements I { public Object clone() throws java.io.IOException { return null; } } } } {FAIL}
Although an interface may extend the throws clause for clone(), implementing classes can only throw the common subset of checked exceptions as compared to Object.cloneTest Case: 9.2-implicit-17Expected Result: OK
Regression Test:
tcltest::test 9.2-implicit-16 { Although an interface may extend the throws clause for clone(), implementing classes can only throw the common subset of checked exceptions as compared to Object.clone } { ok_pass_or_warn [empty_class T92i16 { interface I { Object clone() throws java.io.IOException; } abstract class C implements I { public abstract Object clone(); } void m(C c) { c.clone(); // cannot throw a checked exception } }] } {OK}
The version of clone() inherited from Object does not satisfy clone() specified in an interfaceTest Case: 9.2-implicit-18Expected Result: FAIL
Regression Test:
tcltest::test 9.2-implicit-17 { The version of clone() inherited from Object does not satisfy clone() specified in an interface } { empty_class T92i17 { interface I { Object clone() throws java.io.IOException; } abstract class C implements I {} } } {FAIL}
The version of clone() inherited from Object does not satisfy clone() specified in an interfaceTest Case: 9.2-implicit-19Expected Result: FAIL
Regression Test:
tcltest::test 9.2-implicit-18 { The version of clone() inherited from Object does not satisfy clone() specified in an interface } { empty_class T92i18 { interface I { Object clone() throws CloneNotSupportedException; } abstract class C implements I {} } } {FAIL}
The version of finalize() inherited from Object does not satisfy finalize() specified in an interfaceExpected Result: FAIL
Regression Test:
tcltest::test 9.2-implicit-19 { The version of finalize() inherited from Object does not satisfy finalize() specified in an interface } { empty_class T92i19 { interface I { void finalize() throws Throwable; } abstract class C implements I {} } } {FAIL}
tests/jls/interfaces/field-constant-declarations
An interface field may be redundantly publicTest Case: 9.3-modifier-2Expected Result: OK
Regression Test:
tcltest::test 9.3-modifier-1 { An interface field may be redundantly public } { ok_pass_or_warn [empty_class T93m1 "interface I { public int i = 1; }"] } {OK}
An interface field may not have public twiceTest Case: 9.3-modifier-3Expected Result: FAIL
Regression Test:
tcltest::test 9.3-modifier-2 { An interface field may not have public twice } { empty_class T93m2 "interface I { public public int i = 1; }" } {FAIL}
An interface field may be redundantly staticTest Case: 9.3-modifier-4Expected Result: OK
Regression Test:
tcltest::test 9.3-modifier-3 { An interface field may be redundantly static } { ok_pass_or_warn [empty_class T93m3 "interface I { static int i = 1; }"] } {OK}
An interface field may not have static twiceTest Case: 9.3-modifier-5Expected Result: FAIL
Regression Test:
tcltest::test 9.3-modifier-4 { An interface field may not have static twice } { empty_class T93m4 "interface I { static static int i = 1; }" } {FAIL}
An interface field may be redundantly finalTest Case: 9.3-modifier-6Expected Result: OK
Regression Test:
tcltest::test 9.3-modifier-5 { An interface field may be redundantly final } { ok_pass_or_warn [empty_class T93m5 "interface I { final int i = 1; }"] } {OK}
An interface field may not have final twiceTest Case: 9.3-modifier-7Expected Result: FAIL
Regression Test:
tcltest::test 9.3-modifier-6 { An interface field may not have final twice } { empty_class T93m6 "interface I { final final int i = 1; }" } {FAIL}
An interface field may not be protectedTest Case: 9.3-modifier-8Expected Result: FAIL
Regression Test:
tcltest::test 9.3-modifier-7 { An interface field may not be protected } { empty_class T93m7 "interface I { protected int i = 1; }" } {FAIL}
An interface field may not be privateTest Case: 9.3-modifier-9Expected Result: FAIL
Regression Test:
tcltest::test 9.3-modifier-8 { An interface field may not be private } { empty_class T93m8 "interface I { private int i = 1; }" } {FAIL}
An interface field may not be abstractTest Case: 9.3-modifier-10Expected Result: FAIL
Regression Test:
tcltest::test 9.3-modifier-9 { An interface field may not be abstract } { empty_class T93m9 "interface I { abstract int i = 1; }" } {FAIL}
An interface field may not be transientTest Case: 9.3-modifier-11Expected Result: FAIL
Regression Test:
tcltest::test 9.3-modifier-10 { An interface field may not be transient } { empty_class T93m10 "interface I { transient int i = 1; }" } {FAIL}
An interface field may not be volatileTest Case: 9.3-modifier-12Expected Result: FAIL
Regression Test:
tcltest::test 9.3-modifier-11 { An interface field may not be volatile } { empty_class T93m11 "interface I { volatile int i = 1; }" } {FAIL}
An interface field may not be strictfpTest Case: 9.3-modifier-13Expected Result: FAIL
Regression Test:
tcltest::test 9.3-modifier-12 { An interface field may not be strictfp } { empty_class T93m12 "interface I { strictfp int i = 1; }" } {FAIL}
An interface field may not be nativeTest Case: 9.3-modifier-14Expected Result: FAIL
Regression Test:
tcltest::test 9.3-modifier-13 { An interface field may not be native } { empty_class T93m13 "interface I { native int i = 1; }" } {FAIL}
An interface field may not be synchronizedTest Case: 9.3-modifier-15Expected Result: FAIL
Regression Test:
tcltest::test 9.3-modifier-14 { An interface field may not be synchronized } { empty_class T93m14 "interface I { synchronized int i = 1; }" } {FAIL}
Longest legal modifier sequenceTest Case: 9.3-modifier-16Expected Result: OK
Regression Test:
tcltest::test 9.3-modifier-15 { Longest legal modifier sequence } { ok_pass_or_warn [empty_class T93m15 { interface I { public static final int i = 1; } }] } {OK}
Stress testTest Case: 9.3-modifier-17Expected Result: FAIL
Regression Test:
tcltest::test 9.3-modifier-16 { Stress test } { empty_class T93m16 { interface I { public static final protected private abstract transient volatile strictfp native synchronized public static final int i = 1; } } } {FAIL}
static public is legal, though redundant and not in the preferred orderTest Case: 9.3-modifier-18Expected Result: OK
Regression Test:
tcltest::test 9.3-modifier-17 { static public is legal, though redundant and not in the preferred order } { ok_pass_or_warn [empty_class T93m17 { interface I { static public int i = 1; } }] } {OK}
final public is legal, though redundant and not in the preferred orderTest Case: 9.3-modifier-19Expected Result: OK
Regression Test:
tcltest::test 9.3-modifier-18 { final public is legal, though redundant and not in the preferred order } { ok_pass_or_warn [empty_class T93m18 { interface I { final public int i = 1; } }] } {OK}
final static is legal, though redundant and not in the preferred orderTest Case: 9.3-conflict-1Expected Result: OK
Regression Test:
tcltest::test 9.3-modifier-19 { final static is legal, though redundant and not in the preferred order } { ok_pass_or_warn [empty_class T93m19 { interface I { final static int i = 1; } }] } {OK}
An interface may not declare the same field twiceTest Case: 9.3-conflict-2Expected Result: FAIL
Regression Test:
tcltest::test 9.3-conflict-1 { An interface may not declare the same field twice } { empty_class T93c1 "interface I { int i = 1; int i = 2; }" } {FAIL}
An interface may inherit a field with the same name twice, provided it doesn't either one by simple nameTest Case: 9.3-conflict-3Expected Result: PASS
Regression Test:
tcltest::test 9.3-conflict-2 { An interface may inherit a field with the same name twice, provided it doesn't either one by simple name } { empty_class T93c2 { interface I1 { int i = 1; } interface I2 { int i = 2; } interface I3 extends I1, I2 {} } } {PASS}
An interface may inherit a field with the same name twice, but may not use it, even if both have the same valueTest Case: 9.3-conflict-4Expected Result: FAIL
Regression Test:
tcltest::test 9.3-conflict-3 { An interface may inherit a field with the same name twice, but may not use it, even if both have the same value } { empty_class T93c3 { interface I1 { int i = 1; } interface I2 { int i = 1; } interface I3 extends I1, I2 { int j = i; } } } {FAIL}
A field inherited through two paths is not ambiguousExpected Result: PASS
Regression Test:
tcltest::test 9.3-conflict-4 { A field inherited through two paths is not ambiguous } { empty_class T93c4 { interface I1 { int i = 1; } interface I2 extends I1 {} interface I3 extends I1, I2 { int j = i; } } } {PASS}
tests/jls/interfaces/field-constant-declarations/initialization-of-fields
All interface fields must have an initializerTest Case: 9.3.1-init-2Expected Result: FAIL
Regression Test:
tcltest::test 9.3.1-init-1 { All interface fields must have an initializer } { compile [saveas T931i1.java { interface T931i1 { int i; } }] } {FAIL}
Keyword this may not appear directly in initTest Case: 9.3.1-init-3Expected Result: FAIL
Regression Test:
tcltest::test 9.3.1-init-2 { Keyword this may not appear directly in init } { empty_class T931i2 { interface I { int j = 1; int i = this.j; } } } {FAIL}
Keyword super may not appear directly in initTest Case: 9.3.1-init-4Expected Result: FAIL
Regression Test:
tcltest::test 9.3.1-init-3 { Keyword super may not appear directly in init } { empty_class T931i3 { interface I1 { int i = 1; } interface I2 extends I1 { int j = super.i; } } } {FAIL}
Initializer may use anonymous classTest Case: 9.3.1-init-5Expected Result: PASS
Regression Test:
tcltest::test 9.3.1-init-4 { Initializer may use anonymous class } { empty_class T931i4 { interface I { int i = new Object() { int foo() { return 1; } }.foo(); } } } {PASS}
Initializer may use class literalTest Case: 9.3.1-init-6Expected Result: PASS
Regression Test:
tcltest::test 9.3.1-init-5 { Initializer may use class literal } { empty_class T931i5 "interface I { Class c = I.class; }" } {PASS}
Initializer may use anonymous classTest Case: 9.3.1-illegal-forward-1Expected Result: PASS
Regression Test:
tcltest::test 9.3.1-init-6 { Initializer may use anonymous class } { compile [saveas T931i6a.java { interface T931i6a { int i = new Object() { int m() { return 0; } }.m(); } class T931i6b { int j = T931i6a.i; } }] } {PASS}
Simple usage before declaration legal if not in declaring classTest Case: 9.3.1-illegal-forward-2Expected Result: FAIL
Regression Test:
tcltest::test 9.3.1-illegal-forward-1 { Simple usage before declaration legal if not in declaring class } { empty_class T931if1 { interface I { int i = j; int j = 1; } } } {FAIL}
Simple usage before declaration legal if not in declaring classTest Case: 9.3.1-legal-forward-1Expected Result: FAIL
Regression Test:
tcltest::test 9.3.1-illegal-forward-2 { Simple usage before declaration legal if not in declaring class } { empty_class T931if2 { interface I { int i = i + 1; } } } {FAIL}
Simple usage before declaration legal if not in declaring classTest Case: 9.3.1-legal-forward-2Expected Result: PASS
Regression Test:
tcltest::test 9.3.1-legal-forward-1 { Simple usage before declaration legal if not in declaring class } { empty_class T931lf1 { interface I { int i = I.j; // not simple usage int j = 1; } } } {PASS}
Simple usage before declaration legal if not in declaring classExpected Result: PASS
Regression Test:
tcltest::test 9.3.1-legal-forward-2 { Simple usage before declaration legal if not in declaring class } { empty_class T931lf2 { interface I { int i = new Object(){ int bar() { return j; } }.bar(); // not in declaring class int j = 1; } } } {PASS}
tests/jls/interfaces/abstract-method-declarations
interface methods may be redundantly publicTest Case: 9.4-modifier-2Expected Result: OK
Regression Test:
tcltest::test 9.4-modifier-1 { interface methods may be redundantly public } { ok_pass_or_warn [empty_class T94m1 "interface I { public void m(); }"] } {OK}
interface methods may not have public twiceTest Case: 9.4-modifier-3Expected Result: FAIL
Regression Test:
tcltest::test 9.4-modifier-2 { interface methods may not have public twice } { empty_class T94m1 "interface I { public public void m(); }" } {FAIL}
interface methods may be redundantly abstractTest Case: 9.4-modifier-4Expected Result: OK
Regression Test:
tcltest::test 9.4-modifier-3 { interface methods may be redundantly abstract } { ok_pass_or_warn [empty_class T94m3 "interface I { abstract void m(); }"] } {OK}
interface methods may not have abstract twiceTest Case: 9.4-modifier-5Expected Result: FAIL
Regression Test:
tcltest::test 9.4-modifier-4 { interface methods may not have abstract twice } { empty_class T94m4 "interface I { abstract abstract void m(); }" } {FAIL}
interface methods may not be protectedTest Case: 9.4-modifier-6Expected Result: FAIL
Regression Test:
tcltest::test 9.4-modifier-5 { interface methods may not be protected } { empty_class T94m5 "interface I { protected void m(); }" } {FAIL}
interface methods may not be privateTest Case: 9.4-modifier-7Expected Result: FAIL
Regression Test:
tcltest::test 9.4-modifier-6 { interface methods may not be private } { empty_class T94m6 "interface I { private void m(); }" } {FAIL}
interface methods may not be staticTest Case: 9.4-modifier-8Expected Result: FAIL
Regression Test:
tcltest::test 9.4-modifier-7 { interface methods may not be static } { empty_class T94m7 "interface I { static void m(); }" } {FAIL}
interface methods may not be finalTest Case: 9.4-modifier-9Expected Result: FAIL
Regression Test:
tcltest::test 9.4-modifier-8 { interface methods may not be final } { empty_class T94m8 "interface I { final void m(); }" } {FAIL}
interface methods may not be transientTest Case: 9.4-modifier-10Expected Result: FAIL
Regression Test:
tcltest::test 9.4-modifier-9 { interface methods may not be transient } { empty_class T94m9 "interface I { transient void m(); }" } {FAIL}
interface methods may not be volatileTest Case: 9.4-modifier-11Expected Result: FAIL
Regression Test:
tcltest::test 9.4-modifier-10 { interface methods may not be volatile } { empty_class T94m10 "interface I { volatile void m(); }" } {FAIL}
interface methods may not be strictfpTest Case: 9.4-modifier-12Expected Result: FAIL
Regression Test:
tcltest::test 9.4-modifier-11 { interface methods may not be strictfp } { empty_class T94m11 "interface I { strictfp void m(); }" } {FAIL}
interface methods may not be nativeTest Case: 9.4-modifier-13Expected Result: FAIL
Regression Test:
tcltest::test 9.4-modifier-12 { interface methods may not be native } { empty_class T94m12 "interface I { native void m(); }" } {FAIL}
interface methods may not be synchronizedTest Case: 9.4-modifier-14Expected Result: FAIL
Regression Test:
tcltest::test 9.4-modifier-13 { interface methods may not be synchronized } { empty_class T94m13 "interface I { synchronized void m(); }" } {FAIL}
Longest legal modifier sequenceTest Case: 9.4-modifier-15Expected Result: OK
Regression Test:
tcltest::test 9.4-modifier-14 { Longest legal modifier sequence } { ok_pass_or_warn [empty_class T94m14 { interface I { public abstract void m(); } }] } {OK}
Stress testTest Case: 9.4-conflict-1Expected Result: FAIL
Regression Test:
tcltest::test 9.4-modifier-15 { Stress test } { empty_class T94m15 { interface I { public abstract protected private static final transient volatile strictfp native synchronized public abstract void m(); } } } {FAIL}
An interface may not declare the same method twiceTest Case: 9.4-conflict-2Expected Result: FAIL
Regression Test:
tcltest::test 9.4-conflict-1 { An interface may not declare the same method twice } { empty_class T94c1 "interface I { void m(); void m(); }" } {FAIL}
An interface may inherit a method with the same name and signature twiceTest Case: 9.4-conflict-3Expected Result: PASS
Regression Test:
tcltest::test 9.4-conflict-2 { An interface may inherit a method with the same name and signature twice } { empty_class T94c2 { interface I1 { void m(); } interface I2 { void m(); } interface I3 extends I1, I2 {} } } {PASS}
An interface may inherit a method with the same name and signature twice, and there is no ambiguity in using itTest Case: 9.4-conflict-4Expected Result: PASS
Regression Test:
tcltest::test 9.4-conflict-3 { An interface may inherit a method with the same name and signature twice, and there is no ambiguity in using it } { empty_class T94c3 { interface I1 { void m(); } interface I2 { void m(); } interface I3 extends I1, I2 {} void foo(I3 i) { i.m(); } } } {PASS}
A method inherited through two paths is not ambiguousTest Case: 9.4-abstract-1Expected Result: PASS
Regression Test:
tcltest::test 9.4-conflict-4 { A method inherited through two paths is not ambiguous } { empty_class T94c4 { interface I1 { void m(); } interface I2 extends I1 {} interface I3 extends I1, I2 {} void bar(I3 i) { i.m(); } } } {PASS}
An interface method is abstract, so it must not have a bodyExpected Result: FAIL
Regression Test:
tcltest::test 9.4-abstract-1 { An interface method is abstract, so it must not have a body } { empty_class T94a1 "interface I { void m() {} }" } {FAIL}
tests/jls/interfaces/abstract-method-declarations/inheritance-and-overriding
An overriding method must not conflict in return type or throws clauseTest Case: 9.4.1-conflict-2Expected Result: FAIL
Regression Test:
tcltest::test 9.4.1-conflict-1 { An overriding method must not conflict in return type or throws clause } { empty_class T941c1 { interface I1 { void m(); } interface I2 extends I1 { int m(); } } } {FAIL}
An overriding method must not conflict in return type or throws clauseTest Case: 9.4.1-conflict-3Expected Result: FAIL
Regression Test:
tcltest::test 9.4.1-conflict-2 { An overriding method must not conflict in return type or throws clause } { empty_class T941c2 { interface I1 { void m(); } interface I2 extends I1 { void m() throws Exception; } } } {FAIL}
An interface must not inherit conflicting return types, but throws clauses are okTest Case: 9.4.1-conflict-4Expected Result: FAIL
Regression Test:
tcltest::test 9.4.1-conflict-3 { An interface must not inherit conflicting return types, but throws clauses are ok } { empty_class T941c3 { interface I1 { void m(); } interface I2 { int m(); } interface I3 extends I1, I2 {} } } {FAIL}
An interface must not inherit conflicting return types, but throws clauses are okTest Case: 9.4.1-override-1Expected Result: PASS
Regression Test:
tcltest::test 9.4.1-conflict-4 { An interface must not inherit conflicting return types, but throws clauses are ok } { empty_class T941c4 { class E1 extends Exception {} class E2 extends Exception {} interface I1 { void m() throws E1; } interface I2 { void m() throws E2; } interface I3 extends I1, I2 {} } } {PASS}
methods not overridden are inheritedTest Case: 9.4.1-override-2Expected Result: PASS
Regression Test:
tcltest::test 9.4.1-override-1 { methods not overridden are inherited } { empty_class T941o1 { interface I1 { void m(); void m(int i); } interface I2 extends I1 { void m(); } void foo(I2 i) { i.m(1); } } } {PASS}
A method may be overridden to have a less permissive throws clauseExpected Result: PASS
Regression Test:
tcltest::test 9.4.1-override-2 { A method may be overridden to have a less permissive throws clause } { empty_class T941o2 { interface I1 { void m() throws Throwable; } interface I2 extends I1 { void m() throws Exception; } } } {PASS}
tests/jls/interfaces/abstract-method-declarations/overloading
there are no required relations between overloaded methodsTest Case: 9.4.2-overload-2Expected Result: PASS
Regression Test:
tcltest::test 9.4.2-overload-1 { there are no required relations between overloaded methods } { empty_class T942o1 { interface I { void m(); int m(int i) throws Exception; } } } {PASS}
there are no required relations between overloaded methodsExpected Result: PASS
Regression Test:
tcltest::test 9.4.2-overload-2 { there are no required relations between overloaded methods } { empty_class T942o2 { interface I1 { void m(); } interface I2 extends I1 { int m(int i) throws Exception; } } } {PASS}
tests/jls/arrays/array-initializers
array initializer may be emptyTest Case: 10.6-syntax-2Expected Result: PASS
Regression Test:
tcltest::test 10.6-syntax-1 { array initializer may be empty } { empty_main T106s1 { int[] ia = {}; } } {PASS}
array initializer may contain initializersTest Case: 10.6-syntax-3Expected Result: PASS
Regression Test:
tcltest::test 10.6-syntax-2 { array initializer may contain initializers } { empty_main T106s2 { int[] ia = { 1 }; } } {PASS}
array initializer may contain initializersTest Case: 10.6-syntax-4Expected Result: PASS
Regression Test:
tcltest::test 10.6-syntax-3 { array initializer may contain initializers } { empty_main T106s3 { int[] ia = { 1, 2 }; } } {PASS}
array initializer may contain concluding commaTest Case: 10.6-syntax-5Expected Result: PASS
Regression Test:
tcltest::test 10.6-syntax-4 { array initializer may contain concluding comma } { empty_main T106s4 { int[] ia = { , }; } } {PASS}
array initializer may contain concluding commaTest Case: 10.6-syntax-6Expected Result: PASS
Regression Test:
tcltest::test 10.6-syntax-5 { array initializer may contain concluding comma } { empty_main T106s5 { int[] ia = { 1, }; } } {PASS}
array initializers may nestTest Case: 10.6-type-1Expected Result: PASS
Regression Test:
tcltest::test 10.6-syntax-6 { array initializers may nest } { empty_main T106i6 { int[][] iaa = { {1}, {2} }; } } {PASS}
expressions in array initializer must be assignment compatible with array typeTest Case: 10.6-type-2Expected Result: PASS
Regression Test:
tcltest::test 10.6-type-1 { expressions in array initializer must be assignment compatible with array type } { empty_main T106t1 { short s = 1; int[] ia = { s, '1' }; } } {PASS}
expressions in array initializer must be assignment compatible with array typeTest Case: 10.6-type-3Expected Result: FAIL
Regression Test:
tcltest::test 10.6-type-2 { expressions in array initializer must be assignment compatible with array type } { empty_main T106t2 { int[] ia = { 1L }; } } {FAIL}
expressions in array initializer must be assignment compatible with array typeTest Case: 10.6-type-4Expected Result: FAIL
Regression Test:
tcltest::test 10.6-type-3 { expressions in array initializer must be assignment compatible with array type } { empty_main T106t3 { int[] ia = { new Object() }; } } {FAIL}
expressions in array initializer must be assignment compatible with array typeTest Case: 10.6-type-5Expected Result: FAIL
Regression Test:
tcltest::test 10.6-type-4 { expressions in array initializer must be assignment compatible with array type } { empty_main T106t4 { int[] ia = { null }; } } {FAIL}
expressions in array initializer must be assignment compatible with array typeTest Case: 10.6-type-6Expected Result: FAIL
Regression Test:
tcltest::test 10.6-type-5 { expressions in array initializer must be assignment compatible with array type } { empty_main T106t5 { int[] ia = { System.out.println() }; } } {FAIL}
expressions in array initializer must be assignment compatible with array typeTest Case: 10.6-type-7Expected Result: FAIL
Regression Test:
tcltest::test 10.6-type-6 { expressions in array initializer must be assignment compatible with array type } { empty_main T106t6 { Object[] oa = { 1 }; } } {FAIL}
expressions in array initializer must be assignment compatible with array typeTest Case: 10.6-type-8Expected Result: PASS
Regression Test:
tcltest::test 10.6-type-7 { expressions in array initializer must be assignment compatible with array type } { empty_main T106t7 { Object[] oa = { new Object() }; } } {PASS}
expressions in array initializer must be assignment compatible with array typeTest Case: 10.6-type-9Expected Result: PASS
Regression Test:
tcltest::test 10.6-type-8 { expressions in array initializer must be assignment compatible with array type } { empty_main T106t8 { Object[] oa = { null }; } } {PASS}
expressions in array initializer must be assignment compatible with array typeTest Case: 10.6-type-10Expected Result: FAIL
Regression Test:
tcltest::test 10.6-type-9 { expressions in array initializer must be assignment compatible with array type } { empty_main T106t9 { Object[] oa = { System.out.println() }; } } {FAIL}
expressions in array initializer must be assignment compatible with array typeTest Case: 10.6-type-11Expected Result: PASS
Regression Test:
tcltest::test 10.6-type-10 { expressions in array initializer must be assignment compatible with array type } { empty_main T106t10 { int[][] iaa = { {1} }; } } {PASS}
expressions in array initializer must be assignment compatible with array typeTest Case: 10.6-type-12Expected Result: FAIL
Regression Test:
tcltest::test 10.6-type-11 { expressions in array initializer must be assignment compatible with array type } { empty_main T106t11 { int[][] iaa = { 1 }; } } {FAIL}
expressions in array initializer must be assignment compatible with array typeTest Case: 10.6-type-13Expected Result: FAIL
Regression Test:
tcltest::test 10.6-type-12 { expressions in array initializer must be assignment compatible with array type } { empty_main T106t12 { int[][] iaa = { { {1} } }; } } {FAIL}
expressions in array initializer must be assignment compatible with array typeExpected Result: PASS
Regression Test:
tcltest::test 10.6-type-13 { expressions in array initializer must be assignment compatible with array type } { empty_main T106t13 { int[][] iaa = { {1, 2}, null }; } } {PASS}
tests/jls/binary-compatibility/form-of-binary
Constructors in a non-private non-static nested class have an additional first parameter in the binary, for the enclosing classTest Case: 13.1-covariance-1Expected Result: PASS
Regression Test:
tcltest::test 13.1-constructor-1 { Constructors in a non-private non-static nested class have an additional first parameter in the binary, for the enclosing class } { empty_class T131c1a { class Inner {} } delete T131c1a.java compile -classpath . [saveas T131c1b.java { class T131c1b { Object o = new T131c1a().new Inner(); } }] } {PASS}
Class files may have more than one method with the same parameter types but different return types. In particular, legal .class files compiled with gj (generic java) or the JSR14 beta compiler (the prequel to the expected JDK 1.5) allow covariance in return types, and do so by compiling synthetic bridge methods. Here, we check that the compiler is able to gracefully handle covariance when loading a .class file, even though this is normally a binary incompatible change.Test Case: 13.1-covariance-2Expected Result: PASS
Regression Test:
tcltest::test 13.1-covariance-1 { Class files may have more than one method with the same parameter types but different return types. In particular, legal .class files compiled with gj (generic java) or the JSR14 beta compiler (the prequel to the expected JDK 1.5) allow covariance in return types, and do so by compiling synthetic bridge methods. Here, we check that the compiler is able to gracefully handle covariance when loading a .class file, even though this is normally a binary incompatible change. } { compile [saveas T131co1a.java { class T131co1a { T131co1b m() { return null; } } class T131co1b extends T131co1a { T131co1b m() { return null; } } class T131co1c extends T131co1b { { m(); } } }] delete T131co1a.java compile -classpath . [saveas T131co1a.java { class T131co1a { T131co1a m() { return null; } // change return type to a instead of b } // class T131co1b extends T131co1a { // T131co1b m() { return null; } // now covariant! // if this class were uncommented and compiled by gj, it would also have // /*synthetic*/ T131co1a m() { return /*T131co1b*/m(); } // } class T131co1c extends T131co1b { { m(); } } }] } {PASS}
Class files may have more than one method with the same parameter types but different return types. In particular, legal .class files compiled with gj (generic java) or the JSR14 beta compiler (the prequel to the expected JDK 1.5) allow covariance in return types, and do so by compiling synthetic bridge methods. Here, we check that the compiler is able to gracefully handle covariance when loading a .class file, even though this is normally a binary incompatible change.Test Case: 13.1-covariance-3Expected Result: PASS
Regression Test:
tcltest::test 13.1-covariance-2 { Class files may have more than one method with the same parameter types but different return types. In particular, legal .class files compiled with gj (generic java) or the JSR14 beta compiler (the prequel to the expected JDK 1.5) allow covariance in return types, and do so by compiling synthetic bridge methods. Here, we check that the compiler is able to gracefully handle covariance when loading a .class file, even though this is normally a binary incompatible change. } { compile [saveas T131co2a.java { class T131co2a { T131co2b[] m() { return null; } } class T131co2b extends T131co2a { T131co2b[] m() { return null; } } class T131co2c extends T131co2b { { m(); } } }] delete T131co2a.java compile -classpath . [saveas T131co2a.java { class T131co2a { T131co2a[] m() { return null; } // change return type to a[] instead of b[] } // class T131co2b extends T131co2a { // T131co2b[] m() { return null; } // now covariant! // if this class were uncommented and compiled by gj, it would also have // /*synthetic*/ T131co2a[] m() { return /*T131co2b*/m(); } // } class T131co2c extends T131co2b { { m(); } } }] } {PASS}
Class files may have more than one method with the same parameter types but different return types. In particular, legal .class files compiled with gj (generic java) or the JSR14 beta compiler (the prequel to the expected JDK 1.5) allow covariance in return types, and do so by compiling synthetic bridge methods. Here, we check that the compiler is able to gracefully handle covariance when loading a .class file, even though this is normally a binary incompatible change.Expected Result: PASS
Regression Test:
tcltest::test 13.1-covariance-3 { Class files may have more than one method with the same parameter types but different return types. In particular, legal .class files compiled with gj (generic java) or the JSR14 beta compiler (the prequel to the expected JDK 1.5) allow covariance in return types, and do so by compiling synthetic bridge methods. Here, we check that the compiler is able to gracefully handle covariance when loading a .class file, even though this is normally a binary incompatible change. } { compile [saveas T131co3a.java { interface T131co3a { T131co3b m(); } interface T131co3b extends T131co3a { T131co3b m(); } abstract class T131co3c implements T131co3b { { m(); } } }] delete T131co3a.java compile -classpath . [saveas T131co3a.java { interface T131co3a { T131co3a m(); // change return type to a instead of b } // interface T131co3b extends T131co3a { // T131co3b m(); // now covariant! // } abstract class T131co3c implements T131co3b { // if b were uncommented and compiled by gj, this class would also have // /*synthetic*/ T131co3a m() { return /*T131co3b*/m(); } // Note that calling a.m() may fail when this class is not compiled by // gj, as the bridge method is missing; but that is a different problem. { m(); } } }] } {PASS}
tests/jls/blocks-and-statements/local-class-declarations
tests local class declarations in both static and instance methodsTest Case: 14.3-scope-1Expected Result: PASS
Regression Test:
tcltest::test 14.3-1 { tests local class declarations in both static and instance methods } { empty_class TestLCD { static Object static_method() { abstract class Foo { } return new Foo() { }; } Object instance_method() { abstract class Foo { } return new Foo() { }; } } } {PASS}
The scope of a local class includes its declarationTest Case: 14.3-scope-2Expected Result: FAIL
Regression Test:
tcltest::test 14.3-scope-1 { The scope of a local class includes its declaration } { empty_main T143s1 { class Local extends Local {} } } {FAIL}
The scope of a local class starts at its declaration, not beforeTest Case: 14.3-scope-3Expected Result: FAIL
Regression Test:
tcltest::test 14.3-scope-2 { The scope of a local class starts at its declaration, not before } { empty_main T143s2 { new Local(); class Local {} } } {FAIL}
The scope of a local class continues to the end of the current blockTest Case: 14.3-scope-4Expected Result: PASS
Regression Test:
tcltest::test 14.3-scope-3 { The scope of a local class continues to the end of the current block } { empty_main T143s3 { class Local { { new Local() {}; } } new Local(); { new Local(); } } } {PASS}
The scope of a local class continues to the end of the current blockTest Case: 14.3-scope-5Expected Result: FAIL
Regression Test:
tcltest::test 14.3-scope-4 { The scope of a local class continues to the end of the current block } { empty_main T143s4 { class Local {} class Local {} } } {FAIL}
The scope of a local class continues to the end of the current blockTest Case: 14.3-scope-6Expected Result: FAIL
Regression Test:
tcltest::test 14.3-scope-5 { The scope of a local class continues to the end of the current block } { empty_main T143s5 { class Local {} { class Local {} } } } {FAIL}
The scope of a local class continues to the end of the current block, but may be shadowed in other classesTest Case: 14.3-scope-7Expected Result: PASS
Regression Test:
tcltest::test 14.3-scope-6 { The scope of a local class continues to the end of the current block, but may be shadowed in other classes } { empty_main T143s6 { class Local {} { new Object() { class Local {} }; } new Object() { class Local {} }; } } {PASS}
The scope of a local class continues to the end of the current blockTest Case: 14.3-scope-8Expected Result: PASS
Regression Test:
tcltest::test 14.3-scope-7 { The scope of a local class continues to the end of the current block } { empty_main T143s7 { { class Local {} } class Local {} } } {PASS}
Example of scoping, minus failuresTest Case: 14.3-scope-9Expected Result: PASS
Regression Test:
tcltest::test 14.3-scope-8 { Example of scoping, minus failures } { empty_class T143s8 { class Cyclic {} void foo() { new Cyclic(); // create a T143s8.Cyclic { class Local{}; { class AnotherLocal { void bar() { class Local {}; // ok } } } } class Local{}; // ok, not in scope of prior Local } } } {PASS}
The scope of a local class starts at its declaration, not beforeTest Case: 14.3-scope-10Expected Result: PASS
Regression Test:
tcltest::test 14.3-scope-9 { The scope of a local class starts at its declaration, not before } { empty_class T143s9 { class Local { static final int i = 1; } void m(int j) { switch (j) { case 0: case (1 == Local.i ? 1 : 0): } class Local { static final int i = 2; } switch (j) { case 0: case (2 == Local.i ? 1 : 0): } } } } {PASS}
While not well-specified, the scope of a local class in a switch statement extends to the end of the switchTest Case: 14.3-scope-11Expected Result: PASS
Regression Test:
tcltest::test 14.3-scope-10 { While not well-specified, the scope of a local class in a switch statement extends to the end of the switch } { empty_class T143s10 { void m(int i) { switch (i) { case 0: class Local {} break; case 1: new Local(); } } } } {PASS}
While not well-specified, the scope of a local class in a switch statement extends to the end of the switchExpected Result: FAIL
Regression Test:
tcltest::test 14.3-scope-11 { While not well-specified, the scope of a local class in a switch statement extends to the end of the switch } { empty_class T143s11 { void m(int i) { switch (i) { case 0: class Local {} break; case 1: class Local {} } } } } {FAIL}
tests/jls/blocks-and-statements/local-variable-declaration-statements/scope
The scope of a local variable declarator includes its own initializer and further declarations to rightTest Case: 14.4.2-valid-scope-2Expected Result: PASS
Regression Test:
tcltest::test 14.4.2-valid-scope-1 { The scope of a local variable declarator includes its own initializer and further declarations to right } { empty_main T1442vs1 { int i = (i = 1) + i; } } {PASS}
The scope of a local variable declarator includes its own initializer and further declarations to rightTest Case: 14.4.2-valid-scope-3Expected Result: PASS
Regression Test:
tcltest::test 14.4.2-valid-scope-2 { The scope of a local variable declarator includes its own initializer and further declarations to right } { empty_main T1442vs2 { int i = 1, j = i; } } {PASS}
The scope of a local variable declarator includes its own initializer and further declarations to rightTest Case: 14.4.2-valid-scope-4Expected Result: PASS
Regression Test:
tcltest::test 14.4.2-valid-scope-3 { The scope of a local variable declarator includes its own initializer and further declarations to right } { empty_main T1442vs3 { int i; i = 1; } } {PASS}
The scope of a local variable declarator includes its own initializer and further declarations to rightTest Case: 14.4.2-valid-scope-5Expected Result: PASS
Regression Test:
tcltest::test 14.4.2-valid-scope-4 { The scope of a local variable declarator includes its own initializer and further declarations to right } { empty_main T1442vs4 { { int i; } int i; } } {PASS}
The scope of a local variable declarator includes its own initializer and further declarations to rightTest Case: 14.4.2-valid-scope-6Expected Result: PASS
Regression Test:
tcltest::test 14.4.2-valid-scope-5 { The scope of a local variable declarator includes its own initializer and further declarations to right } { empty_main T1442vs5 { for (int i = (i = 1) + i; ; ); } } {PASS}
The scope of a local variable declarator includes its own initializer and further declarations to rightTest Case: 14.4.2-valid-scope-7Expected Result: PASS
Regression Test:
tcltest::test 14.4.2-valid-scope-6 { The scope of a local variable declarator includes its own initializer and further declarations to right } { empty_main T1442vs6 { for (int i = 1, j = i; ; ); } } {PASS}
The scope of a local variable declarator includes its own initializer and further declarations to rightTest Case: 14.4.2-valid-scope-8Expected Result: PASS
Regression Test:
tcltest::test 14.4.2-valid-scope-7 { The scope of a local variable declarator includes its own initializer and further declarations to right } { empty_main T1442vs7 { for (int i; ; i = 1); } } {PASS}
The scope of a local variable declarator includes its own initializer and further declarations to rightTest Case: 14.4.2-invalid-scope-1Expected Result: PASS
Regression Test:
tcltest::test 14.4.2-valid-scope-8 { The scope of a local variable declarator includes its own initializer and further declarations to right } { empty_main T1442vs8 { for (int i = 1; i < 1; ); for (int i; ; ); } } {PASS}
A local variable cannot be redeclaredTest Case: 14.4.2-invalid-scope-2Expected Result: FAIL
Regression Test:
tcltest::test 14.4.2-invalid-scope-1 { A local variable cannot be redeclared } { empty_main T1442is1 { int i; int i; } } {FAIL}
A local variable cannot be redeclaredTest Case: 14.4.2-invalid-scope-3Expected Result: FAIL
Regression Test:
tcltest::test 14.4.2-invalid-scope-2 { A local variable cannot be redeclared } { empty_main T1442is2 { int i; for (int i; ; ); } } {FAIL}
A local variable cannot be redeclaredTest Case: 14.4.2-invalid-scope-4Expected Result: FAIL
Regression Test:
tcltest::test 14.4.2-invalid-scope-3 { A local variable cannot be redeclared } { empty_main T1442is3 { int i; try { throw new Exception(); } catch (Exception i) { } } } {FAIL}
A local variable cannot be redeclaredTest Case: 14.4.2-invalid-scope-5Expected Result: FAIL
Regression Test:
tcltest::test 14.4.2-invalid-scope-4 { A local variable cannot be redeclared } { empty_class T1442is4 { void foo(int i) { int i; } } } {FAIL}
A local variable cannot be redeclaredTest Case: 14.4.2-invalid-scope-6Expected Result: FAIL
Regression Test:
tcltest::test 14.4.2-invalid-scope-5 { A local variable cannot be redeclared } { empty_main T1442is5 { for (int i; ; ) { int i; } } } {FAIL}
A local variable cannot be redeclaredTest Case: 14.4.2-shadow-1Expected Result: FAIL
Regression Test:
tcltest::test 14.4.2-invalid-scope-6 { A local variable cannot be redeclared } { empty_main T1442is6 { try { throw new Exception(); } catch (Exception i) { int i; } } } {FAIL}
A local variable may shadow member variablesTest Case: 14.4.2-shadow-2Expected Result: PASS
Regression Test:
tcltest::test 14.4.2-shadow-1 { A local variable may shadow member variables } { empty_class T1442s1 { Object i; void foo() { i = new Object(); int i; i = 1; } } } {PASS}
A local variable may shadow member variablesTest Case: 14.4.2-shadow-3Expected Result: PASS
Regression Test:
tcltest::test 14.4.2-shadow-2 { A local variable may shadow member variables } { empty_class T1442s2 { static Object i; void foo() { i = new Object(); int i; i = 1; } } } {PASS}
A local variable may shadow member variablesTest Case: 14.4.2-shadow-4Expected Result: PASS
Regression Test:
tcltest::test 14.4.2-shadow-3 { A local variable may shadow member variables } { empty_class T1442s3 { static Object i; static void foo() { i = new Object(); int i; i = 1; } } } {PASS}
A local variable may be shadowed by a memberTest Case: 14.4.2-shadow-5Expected Result: PASS
Regression Test:
tcltest::test 14.4.2-shadow-4 { A local variable may be shadowed by a member } { empty_main T1442s4 { Object i; new Object() { int i; }; } } {PASS}
A local variable may be shadowed by a localTest Case: 14.4.2-shadow-6Expected Result: PASS
Regression Test:
tcltest::test 14.4.2-shadow-5 { A local variable may be shadowed by a local } { empty_main T1442s5 { final Object i = null; new Object() { { Object o = i; int i; i = 1; } }; } } {PASS}
A local variable may be shadowed by a localTest Case: 14.4.2-shadow-7Expected Result: PASS
Regression Test:
tcltest::test 14.4.2-shadow-6 { A local variable may be shadowed by a local } { empty_main T1442s6 { final Object i = null; new Object() { { Object o = i; for (int i = 1; i < 1; ); o = i; } }; } } {PASS}
A local variable may be shadowed by a localTest Case: 14.4.2-shadow-8Expected Result: PASS
Regression Test:
tcltest::test 14.4.2-shadow-7 { A local variable may be shadowed by a local } { empty_main T1442s7 { final int i = 1; new Object() { { try { int j = i; throw new Exception(); } catch (Exception i) { } } }; } } {PASS}
A local variable may be shadowed by a parameterTest Case: 14.4.2-shadow-9Expected Result: PASS
Regression Test:
tcltest::test 14.4.2-shadow-8 { A local variable may be shadowed by a parameter } { empty_main T1442s8 { final Object i = null; new Object() { Object o = i; void foo(int i) { i = 1; } }; } } {PASS}
A local variable may be shadowed by an inherited memberExpected Result: OK
Regression Test:
tcltest::test 14.4.2-shadow-9 { A local variable may be shadowed by an inherited member } { ok_pass_or_warn [empty_class T1442s9 { void foo(final byte b) { class One { final int i = 1; } Object i; class Two extends One { { switch (b) { case 0: case (i == 1) ? 1 : 0: } } } } }] } {OK}
tests/jls/blocks-and-statements/labeled-statements
The scope of a label is its contained statementTest Case: 14.7-shadow-1Expected Result: PASS
Regression Test:
tcltest::test 14.7-scope-1 { The scope of a label is its contained statement } { empty_main T147scope1 { int i, j; label: i = 1; label: j = 1; } } {PASS}
Labels cannot shadow another label in the same enclosing method, constructor, or initializerTest Case: 14.7-shadow-2Expected Result: FAIL
Regression Test:
tcltest::test 14.7-shadow-1 { Labels cannot shadow another label in the same enclosing method, constructor, or initializer } { empty_main T147shadow1 { int i; test: { test: i = 1; } } } {FAIL}
Labels cannot shadow another label in the same enclosing method, constructor, or initializerTest Case: 14.7-shadow-3Expected Result: FAIL
Regression Test:
tcltest::test 14.7-shadow-2 { Labels cannot shadow another label in the same enclosing method, constructor, or initializer } { empty_main T147shadow2 { int i; test: test: i = 1; } } {FAIL}
Labels cannot shadow another label in the same immediately enclosing method, constructor, or initializer. Here, the two labels are in different immediately enclosing methods.Test Case: 14.7-same-1Expected Result: PASS
Regression Test:
tcltest::test 14.7-shadow-3 { Labels cannot shadow another label in the same immediately enclosing method, constructor, or initializer. Here, the two labels are in different immediately enclosing methods.} { empty_main T147shadow3 { test: new Object() { void foo() { int i; test: i = 1; } }; } } {PASS}
Labels can share same identifier as packageTest Case: 14.7-same-2Expected Result: PASS
Regression Test:
tcltest::test 14.7-same-1 { Labels can share same identifier as package } { compile [saveas test/T147same1.java { package test; class T147same1 { void foo() { int i; test: i = 1; new test.T147same1(); } } }] } {PASS}
Labels can share same identifier as classTest Case: 14.7-same-3Expected Result: PASS
Regression Test:
tcltest::test 14.7-same-2 { Labels can share same identifier as class } { empty_main T147same2 { int i; T147same2: i = 1; new T147same2(); } } {PASS}
Labels can share same identifier as interfaceTest Case: 14.7-same-4Expected Result: PASS
Regression Test:
tcltest::test 14.7-same-3 { Labels can share same identifier as interface } { empty_main T147same3 { int i; Cloneable: i = 1; new Cloneable() {}; } } {PASS}
Labels can share same identifier as methodTest Case: 14.7-same-5Expected Result: PASS
Regression Test:
tcltest::test 14.7-same-4 { Labels can share same identifier as method } { empty_class T147same4 { void test() {} void foo() { int i; test: i = 1; test(); } } } {PASS}
Labels can share same identifier as fieldTest Case: 14.7-same-6Expected Result: PASS
Regression Test:
tcltest::test 14.7-same-5 { Labels can share same identifier as field } { empty_class T147same5 { int test; void foo() { int i; test: i = 1; test = 1; } } } {PASS}
Labels can share same identifier as parameterTest Case: 14.7-same-7Expected Result: PASS
Regression Test:
tcltest::test 14.7-same-6 { Labels can share same identifier as parameter } { empty_class T147same6 { void foo(String[] args) { int i; args: i = 1; i = args.length; } } } {PASS}
Labels can share same identifier as local variableTest Case: 14.7-enclosed-1Expected Result: PASS
Regression Test:
tcltest::test 14.7-same-7 { Labels can share same identifier as local variable } { empty_main T147same7 { int test, i; test: i = 1; test = 1; } } {PASS}
Labels must have an enclosed statementTest Case: 14.7-enclosed-2Expected Result: FAIL
Regression Test:
tcltest::test 14.7-enclosed-1 { Labels must have an enclosed statement } { empty_main T147enclosed1 { test: } } {FAIL}
Labels must have an enclosed statementTest Case: 14.7-enclosed-3Expected Result: FAIL
Regression Test:
tcltest::test 14.7-enclosed-2 { Labels must have an enclosed statement } { empty_main T147enclosed2 { test: int i; } } {FAIL}
Labels must have an enclosed statementTest Case: 14.7-enclosed-4Expected Result: FAIL
Regression Test:
tcltest::test 14.7-enclosed-3 { Labels must have an enclosed statement } { empty_main T147enclosed3 { test: class Foo {} } } {FAIL}
Labels must have an enclosed statementTest Case: 14.7-enclosed-5Expected Result: PASS
Regression Test:
tcltest::test 14.7-enclosed-4 { Labels must have an enclosed statement } { empty_main T147enclosed4 { test: {} } } {PASS}
Labels must have an enclosed statementTest Case: 14.7-ident-1Expected Result: PASS
Regression Test:
tcltest::test 14.7-enclosed-5 { Labels must have an enclosed statement } { empty_main T147enclosed5 { test: ; } } {PASS}
Labels must be identifiersTest Case: 14.7-ident-2Expected Result: FAIL
Regression Test:
tcltest::test 14.7-ident-1 { Labels must be identifiers } { empty_main T147ident1 { int i; 1: i = 1; } } {FAIL}
Labels must be identifiersTest Case: 14.7-ident-3Expected Result: FAIL
Regression Test:
tcltest::test 14.7-ident-2 { Labels must be identifiers } { empty_main T147ident2 { int i; "label": i = 1; } } {FAIL}
Labels must be identifiersTest Case: 14.7-ident-4Expected Result: FAIL
Regression Test:
tcltest::test 14.7-ident-3 { Labels must be identifiers } { empty_main T147ident3 { int i; (label): i = 1; } } {FAIL}
Labels must be identifiersTest Case: 14.7-ident-5Expected Result: FAIL
Regression Test:
tcltest::test 14.7-ident-4 { Labels must be identifiers } { empty_main T147ident4 { int i; label.a: i = 1; } } {FAIL}
Labels must be identifiersTest Case: 14.7-ident-6Expected Result: FAIL
Regression Test:
tcltest::test 14.7-ident-5 { Labels must be identifiers } { empty_main T147ident5 { int i; int: i = 1; } } {FAIL}
Labels must be identifiers, including unicodeExpected Result: PASS
Regression Test:
tcltest::test 14.7-ident-6 { Labels must be identifiers, including unicode } { empty_main T147ident6 { int i; \u0061\u003a break a; b: break \u0062; } } {PASS}
tests/jls/blocks-and-statements/if-statement
Expression have ()Test Case: 14.9-invalid-syntax-2Expected Result: FAIL
Regression Test:
tcltest::test 14.9-invalid-syntax-1 { Expression have () } { empty_main T149is1 { if true ; } } {FAIL}
Expression must be of type booleanTest Case: 14.9-invalid-syntax-3Expected Result: FAIL
Regression Test:
tcltest::test 14.9-invalid-syntax-2 { Expression must be of type boolean } { empty_main T149is2 { if (0) ; } } {FAIL}
else without Statement is invalidTest Case: 14.9-invalid-syntax-4Expected Result: FAIL
Regression Test:
tcltest::test 14.9-invalid-syntax-3 { else without Statement is invalid } { empty_main T149is3 { if (true) ; else } } {FAIL}
Multiple if Statement are invalidTest Case: 14.9-expression-evaluation-1Expected Result: FAIL
Regression Test:
tcltest::test 14.9-invalid-syntax-4 { Multiple if Statement are invalid } { empty_main T149is4 { if (true) ; ; else ; } } {FAIL}
constant expressionTest Case: 14.9-expression-evaluation-2Expected Result: PASS
Regression Test:
tcltest::test 14.9-expression-evaluation-1 {constant expression} { empty_main T149ee1 { if (true) ; } } {PASS}
constant expressionTest Case: 14.9-expression-evaluation-3Expected Result: PASS
Regression Test:
tcltest::test 14.9-expression-evaluation-2 {constant expression} { empty_main T149ee2 { if (false == true) ; } } {PASS}
non-constant expressionTest Case: 14.9-expression-evaluation-4Expected Result: PASS
Regression Test:
tcltest::test 14.9-expression-evaluation-3 {non-constant expression} { empty_main T149ee3 { final boolean aconst = false; boolean anonconst = true; if (aconst == anonconst) ; } } {PASS}
constant expressionTest Case: 14.9-expression-evaluation-5Expected Result: PASS
Regression Test:
tcltest::test 14.9-expression-evaluation-4 {constant expression} { empty_main T149ee4 { if ((byte) 0 == (byte) 1) ; } } {PASS}
non-constant expressionTest Case: 14.9-expression-evaluation-6Expected Result: PASS
Regression Test:
tcltest::test 14.9-expression-evaluation-5 {non-constant expression} { empty_main T149ee5 { final byte aconst = 0; byte anonconst = 1; if (anonconst == aconst) ; } } {PASS}
constant expressionTest Case: 14.9-expression-evaluation-7Expected Result: PASS
Regression Test:
tcltest::test 14.9-expression-evaluation-6 {constant expression} { empty_main T149ee6 { if ((short) 0 == (short) 1) ; } } {PASS}
non-constant expressionTest Case: 14.9-expression-evaluation-8Expected Result: PASS
Regression Test:
tcltest::test 14.9-expression-evaluation-7 {non-constant expression} { empty_main T149ee7 { final short aconst = 0; short anonconst = 1; if (anonconst == aconst) ; } } {PASS}
constant expressionTest Case: 14.9-expression-evaluation-9Expected Result: PASS
Regression Test:
tcltest::test 14.9-expression-evaluation-8 {constant expression} { empty_main T149ee8 { if ((char) 0 == (char) 1) ; } } {PASS}
non-constant expressionTest Case: 14.9-expression-evaluation-10Expected Result: PASS
Regression Test:
tcltest::test 14.9-expression-evaluation-9 {non-constant expression} { empty_main T149ee9 { final char aconst = 0; char anonconst = 1; if (anonconst == aconst) ; } } {PASS}
constant expressionTest Case: 14.9-expression-evaluation-11Expected Result: PASS
Regression Test:
tcltest::test 14.9-expression-evaluation-10 {constant expression} { empty_main T149ee10 { if (0 == 1) ; } } {PASS}
non-constant expressionTest Case: 14.9-expression-evaluation-12Expected Result: PASS
Regression Test:
tcltest::test 14.9-expression-evaluation-11 {non-constant expression} { empty_main T149ee11 { final int aconst = 0; int anonconst = 1; if (anonconst == aconst) ; } } {PASS}
constant expressionTest Case: 14.9-expression-evaluation-13Expected Result: PASS
Regression Test:
tcltest::test 14.9-expression-evaluation-12 {constant expression} { empty_main T149ee12 { if (0L == 1L) ; } } {PASS}
non-constant expressionTest Case: 14.9-expression-evaluation-14Expected Result: PASS
Regression Test:
tcltest::test 14.9-expression-evaluation-13 {non-constant expression} { empty_main T149ee13 { final long aconst = 0L; long anonconst = 1L; if (anonconst == aconst) ; } } {PASS}
constant expressionTest Case: 14.9-expression-evaluation-15Expected Result: PASS
Regression Test:
tcltest::test 14.9-expression-evaluation-14 {constant expression} { empty_main T149ee14 { if (0F == 1F) ; } } {PASS}
non-constant expressionTest Case: 14.9-expression-evaluation-16Expected Result: PASS
Regression Test:
tcltest::test 14.9-expression-evaluation-15 {non-constant expression} { empty_main T149ee15 { final float aconst = 0F; float anonconst = 1F; if (anonconst == aconst) ; } } {PASS}
constant expressionTest Case: 14.9-expression-evaluation-17Expected Result: PASS
Regression Test:
tcltest::test 14.9-expression-evaluation-16 {constant expression} { empty_main T149ee16 { if (0D == 1D) ; } } {PASS}
non-constant expressionTest Case: 14.9-expression-evaluation-18Expected Result: PASS
Regression Test:
tcltest::test 14.9-expression-evaluation-17 {non-constant expression} { empty_main T149ee17 { final double aconst = 0D; double anonconst = 1D; if (anonconst == aconst) ; } } {PASS}
constant expressionTest Case: 14.9-expression-evaluation-19Expected Result: PASS
Regression Test:
tcltest::test 14.9-expression-evaluation-18 {constant expression} { empty_main T149ee18 { if ("hi" == "there") ; } } {PASS}
non-constant expressionExpected Result: PASS
Regression Test:
tcltest::test 14.9-expression-evaluation-19 {non-constant expression} { empty_main T149ee19 { final String aconst = "hi"; String anonconst = "there"; if (anonconst == aconst) ; } } {PASS}
tests/jls/blocks-and-statements/switch-statement
SwitchStatement must have () around ExpressionTest Case: 14.10-invalid-syntax-2Expected Result: FAIL
Regression Test:
tcltest::test 14.10-invalid-syntax-1 { SwitchStatement must have () around Expression } { compile [saveas T1410is1.java { class T1410is1 { void foo(int i) { switch i { default: } } } }] } {FAIL}
SwitchBlock must have {} around statementsTest Case: 14.10-invalid-syntax-3Expected Result: FAIL
Regression Test:
tcltest::test 14.10-invalid-syntax-2 { SwitchBlock must have {} around statements } { compile [saveas T1410is2.java { class T1410is2 { void foo(int i) { switch (i) default: } } }] } {FAIL}
SwitchBlockStatementGroup must begin with a SwitchLabelTest Case: 14.10-invalid-syntax-4Expected Result: FAIL
Regression Test:
tcltest::test 14.10-invalid-syntax-3 { SwitchBlockStatementGroup must begin with a SwitchLabel} { compile [saveas T1410is3.java { class T1410is3 { void foo(int i) { switch (i) { i = 0; } } } }] } {FAIL}
Duff's device is not validTest Case: 14.10-invalid-syntax-5Expected Result: FAIL
Regression Test:
tcltest::test 14.10-invalid-syntax-4 { Duff's device is not valid } { compile [saveas T1410is4.java { class T1410is4 { void foo(int n) { int q = (n+7)/8; switch (n%8) { case 0: do { foo(); // Great C hack, Tom, case 7: foo(); // but it's not valid here. case 6: foo(); case 5: foo(); case 4: foo(); case 3: foo(); case 2: foo(); case 1: foo(); } while (--q >= 0); } } } }] } {FAIL}
Jikes 1.17 accepts a cute typoTest Case: 14.10-valid-1Expected Result: FAIL
Regression Test:
tcltest::test 14.10-invalid-syntax-5 { Jikes 1.17 accepts a cute typo } { empty_class T1410is5 { void m(int i) { switch (i) { befault: } } } } {FAIL}
SwitchBlockStatementGroups and SwitchLabels are optional inside a SwitchBlockTest Case: 14.10-valid-2Expected Result: PASS
Regression Test:
tcltest::test 14.10-valid-1 { SwitchBlockStatementGroups and SwitchLabels are optional inside a SwitchBlock } { switch_labels T1410v1 int {} } {PASS}
default SwitchLabel by itself is acceptableTest Case: 14.10-invalid-type-1Expected Result: PASS
Regression Test:
tcltest::test 14.10-valid-2 { default SwitchLabel by itself is acceptable } { switch_labels T1410v2 int {default:} } {PASS}
Expression type must be char, byte, short, or intTest Case: 14.10-invalid-type-2Expected Result: FAIL
Regression Test:
tcltest::test 14.10-invalid-type-1 { Expression type must be char, byte, short, or int } { switch_labels T1410it1 boolean } {FAIL}
Expression type must be char, byte, short, or intTest Case: 14.10-invalid-type-3Expected Result: FAIL
Regression Test:
tcltest::test 14.10-invalid-type-2 { Expression type must be char, byte, short, or int } { switch_labels T1410it2 float } {FAIL}
Expression type must be char, byte, short, or intTest Case: 14.10-invalid-type-4Expected Result: FAIL
Regression Test:
tcltest::test 14.10-invalid-type-3 { Expression type must be char, byte, short, or int } { switch_labels T1410it3 double } {FAIL}
Expression type must be char, byte, short, or intTest Case: 14.10-invalid-type-5Expected Result: FAIL
Regression Test:
tcltest::test 14.10-invalid-type-4 { Expression type must be char, byte, short, or int } { switch_labels T1410it4 long } {FAIL}
Expression type must be char, byte, short, or intTest Case: 14.10-invalid-type-6Expected Result: FAIL
Regression Test:
tcltest::test 14.10-invalid-type-5 { Expression type must be char, byte, short, or int } { switch_labels T1410it5 Object } {FAIL}
Expression type must be char, byte, short, or intTest Case: 14.10-valid-type-1Expected Result: FAIL
Regression Test:
tcltest::test 14.10-invalid-type-6 { Expression type must be char, byte, short, or int } { switch_labels T1410it6 String } {FAIL}
Expression type must be char, byte, short, or intTest Case: 14.10-valid-type-2Expected Result: PASS
Regression Test:
tcltest::test 14.10-valid-type-1 { Expression type must be char, byte, short, or int } { switch_labels T1410vt1 char } {PASS}
Expression type must be char, byte, short, or intTest Case: 14.10-valid-type-3Expected Result: PASS
Regression Test:
tcltest::test 14.10-valid-type-2 { Expression type must be char, byte, short, or int } { switch_labels T1410vt2 byte } {PASS}
Expression type must be char, byte, short, or intTest Case: 14.10-valid-type-4Expected Result: PASS
Regression Test:
tcltest::test 14.10-valid-type-3 { Expression type must be char, byte, short, or int } { switch_labels T1410vt3 short } {PASS}
Expression type must be char, byte, short, or intTest Case: 14.10-switchlabel-1Expected Result: PASS
Regression Test:
tcltest::test 14.10-valid-type-4 { Expression type must be char, byte, short, or int } { switch_labels T1410vt4 int } {PASS}
case label must have a ConstantExpressionTest Case: 14.10-switchlabel-2Expected Result: PASS
Regression Test:
tcltest::test 14.10-switchlabel-1 { case label must have a ConstantExpression } { switch_labels T1410sl1 int {case 0: case 1:} } {PASS}
case label must have a ConstantExpression, i++ is not a constant expression as defined by 15.28Test Case: 14.10-switchlabel-3Expected Result: FAIL
Regression Test:
tcltest::test 14.10-switchlabel-2 { case label must have a ConstantExpression, i++ is not a constant expression as defined by 15.28} { switch_labels T1410sl2 int {case (i++):} } {FAIL}
case label must have a ConstantExpression, the additive operator - produces a constant expression (see 15.28)Test Case: 14.10-assignable-1Expected Result: PASS
Regression Test:
tcltest::test 14.10-switchlabel-3 { case label must have a ConstantExpression, the additive operator - produces a constant expression (see 15.28)} { switch_labels T1410sl3 int {case 0: case (2-1): case (3-1): default:} } {PASS}
ConstantExpression must be assignable to ExpressionTest Case: 14.10-assignable-2Expected Result: PASS
Regression Test:
tcltest::test 14.10-assignable-1 { ConstantExpression must be assignable to Expression } { switch_labels T1410a1 int {case 0:} } {PASS}
ConstantExpression must be assignable to ExpressionTest Case: 14.10-assignable-3Expected Result: FAIL
Regression Test:
tcltest::test 14.10-assignable-2 { ConstantExpression must be assignable to Expression } { switch_labels T1410a2 int {case 0L:} } {FAIL}
ConstantExpression must be assignable to ExpressionTest Case: 14.10-assignable-4Expected Result: FAIL
Regression Test:
tcltest::test 14.10-assignable-3 { ConstantExpression must be assignable to Expression } { switch_labels T1410a3 int {case 0.0D:} } {FAIL}
ConstantExpression must be assignable to ExpressionTest Case: 14.10-assignable-5Expected Result: FAIL
Regression Test:
tcltest::test 14.10-assignable-4 { ConstantExpression must be assignable to Expression } { switch_labels T1410a4 int {case true:} } {FAIL}
ConstantExpression must be assignable to ExpressionTest Case: 14.10-assignable-6Expected Result: FAIL
Regression Test:
tcltest::test 14.10-assignable-5 { ConstantExpression must be assignable to Expression } { switch_labels T1410a5 byte {case 128:} } {FAIL}
ConstantExpression must be assignable to ExpressionTest Case: 14.10-assignable-7Expected Result: PASS
Regression Test:
tcltest::test 14.10-assignable-6 { ConstantExpression must be assignable to Expression } { switch_labels T1410a6 byte {case 127:} } {PASS}
ConstantExpression must be assignable to ExpressionTest Case: 14.10-assignable-8Expected Result: FAIL
Regression Test:
tcltest::test 14.10-assignable-7 { ConstantExpression must be assignable to Expression } { switch_labels T1410a7 int {case null:} } {FAIL}
ConstantExpression must be assignable to ExpressionTest Case: 14.10-assignable-9Expected Result: PASS
Regression Test:
tcltest::test 14.10-assignable-8 { ConstantExpression must be assignable to Expression } { switch_labels T1410a8 byte {case (short) 1:} } {PASS}
ConstantExpression must be assignable to ExpressionTest Case: 14.10-assignable-10Expected Result: PASS
Regression Test:
tcltest::test 14.10-assignable-9 { ConstantExpression must be assignable to Expression } { switch_labels T1410a9 byte {case '1':} } {PASS}
ConstantExpression must be assignable to ExpressionTest Case: 14.10-assignable-11Expected Result: PASS
Regression Test:
tcltest::test 14.10-assignable-10 { ConstantExpression must be assignable to Expression } { switch_labels T1410a10 char {case (short) 1:} } {PASS}
ConstantExpression must be assignable to ExpressionTest Case: 14.10-assignable-12Expected Result: PASS
Regression Test:
tcltest::test 14.10-assignable-11 { ConstantExpression must be assignable to Expression } { switch_labels T1410a11 short {case '1':} } {PASS}
ConstantExpression must be assignable to ExpressionTest Case: 14.10-duplicate-1Expected Result: PASS
Regression Test:
tcltest::test 14.10-assignable-12 { ConstantExpression must be assignable to Expression } { switch_labels T1410a12 char {case (byte) 1:} } {PASS}
No two case statements may have the same ConstantExpression valueTest Case: 14.10-duplicate-2Expected Result: FAIL
Regression Test:
tcltest::test 14.10-duplicate-1 { No two case statements may have the same ConstantExpression value } { switch_labels T1410d1 int {case 0: case 1: case 0:} } {FAIL}
No two case statements may have the same ConstantExpression valueTest Case: 14.10-duplicate-3Expected Result: FAIL
Regression Test:
tcltest::test 14.10-duplicate-2 { No two case statements may have the same ConstantExpression value } { switch_labels T1410d2 int {case 0: case 1: case (2-2):} } {FAIL}
No two case statements may have the same ConstantExpression valueTest Case: 14.10-duplicate-4Expected Result: FAIL
Regression Test:
tcltest::test 14.10-duplicate-3 { No two case statements may have the same ConstantExpression value } { switch_labels T1410d3 int {case 0: case 1: case ((2==2) ? 0 : 2):} } {FAIL}
At most 1 default statement can be associated with the same switch statementTest Case: 14.10-abrupt-completion-1Expected Result: FAIL
Regression Test:
tcltest::test 14.10-duplicate-4 { At most 1 default statement can be associated with the same switch statement } { switch_labels T1410d4 int {default: case 0: default:} } {FAIL}
break is a valid abrupt completionTest Case: 14.10-abrupt-completion-2Expected Result: PASS
Regression Test:
tcltest::test 14.10-abrupt-completion-1 { break is a valid abrupt completion } { switch_labels T1410ac1 int {case 0: break; case 1: break;} } {PASS}
continue is not a valid abrupt completionTest Case: 14.10-exhaustion-1Expected Result: FAIL
Regression Test:
tcltest::test 14.10-abrupt-completion-2 { continue is not a valid abrupt completion } { switch_labels T1410ac2 int {case 0: break; case 1: continue;} } {FAIL}
When all 256 cases explicitly listed, the specs are unclear as to whether default is reachableTest Case: 14.10-exhaustion-2Expected Result: PASS
Regression Test:
tcltest::test 14.10-exhaustion-1 { When all 256 cases explicitly listed, the specs are unclear as to whether default is reachable } { switch_labels T1410e1 byte [exhaust_list] "break; default:" } {PASS}
When all 256 cases explicitly listed, the specs are unclear as to whether the switch can complete normallyTest Case: 14.10-example-1Expected Result: PASS
Regression Test:
tcltest::test 14.10-exhaustion-2 { When all 256 cases explicitly listed, the specs are unclear as to whether the switch can complete normally } { switch_labels T1410e2 byte [exhaust_list] "throw new RuntimeException();\n \}\n \{System.out.println();" } {PASS}
This example causes an assertion in JikesExpected Result: PASS
Regression Test:
tcltest::test 14.10-example-1 { This example causes an assertion in Jikes } { compile -g [saveas T1410e1.java { class T1410e1 { void foo() { int i; switch (i = 1) { case 1: } } } }] } {PASS}
tests/jls/blocks-and-statements/break-statement
plain break must occur in a loop statement or switchTest Case: 14.14-plain-2Expected Result: FAIL
Regression Test:
tcltest::test 14.14-plain-1 { plain break must occur in a loop statement or switch } { empty_main T1414p1 { break; } } {FAIL}
plain break must occur in a loop statement or switchTest Case: 14.14-plain-3Expected Result: PASS
Regression Test:
tcltest::test 14.14-plain-2 { plain break must occur in a loop statement or switch } { empty_main T1414p2 { for (int i=0; i<10; ++i) break; } } {PASS}
plain break must occur in a loop statement or switchTest Case: 14.14-plain-4Expected Result: PASS
Regression Test:
tcltest::test 14.14-plain-3 { plain break must occur in a loop statement or switch } { empty_main T1414p3 { int i=0; while (++i<10) break; } } {PASS}
plain break must occur in a loop statement or switchTest Case: 14.14-plain-5Expected Result: PASS
Regression Test:
tcltest::test 14.14-plain-4 { plain break must occur in a loop statement or switch } { empty_main T1414p4 { int i=0; do break; while (++i<10); } } {PASS}
plain break must occur in a loop statement or switchTest Case: 14.14-plain-6Expected Result: PASS
Regression Test:
tcltest::test 14.14-plain-5 { plain break must occur in a loop statement or switch } { empty_main T1414p5 { for (int i=0; i<10; ++i) { break; } } } {PASS}
plain break must occur in a loop statement or switchTest Case: 14.14-plain-7Expected Result: PASS
Regression Test:
tcltest::test 14.14-plain-6 { plain break must occur in a loop statement or switch } { empty_main T1414p6 { int i=0; while (++i<10) { break; } } } {PASS}
plain break must occur in a loop statement or switchTest Case: 14.14-plain-8Expected Result: PASS
Regression Test:
tcltest::test 14.14-plain-7 { plain break must occur in a loop statement or switch } { empty_main T1414p7 { int i=0; do { break; } while (++i<10); } } {PASS}
plain break must occur in a loop statement or switchTest Case: 14.14-plain-9Expected Result: PASS
Regression Test:
tcltest::test 14.14-plain-8 { plain break must occur in a loop statement or switch } { empty_main T1414p8 { switch (args.length) { case 0: break; } } } {PASS}
plain break must occur in a loop statement or switchTest Case: 14.14-nonlocal-1Expected Result: FAIL
Regression Test:
tcltest::test 14.14-plain-9 { plain break must occur in a loop statement or switch } { empty_main T1414p9 { a: break; } } {FAIL}
there are no non-local jumpsTest Case: 14.14-try-1Expected Result: FAIL
Regression Test:
tcltest::test 14.14-nonlocal-1 { there are no non-local jumps } { empty_main T1414nonlocal1 { do { new Object() { { break; } }; } while (false); } } {FAIL}
the break can be interrupted by a finallyTest Case: 14.14-label-1Expected Result: PASS
Regression Test:
tcltest::test 14.14-try-1 { the break can be interrupted by a finally } { empty_main T1414try1 { do { try { try { break; } finally { // discard the break throw new Exception(); } } catch (Throwable t) { // stop the exception } int i = 1; // reachable, even though it follows a break } while (false); } } {PASS}
A label may be targeted by breakTest Case: 14.14-label-2Expected Result: PASS
Regression Test:
tcltest::test 14.14-label-1 { A label may be targeted by break } { empty_main T1414l1 { a: { for (int i=0; i<10; ++i) break a; } } } {PASS}
A label may be targeted by breakTest Case: 14.14-label-3Expected Result: PASS
Regression Test:
tcltest::test 14.14-label-2 { A label may be targeted by break } { empty_main T1414l2 { a: b: for (int i=0; i<10; ++i) break a; } } {PASS}
labeled break must occur in that labelTest Case: 14.14-label-4Expected Result: FAIL
Regression Test:
tcltest::test 14.14-label-3 { labeled break must occur in that label } { empty_main T1414l3 { b: break a; } } {FAIL}
labeled break must occur in that labelTest Case: 14.14-label-5Expected Result: PASS
Regression Test:
tcltest::test 14.14-label-4 { labeled break must occur in that label } { empty_main T1414l4 { a: break a; } } {PASS}
labeled break must occur in that labelTest Case: 14.14-label-6Expected Result: PASS
Regression Test:
tcltest::test 14.14-label-5 { labeled break must occur in that label } { empty_main T1414l5 { a: for (int i=0; i<10; ++i) break a; } } {PASS}
labeled break must occur in that labelTest Case: 14.14-label-7Expected Result: PASS
Regression Test:
tcltest::test 14.14-label-6 { labeled break must occur in that label } { empty_main T1414l6 { int i=0; a: while (++i<10) break a; } } {PASS}
labeled break must occur in that labelTest Case: 14.14-label-8Expected Result: PASS
Regression Test:
tcltest::test 14.14-label-7 { labeled break must occur in that label } { empty_main T1414l7 { int i=0; a: do break a; while (++i<10); } } {PASS}
labeled break must occur in that labelTest Case: 14.14-label-9Expected Result: PASS
Regression Test:
tcltest::test 14.14-label-8 { labeled break must occur in that label } { empty_main T1414l8 { a: for (int i=0; i<10; ++i) { break a; } } } {PASS}
labeled break must occur in that labelTest Case: 14.14-label-10Expected Result: PASS
Regression Test:
tcltest::test 14.14-label-9 { labeled break must occur in that label } { empty_main T1414l9 { int i=0; a: while (++i<10) { break a; } } } {PASS}
labeled break must occur in that labelTest Case: 14.14-label-11Expected Result: PASS
Regression Test:
tcltest::test 14.14-label-10 { labeled break must occur in that label } { empty_main T1414l10 { int i=0; a: do { break a; } while (++i<10); } } {PASS}
labeled break must occur in that labelTest Case: 14.14-label-12Expected Result: PASS
Regression Test:
tcltest::test 14.14-label-11 { labeled break must occur in that label } { empty_main T1414l11 { a: switch (args.length) { case 0: break a; } } } {PASS}
there are no non-local jumpsTest Case: 14.14-label-13Expected Result: FAIL
Regression Test:
tcltest::test 14.14-label-12 { there are no non-local jumps } { empty_main T1414l12 { a: do { new Object() { { break a; } }; } while (false); } } {FAIL}
the break can be interrupted by a finallyTest Case: 14.14-arg-1Expected Result: PASS
Regression Test:
tcltest::test 14.14-label-13 { the break can be interrupted by a finally } { empty_main T1414l13 { a: do { try { try { break a; } finally { // discard the break throw new Exception(); } } catch (Throwable t) { // stop the exception } int i = 1; // reachable, even though it follows a break } while (false); } } {PASS}
The arg to break must be an identifierTest Case: 14.14-arg-2Expected Result: FAIL
Regression Test:
tcltest::test 14.14-arg-1 { The arg to break must be an identifier } { empty_main T1414a1 { a: do { break 1; } while (false); } } {FAIL}
The arg to break must be an identifierTest Case: 14.14-arg-3Expected Result: FAIL
Regression Test:
tcltest::test 14.14-arg-2 { The arg to break must be an identifier } { empty_main T1414a2 { a: do { break "a"; } while (false); } } {FAIL}
The arg to break must be an identifierTest Case: 14.14-arg-4Expected Result: FAIL
Regression Test:
tcltest::test 14.14-arg-3 { The arg to break must be an identifier } { empty_main T1414a3 { a: do { break (a); } while (false); } } {FAIL}
The arg to break must be an identifierExpected Result: FAIL
Regression Test:
tcltest::test 14.14-arg-4 { The arg to break must be an identifier } { empty_main T1414a4 { a: do { break a.a; } while (false); } } {FAIL}
tests/jls/blocks-and-statements/continue-statement
continue must occur in a loop statementTest Case: 14.15-plain-2Expected Result: FAIL
Regression Test:
tcltest::test 14.15-plain-1 { continue must occur in a loop statement } { empty_main T1415p1 { continue; } } {FAIL}
continue must occur in a loop statementTest Case: 14.15-plain-3Expected Result: PASS
Regression Test:
tcltest::test 14.15-plain-2 { continue must occur in a loop statement } { empty_main T1415p2 { for (int i=0; i<10; ++i) continue; } } {PASS}
continue must occur in a loop statementTest Case: 14.15-plain-4Expected Result: PASS
Regression Test:
tcltest::test 14.15-plain-3 { continue must occur in a loop statement } { empty_main T1415p3 { int i=0; while (++i<10) continue; } } {PASS}
continue must occur in a loop statementTest Case: 14.15-plain-5Expected Result: PASS
Regression Test:
tcltest::test 14.15-plain-4 { continue must occur in a loop statement } { empty_main T1415p4 { int i=0; do continue; while (++i<10); } } {PASS}
continue must occur in a loop statementTest Case: 14.15-plain-6Expected Result: PASS
Regression Test:
tcltest::test 14.15-plain-5 { continue must occur in a loop statement } { empty_main T1415p5 { for (int i=0; i<10; ++i) { continue; } } } {PASS}
continue must occur in a loop statementTest Case: 14.15-plain-7Expected Result: PASS
Regression Test:
tcltest::test 14.15-plain-6 { continue must occur in a loop statement } { empty_main T1415p6 { int i=0; while (++i<10) { continue; } } } {PASS}
continue must occur in a loop statementTest Case: 14.15-plain-8Expected Result: PASS
Regression Test:
tcltest::test 14.15-plain-7 { continue must occur in a loop statement } { empty_main T1415p7 { int i=0; do { continue; } while (++i<10); } } {PASS}
continue must occur in a loop statementTest Case: 14.15-nonlocal-1Expected Result: FAIL
Regression Test:
tcltest::test 14.15-plain-8 { continue must occur in a loop statement } { empty_main T1415p8 { switch (args.length) { case 0: continue; } } } {FAIL}
there are no non-local jumpsTest Case: 14.15-try-1Expected Result: FAIL
Regression Test:
tcltest::test 14.15-nonlocal-1 { there are no non-local jumps } { empty_main T1415nonlocal1 { do { new Object() { { continue; } }; } while (false); } } {FAIL}
the continue can be interrupted by a finallyTest Case: 14.15-label-1Expected Result: PASS
Regression Test:
tcltest::test 14.15-try-1 { the continue can be interrupted by a finally } { empty_main T1415try1 { do { try { try { continue; } finally { // discard the continue throw new Exception(); } } catch (Throwable t) { // stop the exception } int i = 1; // reachable, even though it follows a continue } while (false); } } {PASS}
A label targeted by continue must have a loop as its statmentTest Case: 14.15-label-2Expected Result: FAIL
Regression Test:
tcltest::test 14.15-label-1 { A label targeted by continue must have a loop as its statment } { empty_main T1415l1 { a: { for (int i=0; i<10; ++i) continue a; } } } {FAIL}
A label targeted by continue must have a loop as its statmentTest Case: 14.15-label-3Expected Result: FAIL
Regression Test:
tcltest::test 14.15-label-2 { A label targeted by continue must have a loop as its statment } { empty_main T1415l2 { a: b: for (int i=0; i<10; ++i) continue a; } } {FAIL}
labeled continue must occur in that labelTest Case: 14.15-label-4Expected Result: FAIL
Regression Test:
tcltest::test 14.15-label-3 { labeled continue must occur in that label } { empty_main T1415l3 { b: continue a; } } {FAIL}
continue must occur in a loop statementTest Case: 14.15-label-5Expected Result: FAIL
Regression Test:
tcltest::test 14.15-label-4 { continue must occur in a loop statement } { empty_main T1415l4 { a: continue a; } } {FAIL}
continue must occur in a loop statementTest Case: 14.15-label-6Expected Result: PASS
Regression Test:
tcltest::test 14.15-label-5 { continue must occur in a loop statement } { empty_main T1415l5 { a: for (int i=0; i<10; ++i) continue a; } } {PASS}
continue must occur in a loop statementTest Case: 14.15-label-7Expected Result: PASS
Regression Test:
tcltest::test 14.15-label-6 { continue must occur in a loop statement } { empty_main T1415l6 { int i=0; a: while (++i<10) continue a; } } {PASS}
continue must occur in a loop statementTest Case: 14.15-label-8Expected Result: PASS
Regression Test:
tcltest::test 14.15-label-7 { continue must occur in a loop statement } { empty_main T1415l7 { int i=0; a: do continue a; while (++i<10); } } {PASS}
continue must occur in a loop statementTest Case: 14.15-label-9Expected Result: PASS
Regression Test:
tcltest::test 14.15-label-8 { continue must occur in a loop statement } { empty_main T1415l8 { a: for (int i=0; i<10; ++i) { continue a; } } } {PASS}
continue must occur in a loop statementTest Case: 14.15-label-10Expected Result: PASS
Regression Test:
tcltest::test 14.15-label-9 { continue must occur in a loop statement } { empty_main T1415l9 { int i=0; a: while (++i<10) { continue a; } } } {PASS}
continue must occur in a loop statementTest Case: 14.15-label-11Expected Result: PASS
Regression Test:
tcltest::test 14.15-label-10 { continue must occur in a loop statement } { empty_main T1415l10 { int i=0; a: do { continue a; } while (++i<10); } } {PASS}
continue must occur in a loop statementTest Case: 14.15-nonlocal-2Expected Result: FAIL
Regression Test:
tcltest::test 14.15-label-11 { continue must occur in a loop statement } { empty_main T1415l11 { a: switch (args.length) { case 0: continue a; } } } {FAIL}
there are no non-local jumpsTest Case: 14.15-try-2Expected Result: FAIL
Regression Test:
tcltest::test 14.15-nonlocal-2 { there are no non-local jumps } { empty_main T1415nonlocal2 { a: do { new Object() { { continue a; } }; } while (false); } } {FAIL}
the continue can be interrupted by a finallyTest Case: 14.15-arg-1Expected Result: PASS
Regression Test:
tcltest::test 14.15-try-2 { the continue can be interrupted by a finally } { empty_main T1415try2 { a: do { try { try { continue a; } finally { // discard the continue throw new Exception(); } } catch (Throwable t) { // stop the exception } int i = 1; // reachable, even though it follows a continue } while (false); } } {PASS}
The arg to continue must be an identifierTest Case: 14.15-arg-2Expected Result: FAIL
Regression Test:
tcltest::test 14.15-arg-1 { The arg to continue must be an identifier } { empty_main T1415a1 { a: do { continue 1; } while (false); } } {FAIL}
The arg to continue must be an identifierTest Case: 14.15-arg-3Expected Result: FAIL
Regression Test:
tcltest::test 14.15-arg-2 { The arg to continue must be an identifier } { empty_main T1415a2 { a: do { continue "a"; } while (false); } } {FAIL}
The arg to continue must be an identifierTest Case: 14.15-arg-4Expected Result: FAIL
Regression Test:
tcltest::test 14.15-arg-3 { The arg to continue must be an identifier } { empty_main T1415a3 { a: do { continue (a); } while (false); } } {FAIL}
The arg to continue must be an identifierExpected Result: FAIL
Regression Test:
tcltest::test 14.15-arg-4 { The arg to continue must be an identifier } { empty_main T1415a4 { a: do { continue a.a; } while (false); } } {FAIL}
tests/jls/blocks-and-statements/synchronized-statement
The type of the expression must be a referenceTest Case: 14.18-expression-2Expected Result: PASS
Regression Test:
tcltest::test 14.18-expression-1 { The type of the expression must be a reference } { empty_main T1418e1 { synchronized ("") {} } } {PASS}
The type of the expression must be a referenceTest Case: 14.18-expression-3Expected Result: PASS
Regression Test:
tcltest::test 14.18-expression-2 { The type of the expression must be a reference } { empty_main T1418e2 { synchronized (new Object()) {} } } {PASS}
The type of the expression must be a referenceTest Case: 14.18-expression-4Expected Result: FAIL
Regression Test:
tcltest::test 14.18-expression-3 { The type of the expression must be a reference } { empty_main T1418e3 { synchronized (1) {} } } {FAIL}
The type of the expression must be a referenceTest Case: 14.18-expression-5Expected Result: FAIL
Regression Test:
tcltest::test 14.18-expression-4 { The type of the expression must be a reference } { empty_main T1418e4 { synchronized (null) {} } } {FAIL}
The type of the expression must be a referenceTest Case: 14.18-expression-6Expected Result: FAIL
Regression Test:
tcltest::test 14.18-expression-5 { The type of the expression must be a reference } { empty_main T1418e5 { synchronized ('a') {} } } {FAIL}
The type of the expression must be a referenceTest Case: 14.18-expression-7Expected Result: FAIL
Regression Test:
tcltest::test 14.18-expression-6 { The type of the expression must be a reference } { empty_main T1418e6 { synchronized (System.out.println()) {} } } {FAIL}
The type of the expression must be a referenceTest Case: 14.18-syntax-1Expected Result: PASS
Regression Test:
tcltest::test 14.18-expression-7 { The type of the expression must be a reference } { empty_main T1418e7 { synchronized ((String) null) {} } } {PASS}
The synchronized expression must be in ()Test Case: 14.18-syntax-2Expected Result: FAIL
Regression Test:
tcltest::test 14.18-syntax-1 { The synchronized expression must be in () } { empty_main T1418s1 { synchronized "" {} } } {FAIL}
The synchronized statement must be in {}Test Case: 14.18-syntax-3Expected Result: FAIL
Regression Test:
tcltest::test 14.18-syntax-2 { The synchronized statement must be in {} } { empty_main T1418s2 { synchronized ("") ; } } {FAIL}
The synchronized statement must be in {}Test Case: 14.18-syntax-4Expected Result: FAIL
Regression Test:
tcltest::test 14.18-syntax-3 { The synchronized statement must be in {} } { empty_main T1418s3 { synchronized ("") break; } } {FAIL}
The synchronized block may not be labeledTest Case: 14.18-lock-1Expected Result: FAIL
Regression Test:
tcltest::test 14.18-syntax-4 { The synchronized block may not be labeled } { empty_main T1418s4 { synchronized ("") label: {}; } } {FAIL}
A single thread may lock the same object multiple times (JLS example)Test Case: 14.18-lock-2Expected Result: PASS
Regression Test:
tcltest::test 14.18-lock-1 { A single thread may lock the same object multiple times (JLS example) } { empty_main T1418l1 { Object t = new Object(); synchronized (t) { synchronized (t) { System.out.println("made it!"); } } } } {PASS}
A single thread may lock the same object multiple times (in a synchronized instance method, this is locked)Test Case: 14.18-lock-3Expected Result: PASS
Regression Test:
tcltest::test 14.18-lock-2 { A single thread may lock the same object multiple times (in a synchronized instance method, this is locked)} { empty_class T1418l2 { synchronized void foo() { synchronized (this) {} } } } {PASS}
A single thread may lock the same object multiple times (in a synchronized static method,.class is locked) Expected Result: PASS
Regression Test:
tcltest::test 14.18-lock-3 { A single thread may lock the same object multiple times (in a synchronized static method,.class is locked)} { empty_class T1418l3 { static synchronized void foo() { synchronized (T1418l3.class) {} } } } {PASS}
tests/jls/blocks-and-statements/try-statement
A catch clause parameter may shadow a memberTest Case: 14.19-shadow-2Expected Result: PASS
Regression Test:
tcltest::test 14.19-shadow-1 { A catch clause parameter may shadow a member } { empty_class T1419s1 { int i; void foo() { try { i = 1; throw new Exception(); } catch (Exception i) { } } } } {PASS}
A catch clause parameter may shadow a memberTest Case: 14.19-shadow-3Expected Result: PASS
Regression Test:
tcltest::test 14.19-shadow-2 { A catch clause parameter may shadow a member } { empty_class T1419s2 { static int i; void foo() { try { i = 1; throw new Exception(); } catch (Exception i) { } } } } {PASS}
A catch clause parameter may shadow a memberTest Case: 14.19-shadow-4Expected Result: PASS
Regression Test:
tcltest::test 14.19-shadow-3 { A catch clause parameter may shadow a member } { empty_class T1419s3 { static int i; static void foo() { try { i = 1; throw new Exception(); } catch (Exception i) { } } } } {PASS}
A catch clause parameter may shadow a localTest Case: 14.19-shadow-5Expected Result: PASS
Regression Test:
tcltest::test 14.19-shadow-4 { A catch clause parameter may shadow a local } { empty_class T1419s4 { void foo(final int i) { new Object() { { try { int j = i; throw new Exception(); } catch (Exception i) { } } }; } } } {PASS}
A catch clause parameter may shadow a localTest Case: 14.19-shadow-6Expected Result: PASS
Regression Test:
tcltest::test 14.19-shadow-5 { A catch clause parameter may shadow a local } { empty_main T1419s5 { final int i = 1; new Object() { { try { int j = i; throw new Exception(); } catch (Exception i) { } } }; } } {PASS}
A catch clause parameter may shadow a localTest Case: 14.19-shadow-7Expected Result: PASS
Regression Test:
tcltest::test 14.19-shadow-6 { A catch clause parameter may shadow a local } { empty_main T1419s6 { int j = 1; for (final int i = 1; j < 1; ) new Object() { { try { int j = i; throw new Exception(); } catch (Exception i) { } } }; } } {PASS}
A catch clause parameter may shadow a localTest Case: 14.19-shadow-8Expected Result: PASS
Regression Test:
tcltest::test 14.19-shadow-7 { A catch clause parameter may shadow a local } { empty_main T1419s7 { try { throw new ArithmeticException(); } catch (final ArithmeticException i) { new Object() { { try { ArithmeticException ae = i; throw new NullPointerException(); } catch (NullPointerException i) { } } }; } } } {PASS}
Catch clauses may repeat a parameter nameTest Case: 14.19-shadow-9Expected Result: PASS
Regression Test:
tcltest::test 14.19-shadow-8 { Catch clauses may repeat a parameter name } { empty_main T1419s8 { try { throw new Exception(); } catch (NullPointerException e) { } catch (RuntimeException e) { } catch (Throwable e) { } } } {PASS}
Local variables may not shadow a catch clause parameterTest Case: 14.19-shadow-10Expected Result: FAIL
Regression Test:
tcltest::test 14.19-shadow-9 { Local variables may not shadow a catch clause parameter } { empty_main T1419s9 { try { throw new Exception(); } catch (Exception e) { int e; } } } {FAIL}
Local variables may not shadow a catch clause parameterTest Case: 14.19-shadow-11Expected Result: FAIL
Regression Test:
tcltest::test 14.19-shadow-10 { Local variables may not shadow a catch clause parameter } { empty_main T1419s10 { try { throw new Exception(); } catch (Exception e) { try { throw new Exception(); } catch (Exception e) { } } } } {FAIL}
A catch clause parameter may be shadowedTest Case: 14.19-shadow-12Expected Result: PASS
Regression Test:
tcltest::test 14.19-shadow-11 { A catch clause parameter may be shadowed } { empty_main T1419s11 { try { throw new Exception(); } catch (Exception e) { new Object() { int e; }; } } } {PASS}
A catch clause parameter may be shadowedTest Case: 14.19-shadow-13Expected Result: PASS
Regression Test:
tcltest::test 14.19-shadow-12 { A catch clause parameter may be shadowed } { empty_main T1419s12 { try { throw new Exception(); } catch (final Exception e) { new Object() { Object o = e; void foo(int e) {} }; } } } {PASS}
A catch clause parameter may be shadowedTest Case: 14.19-shadow-14Expected Result: PASS
Regression Test:
tcltest::test 14.19-shadow-13 { A catch clause parameter may be shadowed } { empty_main T1419s13 { try { throw new Exception(); } catch (final Exception e) { new Object() { { Object o = e; int e; e = 1; } }; } } } {PASS}
A catch clause parameter may be shadowedTest Case: 14.19-shadow-15Expected Result: PASS
Regression Test:
tcltest::test 14.19-shadow-14 { A catch clause parameter may be shadowed } { empty_main T1419s14 { try { throw new Exception(); } catch (final Exception e) { new Object() { { Object o = e; for (int e = 1; e < 1; ); o = e; } }; } } } {PASS}
A catch clause parameter may be shadowedTest Case: 14.19-syntax-1Expected Result: PASS
Regression Test:
tcltest::test 14.19-shadow-15 { A catch clause parameter may be shadowed } { empty_main T1419s15 { try { throw new ArithmeticException(); } catch (final ArithmeticException e) { new Object() { { try { ArithmeticException a = e; throw new NullPointerException(); } catch (NullPointerException e) { } } }; } } } {PASS}
The try block must be a blockTest Case: 14.19-syntax-2Expected Result: FAIL
Regression Test:
tcltest::test 14.19-syntax-1 { The try block must be a block } { empty_main T1419syn1 { try ; catch (Exception e) {} } } {FAIL}
The try block must be a blockTest Case: 14.19-syntax-3Expected Result: FAIL
Regression Test:
tcltest::test 14.19-syntax-2 { The try block must be a block } { empty_main T1419syn2 { try int i; catch (Exception e) {} } } {FAIL}
The try block must be a blockTest Case: 14.19-syntax-4Expected Result: FAIL
Regression Test:
tcltest::test 14.19-syntax-3 { The try block must be a block } { empty_main T1419syn3 { int i; try i++; catch (Exception e) {} } } {FAIL}
The try block must be a blockTest Case: 14.19-syntax-5Expected Result: FAIL
Regression Test:
tcltest::test 14.19-syntax-4 { The try block must be a block } { empty_main T1419syn4 { try class C {} catch (Exception e) {} } } {FAIL}
The try block must be a blockTest Case: 14.19-syntax-6Expected Result: FAIL
Regression Test:
tcltest::test 14.19-syntax-5 { The try block must be a block } { empty_main T1419syn5 { try label: {} catch (Exception e) {} } } {FAIL}
The catch block must be a blockTest Case: 14.19-syntax-7Expected Result: FAIL
Regression Test:
tcltest::test 14.19-syntax-6 { The catch block must be a block } { empty_main T1419syn6 { try {} catch (Exception e) ; } } {FAIL}
The catch block must be a blockTest Case: 14.19-syntax-8Expected Result: FAIL
Regression Test:
tcltest::test 14.19-syntax-7 { The catch block must be a block } { empty_main T1419syn7 { try {} catch (Exception e) int i; } } {FAIL}
The catch block must be a blockTest Case: 14.19-syntax-9Expected Result: FAIL
Regression Test:
tcltest::test 14.19-syntax-8 { The catch block must be a block } { empty_main T1419syn8 { int i; try {} catch (Exception e) i++; } } {FAIL}
The catch block must be a blockTest Case: 14.19-syntax-10Expected Result: FAIL
Regression Test:
tcltest::test 14.19-syntax-9 { The catch block must be a block } { empty_main T1419syn9 { try {} catch (Exception e) class C {} } } {FAIL}
The catch block must be a blockTest Case: 14.19-syntax-11Expected Result: FAIL
Regression Test:
tcltest::test 14.19-syntax-10 { The catch block must be a block } { empty_main T1419syn10 { try {} catch (Exception e) label: {} } } {FAIL}
The finally block must be a blockTest Case: 14.19-syntax-12Expected Result: FAIL
Regression Test:
tcltest::test 14.19-syntax-11 { The finally block must be a block } { empty_main T1419syn11 { try {} finally ; } } {FAIL}
The finally block must be a blockTest Case: 14.19-syntax-13Expected Result: FAIL
Regression Test:
tcltest::test 14.19-syntax-12 { The finally block must be a block } { empty_main T1419syn12 { try {} finally int i; } } {FAIL}
The finally block must be a blockTest Case: 14.19-syntax-14Expected Result: FAIL
Regression Test:
tcltest::test 14.19-syntax-13 { The finally block must be a block } { empty_main T1419syn13 { int i; try {} finally i++; } } {FAIL}
The finally block must be a blockTest Case: 14.19-syntax-15Expected Result: FAIL
Regression Test:
tcltest::test 14.19-syntax-14 { The finally block must be a block } { empty_main T1419syn14 { try {} finally class C {} } } {FAIL}
The finally block must be a blockTest Case: 14.19-syntax-16Expected Result: FAIL
Regression Test:
tcltest::test 14.19-syntax-15 { The finally block must be a block } { empty_main T1419syn15 { try {} finally label: {} } } {FAIL}
The finally block must be a blockTest Case: 14.19-syntax-17Expected Result: FAIL
Regression Test:
tcltest::test 14.19-syntax-16 { The finally block must be a block } { empty_main T1419syn16 { try {} catch (Exception e) {} finally ; } } {FAIL}
The finally block must be a blockTest Case: 14.19-syntax-18Expected Result: FAIL
Regression Test:
tcltest::test 14.19-syntax-17 { The finally block must be a block } { empty_main T1419syn17 { try {} catch (Exception e) {} finally int i; } } {FAIL}
The finally block must be a blockTest Case: 14.19-syntax-19Expected Result: FAIL
Regression Test:
tcltest::test 14.19-syntax-18 { The finally block must be a block } { empty_main T1419syn18 { int i; try {} catch (Exception e) {} finally i++; } } {FAIL}
The finally block must be a blockTest Case: 14.19-syntax-20Expected Result: FAIL
Regression Test:
tcltest::test 14.19-syntax-19 { The finally block must be a block } { empty_main T1419syn19 { try {} catch (Exception e) {} finally class C {} } } {FAIL}
The finally block must be a blockTest Case: 14.19-type-1Expected Result: FAIL
Regression Test:
tcltest::test 14.19-syntax-20 { The finally block must be a block } { empty_main T1419syn20 { try {} catch (Exception e) {} finally label: {} } } {FAIL}
The catch variable must extend ThrowableTest Case: 14.19-type-2Expected Result: FAIL
Regression Test:
tcltest::test 14.19-type-1 { The catch variable must extend Throwable } { empty_main T1419t1 { try { throw new Error(); } catch (Error e[]) {} } } {FAIL}
The catch variable must extend ThrowableTest Case: 14.19-type-3Expected Result: FAIL
Regression Test:
tcltest::test 14.19-type-2 { The catch variable must extend Throwable } { empty_main T1419t2 { try { throw new Error(); } catch (Error[] e) {} } } {FAIL}
The catch variable must extend ThrowableTest Case: 14.19-type-4Expected Result: FAIL
Regression Test:
tcltest::test 14.19-type-3 { The catch variable must extend Throwable } { empty_main T1419t3 { try { throw new Error(); } catch (int e) {} } } {FAIL}
The catch variable must extend ThrowableTest Case: 14.19-type-5Expected Result: FAIL
Regression Test:
tcltest::test 14.19-type-4 { The catch variable must extend Throwable } { empty_main T1419t4 { try { throw new Error(); } catch (Object e) {} } } {FAIL}
The catch variable must extend ThrowableExpected Result: FAIL
Regression Test:
tcltest::test 14.19-type-5 { The catch variable must extend Throwable } { empty_main T1419t5 { try { throw new Error(); } catch (java.io.Serializable e) {} } } {FAIL}
tests/jls/blocks-and-statements/unreachable-statements
Example of valid unreachable code, since value analysis is not madeTest Case: 14.20-block-1Expected Result: PASS
Regression Test:
tcltest::test 14.20-valid-1 { Example of valid unreachable code, since value analysis is not made } { empty_main T1420valid1 { int n = 5, k; while (n > 7) k = 2; } } {PASS}
Empty blocks complete normally iff reachableTest Case: 14.20-block-2Expected Result: PASS
Regression Test:
tcltest::test 14.20-block-1 { Empty blocks complete normally iff reachable } { empty_main T1420block1 { {} int i; } } {PASS}
Non-empty blocks complete normally iff last statement doesTest Case: 14.20-block-3Expected Result: PASS
Regression Test:
tcltest::test 14.20-block-2 { Non-empty blocks complete normally iff last statement does } { empty_main T1420block2 { { int i; } int j; } } {PASS}
Non-empty blocks complete normally iff last statement doesTest Case: 14.20-block-4Expected Result: FAIL
Regression Test:
tcltest::test 14.20-block-3 { Non-empty blocks complete normally iff last statement does } { empty_main T1420block3 { { return; } int i; } } {FAIL}
Non-empty blocks complete normally iff last statement doesTest Case: 14.20-block-5Expected Result: FAIL
Regression Test:
tcltest::test 14.20-block-4 { Non-empty blocks complete normally iff last statement does } { empty_main T1420block4 { { return; } ; } } {FAIL}
Non-empty blocks complete normally iff last statement doesTest Case: 14.20-block-6Expected Result: FAIL
Regression Test:
tcltest::test 14.20-block-5 { Non-empty blocks complete normally iff last statement does } { empty_main T1420block5 { { return; } {} } } {FAIL}
Non-empty blocks complete normally iff last statement doesTest Case: 14.20-block-7Expected Result: FAIL
Regression Test:
tcltest::test 14.20-block-6 { Non-empty blocks complete normally iff last statement does } { empty_main T1420block6 { { return; } { int x=3; } } } {FAIL}
First block statement is reachable iff block is; all others iff the preceding statement completes normallyTest Case: 14.20-block-8Expected Result: PASS
Regression Test:
tcltest::test 14.20-block-7 { First block statement is reachable iff block is; all others iff the preceding statement completes normally } { empty_main T1420block7 { int i; int j; } } {PASS}
First block statement is reachable iff block is; all others iff the preceding statement completes normallyTest Case: 14.20-block-9Expected Result: FAIL
Regression Test:
tcltest::test 14.20-block-8 { First block statement is reachable iff block is; all others iff the preceding statement completes normally } { empty_main T1420block8 { return; int i; } } {FAIL}
First block statement is reachable iff block is; all others iff the preceding statement completes normallyTest Case: 14.20-block-10Expected Result: FAIL
Regression Test:
tcltest::test 14.20-block-9 { First block statement is reachable iff block is; all others iff the preceding statement completes normally } { empty_main T1420block9 { return; ; } } {FAIL}
First block statement is reachable iff block is; all others iff the preceding statement completes normallyTest Case: 14.20-block-11Expected Result: FAIL
Regression Test:
tcltest::test 14.20-block-10 { First block statement is reachable iff block is; all others iff the preceding statement completes normally } { empty_main T1420block10 { return; {} } } {FAIL}
First block statement is reachable iff block is; all others iff the preceding statement completes normallyTest Case: 14.20-local-1Expected Result: FAIL
Regression Test:
tcltest::test 14.20-block-11 { First block statement is reachable iff block is; all others iff the preceding statement completes normally } { empty_main T1420block11 { return; { int x=3; } } } {FAIL}
Local class declarations can complete normally iff reachableTest Case: 14.20-local-2Expected Result: PASS
Regression Test:
tcltest::test 14.20-local-1 { Local class declarations can complete normally iff reachable } { empty_main T1420local1 { class bar {} int i; } } {PASS}
Local class declarations can complete normally iff reachableTest Case: 14.20-local-3Expected Result: FAIL
Regression Test:
tcltest::test 14.20-local-2 { Local class declarations can complete normally iff reachable } { empty_main T1420local2 { return; class bar {} } } {FAIL}
Local variable declarations can complete normally iff reachableTest Case: 14.20-local-4Expected Result: PASS
Regression Test:
tcltest::test 14.20-local-3 { Local variable declarations can complete normally iff reachable } { empty_main T1420local3 { int i; int j; } } {PASS}
Local variable declarations can complete normally iff reachableTest Case: 14.20-empty-1Expected Result: FAIL
Regression Test:
tcltest::test 14.20-local-4 { Local variable declarations can complete normally iff reachable } { empty_main T1420local4 { return; int j; } } {FAIL}
The empty statement completes normally iff reachableTest Case: 14.20-label-1Expected Result: PASS
Regression Test:
tcltest::test 14.20-empty-1 { The empty statement completes normally iff reachable } { empty_main T1420empty1 { ; int i; } } {PASS}
Labeled statements can complete normally if contained statement can as wellTest Case: 14.20-label-2Expected Result: PASS
Regression Test:
tcltest::test 14.20-label-1 { Labeled statements can complete normally if contained statement can as well } { empty_main T1420label1 { int i; a: i = 1; int j; } } {PASS}
Labeled statements can complete normally if it contains a reachable break to exit the labelTest Case: 14.20-label-3Expected Result: PASS
Regression Test:
tcltest::test 14.20-label-2 { Labeled statements can complete normally if it contains a reachable break to exit the label } { empty_main T1420label2 { a: break a; int i; } } {PASS}
Labeled statements can complete normally if it contains a reachable break to exit the labelTest Case: 14.20-label-4Expected Result: PASS
Regression Test:
tcltest::test 14.20-label-3 { Labeled statements can complete normally if it contains a reachable break to exit the label } { empty_main T1420label3 { a: while (true) break a; int i; } } {PASS}
Labeled statements without exiting break or normal completion of contained statement do not complete normallyTest Case: 14.20-label-5Expected Result: FAIL
Regression Test:
tcltest::test 14.20-label-4 { Labeled statements without exiting break or normal completion of contained statement do not complete normally } { empty_main T1420label4 { a: return; int i; } } {FAIL}
Labeled statements without exiting break or normal completion of contained statement do not complete normallyTest Case: 14.20-label-6Expected Result: FAIL
Regression Test:
tcltest::test 14.20-label-5 { Labeled statements without exiting break or normal completion of contained statement do not complete normally } { empty_main T1420label5 { a: return; ; } } {FAIL}
Labeled statements without exiting break or normal completion of contained statement do not complete normallyTest Case: 14.20-label-7Expected Result: FAIL
Regression Test:
tcltest::test 14.20-label-6 { Labeled statements without exiting break or normal completion of contained statement do not complete normally } { empty_main T1420label6 { a: return; {} } } {FAIL}
Labeled statements without exiting break or normal completion of contained statement do not complete normallyTest Case: 14.20-label-8Expected Result: FAIL
Regression Test:
tcltest::test 14.20-label-7 { Labeled statements without exiting break or normal completion of contained statement do not complete normally } { empty_main T1420label7 { a: return; { int x=3; } } } {FAIL}
The break is interrupted by the try-finallyTest Case: 14.20-label-9Expected Result: FAIL
Regression Test:
tcltest::test 14.20-label-8 { The break is interrupted by the try-finally } { empty_main T1420label8 { a: try { break a; } finally { return; } int i; } } {FAIL}
The break is interrupted by the try-finallyTest Case: 14.20-label-10Expected Result: FAIL
Regression Test:
tcltest::test 14.20-label-9 { The break is interrupted by the try-finally } { empty_main T1420label9 { a: try { break a; } finally { return; } ; } } {FAIL}
The break is interrupted by the try-finallyTest Case: 14.20-label-11Expected Result: FAIL
Regression Test:
tcltest::test 14.20-label-10 { The break is interrupted by the try-finally } { empty_main T1420label10 { a: try { break a; } finally { return; } {} } } {FAIL}
The break is interrupted by the try-finallyTest Case: 14.20-label-12Expected Result: FAIL
Regression Test:
tcltest::test 14.20-label-11 { The break is interrupted by the try-finally } { empty_main T1420label11 { a: try { break a; } finally { return; } { int x=3; } } } {FAIL}
The break is interrupted by the try-finallyTest Case: 14.20-label-13Expected Result: FAIL
Regression Test:
tcltest::test 14.20-label-12 { The break is interrupted by the try-finally } { empty_main T1420label12 { a: try { throw new Exception(); } catch (Exception e) { break a; } finally { return; } int i; } } {FAIL}
The break is interrupted by the try-finallyTest Case: 14.20-label-14Expected Result: FAIL
Regression Test:
tcltest::test 14.20-label-13 { The break is interrupted by the try-finally } { empty_main T1420label13 { a: try { throw new Exception(); } catch (Exception e) { break a; } finally { return; } ; } } {FAIL}
The break is interrupted by the try-finallyTest Case: 14.20-label-15Expected Result: FAIL
Regression Test:
tcltest::test 14.20-label-14 { The break is interrupted by the try-finally } { empty_main T1420label14 { a: try { throw new Exception(); } catch (Exception e) { break a; } finally { return; } {} } } {FAIL}
The break is interrupted by the try-finallyTest Case: 14.20-expression-1Expected Result: FAIL
Regression Test:
tcltest::test 14.20-label-15 { The break is interrupted by the try-finally } { empty_main T1420label15 { a: try { throw new Exception(); } catch (Exception e) { break a; } finally { return; } { int x=3; } } } {FAIL}
Expression statements can complete normally iff reachableTest Case: 14.20-expression-2Expected Result: PASS
Regression Test:
tcltest::test 14.20-expression-1 { Expression statements can complete normally iff reachable } { empty_main T1420expression1 { System.out.println(); int i; i = 1; i++; --i; new Object(); new Object() {}; } } {PASS}
Expression statements can complete normally iff reachable (even if stricter analysis shows otherwise)Test Case: 14.20-switch-1Expected Result: PASS
Regression Test:
tcltest::test 14.20-expression-2 { Expression statements can complete normally iff reachable (even if stricter analysis shows otherwise) } { empty_class T1420expression2 { void die() { throw new RuntimeException(); } void foo() { System.exit(1); // never returns die(); // always abrupt exit with exception Object o = new Object[Integer.MAX_VALUE][Integer.MAX_VALUE][Integer.MAX_VALUE]; // almost a guaranteed OutOfMemoryError foo(); // recursion short-circuits rest of method int i; // will never get here, but it is reachable } } } {PASS}
A switch statement can complete normally if: The last statement in the switch block can complete normally.Test Case: 14.20-switch-2Expected Result: PASS
Regression Test:
tcltest::test 14.20-switch-1 { A switch statement can complete normally if: The last statement in the switch block can complete normally. } { empty_main T1420switch1 { switch (args.length) { case 0: int i; } int j; } } {PASS}
A switch statement can complete normally if: The switch block is empty or contains only switch labels.Test Case: 14.20-switch-3Expected Result: PASS
Regression Test:
tcltest::test 14.20-switch-2 { A switch statement can complete normally if: The switch block is empty or contains only switch labels. } { empty_main T1420switch2 { switch (args.length) {} int i; } } {PASS}
A switch statement can complete normally if: The switch block is empty or contains only switch labels.Test Case: 14.20-switch-4Expected Result: PASS
Regression Test:
tcltest::test 14.20-switch-3 { A switch statement can complete normally if: The switch block is empty or contains only switch labels. } { empty_main T1420switch3 { switch (args.length) { case 0: } int i; } } {PASS}
A switch statement can complete normally if: There is at least one switch label after the last switch block statement group.Test Case: 14.20-switch-5Expected Result: PASS
Regression Test:
tcltest::test 14.20-switch-4 { A switch statement can complete normally if: There is at least one switch label after the last switch block statement group. } { empty_main T1420switch4 { switch (args.length) { case 0: return; case 1: } int i; } } {PASS}
A switch statement can complete normally if: The switch block does not contain a default label.Test Case: 14.20-switch-6Expected Result: PASS
Regression Test:
tcltest::test 14.20-switch-5 { A switch statement can complete normally if: The switch block does not contain a default label. } { empty_main T1420switch5 { switch (args.length) { case 0: return; } int i; } } {PASS}
A switch statement can complete normally if: There is a reachable break statement that exits the switch statement.Test Case: 14.20-switch-7Expected Result: PASS
Regression Test:
tcltest::test 14.20-switch-6 { A switch statement can complete normally if: There is a reachable break statement that exits the switch statement. } { empty_main T1420switch6 { switch (args.length) { default: return; case 0: break; } int i; } } {PASS}
A switch statement cannot complete normally if all five preceding conditions are not metTest Case: 14.20-switch-8Expected Result: FAIL
Regression Test:
tcltest::test 14.20-switch-7 { A switch statement cannot complete normally if all five preceding conditions are not met } { empty_main T1420switch7 { switch (args.length) { default: return; } int i; } } {FAIL}
A switch statement cannot complete normally if all five preceding conditions are not metTest Case: 14.20-switch-9Expected Result: FAIL
Regression Test:
tcltest::test 14.20-switch-8 { A switch statement cannot complete normally if all five preceding conditions are not met } { empty_main T1420switch8 { switch (args.length) { default: return; } ; } } {FAIL}
A switch statement cannot complete normally if all five preceding conditions are not metTest Case: 14.20-switch-10Expected Result: FAIL
Regression Test:
tcltest::test 14.20-switch-9 { A switch statement cannot complete normally if all five preceding conditions are not met } { empty_main T1420switch9 { switch (args.length) { default: return; } {} } } {FAIL}
A switch statement cannot complete normally if all five preceding conditions are not metTest Case: 14.20-switch-11Expected Result: FAIL
Regression Test:
tcltest::test 14.20-switch-10 { A switch statement cannot complete normally if all five preceding conditions are not met } { empty_main T1420switch10 { switch (args.length) { default: return; } { int x=3; } } } {FAIL}
A switchblock statement is reachable if it bears a switch labelTest Case: 14.20-switch-12Expected Result: PASS
Regression Test:
tcltest::test 14.20-switch-11 { A switchblock statement is reachable if it bears a switch label } { switch_labels T1420switch11 int { case 0: return; case 1: boolean b; } } {PASS}
A switchblock statement is reachable if a prior statement can complete normallyTest Case: 14.20-switch-13Expected Result: PASS
Regression Test:
tcltest::test 14.20-switch-12 { A switchblock statement is reachable if a prior statement can complete normally } { switch_labels T1420switch12 int { case 0: boolean b1; boolean b2; } } {PASS}
A switchblock statement is unreachable iff it bears no label and the prior statement cannot complete normallyTest Case: 14.20-switch-14Expected Result: FAIL
Regression Test:
tcltest::test 14.20-switch-13 { A switchblock statement is unreachable iff it bears no label and the prior statement cannot complete normally } { switch_labels T1420switch13 int { case 0: return; int i; } } {FAIL}
A switchblock statement is unreachable iff it bears no label and the prior statement cannot complete normallyTest Case: 14.20-switch-15Expected Result: FAIL
Regression Test:
tcltest::test 14.20-switch-14 { A switchblock statement is unreachable iff it bears no label and the prior statement cannot complete normally } { switch_labels T1420switch14 int { case 0: return; ; } } {FAIL}
A switchblock statement is unreachable iff it bears no label and the prior statement cannot complete normallyTest Case: 14.20-switch-16Expected Result: FAIL
Regression Test:
tcltest::test 14.20-switch-15 { A switchblock statement is unreachable iff it bears no label and the prior statement cannot complete normally } { switch_labels T1420switch15 int { case 0: return; {} } } {FAIL}
A switchblock statement is unreachable iff it bears no label and the prior statement cannot complete normallyTest Case: 14.20-switch-17Expected Result: FAIL
Regression Test:
tcltest::test 14.20-switch-16 { A switchblock statement is unreachable iff it bears no label and the prior statement cannot complete normally } { switch_labels T1420switch16 int { case 0: return; { int x=3; } } } {FAIL}
The break is interrupted by the try-finallyTest Case: 14.20-switch-18Expected Result: FAIL
Regression Test:
tcltest::test 14.20-switch-17 { The break is interrupted by the try-finally } { empty_main T1420switch17 { switch (args.length) { default: try { break; } finally { return; } } int i; } } {FAIL}
The break is interrupted by the try-finallyTest Case: 14.20-switch-19Expected Result: FAIL
Regression Test:
tcltest::test 14.20-switch-18 { The break is interrupted by the try-finally } { empty_main T1420switch18 { switch (args.length) { default: try { break; } finally { return; } } ; } } {FAIL}
The break is interrupted by the try-finallyTest Case: 14.20-switch-20Expected Result: FAIL
Regression Test:
tcltest::test 14.20-switch-19 { The break is interrupted by the try-finally } { empty_main T1420switch19 { switch (args.length) { default: try { break; } finally { return; } } {} } } {FAIL}
The break is interrupted by the try-finallyTest Case: 14.20-switch-21Expected Result: FAIL
Regression Test:
tcltest::test 14.20-switch-20 { The break is interrupted by the try-finally } { empty_main T1420switch20 { switch (args.length) { default: try { break; } finally { return; } } { int x=3; } } } {FAIL}
The break is interrupted by the try-finallyTest Case: 14.20-switch-22Expected Result: FAIL
Regression Test:
tcltest::test 14.20-switch-21 { The break is interrupted by the try-finally } { empty_main T1420switch21 { switch (args.length) { default: try { throw new Exception(); } catch (Exception e) { break; } finally { return; } } int i; } } {FAIL}
The break is interrupted by the try-finallyTest Case: 14.20-switch-23Expected Result: FAIL
Regression Test:
tcltest::test 14.20-switch-22 { The break is interrupted by the try-finally } { empty_main T1420switch22 { switch (args.length) { default: try { throw new Exception(); } catch (Exception e) { break; } finally { return; } } ; } } {FAIL}
The break is interrupted by the try-finallyTest Case: 14.20-switch-24Expected Result: FAIL
Regression Test:
tcltest::test 14.20-switch-23 { The break is interrupted by the try-finally } { empty_main T1420switch23 { switch (args.length) { default: try { throw new Exception(); } catch (Exception e) { break; } finally { return; } } {} } } {FAIL}
The break is interrupted by the try-finallyTest Case: 14.20-while-1Expected Result: FAIL
Regression Test:
tcltest::test 14.20-switch-24 { The break is interrupted by the try-finally } { empty_main T1420switch24 { switch (args.length) { default: try { throw new Exception(); } catch (Exception e) { break; } finally { return; } } { int x=3; } } } {FAIL}
A while statement can complete normally if: The condition expression is not a constant expression with value trueTest Case: 14.20-while-2Expected Result: PASS
Regression Test:
tcltest::test 14.20-while-1 { A while statement can complete normally if: The condition expression is not a constant expression with value true } { empty_main T1420while1 { boolean b = true; while (b); int j; } } {PASS}
A while statement can complete normally if: There is a reachable break statement that exits the while statement.Test Case: 14.20-while-3Expected Result: PASS
Regression Test:
tcltest::test 14.20-while-2 { A while statement can complete normally if: There is a reachable break statement that exits the while statement. } { empty_main T1420while2 { while (true) break; int i; } } {PASS}
A while statement cannot complete normally iff there is no break and the condition is constant trueTest Case: 14.20-while-4Expected Result: FAIL
Regression Test:
tcltest::test 14.20-while-3 { A while statement cannot complete normally iff there is no break and the condition is constant true } { empty_main T1420while3 { while (true); int i; } } {FAIL}
A while statement cannot complete normally iff there is no break and the condition is constant trueTest Case: 14.20-while-5Expected Result: FAIL
Regression Test:
tcltest::test 14.20-while-4 { A while statement cannot complete normally iff there is no break and the condition is constant true } { empty_main T1420while4 { while (true); ; } } {FAIL}
A while statement cannot complete normally iff there is no break and the condition is constant trueTest Case: 14.20-while-6Expected Result: FAIL
Regression Test:
tcltest::test 14.20-while-5 { A while statement cannot complete normally iff there is no break and the condition is constant true } { empty_main T1420while5 { while (true); {} } } {FAIL}
A while statement cannot complete normally iff there is no break and the condition is constant trueTest Case: 14.20-while-7Expected Result: FAIL
Regression Test:
tcltest::test 14.20-while-6 { A while statement cannot complete normally iff there is no break and the condition is constant true } { empty_main T1420while6 { while (true); { int x=3; } } } {FAIL}
The contained statement of a while is unreachable iff the condition is constant falseTest Case: 14.20-while-8Expected Result: PASS
Regression Test:
tcltest::test 14.20-while-7 { The contained statement of a while is unreachable iff the condition is constant false } { empty_main T1420while7 { boolean b = false; while (b) b = false; int i; } } {PASS}
The contained statement of a while is unreachable iff the condition is constant falseTest Case: 14.20-while-9Expected Result: FAIL
Regression Test:
tcltest::test 14.20-while-8 { The contained statement of a while is unreachable iff the condition is constant false } { empty_main T1420while8 { int i; while (false) i = 1; } } {FAIL}
The contained statement of a while is unreachable iff the condition is constant falseTest Case: 14.20-while-10Expected Result: FAIL
Regression Test:
tcltest::test 14.20-while-9 { The contained statement of a while is unreachable iff the condition is constant false } { empty_main T1420while9 { while (false); } } {FAIL}
The contained statement of a while is unreachable iff the condition is constant falseTest Case: 14.20-while-11Expected Result: FAIL
Regression Test:
tcltest::test 14.20-while-10 { The contained statement of a while is unreachable iff the condition is constant false } { empty_main T1420while10 { while (false) {} } } {FAIL}
The contained statement of a while is unreachable iff the condition is constant falseTest Case: 14.20-while-12Expected Result: FAIL
Regression Test:
tcltest::test 14.20-while-11 { The contained statement of a while is unreachable iff the condition is constant false } { empty_main T1420while11 { while (false) { int x=3; } } } {FAIL}
The break is interrupted by the try-finallyTest Case: 14.20-while-13Expected Result: FAIL
Regression Test:
tcltest::test 14.20-while-12 { The break is interrupted by the try-finally } { empty_main T1420while12 { while (true) { try { break; } finally { return; } } int i; } } {FAIL}
The break is interrupted by the try-finallyTest Case: 14.20-while-14Expected Result: FAIL
Regression Test:
tcltest::test 14.20-while-13 { The break is interrupted by the try-finally } { empty_main T1420while13 { while (true) { try { break; } finally { return; } } ; } } {FAIL}
The break is interrupted by the try-finallyTest Case: 14.20-while-15Expected Result: FAIL
Regression Test:
tcltest::test 14.20-while-14 { The break is interrupted by the try-finally } { empty_main T1420while14 { while (true) { try { break; } finally { return; } } {} } } {FAIL}
The break is interrupted by the try-finallyTest Case: 14.20-while-16Expected Result: FAIL
Regression Test:
tcltest::test 14.20-while-15 { The break is interrupted by the try-finally } { empty_main T1420while15 { while (true) { try { break; } finally { return; } } { int x=3; } } } {FAIL}
The break is interrupted by the try-finallyTest Case: 14.20-while-17Expected Result: FAIL
Regression Test:
tcltest::test 14.20-while-16 { The break is interrupted by the try-finally } { empty_main T1420while16 { while (true) { try { throw new Exception(); } catch (Exception e) { break; } finally { return; } } int i; } } {FAIL}
The break is interrupted by the try-finallyTest Case: 14.20-while-18Expected Result: FAIL
Regression Test:
tcltest::test 14.20-while-17 { The break is interrupted by the try-finally } { empty_main T1420while17 { while (true) { try { throw new Exception(); } catch (Exception e) { break; } finally { return; } } ; } } {FAIL}
The break is interrupted by the try-finallyTest Case: 14.20-while-19Expected Result: FAIL
Regression Test:
tcltest::test 14.20-while-18 { The break is interrupted by the try-finally } { empty_main T1420while18 { while (true) { try { throw new Exception(); } catch (Exception e) { break; } finally { return; } } {} } } {FAIL}
The break is interrupted by the try-finallyTest Case: 14.20-do-1Expected Result: FAIL
Regression Test:
tcltest::test 14.20-while-19 { The break is interrupted by the try-finally } { empty_main T1420while19 { while (true) { try { throw new Exception(); } catch (Exception e) { break; } finally { return; } } { int x=3; } } } {FAIL}
A do statement can complete normally if: The contained statement can complete normally and the condition is not constant trueTest Case: 14.20-do-2Expected Result: PASS
Regression Test:
tcltest::test 14.20-do-1 { A do statement can complete normally if: The contained statement can complete normally and the condition is not constant true } { empty_main T1420do1 { boolean b = true; do {} while (b); int i; } } {PASS}
A do statement can complete normally if: The do statement contains a reachable unlabeled continue statement for the do, with condition not constant trueTest Case: 14.20-do-3Expected Result: PASS
Regression Test:
tcltest::test 14.20-do-2 { A do statement can complete normally if: The do statement contains a reachable unlabeled continue statement for the do, with condition not constant true } { empty_main T1420do2 { boolean b = true; do continue; while (b); int i; } } {PASS}
A do statement can complete normally if: The do statement contains a reachable labeled continue statement for the do, with condition not constant trueTest Case: 14.20-do-4Expected Result: PASS
Regression Test:
tcltest::test 14.20-do-3 { A do statement can complete normally if: The do statement contains a reachable labeled continue statement for the do, with condition not constant true } { empty_main T1420do3 { boolean b = true; a: do continue a; while (b); int i; } } {PASS}
A do statement can complete normally if: There is a reachable break statement that exits the do statement.Test Case: 14.20-do-5Expected Result: PASS
Regression Test:
tcltest::test 14.20-do-4 { A do statement can complete normally if: There is a reachable break statement that exits the do statement. } { empty_main T1420do4 { do break; while (true); int i; } } {PASS}
A do statement cannot complete normally iff all four preceding conditions are not metTest Case: 14.20-do-6Expected Result: FAIL
Regression Test:
tcltest::test 14.20-do-5 { A do statement cannot complete normally iff all four preceding conditions are not met } { empty_main T1420do5 { int i; do i = 1; while (true); int j; } } {FAIL}
A do statement cannot complete normally iff all four preceding conditions are not metTest Case: 14.20-do-7Expected Result: FAIL
Regression Test:
tcltest::test 14.20-do-6 { A do statement cannot complete normally iff all four preceding conditions are not met } { empty_main T1420do6 { int i; do i = 1; while (true); ; } } {FAIL}
A do statement cannot complete normally iff all four preceding conditions are not metTest Case: 14.20-do-8Expected Result: FAIL
Regression Test:
tcltest::test 14.20-do-7 { A do statement cannot complete normally iff all four preceding conditions are not met } { empty_main T1420do7 { int i; do i = 1; while (true); {} } } {FAIL}
A do statement cannot complete normally iff all four preceding conditions are not metTest Case: 14.20-do-9Expected Result: FAIL
Regression Test:
tcltest::test 14.20-do-8 { A do statement cannot complete normally iff all four preceding conditions are not met } { empty_main T1420do8 { int i; do i = 1; while (true); { int x=3; } } } {FAIL}
The break is interrupted by the try-finallyTest Case: 14.20-do-10Expected Result: FAIL
Regression Test:
tcltest::test 14.20-do-9 { The break is interrupted by the try-finally } { empty_main T1420do9 { do try { break; } finally { return; } while (true); int i; } } {FAIL}
The break is interrupted by the try-finallyTest Case: 14.20-do-11Expected Result: FAIL
Regression Test:
tcltest::test 14.20-do-10 { The break is interrupted by the try-finally } { empty_main T1420do10 { do try { break; } finally { return; } while (true); ; } } {FAIL}
The break is interrupted by the try-finallyTest Case: 14.20-do-12Expected Result: FAIL
Regression Test:
tcltest::test 14.20-do-11 { The break is interrupted by the try-finally } { empty_main T1420do11 { do try { break; } finally { return; } while (true); {} } } {FAIL}
The break is interrupted by the try-finallyTest Case: 14.20-do-13Expected Result: FAIL
Regression Test:
tcltest::test 14.20-do-12 { The break is interrupted by the try-finally } { empty_main T1420do12 { do try { break; } finally { return; } while (true); { int x=3; } } } {FAIL}
The break is interrupted by the try-finallyTest Case: 14.20-do-14Expected Result: FAIL
Regression Test:
tcltest::test 14.20-do-13 { The break is interrupted by the try-finally } { empty_main T1420do13 { do try { throw new Exception(); } catch (Exception e) { break; } finally { return; } while (true); int i; } } {FAIL}
The break is interrupted by the try-finallyTest Case: 14.20-do-15Expected Result: FAIL
Regression Test:
tcltest::test 14.20-do-14 { The break is interrupted by the try-finally } { empty_main T1420do14 { do try { throw new Exception(); } catch (Exception e) { break; } finally { return; } while (true); ; } } {FAIL}
The break is interrupted by the try-finallyTest Case: 14.20-do-16Expected Result: FAIL
Regression Test:
tcltest::test 14.20-do-15 { The break is interrupted by the try-finally } { empty_main T1420do15 { do try { throw new Exception(); } catch (Exception e) { break; } finally { return; } while (true); {} } } {FAIL}
The break is interrupted by the try-finallyTest Case: 14.20-do-17Expected Result: FAIL
Regression Test:
tcltest::test 14.20-do-16 { The break is interrupted by the try-finally } { empty_main T1420do16 { do try { throw new Exception(); } catch (Exception e) { break; } finally { return; } while (true); { int x=3; } } } {FAIL}
The continue is interrupted by the try-finallyTest Case: 14.20-do-18Expected Result: FAIL
Regression Test:
tcltest::test 14.20-do-17 { The continue is interrupted by the try-finally } { empty_main T1420do17 { do try { continue; } finally { return; } while (false); int i; } } {FAIL}
The continue is interrupted by the try-finallyTest Case: 14.20-do-19Expected Result: FAIL
Regression Test:
tcltest::test 14.20-do-18 { The continue is interrupted by the try-finally } { empty_main T1420do18 { do try { continue; } finally { return; } while (false); ; } } {FAIL}
The continue is interrupted by the try-finallyTest Case: 14.20-do-20Expected Result: FAIL
Regression Test:
tcltest::test 14.20-do-19 { The continue is interrupted by the try-finally } { empty_main T1420do19 { do try { continue; } finally { return; } while (false); {} } } {FAIL}
The continue is interrupted by the try-finallyTest Case: 14.20-do-21Expected Result: FAIL
Regression Test:
tcltest::test 14.20-do-20 { The continue is interrupted by the try-finally } { empty_main T1420do20 { do try { continue; } finally { return; } while (false); { int x=3; } } } {FAIL}
The continue is interrupted by the try-finallyTest Case: 14.20-do-22Expected Result: FAIL
Regression Test:
tcltest::test 14.20-do-21 { The continue is interrupted by the try-finally } { empty_main T1420do21 { do try { throw new Exception(); } catch (Exception e) { continue; } finally { return; } while (false); int i; } } {FAIL}
The continue is interrupted by the try-finallyTest Case: 14.20-do-23Expected Result: FAIL
Regression Test:
tcltest::test 14.20-do-22 { The continue is interrupted by the try-finally } { empty_main T1420do22 { do try { throw new Exception(); } catch (Exception e) { continue; } finally { return; } while (false); ; } } {FAIL}
The continue is interrupted by the try-finallyTest Case: 14.20-do-24Expected Result: FAIL
Regression Test:
tcltest::test 14.20-do-23 { The continue is interrupted by the try-finally } { empty_main T1420do23 { do try { throw new Exception(); } catch (Exception e) { continue; } finally { return; } while (false); {} } } {FAIL}
The continue is interrupted by the try-finallyTest Case: 14.20-do-25Expected Result: FAIL
Regression Test:
tcltest::test 14.20-do-24 { The continue is interrupted by the try-finally } { empty_main T1420do24 { do try { throw new Exception(); } catch (Exception e) { continue; } finally { return; } while (false); { int x=3; } } } {FAIL}
The continue is interrupted by the try-finallyTest Case: 14.20-do-26Expected Result: FAIL
Regression Test:
tcltest::test 14.20-do-25 { The continue is interrupted by the try-finally } { empty_main T1420do25 { a: do try { continue a; } finally { return; } while (false); int i; } } {FAIL}
The continue is interrupted by the try-finallyTest Case: 14.20-do-27Expected Result: FAIL
Regression Test:
tcltest::test 14.20-do-26 { The continue is interrupted by the try-finally } { empty_main T1420do26 { a: do try { continue a; } finally { return; } while (false); ; } } {FAIL}
The continue is interrupted by the try-finallyTest Case: 14.20-do-28Expected Result: FAIL
Regression Test:
tcltest::test 14.20-do-27 { The continue is interrupted by the try-finally } { empty_main T1420do27 { a: do try { continue a; } finally { return; } while (false); {} } } {FAIL}
The continue is interrupted by the try-finallyTest Case: 14.20-do-29Expected Result: FAIL
Regression Test:
tcltest::test 14.20-do-28 { The continue is interrupted by the try-finally } { empty_main T1420do28 { a: do try { continue a; } finally { return; } while (false); { int x=3; } } } {FAIL}
The continue is interrupted by the try-finallyTest Case: 14.20-do-30Expected Result: FAIL
Regression Test:
tcltest::test 14.20-do-29 { The continue is interrupted by the try-finally } { empty_main T1420do29 { a: do try { throw new Exception(); } catch (Exception e) { continue a; } finally { return; } while (false); int i; } } {FAIL}
The continue is interrupted by the try-finallyTest Case: 14.20-do-31Expected Result: FAIL
Regression Test:
tcltest::test 14.20-do-30 { The continue is interrupted by the try-finally } { empty_main T1420do30 { a: do try { throw new Exception(); } catch (Exception e) { continue a; } finally { return; } while (false); ; } } {FAIL}
The continue is interrupted by the try-finallyTest Case: 14.20-do-32Expected Result: FAIL
Regression Test:
tcltest::test 14.20-do-31 { The continue is interrupted by the try-finally } { empty_main T1420do31 { a: do try { throw new Exception(); } catch (Exception e) { continue a; } finally { return; } while (false); {} } } {FAIL}
The continue is interrupted by the try-finallyTest Case: 14.20-do-33Expected Result: FAIL
Regression Test:
tcltest::test 14.20-do-32 { The continue is interrupted by the try-finally } { empty_main T1420do32 { a: do try { throw new Exception(); } catch (Exception e) { continue a; } finally { return; } while (false); { int x=3; } } } {FAIL}
The continue is interrupted by the try-finallyTest Case: 14.20-do-34Expected Result: FAIL
Regression Test:
tcltest::test 14.20-do-33 { The continue is interrupted by the try-finally } { empty_main T1420do33 { a: do { try { throw new Exception(); } catch (Exception e) { continue a; } finally { return; } } while (false); { int x=3; } } } {FAIL}
A do statement can complete normally if: The do statement contains a reachable labeled continue statement for the do, with condition not constant trueTest Case: 14.20-for-1Expected Result: PASS
Regression Test:
tcltest::test 14.20-do-34 { A do statement can complete normally if: The do statement contains a reachable labeled continue statement for the do, with condition not constant true } { empty_main T1420do34 { a: do try { throw new Exception(); } catch (Exception e) { } finally { continue a; } while (false); a: do try { } finally { continue a; } while (false); int i = 1; } } {PASS}
A for statement can complete normally if: The condition statement exists and is non-constantTest Case: 14.20-for-2Expected Result: PASS
Regression Test:
tcltest::test 14.20-for-1 { A for statement can complete normally if: The condition statement exists and is non-constant } { empty_main T1420for1 { boolean b = true; for ( ; b; ); int i; } } {PASS}
A for statement can complete normally if: There is a reachable break statement that exits the for statement.Test Case: 14.20-for-3Expected Result: PASS
Regression Test:
tcltest::test 14.20-for-2 { A for statement can complete normally if: There is a reachable break statement that exits the for statement. } { empty_main T1420for2 { for ( ; ; ) break; int i; } } {PASS}
A for statement cannot complete normally if there is no condition or the condition is constant true, and there is no breakTest Case: 14.20-for-4Expected Result: FAIL
Regression Test:
tcltest::test 14.20-for-3 { A for statement cannot complete normally if there is no condition or the condition is constant true, and there is no break } { empty_main T1420for3 { for ( ; ; ); int i; } } {FAIL}
A for statement cannot complete normally if there is no condition or the condition is constant true, and there is no breakTest Case: 14.20-for-5Expected Result: FAIL
Regression Test:
tcltest::test 14.20-for-4 { A for statement cannot complete normally if there is no condition or the condition is constant true, and there is no break } { empty_main T1420for4 { for ( ; ; ); ; } } {FAIL}
A for statement cannot complete normally if there is no condition or the condition is constant true, and there is no breakTest Case: 14.20-for-6Expected Result: FAIL
Regression Test:
tcltest::test 14.20-for-5 { A for statement cannot complete normally if there is no condition or the condition is constant true, and there is no break } { empty_main T1420for5 { for ( ; ; ); {} } } {FAIL}
A for statement cannot complete normally if there is no condition or the condition is constant true, and there is no breakTest Case: 14.20-for-7Expected Result: FAIL
Regression Test:
tcltest::test 14.20-for-6 { A for statement cannot complete normally if there is no condition or the condition is constant true, and there is no break } { empty_main T1420for6 { for ( ; ; ); { int x=3; } } } {FAIL}
A for statement cannot complete normally if there is no condition or the condition is constant true, and there is no breakTest Case: 14.20-for-8Expected Result: FAIL
Regression Test:
tcltest::test 14.20-for-7 { A for statement cannot complete normally if there is no condition or the condition is constant true, and there is no break } { empty_main T1420for7 { for ( ; true; ); int i; } } {FAIL}
A for statement cannot complete normally if there is no condition or the condition is constant true, and there is no breakTest Case: 14.20-for-9Expected Result: FAIL
Regression Test:
tcltest::test 14.20-for-8 { A for statement cannot complete normally if there is no condition or the condition is constant true, and there is no break } { empty_main T1420for8 { for ( ; true; ); ; } } {FAIL}
A for statement cannot complete normally if there is no condition or the condition is constant true, and there is no breakTest Case: 14.20-for-10Expected Result: FAIL
Regression Test:
tcltest::test 14.20-for-9 { A for statement cannot complete normally if there is no condition or the condition is constant true, and there is no break } { empty_main T1420for9 { for ( ; true; ); {} } } {FAIL}
A for statement cannot complete normally if there is no condition or the condition is constant true, and there is no breakTest Case: 14.20-for-11Expected Result: FAIL
Regression Test:
tcltest::test 14.20-for-10 { A for statement cannot complete normally if there is no condition or the condition is constant true, and there is no break } { empty_main T1420for10 { for ( ; true; ); { int x=3; } } } {FAIL}
A for statement cannot have a constant false conditionTest Case: 14.20-for-12Expected Result: FAIL
Regression Test:
tcltest::test 14.20-for-11 { A for statement cannot have a constant false condition } { empty_main T1420for11 { int i; for( ; false; ) i = 1; } } {FAIL}
A for statement cannot have a constant false conditionTest Case: 14.20-for-13Expected Result: FAIL
Regression Test:
tcltest::test 14.20-for-12 { A for statement cannot have a constant false condition } { empty_main T1420for12 { for ( ; false; ); } } {FAIL}
A for statement cannot have a constant false conditionTest Case: 14.20-for-14Expected Result: FAIL
Regression Test:
tcltest::test 14.20-for-13 { A for statement cannot have a constant false condition } { empty_main T1420for13 { for ( ; false; ) {} } } {FAIL}
A for statement cannot have a constant false conditionTest Case: 14.20-for-15Expected Result: FAIL
Regression Test:
tcltest::test 14.20-for-14 { A for statement cannot have a constant false condition } { empty_main T1420for14 { for ( ; false; ) { int x=3; } } } {FAIL}
The break is interrupted by the try-finallyTest Case: 14.20-for-16Expected Result: FAIL
Regression Test:
tcltest::test 14.20-for-15 { The break is interrupted by the try-finally } { empty_main T1420for15 { for ( ; ; ) try { break; } finally { return; } int i; } } {FAIL}
The break is interrupted by the try-finallyTest Case: 14.20-for-17Expected Result: FAIL
Regression Test:
tcltest::test 14.20-for-16 { The break is interrupted by the try-finally } { empty_main T1420for16 { for ( ; ; ) try { break; } finally { return; } ; } } {FAIL}
The break is interrupted by the try-finallyTest Case: 14.20-for-18Expected Result: FAIL
Regression Test:
tcltest::test 14.20-for-17 { The break is interrupted by the try-finally } { empty_main T1420for17 { for ( ; ; ) try { break; } finally { return; } {} } } {FAIL}
The break is interrupted by the try-finallyTest Case: 14.20-for-19Expected Result: FAIL
Regression Test:
tcltest::test 14.20-for-18 { The break is interrupted by the try-finally } { empty_main T1420for18 { for ( ; ; ) try { break; } finally { return; } { int x=3; } } } {FAIL}
The break is interrupted by the try-finallyTest Case: 14.20-for-20Expected Result: FAIL
Regression Test:
tcltest::test 14.20-for-19 { The break is interrupted by the try-finally } { empty_main T1420for19 { for ( ; ; ) try { throw new Exception(); } catch (Exception e) { break; } finally { return; } int i; } } {FAIL}
The break is interrupted by the try-finallyTest Case: 14.20-for-21Expected Result: FAIL
Regression Test:
tcltest::test 14.20-for-20 { The break is interrupted by the try-finally } { empty_main T1420for20 { for ( ; ; ) try { throw new Exception(); } catch (Exception e) { break; } finally { return; } ; } } {FAIL}
The break is interrupted by the try-finallyTest Case: 14.20-for-22Expected Result: FAIL
Regression Test:
tcltest::test 14.20-for-21 { The break is interrupted by the try-finally } { empty_main T1420for21 { for ( ; ; ) try { throw new Exception(); } catch (Exception e) { break; } finally { return; } {} } } {FAIL}
The break is interrupted by the try-finallyTest Case: 14.20-abrupt-1Expected Result: FAIL
Regression Test:
tcltest::test 14.20-for-22 { The break is interrupted by the try-finally } { empty_main T1420for22 { for ( ; ; ) try { throw new Exception(); } catch (Exception e) { break; } finally { return; } { int x=3; } } } {FAIL}
break cannot complete normallyTest Case: 14.20-abrupt-2Expected Result: FAIL
Regression Test:
tcltest::test 14.20-abrupt-1 { break cannot complete normally } { empty_main T1420abrupt1 { while (true) { break; int i; } } } {FAIL}
break cannot complete normallyTest Case: 14.20-abrupt-3Expected Result: FAIL
Regression Test:
tcltest::test 14.20-abrupt-2 { break cannot complete normally } { empty_main T1420abrupt2 { while (true) { break; ; } } } {FAIL}
break cannot complete normallyTest Case: 14.20-abrupt-4Expected Result: FAIL
Regression Test:
tcltest::test 14.20-abrupt-3 { break cannot complete normally } { empty_main T1420abrupt3 { while (true) { break; {} } } } {FAIL}
break cannot complete normallyTest Case: 14.20-abrupt-5Expected Result: FAIL
Regression Test:
tcltest::test 14.20-abrupt-4 { break cannot complete normally } { empty_main T1420abrupt4 { while (true) { break; { int x=3; } } } } {FAIL}
continue cannot complete normallyTest Case: 14.20-abrupt-6Expected Result: FAIL
Regression Test:
tcltest::test 14.20-abrupt-5 { continue cannot complete normally } { empty_main T1420abrupt5 { while (true) { continue; int i; } } } {FAIL}
continue cannot complete normallyTest Case: 14.20-abrupt-7Expected Result: FAIL
Regression Test:
tcltest::test 14.20-abrupt-6 { continue cannot complete normally } { empty_main T1420abrupt6 { while (true) { continue; ; } } } {FAIL}
continue cannot complete normallyTest Case: 14.20-abrupt-8Expected Result: FAIL
Regression Test:
tcltest::test 14.20-abrupt-7 { continue cannot complete normally } { empty_main T1420abrupt7 { while (true) { continue; {} } } } {FAIL}
continue cannot complete normallyTest Case: 14.20-abrupt-9Expected Result: FAIL
Regression Test:
tcltest::test 14.20-abrupt-8 { continue cannot complete normally } { empty_main T1420abrupt8 { while (true) { continue; { int x=3; } } } } {FAIL}
return cannot complete normallyTest Case: 14.20-abrupt-10Expected Result: FAIL
Regression Test:
tcltest::test 14.20-abrupt-9 { return cannot complete normally } { empty_main T1420abrupt9 { return; int i; } } {FAIL}
return cannot complete normallyTest Case: 14.20-abrupt-11Expected Result: FAIL
Regression Test:
tcltest::test 14.20-abrupt-10 { return cannot complete normally } { empty_main T1420abrupt10 { return; ; } } {FAIL}
return cannot complete normallyTest Case: 14.20-abrupt-12Expected Result: FAIL
Regression Test:
tcltest::test 14.20-abrupt-11 { return cannot complete normally } { empty_main T1420abrupt11 { return; {} } } {FAIL}
return cannot complete normallyTest Case: 14.20-abrupt-13Expected Result: FAIL
Regression Test:
tcltest::test 14.20-abrupt-12 { return cannot complete normally } { empty_main T1420abrupt12 { return; { int x=3; } } } {FAIL}
throw cannot complete normallyTest Case: 14.20-abrupt-14Expected Result: FAIL
Regression Test:
tcltest::test 14.20-abrupt-13 { throw cannot complete normally } { empty_main T1420abrupt13 { throw new RuntimeException(); int i; } } {FAIL}
throw cannot complete normallyTest Case: 14.20-abrupt-15Expected Result: FAIL
Regression Test:
tcltest::test 14.20-abrupt-14 { throw cannot complete normally } { empty_main T1420abrupt14 { throw new RuntimeException(); ; } } {FAIL}
throw cannot complete normallyTest Case: 14.20-abrupt-16Expected Result: FAIL
Regression Test:
tcltest::test 14.20-abrupt-15 { throw cannot complete normally } { empty_main T1420abrupt15 { throw new RuntimeException(); {} } } {FAIL}
throw cannot complete normallyTest Case: 14.20-synchronized-1Expected Result: FAIL
Regression Test:
tcltest::test 14.20-abrupt-16 { throw cannot complete normally } { empty_main T1420abrupt16 { throw new RuntimeException(); { int x=3; } } } {FAIL}
synchronized completes normally iff the contained block does as wellTest Case: 14.20-synchronized-2Expected Result: PASS
Regression Test:
tcltest::test 14.20-synchronized-1 { synchronized completes normally iff the contained block does as well } { empty_main T1420synch1 { synchronized (args) {} int i; } } {PASS}
synchronized completes normally iff the contained block does as wellTest Case: 14.20-synchronized-3Expected Result: FAIL
Regression Test:
tcltest::test 14.20-synchronized-2 { synchronized completes normally iff the contained block does as well } { empty_main T1420synch2 { synchronized (args) { return; } int i; } } {FAIL}
synchronized completes normally iff the contained block does as wellTest Case: 14.20-synchronized-4Expected Result: FAIL
Regression Test:
tcltest::test 14.20-synchronized-3 { synchronized completes normally iff the contained block does as well } { empty_main T1420synch3 { synchronized (args) { return; } ; } } {FAIL}
synchronized completes normally iff the contained block does as wellTest Case: 14.20-synchronized-5Expected Result: FAIL
Regression Test:
tcltest::test 14.20-synchronized-4 { synchronized completes normally iff the contained block does as well } { empty_main T1420synch4 { synchronized (args) { return; } {} } } {FAIL}
synchronized completes normally iff the contained block does as wellTest Case: 14.20-try-1Expected Result: FAIL
Regression Test:
tcltest::test 14.20-synchronized-5 { synchronized completes normally iff the contained block does as well } { empty_main T1420synch5 { synchronized (args) { return; } { int x=3; } } } {FAIL}
A try statement can complete normally iff both: The try block can complete normally or any catch block can complete normally. The finally block, if present, can complete normally.Test Case: 14.20-try-2Expected Result: PASS
Regression Test:
tcltest::test 14.20-try-1 { A try statement can complete normally iff both: The try block can complete normally or any catch block can complete normally. The finally block, if present, can complete normally. } { empty_main T1420try1 { try { new Object(); } catch (RuntimeException e) { return; } int i; } } {PASS}
A try statement can complete normally iff both: The try block can complete normally or any catch block can complete normally. The finally block, if present, can complete normally.Test Case: 14.20-try-3Expected Result: FAIL
Regression Test:
tcltest::test 14.20-try-2 { A try statement can complete normally iff both: The try block can complete normally or any catch block can complete normally. The finally block, if present, can complete normally. } { empty_main T1420try2 { try { throw new Exception(); } catch (Exception e) { return; } int i; } } {FAIL}
A try statement can complete normally iff both: The try block can complete normally or any catch block can complete normally. The finally block, if present, can complete normally.Test Case: 14.20-try-4Expected Result: FAIL
Regression Test:
tcltest::test 14.20-try-3 { A try statement can complete normally iff both: The try block can complete normally or any catch block can complete normally. The finally block, if present, can complete normally. } { empty_main T1420try3 { try { throw new Exception(); } catch (Exception e) { return; } ; } } {FAIL}
A try statement can complete normally iff both: The try block can complete normally or any catch block can complete normally. The finally block, if present, can complete normally.Test Case: 14.20-try-5Expected Result: FAIL
Regression Test:
tcltest::test 14.20-try-4 { A try statement can complete normally iff both: The try block can complete normally or any catch block can complete normally. The finally block, if present, can complete normally. } { empty_main T1420try4 { try { throw new Exception(); } catch (Exception e) { return; } {} } } {FAIL}
A try statement can complete normally iff both: The try block can complete normally or any catch block can complete normally. The finally block, if present, can complete normally.Test Case: 14.20-try-6Expected Result: FAIL
Regression Test:
tcltest::test 14.20-try-5 { A try statement can complete normally iff both: The try block can complete normally or any catch block can complete normally. The finally block, if present, can complete normally. } { empty_main T1420try5 { try { throw new Exception(); } catch (Exception e) { return; } { int x=3; } } } {FAIL}
A try statement can complete normally iff both: The try block can complete normally or any catch block can complete normally. The finally block, if present, can complete normally.Test Case: 14.20-try-7Expected Result: PASS
Regression Test:
tcltest::test 14.20-try-6 { A try statement can complete normally iff both: The try block can complete normally or any catch block can complete normally. The finally block, if present, can complete normally. } { empty_main T1420try6 { try { throw new Exception(); } catch (Exception e) { return; } catch (Throwable t) { } int i; } } {PASS}
A try statement can complete normally iff both: The try block can complete normally or any catch block can complete normally. The finally block, if present, can complete normally.Test Case: 14.20-try-8Expected Result: PASS
Regression Test:
tcltest::test 14.20-try-7 { A try statement can complete normally iff both: The try block can complete normally or any catch block can complete normally. The finally block, if present, can complete normally. } { empty_main T1420try7 { try { new Object(); } catch (RuntimeException e) { return; } finally { } int i; } } {PASS}
A try statement can complete normally iff both: The try block can complete normally or any catch block can complete normally. The finally block, if present, can complete normally.Test Case: 14.20-try-9Expected Result: FAIL
Regression Test:
tcltest::test 14.20-try-8 { A try statement can complete normally iff both: The try block can complete normally or any catch block can complete normally. The finally block, if present, can complete normally. } { empty_main T1420try8 { try { throw new Exception(); } catch (Exception e) { return; } finally { } int i; } } {FAIL}
A try statement can complete normally iff both: The try block can complete normally or any catch block can complete normally. The finally block, if present, can complete normally.Test Case: 14.20-try-10Expected Result: FAIL
Regression Test:
tcltest::test 14.20-try-9 { A try statement can complete normally iff both: The try block can complete normally or any catch block can complete normally. The finally block, if present, can complete normally. } { empty_main T1420try9 { try { throw new Exception(); } catch (Exception e) { return; } finally { } ; } } {FAIL}
A try statement can complete normally iff both: The try block can complete normally or any catch block can complete normally. The finally block, if present, can complete normally.Test Case: 14.20-try-11Expected Result: FAIL
Regression Test:
tcltest::test 14.20-try-10 { A try statement can complete normally iff both: The try block can complete normally or any catch block can complete normally. The finally block, if present, can complete normally. } { empty_main T1420try10 { try { throw new Exception(); } catch (Exception e) { return; } finally { } {} } } {FAIL}
A try statement can complete normally iff both: The try block can complete normally or any catch block can complete normally. The finally block, if present, can complete normally.Test Case: 14.20-try-12Expected Result: FAIL
Regression Test:
tcltest::test 14.20-try-11 { A try statement can complete normally iff both: The try block can complete normally or any catch block can complete normally. The finally block, if present, can complete normally. } { empty_main T1420try11 { try { throw new Exception(); } catch (Exception e) { return; } finally { } { int x=3; } } } {FAIL}
A try statement can complete normally iff both: The try block can complete normally or any catch block can complete normally. The finally block, if present, can complete normally.Test Case: 14.20-try-13Expected Result: PASS
Regression Test:
tcltest::test 14.20-try-12 { A try statement can complete normally iff both: The try block can complete normally or any catch block can complete normally. The finally block, if present, can complete normally. } { empty_main T1420try12 { try { throw new Exception(); } catch (Exception e) { return; } catch (Throwable t) { } finally { } int i; } } {PASS}
A try statement can complete normally iff both: The try block can complete normally or any catch block can complete normally. The finally block, if present, can complete normally.Test Case: 14.20-try-14Expected Result: FAIL
Regression Test:
tcltest::test 14.20-try-13 { A try statement can complete normally iff both: The try block can complete normally or any catch block can complete normally. The finally block, if present, can complete normally. } { empty_main T1420try13 { try { new Object(); } catch (Exception e) { return; } finally { return; } int i; } } {FAIL}
A try statement can complete normally iff both: The try block can complete normally or any catch block can complete normally. The finally block, if present, can complete normally.Test Case: 14.20-try-15Expected Result: FAIL
Regression Test:
tcltest::test 14.20-try-14 { A try statement can complete normally iff both: The try block can complete normally or any catch block can complete normally. The finally block, if present, can complete normally. } { empty_main T1420try14 { try { new Object(); } catch (Exception e) { return; } finally { return; } ; } } {FAIL}
A try statement can complete normally iff both: The try block can complete normally or any catch block can complete normally. The finally block, if present, can complete normally.Test Case: 14.20-try-16Expected Result: FAIL
Regression Test:
tcltest::test 14.20-try-15 { A try statement can complete normally iff both: The try block can complete normally or any catch block can complete normally. The finally block, if present, can complete normally. } { empty_main T1420try15 { try { new Object(); } catch (Exception e) { return; } finally { return; } {} } } {FAIL}
A try statement can complete normally iff both: The try block can complete normally or any catch block can complete normally. The finally block, if present, can complete normally.Test Case: 14.20-try-17Expected Result: FAIL
Regression Test:
tcltest::test 14.20-try-16 { A try statement can complete normally iff both: The try block can complete normally or any catch block can complete normally. The finally block, if present, can complete normally. } { empty_main T1420try16 { try { new Object(); } catch (Exception e) { return; } finally { return; } { int x=3; } } } {FAIL}
A try statement can complete normally iff both: The try block can complete normally or any catch block can complete normally. The finally block, if present, can complete normally.Test Case: 14.20-try-18Expected Result: FAIL
Regression Test:
tcltest::test 14.20-try-17 { A try statement can complete normally iff both: The try block can complete normally or any catch block can complete normally. The finally block, if present, can complete normally. } { empty_main T1420try17 { try { throw new Exception(); } catch (Exception e) { return; } finally { return; } int i; } } {FAIL}
A try statement can complete normally iff both: The try block can complete normally or any catch block can complete normally. The finally block, if present, can complete normally.Test Case: 14.20-try-19Expected Result: FAIL
Regression Test:
tcltest::test 14.20-try-18 { A try statement can complete normally iff both: The try block can complete normally or any catch block can complete normally. The finally block, if present, can complete normally. } { empty_main T1420try18 { try { throw new Exception(); } catch (Exception e) { return; } finally { return; } ; } } {FAIL}
A try statement can complete normally iff both: The try block can complete normally or any catch block can complete normally. The finally block, if present, can complete normally.Test Case: 14.20-try-20Expected Result: FAIL
Regression Test:
tcltest::test 14.20-try-19 { A try statement can complete normally iff both: The try block can complete normally or any catch block can complete normally. The finally block, if present, can complete normally. } { empty_main T1420try19 { try { throw new Exception(); } catch (Exception e) { return; } finally { return; } {} } } {FAIL}
A try statement can complete normally iff both: The try block can complete normally or any catch block can complete normally. The finally block, if present, can complete normally.Test Case: 14.20-try-21Expected Result: FAIL
Regression Test:
tcltest::test 14.20-try-20 { A try statement can complete normally iff both: The try block can complete normally or any catch block can complete normally. The finally block, if present, can complete normally. } { empty_main T1420try20 { try { throw new Exception(); } catch (Exception e) { return; } finally { return; } { int x=3; } } } {FAIL}
A try statement can complete normally iff both: The try block can complete normally or any catch block can complete normally. The finally block, if present, can complete normally.Test Case: 14.20-try-22Expected Result: FAIL
Regression Test:
tcltest::test 14.20-try-21 { A try statement can complete normally iff both: The try block can complete normally or any catch block can complete normally. The finally block, if present, can complete normally. } { empty_main T1420try21 { try { throw new Exception(); } catch (Exception e) { return; } catch (Throwable t) { } finally { return; } int i; } } {FAIL}
A try statement can complete normally iff both: The try block can complete normally or any catch block can complete normally. The finally block, if present, can complete normally.Test Case: 14.20-try-23Expected Result: FAIL
Regression Test:
tcltest::test 14.20-try-22 { A try statement can complete normally iff both: The try block can complete normally or any catch block can complete normally. The finally block, if present, can complete normally. } { empty_main T1420try22 { try { throw new Exception(); } catch (Exception e) { return; } catch (Throwable t) { } finally { return; } ; } } {FAIL}
A try statement can complete normally iff both: The try block can complete normally or any catch block can complete normally. The finally block, if present, can complete normally.Test Case: 14.20-try-24Expected Result: FAIL
Regression Test:
tcltest::test 14.20-try-23 { A try statement can complete normally iff both: The try block can complete normally or any catch block can complete normally. The finally block, if present, can complete normally. } { empty_main T1420try23 { try { throw new Exception(); } catch (Exception e) { return; } catch (Throwable t) { } finally { return; } {} } } {FAIL}
A try statement can complete normally iff both: The try block can complete normally or any catch block can complete normally. The finally block, if present, can complete normally.Test Case: 14.20-try-25Expected Result: FAIL
Regression Test:
tcltest::test 14.20-try-24 { A try statement can complete normally iff both: The try block can complete normally or any catch block can complete normally. The finally block, if present, can complete normally. } { empty_main T1420try24 { try { throw new Exception(); } catch (Exception e) { return; } catch (Throwable t) { } finally { return; } { int x=3; } } } {FAIL}
A try statement can complete normally iff both: The try block can complete normally or any catch block can complete normally. The finally block, if present, can complete normally.Test Case: 14.20-try-26Expected Result: PASS
Regression Test:
tcltest::test 14.20-try-25 { A try statement can complete normally iff both: The try block can complete normally or any catch block can complete normally. The finally block, if present, can complete normally. } { empty_main T1420try25 { try { new Object(); } finally { } int i; } } {PASS}
A try statement can complete normally iff both: The try block can complete normally or any catch block can complete normally. The finally block, if present, can complete normally.Test Case: 14.20-try-27Expected Result: FAIL
Regression Test:
tcltest::test 14.20-try-26 { A try statement can complete normally iff both: The try block can complete normally or any catch block can complete normally. The finally block, if present, can complete normally. } { empty_main T1420try26 { try { throw new RuntimeException(); } finally { } int i; } } {FAIL}
A try statement can complete normally iff both: The try block can complete normally or any catch block can complete normally. The finally block, if present, can complete normally.Test Case: 14.20-try-28Expected Result: FAIL
Regression Test:
tcltest::test 14.20-try-27 { A try statement can complete normally iff both: The try block can complete normally or any catch block can complete normally. The finally block, if present, can complete normally. } { empty_main T1420try27 { try { throw new RuntimeException(); } finally { } ; } } {FAIL}
A try statement can complete normally iff both: The try block can complete normally or any catch block can complete normally. The finally block, if present, can complete normally.Test Case: 14.20-try-29Expected Result: FAIL
Regression Test:
tcltest::test 14.20-try-28 { A try statement can complete normally iff both: The try block can complete normally or any catch block can complete normally. The finally block, if present, can complete normally. } { empty_main T1420try28 { try { throw new RuntimeException(); } finally { } {} } } {FAIL}
A try statement can complete normally iff both: The try block can complete normally or any catch block can complete normally. The finally block, if present, can complete normally.Test Case: 14.20-try-30Expected Result: FAIL
Regression Test:
tcltest::test 14.20-try-29 { A try statement can complete normally iff both: The try block can complete normally or any catch block can complete normally. The finally block, if present, can complete normally. } { empty_main T1420try29 { try { throw new RuntimeException(); } finally { } { int x=3; } } } {FAIL}
A try statement can complete normally iff both: The try block can complete normally or any catch block can complete normally. The finally block, if present, can complete normally.Test Case: 14.20-try-31Expected Result: FAIL
Regression Test:
tcltest::test 14.20-try-30 { A try statement can complete normally iff both: The try block can complete normally or any catch block can complete normally. The finally block, if present, can complete normally. } { empty_main T1420try30 { try { new Object(); } finally { return; } int i; } } {FAIL}
A try statement can complete normally iff both: The try block can complete normally or any catch block can complete normally. The finally block, if present, can complete normally.Test Case: 14.20-try-32Expected Result: FAIL
Regression Test:
tcltest::test 14.20-try-31 { A try statement can complete normally iff both: The try block can complete normally or any catch block can complete normally. The finally block, if present, can complete normally. } { empty_main T1420try31 { try { new Object(); } finally { return; } ; } } {FAIL}
A try statement can complete normally iff both: The try block can complete normally or any catch block can complete normally. The finally block, if present, can complete normally.Test Case: 14.20-try-33Expected Result: FAIL
Regression Test:
tcltest::test 14.20-try-32 { A try statement can complete normally iff both: The try block can complete normally or any catch block can complete normally. The finally block, if present, can complete normally. } { empty_main T1420try32 { try { new Object(); } finally { return; } {} } } {FAIL}
A try statement can complete normally iff both: The try block can complete normally or any catch block can complete normally. The finally block, if present, can complete normally.Test Case: 14.20-try-34Expected Result: FAIL
Regression Test:
tcltest::test 14.20-try-33 { A try statement can complete normally iff both: The try block can complete normally or any catch block can complete normally. The finally block, if present, can complete normally. } { empty_main T1420try33 { try { new Object(); } finally { return; } { int x=3; } } } {FAIL}
A try statement can complete normally iff both: The try block can complete normally or any catch block can complete normally. The finally block, if present, can complete normally.Test Case: 14.20-try-35Expected Result: FAIL
Regression Test:
tcltest::test 14.20-try-34 { A try statement can complete normally iff both: The try block can complete normally or any catch block can complete normally. The finally block, if present, can complete normally. } { empty_main T1420try34 { try { throw new Exception(); } finally { return; } int i; } } {FAIL}
A try statement can complete normally iff both: The try block can complete normally or any catch block can complete normally. The finally block, if present, can complete normally.Test Case: 14.20-try-36Expected Result: FAIL
Regression Test:
tcltest::test 14.20-try-35 { A try statement can complete normally iff both: The try block can complete normally or any catch block can complete normally. The finally block, if present, can complete normally. } { empty_main T1420try35 { try { throw new Exception(); } finally { return; } ; } } {FAIL}
A try statement can complete normally iff both: The try block can complete normally or any catch block can complete normally. The finally block, if present, can complete normally.Test Case: 14.20-try-37Expected Result: FAIL
Regression Test:
tcltest::test 14.20-try-36 { A try statement can complete normally iff both: The try block can complete normally or any catch block can complete normally. The finally block, if present, can complete normally. } { empty_main T1420try36 { try { throw new Exception(); } finally { return; } {} } } {FAIL}
A try statement can complete normally iff both: The try block can complete normally or any catch block can complete normally. The finally block, if present, can complete normally.Test Case: 14.20-catch-1Expected Result: FAIL
Regression Test:
tcltest::test 14.20-try-37 { A try statement can complete normally iff both: The try block can complete normally or any catch block can complete normally. The finally block, if present, can complete normally. } { empty_main T1420try37 { try { throw new Exception(); } finally { return; } { int x=3; } } } {FAIL}
A catch block C is reachable iff both: Some reachable expression or throw statement throws assignable exception. No earlier catch block covers type C or superclass.Test Case: 14.20-catch-2Expected Result: PASS
Regression Test:
tcltest::test 14.20-catch-1 { A catch block C is reachable iff both: Some reachable expression or throw statement throws assignable exception. No earlier catch block covers type C or superclass. } { empty_main T1420catch1 { try { // empty block cannot throw exception } catch (Throwable t) { // but Throwable is superclass of asynchronous exceptions } } } {PASS}
A catch block C is reachable iff both: Some reachable expression or throw statement throws assignable exception. No earlier catch block covers type C or superclass.Test Case: 14.20-catch-3Expected Result: PASS
Regression Test:
tcltest::test 14.20-catch-2 { A catch block C is reachable iff both: Some reachable expression or throw statement throws assignable exception. No earlier catch block covers type C or superclass. } { empty_main T1420catch2 { try { int i = 0; // throws no exceptions i /= i; // can only throw ArithmeticException } catch (ClassCastException e) { // but ClassCastException is unchecked } } } {PASS}
A catch block C is reachable iff both: Some reachable expression or throw statement throws assignable exception. No earlier catch block covers type C or superclass.Test Case: 14.20-catch-4Expected Result: PASS
Regression Test:
tcltest::test 14.20-catch-3 { A catch block C is reachable iff both: Some reachable expression or throw statement throws assignable exception. No earlier catch block covers type C or superclass. } { empty_main T1420catch3 { try { throw new Exception(); } catch (Exception e) { } } } {PASS}
A catch block C is reachable iff both: Some reachable expression or throw statement throws assignable exception. No earlier catch block covers type C or superclass.Test Case: 14.20-catch-5Expected Result: FAIL
Regression Test:
tcltest::test 14.20-catch-4 { A catch block C is reachable iff both: Some reachable expression or throw statement throws assignable exception. No earlier catch block covers type C or superclass. } { empty_main T1420catch4 { try { throw new Exception(); } catch (Throwable t) { } catch (Exception e) { } } } {FAIL}
A catch block C is reachable iff both: Some reachable expression or throw statement throws assignable exception. No earlier catch block covers type C or superclass.Test Case: 14.20-catch-6Expected Result: PASS
Regression Test:
tcltest::test 14.20-catch-5 { A catch block C is reachable iff both: Some reachable expression or throw statement throws assignable exception. No earlier catch block covers type C or superclass. } { empty_main T1420catch5 { try { throw new Exception(); } catch (Exception e) { } catch (Throwable t) { // possible Error creating new Exception } } } {PASS}
A catch block C is reachable iff both: Some reachable expression or throw statement throws assignable exception. No earlier catch block covers type C or superclass.Test Case: 14.20-catch-7Expected Result: PASS
Regression Test:
tcltest::test 14.20-catch-6 { A catch block C is reachable iff both: Some reachable expression or throw statement throws assignable exception. No earlier catch block covers type C or superclass. } { empty_main T1420catch6 { try { new Object(); } catch (RuntimeException e) { } catch (Error err) { } } } {PASS}
A catch block C is reachable iff both: Some reachable expression or throw statement throws assignable exception. No earlier catch block covers type C or superclass.Test Case: 14.20-catch-8Expected Result: OK
Regression Test:
tcltest::test 14.20-catch-7 { A catch block C is reachable iff both: Some reachable expression or throw statement throws assignable exception. No earlier catch block covers type C or superclass. } { ok_pass_or_warn [compile [saveas T1420catch7.java { class T1420catch7 { void foo() { try { new Object(); } catch (Exception e) { } catch (Throwable t) { } } } }]] } {OK}
A catch block C is reachable iff both: Some reachable expression or throw statement throws assignable exception. No earlier catch block covers type C or superclass.Test Case: 14.20-catch-9Expected Result: FAIL
Regression Test:
tcltest::test 14.20-catch-8 { A catch block C is reachable iff both: Some reachable expression or throw statement throws assignable exception. No earlier catch block covers type C or superclass. } { empty_main T1420catch8 { try { throw new Exception(); } catch (Exception e) { } catch (Exception e1) { } } } {FAIL}
A catch block C is reachable iff both: Some reachable expression or throw statement throws assignable exception. No earlier catch block covers type C or superclass.Test Case: 14.20-catch-10Expected Result: PASS
Regression Test:
tcltest::test 14.20-catch-9 { A catch block C is reachable iff both: Some reachable expression or throw statement throws assignable exception. No earlier catch block covers type C or superclass. } { empty_main T1420catch9 { int i, j=0; try { i = 1/j; } catch (ArithmeticException ae) { } } } {PASS}
A catch block C is reachable iff both: Some reachable expression or throw statement throws assignable exception. No earlier catch block covers type C or superclass.Test Case: 14.20-catch-11Expected Result: PASS
Regression Test:
tcltest::test 14.20-catch-10 { A catch block C is reachable iff both: Some reachable expression or throw statement throws assignable exception. No earlier catch block covers type C or superclass. } { empty_main T1420catch10 { int i, j=0; try { i = 1/j; } catch (ArithmeticException ae) { } catch (RuntimeException re) { // the only possible exception, ae, has already been caught, // but this is unchecked } } } {PASS}
A catch block C is reachable iff both: Some reachable expression or throw statement throws assignable exception. No earlier catch block covers type C or superclass.Test Case: 14.20-catch-12Expected Result: PASS
Regression Test:
tcltest::test 14.20-catch-11 { A catch block C is reachable iff both: Some reachable expression or throw statement throws assignable exception. No earlier catch block covers type C or superclass. } { empty_class T1420catch11 { void choke() throws Exception { throw new ClassNotFoundException(); } void foo() throws Exception { try { choke(); } catch (ClassNotFoundException e) { // reachable, as choke() can throw any subclass } } } } {PASS}
A catch block C is reachable iff both: Some reachable expression or throw statement throws assignable exception. No earlier catch block covers type C or superclass.Test Case: 14.20-catch-13Expected Result: PASS
Regression Test:
tcltest::test 14.20-catch-12 { A catch block C is reachable iff both: Some reachable expression or throw statement throws assignable exception. No earlier catch block covers type C or superclass. } { empty_class T1420catch12 { void foo() throws Exception { try { throw new Exception(); } catch (ClassNotFoundException e) { // reachable, although the class instance creation cannot // create a subclass of Exception } } } } {PASS}
A catch block C is reachable iff both: Some reachable expression or throw statement throws assignable exception. No earlier catch block covers type C or superclass.Test Case: 14.20-catch-14Expected Result: PASS
Regression Test:
tcltest::test 14.20-catch-13 { A catch block C is reachable iff both: Some reachable expression or throw statement throws assignable exception. No earlier catch block covers type C or superclass. } { empty_main T1420catch13 { try { return; // throws nothing } catch (RuntimeException e) { // but this is unchecked } } } {PASS}
The throw is interrupted by the inner finallyTest Case: 14.20-catch-15Expected Result: PASS
Regression Test:
tcltest::test 14.20-catch-14 { The throw is interrupted by the inner finally } { empty_main T1420catch14 { Exception e = new Exception(); // create here to make test work try { try { throw e; } finally { return; // discards Exception e } } catch (Exception e1) { // but this is unchecked } } } {PASS}
The throw is interrupted by the inner finallyTest Case: 14.20-catch-16Expected Result: FAIL
Regression Test:
tcltest::test 14.20-catch-15 { The throw is interrupted by the inner finally } { empty_main T1420catch15 { try { try { throw new ClassNotFoundException(); } finally { return; // discards ClassNotFoundException } } catch (ClassNotFoundException e) { // this is unreachable } } } {FAIL}
The throw is interrupted by the inner finallyTest Case: 14.20-catch-17Expected Result: PASS
Regression Test:
tcltest::test 14.20-catch-16 { The throw is interrupted by the inner finally } { empty_main T1420catch16 { Exception e = new Exception(); // create here to make test work try { try { throw e; } catch (Exception e1) { throw e1; } finally { return; // discards Exception e1 } } catch (Exception e2) { // but Exception is superclass of asynchronous exceptions } } } {PASS}
The throw is interrupted by the inner finallyTest Case: 14.20-catch-18Expected Result: FAIL
Regression Test:
tcltest::test 14.20-catch-17 { The throw is interrupted by the inner finally } { empty_main T1420catch17 { try { try { throw new ClassNotFoundException(); } catch (ClassNotFoundException e) { throw e; } finally { return; // discards ClassNotFoundException } } catch (ClassNotFoundException e1) { // this is unreachable } } } {FAIL}
A catch block C is reachable iff both: Some reachable expression or throw statement throws assignable exception. No earlier catch block covers type C or superclass.Test Case: 14.20-catch-19Expected Result: PASS
Regression Test:
tcltest::test 14.20-catch-18 { A catch block C is reachable iff both: Some reachable expression or throw statement throws assignable exception. No earlier catch block covers type C or superclass. } { empty_main T1420catch18 { try { try { throw new Exception(); } catch (Throwable t) { // traps all exceptions } } catch (Exception e) { // but this is unchecked } } } {PASS}
A catch block C is reachable iff both: Some reachable expression or throw statement throws assignable exception. No earlier catch block covers type C or superclass.Test Case: 14.20-catch-20Expected Result: PASS
Regression Test:
tcltest::test 14.20-catch-19 { A catch block C is reachable iff both: Some reachable expression or throw statement throws assignable exception. No earlier catch block covers type C or superclass. } { empty_class T1420catch19 { class MyException extends ClassNotFoundException {} void foo() throws Exception { ClassNotFoundException c = new MyException(); try { throw c; } catch (MyException e) { // reachable, as variable reference can contain subclass } } } } {PASS}
A catch block C is reachable iff both: Some reachable expression or throw statement throws assignable exception. No earlier catch block covers type C or superclass.Test Case: 14.20-catch-21Expected Result: PASS
Regression Test:
tcltest::test 14.20-catch-20 { A catch block C is reachable iff both: Some reachable expression or throw statement throws assignable exception. No earlier catch block covers type C or superclass. } { empty_main T1420catch20 { class MyException extends ArithmeticException {} try { int i = 0; i /= i; // throws only ArithmeticException, not MyException } catch (MyException e) { // but this is unchecked } } } {PASS}
A catch block C is reachable iff both: Some reachable expression or throw statement throws assignable exception. No earlier catch block covers type C or superclass.Test Case: 14.20-catch-22Expected Result: PASS
Regression Test:
tcltest::test 14.20-catch-21 { A catch block C is reachable iff both: Some reachable expression or throw statement throws assignable exception. No earlier catch block covers type C or superclass. } { empty_main T1420catch21 { final Exception e = new ClassNotFoundException(); try { throw e; } catch (ClassNotFoundException c) { // this one will be called } catch (Exception ex) { // this one is reachable, but will never be executed, // since analysis does not evaluate variable contents } } } {PASS}
A catch block C is reachable iff both: Some reachable expression or throw statement throws assignable exception. No earlier catch block covers type C or superclass.Test Case: 14.20-catch-23Expected Result: PASS
Regression Test:
tcltest::test 14.20-catch-22 { A catch block C is reachable iff both: Some reachable expression or throw statement throws assignable exception. No earlier catch block covers type C or superclass. } { empty_main T1420catch22 { class MyException extends ClassNotFoundException {} try { throw new MyException(); } catch (MyException m) { } catch (ClassNotFoundException e) { // this one is reachable, but will never be executed, // as the only exception in the try block has already been caught } } } {PASS}
A catch block C is reachable iff both: Some reachable expression or throw statement throws assignable exception. No earlier catch block covers type C or superclass.Test Case: 14.20-catch-24Expected Result: PASS
Regression Test:
tcltest::test 14.20-catch-23 { A catch block C is reachable iff both: Some reachable expression or throw statement throws assignable exception. No earlier catch block covers type C or superclass. } { empty_main T1420catch23 { try { new Object(); } catch (RuntimeException r) { } catch (Error er) { } catch (Exception e) { // this one is reachable, but will never be executed, // as the try block can only throw RuntimeException or // Error, which have already been caught } } } {PASS}
A catch block C is reachable iff both: Some reachable expression or throw statement throws assignable exception. No earlier catch block covers type C or superclass.Test Case: 14.20-if-1Expected Result: FAIL
Regression Test:
tcltest::test 14.20-catch-24 { A catch block C is reachable iff both: Some reachable expression or throw statement throws assignable exception. No earlier catch block covers type C or superclass. } { empty_main T1420catch24 { try { new Object(); } catch (RuntimeException e) { } catch (NullPointerException n) { // although this is unchecked, it is a subclass of // a prior clause } } } {FAIL}
if-then can complete normally iff it is reachableTest Case: 14.20-if-2Expected Result: PASS
Regression Test:
tcltest::test 14.20-if-1 { if-then can complete normally iff it is reachable } { empty_main T1420if1 { if (true) return; int i; } } {PASS}
then-statement of if-then is reachableTest Case: 14.20-if-3Expected Result: PASS
Regression Test:
tcltest::test 14.20-if-2 { then-statement of if-then is reachable } { empty_main T1420if2 { int i; if (false) i = 1; } } {PASS}
if-then-else can complete normally iff then-statement or else-statement can complete normally.Test Case: 14.20-if-4Expected Result: PASS
Regression Test:
tcltest::test 14.20-if-3 { if-then-else can complete normally iff then-statement or else-statement can complete normally. } { empty_main T1420if3 { if (true) return; else ; int i; } } {PASS}
if-then-else can complete normally iff then-statement or else-statement can complete normally.Test Case: 14.20-if-5Expected Result: PASS
Regression Test:
tcltest::test 14.20-if-4 { if-then-else can complete normally iff then-statement or else-statement can complete normally. } { empty_main T1420if4 { if (false) ; else return; int i; } } {PASS}
if-then-else can complete normally iff then-statement or else-statement can complete normally.Test Case: 14.20-if-6Expected Result: FAIL
Regression Test:
tcltest::test 14.20-if-5 { if-then-else can complete normally iff then-statement or else-statement can complete normally. } { empty_main T1420if5 { if (true) return; else return; int i; } } {FAIL}
if-then-else can complete normally iff then-statement or else-statement can complete normally.Test Case: 14.20-if-7Expected Result: FAIL
Regression Test:
tcltest::test 14.20-if-6 { if-then-else can complete normally iff then-statement or else-statement can complete normally. } { empty_main T1420if6 { if (true) return; else return; ; } } {FAIL}
if-then-else can complete normally iff then-statement or else-statement can complete normally.Test Case: 14.20-if-8Expected Result: FAIL
Regression Test:
tcltest::test 14.20-if-7 { if-then-else can complete normally iff then-statement or else-statement can complete normally. } { empty_main T1420if7 { if (true) return; else return; {} } } {FAIL}
if-then-else can complete normally iff then-statement or else-statement can complete normally.Test Case: 14.20-for-update-1Expected Result: FAIL
Regression Test:
tcltest::test 14.20-if-8 { if-then-else can complete normally iff then-statement or else-statement can complete normally. } { empty_main T1420if8 { if (true) return; else return; { int x=3; } } } {FAIL}
A statement in the for update is reachable, even when it is not executed (this is underspecified in the JLS)Expected Result: PASS
Regression Test:
tcltest::test 14.20-for-update-1 { A statement in the for update is reachable, even when it is not executed (this is underspecified in the JLS) } { empty_main T1420fu1 { for (int i = 0; ; i++) break; } } {PASS}
tests/jls/expressions/primary-expressions/class-literals
The class literal may be for any typeTest Case: 15.8.2-type-2Expected Result: PASS
Regression Test:
tcltest::test 15.8.2-type-1 { The class literal may be for any type } { empty_main T1582t1 { Class c = Object.class; } } {PASS}
The class literal may be for any typeTest Case: 15.8.2-type-3Expected Result: PASS
Regression Test:
tcltest::test 15.8.2-type-2 { The class literal may be for any type } { empty_main T1582t2 { Class c = T1582t2.class; } } {PASS}
The class literal may be for any typeTest Case: 15.8.2-type-4Expected Result: PASS
Regression Test:
tcltest::test 15.8.2-type-3 { The class literal may be for any type } { empty_main T1582t3 { Class c = Runnable.class; } } {PASS}
The class literal may be for any typeTest Case: 15.8.2-type-5Expected Result: PASS
Regression Test:
tcltest::test 15.8.2-type-4 { The class literal may be for any type } { empty_main T1582t4 { Class c = void.class; } } {PASS}
The class literal may be for any typeTest Case: 15.8.2-type-6Expected Result: PASS
Regression Test:
tcltest::test 15.8.2-type-5 { The class literal may be for any type } { empty_main T1582t5 { Class c = int.class; } } {PASS}
The class literal may be for any typeTest Case: 15.8.2-type-7Expected Result: PASS
Regression Test:
tcltest::test 15.8.2-type-6 { The class literal may be for any type } { empty_main T1582t6 { Class c = int[].class; } } {PASS}
The class literal may be for any typeTest Case: 15.8.2-type-8Expected Result: PASS
Regression Test:
tcltest::test 15.8.2-type-7 { The class literal may be for any type } { empty_main T1582t7 { Class c = Object[].class; } } {PASS}
The class literal may be for any typeTest Case: 15.8.2-type-9Expected Result: PASS
Regression Test:
tcltest::test 15.8.2-type-8 { The class literal may be for any type } { empty_main T1582t8 { Class c = Runnable[][][][][][].class; } } {PASS}
The class literal must be a known typeTest Case: 15.8.2-type-10Expected Result: FAIL
Regression Test:
tcltest::test 15.8.2-type-9 { The class literal must be a known type } { empty_main T1582t9 { Class c = UnknownType.class; } } {FAIL}
The class literal must be a valid typeTest Case: 15.8.2-type-11Expected Result: FAIL
Regression Test:
tcltest::test 15.8.2-type-10 { The class literal must be a valid type } { # Note that a has a syntax error. b should not compile - jikes bug 3319. compile [saveas T1582t10a.java "class T1582t10a \{\}\}"] [saveas T1582t10b.java { class T1582t10b { Class c = T1582t10a.class; } }] } {FAIL}
The class literal must be an accessible typeTest Case: 15.8.2-type-12Expected Result: FAIL
Regression Test:
tcltest::test 15.8.2-type-11 { The class literal must be an accessible type } { compile [saveas T1582t11a.java { class T1582t11a { private class Inner {} } class T1582t11b { Class c = T1582t11a.Inner.class; } }] } {FAIL}
The class literal must be an accessible typeTest Case: 15.8.2-type-13Expected Result: FAIL
Regression Test:
tcltest::test 15.8.2-type-12 { The class literal must be an accessible type } { compile [saveas T1582t12a.java { class T1582t12a { private class Inner {} } class T1582t12b extends T1582t12a { Class c = T1582t12a.Inner.class; } }] } {FAIL}
The class literal must be an accessible typeTest Case: 15.8.2-type-14Expected Result: FAIL
Regression Test:
tcltest::test 15.8.2-type-13 { The class literal must be an accessible type } { compile [saveas p1/T1582t13a.java { package p1; class T1582t13a {} }] [saveas T1582t13b.java { class T1582t13b { Class c = p1.T1582t13a.class; } }] } {FAIL}
The class literal must be an accessible typeTest Case: 15.8.2-primary-1Expected Result: FAIL
Regression Test:
tcltest::test 15.8.2-type-14 { The class literal must be an accessible type } { compile [saveas p1/T1582t14a.java { package p1; class T1582t14a {} }] [saveas T1582t14b.java { class T1582t14b { Class c = p1.T1582t14a[].class; } }] } {FAIL}
The class literal serves as a primaryTest Case: 15.8.2-primary-2Expected Result: PASS
Regression Test:
tcltest::test 15.8.2-primary-1 { The class literal serves as a primary } { empty_main T1582p1 { Object.class.getName(); } } {PASS}
The class literal serves as a primaryTest Case: 15.8.2-syntax-1Expected Result: PASS
Regression Test:
tcltest::test 15.8.2-primary-2 { The class literal serves as a primary } { empty_main T1582p2 { try { Object.class.forName("java.lang.Object"); } catch (Exception e) { } } } {PASS}
The class literal does not work on expressionsTest Case: 15.8.2-syntax-2Expected Result: FAIL
Regression Test:
tcltest::test 15.8.2-syntax-1 { The class literal does not work on expressions } { empty_class T1582s1 { Class c = this.class; } } {FAIL}
The class literal does not work on expressionsTest Case: 15.8.2-syntax-3Expected Result: FAIL
Regression Test:
tcltest::test 15.8.2-syntax-2 { The class literal does not work on expressions } { empty_class T1582s2 { Class c = (Object).class; } } {FAIL}
The class literal does not work on expressionsTest Case: 15.8.2-syntax-4Expected Result: FAIL
Regression Test:
tcltest::test 15.8.2-syntax-3 { The class literal does not work on expressions } { empty_class T1582s3 { Class c = 1.class; } } {FAIL}
The class literal does not work on expressionsTest Case: 15.8.2-syntax-5Expected Result: FAIL
Regression Test:
tcltest::test 15.8.2-syntax-4 { The class literal does not work on expressions } { empty_class T1582s4 { Class c = "".class; } } {FAIL}
The class literal does not work on expressionsTest Case: 15.8.2-syntax-6Expected Result: FAIL
Regression Test:
tcltest::test 15.8.2-syntax-5 { The class literal does not work on expressions } { empty_class T1582s5 { int foo; Class c = foo.class; } } {FAIL}
The class literal does not work on expressionsTest Case: 15.8.2-syntax-7Expected Result: FAIL
Regression Test:
tcltest::test 15.8.2-syntax-6 { The class literal does not work on expressions } { empty_class T1582s6 { int foo; Class c = null.class; } } {FAIL}
The type in the class literal is not obscuredTest Case: 15.8.2-syntax-8Expected Result: PASS
Regression Test:
tcltest::test 15.8.2-syntax-7 { The type in the class literal is not obscured } { empty_class T1582s7 { int T1582s7; // obscure the class name from normal expressions Class c = T1582s7.class; } } {PASS}
The class literal does not work on void[]Test Case: 15.8.2-synthetic-1Expected Result: FAIL
Regression Test:
tcltest::test 15.8.2-syntax-8 { The class literal does not work on void[] } { empty_class T1582s8 { Class c = void[].class; } } {FAIL}
Since the compiler must generate code to compile the class literal, this tests that the synthetic class$() method does not cause problems - jikes bug 2924Test Case: 15.8.2-synthetic-2Expected Result: PASS
Regression Test:
tcltest::test 15.8.2-synthetic-1 { Since the compiler must generate code to compile the class literal, this tests that the synthetic class$() method does not cause problems - jikes bug 2924 } { empty_class T1582synth1b { static final Object B_CONST = T1582synth1b.class; } compile [saveas T1582synth1c.java { class T1582synth1c extends T1582synth1b { static final Object C_CONST = T1582synth1c.class; } }] empty_class T1582synth1a { Object one = T1582synth1b.B_CONST; Object two = T1582synth1c.C_CONST; } } {PASS}
The compiler should synthesize byte.class and friends as Byte.TYPE and friends, rather than using Class.forName in the class$() method - jikes bug 3053Test Case: 15.8.2-synthetic-3Expected Result: PASS
Regression Test:
tcltest::test 15.8.2-synthetic-2 { The compiler should synthesize byte.class and friends as Byte.TYPE and friends, rather than using Class.forName in the class$() method - jikes bug 3053 } { compile [saveas T1582synth2.java { class T1582synth2 { Class c = byte.class; } }] [saveas java/lang/Byte.java { package java.lang; public final class Byte extends Number implements Comparable { public static final byte MIN_VALUE = -128; public static final byte MAX_VALUE = 127; // This may be recursive, but it works for the purpose of the test public static final Class TYPE = byte.class; public Byte(byte value) {} public Byte(String s) {} public static native String toString(byte b); public static native byte parseByte(String s); public static native byte parseByte(String s, int radix); public static native Byte valueOf(String s, int radix); public static native Byte valueOf(String s); public static native Byte decode(String s); public native byte byteValue(); public native short shortValue(); public native int intValue(); public native long longValue(); public native float floatValue(); public native double doubleValue(); public native String toString(); public native int hashCode(); public native boolean equals(Object obj); public native int compareTo(Byte b); public native int compareTo(Object o); } }] [saveas java/dummy.java "package java; class dummy{}"] } {PASS}
Test synthesis of class literal variables across inner classes without enclosing instanceTest Case: 15.8.2-synthetic-4Expected Result: PASS
Regression Test:
tcltest::test 15.8.2-synthetic-3 { Test synthesis of class literal variables across inner classes without enclosing instance } { empty_main T1582s3 { class Local { Local(Object o) {} void m() { Class c = Boolean.class; } } new Local(new Object() { Class c = Byte.class; }); } } {PASS}
Test synthesis of class literal variables in an interface fieldExpected Result: PASS
Regression Test:
tcltest::test 15.8.2-synthetic-4 { Test synthesis of class literal variables in an interface field } { compile [saveas T1582s4a.java { class T1582s4a { Class c = T1582s4b.BUG; } }] [saveas T1582s4b.java { interface T1582s4b { Class BUG = Inner.class; class Inner {} } }] } {PASS}
tests/jls/expressions/primary-expressions/qualified-this
Qualified this may not appear in static contextTest Case: 15.8.4-static-2Expected Result: FAIL
Regression Test:
tcltest::test 15.8.4-static-1 { Qualified this may not appear in static context } { empty_class T1584s1 { static int i = 1; static int j = T1584s1.this.i; } } {FAIL}
Qualified this must name an enclosing class, which does not exist in a static contextTest Case: 15.8.4-name-1Expected Result: FAIL
Regression Test:
tcltest::test 15.8.4-static-2 { Qualified this must name an enclosing class, which does not exist in a static context } { empty_class T1584s2 { static int i = 1; static class Nested { int j = T1584s2.this.i; } } } {FAIL}
Qualified this must name an enclosing class, or the class itselfTest Case: 15.8.4-name-2Expected Result: FAIL
Regression Test:
tcltest::test 15.8.4-name-1 { Qualified this must name an enclosing class, or the class itself } { empty_class T1584n1 { class Sub1 { int i; } class Sub2 extends Sub1 { int j = Sub1.this.i; } } } {FAIL}
Qualified this must name an enclosing class, or the class itselfTest Case: 15.8.4-name-3Expected Result: PASS
Regression Test:
tcltest::test 15.8.4-name-2 { Qualified this must name an enclosing class, or the class itself } { empty_class T1584n2 { int i; class Sub { int j = T1584n2.this.i; } } } {PASS}
Qualified this must name an enclosing class, or the class itselfTest Case: 15.8.4-syntax-1Expected Result: PASS
Regression Test:
tcltest::test 15.8.4-name-3 { Qualified this must name an enclosing class, or the class itself } { empty_class T1584n3 { int i; int j = T1584n3.this.i; } } {PASS}
The type in the qualified this is not obscuredTest Case: 15.8.4-syntax-2Expected Result: PASS
Regression Test:
tcltest::test 15.8.4-syntax-1 { The type in the qualified this is not obscured } { empty_class T1584syn1 { int T1584syn1; // obscure the class name from normal expressions String s = T1584syn1.this.toString(); } } {PASS}
The type in qualified this may not be a primitive typeTest Case: 15.8.4-syntax-3Expected Result: FAIL
Regression Test:
tcltest::test 15.8.4-syntax-2 { The type in qualified this may not be a primitive type } { empty_class T1584syn2 { Object o = int.this.toString(); } } {FAIL}
The type in qualified this may not be an array typeTest Case: 15.8.4-syntax-4Expected Result: FAIL
Regression Test:
tcltest::test 15.8.4-syntax-3 { The type in qualified this may not be an array type } { empty_class T1584syn3 { Object o = int[].this.toString(); } } {FAIL}
The type in qualified this may not be an array typeTest Case: 15.8.4-syntax-5Expected Result: FAIL
Regression Test:
tcltest::test 15.8.4-syntax-4 { The type in qualified this may not be an array type } { empty_class T1584syn4 { Object o = T1584syn4[].this.toString(); } } {FAIL}
The type in qualified this may not be nullTest Case: 15.8.4-syntax-6Expected Result: FAIL
Regression Test:
tcltest::test 15.8.4-syntax-5 { The type in qualified this may not be null } { empty_class T1584syn5 { Object o = null.this.toString(); } } {FAIL}
The type in qualified this may not be voidExpected Result: FAIL
Regression Test:
tcltest::test 15.8.4-syntax-6 { The type in qualified this may not be void } { empty_class T1584syn6 { Object o = void.this.toString(); } } {FAIL}
tests/jls/expressions/primary-expressions/parenthesized-expressions
Parenthesized expression must contain expression, not statementTest Case: 15.8.5-statement-2Expected Result: FAIL
Regression Test:
tcltest::test 15.8.5-statement-1 { Parenthesized expression must contain expression, not statement } { empty_main T1585s1 { (int i); } } {FAIL}
Parenthesized expression must contain expression, not statementTest Case: 15.8.5-statement-3Expected Result: FAIL
Regression Test:
tcltest::test 15.8.5-statement-2 { Parenthesized expression must contain expression, not statement } { empty_main T1585s2 { int[] i = ({}); } } {FAIL}
Parenthesized expression must contain expression, not statementTest Case: 15.8.5-statement-4Expected Result: FAIL
Regression Test:
tcltest::test 15.8.5-statement-3 { Parenthesized expression must contain expression, not statement } { empty_main T1585s3 { (class Inner{}) } } {FAIL}
Parenthesized expression must contain expression, not statementTest Case: 15.8.5-statement-5Expected Result: FAIL
Regression Test:
tcltest::test 15.8.5-statement-4 { Parenthesized expression must contain expression, not statement } { empty_main T1585s4 { (;) } } {FAIL}
Parenthesized expression must contain expression, not statementTest Case: 15.8.5-statement-6Expected Result: FAIL
Regression Test:
tcltest::test 15.8.5-statement-5 { Parenthesized expression must contain expression, not statement } { empty_main T1585s5 { int i; (label: i = 1); } } {FAIL}
Parenthesized expression is not a statementTest Case: 15.8.5-statement-7Expected Result: FAIL
Regression Test:
tcltest::test 15.8.5-statement-6 { Parenthesized expression is not a statement } { empty_class T1585s6 { void foo() {} void bar() { (foo()); } } } {FAIL}
Parenthesized expression is not a statementTest Case: 15.8.5-primary-expression-1Expected Result: FAIL
Regression Test:
tcltest::test 15.8.5-statement-7 { Parenthesized expression is not a statement } { empty_main T1585s7 { int i; (i = 1); } } {FAIL}
Parenthesized expression must contain expressionTest Case: 15.8.5-primary-expression-2Expected Result: PASS
Regression Test:
tcltest::test 15.8.5-primary-expression-1 { Parenthesized expression must contain expression } { empty_main T1585p31 { int i = (1); boolean b = (false); char c = ('1'); Object o = (null); String s = (""); } } {PASS}
Parenthesized expression must contain expressionTest Case: 15.8.5-primary-expression-3Expected Result: PASS
Regression Test:
tcltest::test 15.8.5-primary-expression-2 { Parenthesized expression must contain expression } { empty_main T1585p32 { Class c1 = (int.class), c2 = (int[].class), c3 = (Object.class), c4 = (Object[].class); } } {PASS}
Parenthesized expression must contain expressionTest Case: 15.8.5-primary-expression-4Expected Result: PASS
Regression Test:
tcltest::test 15.8.5-primary-expression-3 { Parenthesized expression must contain expression } { empty_main T1585p33 { Class c = (void.class); } } {PASS}
Parenthesized expression must contain expressionTest Case: 15.8.5-primary-expression-5Expected Result: FAIL
Regression Test:
tcltest::test 15.8.5-primary-expression-4 { Parenthesized expression must contain expression } { empty_main T1585p34 { Class c1 = (int).class; } } {FAIL}
Parenthesized expression must contain expressionTest Case: 15.8.5-primary-expression-6Expected Result: FAIL
Regression Test:
tcltest::test 15.8.5-primary-expression-5 { Parenthesized expression must contain expression } { empty_main T1585p35 { Class c = (void).class; } } {FAIL}
Parenthesized expression must contain expressionTest Case: 15.8.5-primary-expression-7Expected Result: FAIL
Regression Test:
tcltest::test 15.8.5-primary-expression-6 { Parenthesized expression must contain expression } { empty_main T1585p36 { Class c1 = int.(class); } } {FAIL}
Parenthesized expression must contain expressionTest Case: 15.8.5-this-expression-1Expected Result: FAIL
Regression Test:
tcltest::test 15.8.5-primary-expression-7 { Parenthesized expression must contain expression } { empty_main T1585p37 { Class c = void.(class); } } {FAIL}
Parenthesized expression must contain expressionTest Case: 15.8.5-this-expression-2Expected Result: PASS
Regression Test:
tcltest::test 15.8.5-this-expression-1 { Parenthesized expression must contain expression } { empty_class T1585te1 { int i; void foo() { (this).i = 1; } } } {PASS}
Parenthesized expression must contain expressionTest Case: 15.8.5-this-expression-3Expected Result: PASS
Regression Test:
tcltest::test 15.8.5-this-expression-2 { Parenthesized expression must contain expression } { empty_class T1585te2 { int i; class Inner { Inner() { (T1585te2.this).i = 1; } } } } {PASS}
Parenthesized expression must contain expressionTest Case: 15.8.5-this-expression-4Expected Result: FAIL
Regression Test:
tcltest::test 15.8.5-this-expression-3 { Parenthesized expression must contain expression } { empty_class T1585te3 { int i; class Inner { Inner() { (T1585te3).this.i = 1; } } } } {FAIL}
Parenthesized expression must contain expressionTest Case: 15.8.5-creation-expression-1Expected Result: FAIL
Regression Test:
tcltest::test 15.8.5-this-expression-4 { Parenthesized expression must contain expression } { empty_class T1585te4 { int i; class Inner { Inner() { T1585te4.(this).i = 1; } } } } {FAIL}
Parenthesized expression must contain expressionTest Case: 15.8.5-creation-expression-2Expected Result: PASS
Regression Test:
tcltest::test 15.8.5-creation-expression-1 { Parenthesized expression must contain expression } { empty_class T1585ce1 { int i; void foo() { (new T1585ce1()).i = 1; } } } {PASS}
Parenthesized expression must contain expressionTest Case: 15.8.5-creation-expression-3Expected Result: PASS
Regression Test:
tcltest::test 15.8.5-creation-expression-2 { Parenthesized expression must contain expression } { empty_class T1585ce2 { void foo() { (new T1585ce2() { int i; }).i = 1; } } } {PASS}
Parenthesized expression must contain expressionTest Case: 15.8.5-creation-expression-4Expected Result: PASS
Regression Test:
tcltest::test 15.8.5-creation-expression-3 { Parenthesized expression must contain expression } { empty_main T1585ce3 { int[] i = (new int[1]); Object[] o = (new Object[1]); } } {PASS}
Parenthesized expression must contain expressionTest Case: 15.8.5-creation-expression-5Expected Result: PASS
Regression Test:
tcltest::test 15.8.5-creation-expression-4 { Parenthesized expression must contain expression } { empty_main T1585ce4 { int[] i = (new int[] {1}); Object[] o = (new Object[] {new Object()}); } } {PASS}
Parenthesized expression must contain expressionTest Case: 15.8.5-creation-expression-6Expected Result: FAIL
Regression Test:
tcltest::test 15.8.5-creation-expression-5 { Parenthesized expression must contain expression } { empty_main T1585ce5 { int[] i = new (int[1]); } } {FAIL}
Parenthesized expression must contain expressionTest Case: 15.8.5-creation-expression-7Expected Result: FAIL
Regression Test:
tcltest::test 15.8.5-creation-expression-6 { Parenthesized expression must contain expression } { empty_main T1585ce6 { int[] i = new (int[] {1}); } } {FAIL}
Parenthesized expression must contain expressionTest Case: 15.8.5-creation-expression-8Expected Result: FAIL
Regression Test:
tcltest::test 15.8.5-creation-expression-7 { Parenthesized expression must contain expression } { empty_main T1585ce7 { int[] i = new int[] ({1}); } } {FAIL}
Parenthesized expression must contain expressionTest Case: 15.8.5-field-expression-1Expected Result: FAIL
Regression Test:
tcltest::test 15.8.5-creation-expression-8 { Parenthesized expression must contain expression } { empty_main T1585ce8 { int[][] i = new int[][] { ({}) }; } } {FAIL}
Parenthesized expression must contain expressionTest Case: 15.8.5-field-expression-2Expected Result: PASS
Regression Test:
tcltest::test 15.8.5-field-expression-1 { Parenthesized expression must contain expression } { empty_class T1585fe1 { int i; T1585fe1 t; void foo() { int j = (t.i); } } } {PASS}
Parenthesized expression must contain expressionTest Case: 15.8.5-field-expression-3Expected Result: FAIL
Regression Test:
tcltest::test 15.8.5-field-expression-2 { Parenthesized expression must contain expression } { empty_class T1585fe2 { int i; T1585fe2 t; void foo() { t.(i) = 1; } } } {FAIL}
Parenthesized expression must contain expressionTest Case: 15.8.5-field-expression-4Expected Result: PASS
Regression Test:
tcltest::test 15.8.5-field-expression-3 { Parenthesized expression must contain expression } { compile [saveas T1585fe3.java { class T1585fe3 { int i; T1585fe3 t; } class Sub extends T1585fe3 { void foo() { (super.t).i = 1; } } }] } {PASS}
Parenthesized expression must contain expressionTest Case: 15.8.5-field-expression-5Expected Result: FAIL
Regression Test:
tcltest::test 15.8.5-field-expression-4 { Parenthesized expression must contain expression } { compile [saveas T1585fe4.java { class T1585fe4 { int i; T1585fe4 t; } class Sub extends T1585fe4 { void foo() { (super).t.i = 1; } } }] } {FAIL}
Parenthesized expression must contain expressionTest Case: 15.8.5-field-expression-6Expected Result: FAIL
Regression Test:
tcltest::test 15.8.5-field-expression-5 { Parenthesized expression must contain expression } { compile [saveas T1585fe5.java { class T1585fe5 { int i; T1585fe5 t; } class Sub extends T1585fe5 { void foo() { super.(t).i = 1; } } }] } {FAIL}
Parenthesized expression must contain expressionTest Case: 15.8.5-field-expression-7Expected Result: PASS
Regression Test:
tcltest::test 15.8.5-field-expression-6 { Parenthesized expression must contain expression } { compile [saveas T1585fe6.java { class T1585fe6 { int i; T1585fe6 t; } class Sub extends T1585fe6 { class Inner { void foo() { (Sub.super.t).i = 1; } } } }] } {PASS}
Parenthesized expression must contain expressionTest Case: 15.8.5-field-expression-8Expected Result: FAIL
Regression Test:
tcltest::test 15.8.5-field-expression-7 { Parenthesized expression must contain expression } { compile [saveas T1585fe7.java { class T1585fe7 { int i; T1585fe7 t; } class Sub extends T1585fe7 { class Inner { void foo() { (Sub).super.t.i = 1; } } } }] } {FAIL}
Parenthesized expression must contain expressionTest Case: 15.8.5-field-expression-9Expected Result: FAIL
Regression Test:
tcltest::test 15.8.5-field-expression-8 { Parenthesized expression must contain expression } { compile [saveas T1585fe8.java { class T1585fe8 { int i; T1585fe8 t; } class Sub extends T1585fe8 { class Inner { void foo() { Sub.(super).t.i = 1; } } } }] } {FAIL}
Parenthesized expression must contain expressionTest Case: 15.8.5-field-expression-10Expected Result: FAIL
Regression Test:
tcltest::test 15.8.5-field-expression-9 { Parenthesized expression must contain expression } { compile [saveas T1585fe9.java { class T1585fe9 { int i; T1585fe9 t; } class Sub extends T1585fe9 { class Inner { void foo() { Sub.super.(t).i = 1; } } } }] } {FAIL}
Parenthesized expression must contain expressionTest Case: 15.8.5-field-expression-11Expected Result: FAIL
Regression Test:
tcltest::test 15.8.5-field-expression-10 { Parenthesized expression must contain expression } { compile [saveas T1585fe10.java { class T1585fe10 { int i; T1585fe10 t; } class Sub extends T1585fe10 { class Inner { void foo() { (Sub.super).t.i = 1; } } } }] } {FAIL}
Parenthesized expression must contain expressionTest Case: 15.8.5-method-expression-1Expected Result: FAIL
Regression Test:
tcltest::test 15.8.5-field-expression-11 { Parenthesized expression must contain expression } { compile [saveas T1585fe11.java { class T1585fe11 { int i; T1585fe11 t; } class Sub extends T1585fe11 { class Inner { void foo() { Sub.(super.t).i = 1; } } } }] } {FAIL}
Parenthesized expression must contain expressionTest Case: 15.8.5-method-expression-2Expected Result: PASS
Regression Test:
tcltest::test 15.8.5-method-expression-1 { Parenthesized expression must contain expression } { empty_class T1585me1 { int bar() { return 1; } int i = (bar()); } } {PASS}
Parenthesized expression must contain expressionTest Case: 15.8.5-method-expression-3Expected Result: FAIL
Regression Test:
tcltest::test 15.8.5-method-expression-2 { Parenthesized expression must contain expression } { empty_class T1585me2 { int bar() { return 1; } int i = (bar)(); } } {FAIL}
Parenthesized expression must contain expressionTest Case: 15.8.5-method-expression-4Expected Result: PASS
Regression Test:
tcltest::test 15.8.5-method-expression-3 { Parenthesized expression must contain expression } { empty_class T1585me3 { int bar() { return 1; } T1585me3 t; int i = (t.bar()); } } {PASS}
Parenthesized expression must contain expressionTest Case: 15.8.5-method-expression-5Expected Result: FAIL
Regression Test:
tcltest::test 15.8.5-method-expression-4 { Parenthesized expression must contain expression } { empty_class T1585me4 { int bar() { return 1; } T1585me4 t; int i = t.(bar()); } } {FAIL}
Parenthesized expression must contain expressionTest Case: 15.8.5-method-expression-6Expected Result: PASS
Regression Test:
tcltest::test 15.8.5-method-expression-5 { Parenthesized expression must contain expression } { compile [saveas T1585me5.java { class T1585me5 { int bar() { return 1; } } class Sub extends T1585me5 { int i = (super.bar()); } }] } {PASS}
Parenthesized expression must contain expressionTest Case: 15.8.5-method-expression-7Expected Result: FAIL
Regression Test:
tcltest::test 15.8.5-method-expression-6 { Parenthesized expression must contain expression } { compile [saveas T1585me6.java { class T1585me6 { int bar() { return 1; } } class Sub extends T1585me6 { int i = (super).bar(); } }] } {FAIL}
Parenthesized expression must contain expressionTest Case: 15.8.5-method-expression-8Expected Result: FAIL
Regression Test:
tcltest::test 15.8.5-method-expression-7 { Parenthesized expression must contain expression } { compile [saveas T1585me7.java { class T1585me7 { int bar() { return 1; } } class Sub extends T1585me7 { int i = super.(bar()); } }] } {FAIL}
Parenthesized expression must contain expressionTest Case: 15.8.5-method-expression-9Expected Result: PASS
Regression Test:
tcltest::test 15.8.5-method-expression-8 { Parenthesized expression must contain expression } { compile [saveas T1585me8.java { class T1585me8 { int bar() { return 1; } } class Sub extends T1585me8 { class Inner { Inner() { int i = (Sub.super.bar()); } } } }] } {PASS}
Parenthesized expression must contain expressionTest Case: 15.8.5-method-expression-10Expected Result: FAIL
Regression Test:
tcltest::test 15.8.5-method-expression-9 { Parenthesized expression must contain expression } { compile [saveas T1585me9.java { class T1585me9 { int bar() { return 1; } } class Sub extends T1585me9 { class Inner { Inner() { int i = (Sub).super.bar(); } } } }] } {FAIL}
Parenthesized expression must contain expressionTest Case: 15.8.5-method-expression11Expected Result: FAIL
Regression Test:
tcltest::test 15.8.5-method-expression-10 { Parenthesized expression must contain expression } { compile [saveas T1585me10.java { class T1585me10 { int bar() { return 1; } } class Sub extends T1585me10 { class Inner { Inner() { int i = Sub.(super).bar(); } } } }] } {FAIL}
Parenthesized expression must contain expressionTest Case: 15.8.5-method-expression-12Expected Result: FAIL
Regression Test:
tcltest::test 15.8.5-method-expression11 { Parenthesized expression must contain expression } { compile [saveas T1585me11.java { class T1585me11 { int bar() { return 1; } } class Sub extends T1585me11 { class Inner { Inner() { int i = Sub.super.(bar()); } } } }] } {FAIL}
Parenthesized expression must contain expressionTest Case: 15.8.5-method-expression-13Expected Result: FAIL
Regression Test:
tcltest::test 15.8.5-method-expression-12 { Parenthesized expression must contain expression } { compile [saveas T1585me12.java { class T1585me12 { int bar() { return 1; } } class Sub extends T1585me12 { class Inner { Inner() { int i = (Sub.super).bar(); } } } }] } {FAIL}
Parenthesized expression must contain expressionTest Case: 15.8.5-array-expression-1Expected Result: FAIL
Regression Test:
tcltest::test 15.8.5-method-expression-13 { Parenthesized expression must contain expression } { compile [saveas T1585me13.java { class T1585me13 { int bar() { return 1; } } class Sub extends T1585me13 { class Inner { Inner() { int i = Sub.(super.bar()); } } } }] } {FAIL}
Parenthesized expression must contain expressionTest Case: 15.8.5-array-expression-2Expected Result: PASS
Regression Test:
tcltest::test 15.8.5-array-expression-1 { Parenthesized expression must contain expression } { empty_main T1585ae1 { int[] ia = {1}; int i = (ia[0]); } } {PASS}
Parenthesized expression must contain expressionTest Case: 15.8.5-array-expression-3Expected Result: PASS
Regression Test:
tcltest::test 15.8.5-array-expression-2 { Parenthesized expression must contain expression } { empty_main T1585ae2 { int[] ia = {1}; int i = (ia)[0]; } } {PASS}
Parenthesized expression must contain expressionTest Case: 15.8.5-array-expression-4Expected Result: PASS
Regression Test:
tcltest::test 15.8.5-array-expression-3 { Parenthesized expression must contain expression } { empty_main T1585ae3 { int[] ia = {1}; int i = ((ia)[0]); } } {PASS}
Parenthesized expression must contain expressionTest Case: 15.8.5-variable-1Expected Result: FAIL
Regression Test:
tcltest::test 15.8.5-array-expression-4 { Parenthesized expression must contain expression } { empty_main T1585ae4 { int[] ia = {1}; int i = ia([0]); } } {FAIL}
Parenthesized expression may now represent a variableTest Case: 15.8.5-variable-2Expected Result: OK
Regression Test:
tcltest::test 15.8.5-variable-1 { Parenthesized expression may now represent a variable } { ok_pass_or_warn [empty_class T1585v1 { static int i1 = 1, j1 = (i1)++; int i2 = 1, j2 = (i2)++; private static int i3 = 1; private int i4 = 1; class Inner { Inner() { int j3 = (i3)++; int j4 = (i4)++; } } void foo() { int i5 = 1, j5 = (i5)++; int[] i6 = {1}; int j6 = (i6[0])++; } }] } {OK}
Parenthesized expression may now represent a variableTest Case: 15.8.5-variable-3Expected Result: OK
Regression Test:
tcltest::test 15.8.5-variable-2 { Parenthesized expression may now represent a variable } { ok_pass_or_warn [empty_class T1585v2 { static int i1 = 1, j1 = (i1)--; int i2 = 1, j2 = (i2)--; private static int i3 = 1; private int i4 = 1; class Inner { Inner() { int j3 = (i3)--; int j4 = (i4)--; } } void foo() { int i5 = 1, j5 = (i5)--; int[] i6 = {1}; int j6 = (i6[0])--; } }] } {OK}
Parenthesized expression may now represent a variableTest Case: 15.8.5-variable-4Expected Result: OK
Regression Test:
tcltest::test 15.8.5-variable-3 { Parenthesized expression may now represent a variable } { ok_pass_or_warn [empty_class T1585v3 { static int i1 = 1, j1 = ++(i1); int i2 = 1, j2 = ++(i2); private static int i3 = 1; private int i4 = 1; class Inner { Inner() { int j3 = ++(i3); int j4 = ++(i4); } } void foo() { int i5 = 1, j5 = ++(i5); int[] i6 = {1}; int j6 = ++(i6[0]); } }] } {OK}
Parenthesized expression may now represent a variableTest Case: 15.8.5-variable-5Expected Result: OK
Regression Test:
tcltest::test 15.8.5-variable-4 { Parenthesized expression may now represent a variable } { ok_pass_or_warn [empty_class T1585v4 { static int i1 = 1, j1 = --(i1); int i2 = 1, j2 = --(i2); private static int i3 = 1; private int i4 = 1; class Inner { Inner() { int j3 = --(i3); int j4 = --(i4); } } void foo() { int i5 = 1, j5 = --(i5); int[] i6 = {1}; int j6 = --(i6[0]); } }] } {OK}
Parenthesized expression may now represent variable in assignmentTest Case: 15.8.5-variable-6Expected Result: OK
Regression Test:
tcltest::test 15.8.5-variable-5 { Parenthesized expression may now represent variable in assignment } { ok_pass_or_warn [empty_main T1585v5 { int i = 0; (i) = 1; }] } {OK}
Parenthesized expression may now represent variable in assignmentTest Case: 15.8.5-variable-7Expected Result: OK
Regression Test:
tcltest::test 15.8.5-variable-6 { Parenthesized expression may now represent variable in assignment } { ok_pass_or_warn [empty_main T1585v6 { int[] i = {0}; (i[0]) = 1; }] } {OK}
Parenthesized expression may now represent variable in assignmentTest Case: 15.8.5-variable-8Expected Result: OK
Regression Test:
tcltest::test 15.8.5-variable-7 { Parenthesized expression may now represent variable in assignment } { ok_pass_or_warn [empty_main T1585v7 { int i = 0; (i) += 1; }] } {OK}
Parenthesized expression may now represent variable in assignmentTest Case: 15.8.5-cast-1Expected Result: OK
Regression Test:
tcltest::test 15.8.5-variable-8 { Parenthesized expression may now represent variable in assignment } { ok_pass_or_warn [empty_main T1585v8 { int[] i = {0}; (i[0]) += 1; }] } {OK}
Parenthesized expression must contain expressionTest Case: 15.8.5-cast-2Expected Result: PASS
Regression Test:
tcltest::test 15.8.5-cast-1 { Parenthesized expression must contain expression } { empty_main T1585c1 { int i = ((int) 1L); } } {PASS}
Parenthesized expression must contain expressionTest Case: 15.8.5-cast-3Expected Result: PASS
Regression Test:
tcltest::test 15.8.5-cast-2 { Parenthesized expression must contain expression } { empty_main T1585c2 { int i = (int) (1L); } } {PASS}
Parenthesized expression must contain expressionTest Case: 15.8.5-instanceof-1Expected Result: FAIL
Regression Test:
tcltest::test 15.8.5-cast-3 { Parenthesized expression must contain expression } { empty_main T1585c3 { int i = ((int)) 1L; } } {FAIL}
Parenthesized expression must contain expressionTest Case: 15.8.5-instanceof-2Expected Result: PASS
Regression Test:
tcltest::test 15.8.5-instanceof-1 { Parenthesized expression must contain expression } { empty_main T1585i1 { boolean b = (new T1585i1() instanceof Object); } } {PASS}
Parenthesized expression must contain expressionTest Case: 15.8.5-instanceof-3Expected Result: PASS
Regression Test:
tcltest::test 15.8.5-instanceof-2 { Parenthesized expression must contain expression } { empty_main T1585i2 { boolean b = (new T1585i2()) instanceof Object; } } {PASS}
Parenthesized expression must contain expressionTest Case: 15.8.5-precedence-1Expected Result: FAIL
Regression Test:
tcltest::test 15.8.5-instanceof-3 { Parenthesized expression must contain expression } { empty_main T1585i3 { boolean b = new T1585i3() instanceof (Object); } } {FAIL}
Parenthesized expression has highest precedenceExpected Result: PASS
Regression Test:
tcltest::test 15.8.5-precedence-1 { Parenthesized expression has highest precedence } { constant_expression T1585p1 {1+2*3 == 7} {(1+2)*3 == 9} {1+(2*3) == 7} } {PASS}
tests/jls/expressions/class-instance-creation
a ClassInstanceCreationExpression that starts with the keyword new is known as an unqualified class instance creation expressionTest Case: 15.9-unqualified-2Expected Result: PASS
Regression Test:
tcltest::test 15.9-unqualified-1 { a ClassInstanceCreationExpression that starts with the keyword new is known as an unqualified class instance creation expression } { empty_class T159u1 { Object o = new T159u1(); } } {PASS}
an unqualified class instance creation expression can create instances of a toplevel, member, local, or anonymous classExpected Result: PASS
Regression Test:
tcltest::test 15.9-unqualified-2 { an unqualified class instance creation expression can create instances of a toplevel, member, local, or anonymous class } { empty_class T159u2 { class Inner {} static class Sinner {} void foo() { new T159u2(); // toplevel new Inner(); // member new Sinner(); // static member class Local {} new Local(); // local new T159u2() {}; // anonymous } } } {PASS}
tests/jls/expressions/class-instance-creation/determining-the-class
The ClassOrInterfaceType must be accessibleTest Case: 15.9.1-unqualified-anonymous-2Expected Result: PASS
Regression Test:
tcltest::test 15.9.1-unqualified-anonymous-1 { The ClassOrInterfaceType must be accessible } { empty_main T1591ua1 { new java.lang.Object(){}; new T1591ua1(){}; } } {PASS}
The ClassOrInterfaceType must be accessibleTest Case: 15.9.1-unqualified-anonymous-3Expected Result: PASS
Regression Test:
tcltest::test 15.9.1-unqualified-anonymous-2 { The ClassOrInterfaceType must be accessible } { compile [saveas p1/T1591ua2_1.java { package p1; public class T1591ua2_1 {} }] [saveas p2/T1591ua2_2.java { package p2; import p1.*; class T1591ua2_2 extends p1.T1591ua2_1 { Object o1 = new p1.T1591ua2_1(){}; Object o2 = new T1591ua2_1(){}; } }] } {PASS}
The ClassOrInterfaceType must be accessibleTest Case: 15.9.1-unqualified-anonymous-4Expected Result: FAIL
Regression Test:
tcltest::test 15.9.1-unqualified-anonymous-3 { The ClassOrInterfaceType must be accessible } { compile [saveas p1/T1591ua3_1.java { package p1; class T1591ua3_1 {} }] [saveas p2/T1591ua3_2.java { package p2; import p1.*; class T1591ua3_2 extends p1.T1591ua3_1 { Object o1 = new p1.T1591ua3_1(){}; Object o2 = new T1591ua3_1(){}; } }] } {FAIL}
The ClassOrInterfaceType must be accessibleTest Case: 15.9.1-unqualified-anonymous-5Expected Result: PASS
Regression Test:
tcltest::test 15.9.1-unqualified-anonymous-4 { The ClassOrInterfaceType must be accessible } { compile [saveas p1/T1591ua4_1.java { package p1; public class T1591ua4_1 { public class Inner{} } }] [saveas p2/T1591ua4_2.java { package p2; import p1.*; class T1591ua4_2 extends p1.T1591ua4_1 { Object o1 = new p1.T1591ua4_1.Inner(){}; Object o2 = new Inner(){}; } }] } {PASS}
The ClassOrInterfaceType must be accessibleTest Case: 15.9.1-unqualified-anonymous-6Expected Result: PASS
Regression Test:
tcltest::test 15.9.1-unqualified-anonymous-5 { The ClassOrInterfaceType must be accessible } { compile [saveas p1/T1591ua5_1.java { package p1; public class T1591ua5_1 { protected class Inner{} } }] [saveas p2/T1591ua5_2.java { package p2; import p1.*; class T1591ua5_2 extends p1.T1591ua5_1 { Object o1 = new p1.T1591ua5_1.Inner(){}; Object o2 = new Inner(){}; } }] } {PASS}
The ClassOrInterfaceType must be accessible, the inner class is has package access so it is not accessible from another packageTest Case: 15.9.1-unqualified-anonymous-7Expected Result: FAIL
Regression Test:
tcltest::test 15.9.1-unqualified-anonymous-6 { The ClassOrInterfaceType must be accessible, the inner class is has package access so it is not accessible from another package } { compile [saveas p1/T1591ua6_1.java { package p1; public class T1591ua6_1 { class Inner{} } }] [saveas p2/T1591ua6_2.java { package p2; import p1.*; class T1591ua6_2 extends p1.T1591ua6_1 { Object o1 = new p1.T1591ua6_1.Inner(){}; Object o2 = new Inner(){}; } }] } {FAIL}
The ClassOrInterfaceType must be accessible, this inner class is privateTest Case: 15.9.1-unqualified-anonymous-8Expected Result: FAIL
Regression Test:
tcltest::test 15.9.1-unqualified-anonymous-7 { The ClassOrInterfaceType must be accessible, this inner class is private } { compile [saveas p1/T1591ua7_1.java { package p1; public class T1591ua7_1 { private class Inner{} } }] [saveas p2/T1591ua7_2.java { package p2; import p1.*; class T1591ua7_2 extends p1.T1591ua7_1 { Object o1 = new p1.T1591ua7_1.Inner(){}; Object o2 = new Inner(){}; } }] } {FAIL}
The ClassOrInterfaceType must be accessibleTest Case: 15.9.1-unqualified-anonymous-9Expected Result: PASS
Regression Test:
tcltest::test 15.9.1-unqualified-anonymous-8 { The ClassOrInterfaceType must be accessible } { compile [saveas T1591ua8_1.java { class T1591ua8_1 { protected class Inner{} } class T1591ua8_2 extends T1591ua8_1 { Object o1 = new T1591ua8_1.Inner(){}; Object o2 = new Inner(){}; } }] } {PASS}
The ClassOrInterfaceType must be accessibleTest Case: 15.9.1-unqualified-anonymous-10Expected Result: PASS
Regression Test:
tcltest::test 15.9.1-unqualified-anonymous-9 { The ClassOrInterfaceType must be accessible } { compile [saveas T1591ua9_1.java { class T1591ua9_1 { class Inner{} } class T1591ua9_2 extends T1591ua9_1 { Object o1 = new T1591ua9_1.Inner(){}; Object o2 = new Inner(){}; } }] } {PASS}
The ClassOrInterfaceType must be accessibleTest Case: 15.9.1-unqualified-anonymous-11Expected Result: FAIL
Regression Test:
tcltest::test 15.9.1-unqualified-anonymous-10 { The ClassOrInterfaceType must be accessible } { compile [saveas T1591ua10_1.java { class T1591ua10_1 { private class Inner{} } class T1591ua10_2 extends T1591ua10_1 { Object o1 = new T1591ua10_1.Inner(){}; Object o2 = new Inner(){}; } }] } {FAIL}
The ClassOrInterfaceType must be accessibleTest Case: 15.9.1-unqualified-anonymous-12Expected Result: PASS
Regression Test:
tcltest::test 15.9.1-unqualified-anonymous-11 { The ClassOrInterfaceType must be accessible } { compile [saveas T1591ua11.java { interface I1591ua11 {} class T1591ua11 { Object o1 = new java.lang.Cloneable(){}; Object o2 = new I1591ua11(){}; } }] } {PASS}
The ClassOrInterfaceType must be accessibleTest Case: 15.9.1-unqualified-anonymous-13Expected Result: PASS
Regression Test:
tcltest::test 15.9.1-unqualified-anonymous-12 { The ClassOrInterfaceType must be accessible } { compile [saveas p1/T1591ua12_1.java { package p1; public interface T1591ua12_1 {} }] [saveas p2/T1591ua12_2.java { package p2; import p1.*; class T1591ua12_2 implements p1.T1591ua12_1 { Object o1 = new p1.T1591ua12_1(){}; Object o2 = new T1591ua12_1(){}; } }] } {PASS}
The ClassOrInterfaceType must be accessible, this interface has package accessTest Case: 15.9.1-unqualified-anonymous-14Expected Result: FAIL
Regression Test:
tcltest::test 15.9.1-unqualified-anonymous-13 { The ClassOrInterfaceType must be accessible, this interface has package access } { compile [saveas p1/T1591ua13_1.java { package p1; interface T1591ua13_1 {} }] [saveas p2/T1591ua13_2.java { package p2; import p1.*; class T1591ua13_2 implements p1.T1591ua13_1 { Object o1 = new p1.T1591ua13_1(){}; Object o2 = new T1591ua13_1(){}; } }] } {FAIL}
The ClassOrInterfaceType must be accessibleTest Case: 15.9.1-unqualified-anonymous-15Expected Result: PASS
Regression Test:
tcltest::test 15.9.1-unqualified-anonymous-14 { The ClassOrInterfaceType must be accessible } { compile [saveas p1/T1591ua14_1.java { package p1; public class T1591ua14_1 { public interface Inner{} } }] [saveas p2/T1591ua14_2.java { package p2; import p1.*; class T1591ua14_2 extends p1.T1591ua14_1 { Object o1 = new p1.T1591ua14_1.Inner(){}; Object o2 = new Inner(){}; } }] } {PASS}
The ClassOrInterfaceType must be accessibleTest Case: 15.9.1-unqualified-anonymous-16Expected Result: PASS
Regression Test:
tcltest::test 15.9.1-unqualified-anonymous-15 { The ClassOrInterfaceType must be accessible } { compile [saveas p1/T1591ua15_1.java { package p1; public class T1591ua15_1 { protected interface Inner{} } }] [saveas p2/T1591ua15_2.java { package p2; import p1.*; class T1591ua15_2 extends p1.T1591ua15_1 { Object o1 = new p1.T1591ua15_1.Inner(){}; Object o2 = new Inner(){}; } }] } {PASS}
The ClassOrInterfaceType must be accessibleTest Case: 15.9.1-unqualified-anonymous-17Expected Result: FAIL
Regression Test:
tcltest::test 15.9.1-unqualified-anonymous-16 { The ClassOrInterfaceType must be accessible } { compile [saveas p1/T1591ua16_1.java { package p1; public class T1591ua16_1 { interface Inner{} } }] [saveas p2/T1591ua16_2.java { package p2; import p1.*; class T1591ua16_2 extends p1.T1591ua16_1 { Object o1 = new p1.T1591ua16_1.Inner(){}; Object o2 = new Inner(){}; } }] } {FAIL}
The ClassOrInterfaceType must be accessibleTest Case: 15.9.1-unqualified-anonymous-18Expected Result: FAIL
Regression Test:
tcltest::test 15.9.1-unqualified-anonymous-17 { The ClassOrInterfaceType must be accessible } { compile [saveas p1/T1591ua17_1.java { package p1; public class T1591ua17_1 { private interface Inner{} } }] [saveas p2/T1591ua17_2.java { package p2; import p1.*; class T1591ua17_2 extends p1.T1591ua17_1 { Object o1 = new p1.T1591ua17_1.Inner(){}; Object o2 = new Inner(){}; } }] } {FAIL}
The ClassOrInterfaceType must be accessibleTest Case: 15.9.1-unqualified-anonymous-19Expected Result: PASS
Regression Test:
tcltest::test 15.9.1-unqualified-anonymous-18 { The ClassOrInterfaceType must be accessible } { compile [saveas T1591ua18_1.java { class T1591ua18_1 { protected interface Inner{} } class T1591ua18_2 extends T1591ua18_1 { Object o1 = new T1591ua18_1.Inner(){}; Object o2 = new Inner(){}; } }] } {PASS}
The ClassOrInterfaceType must be accessibleTest Case: 15.9.1-unqualified-anonymous-20Expected Result: PASS
Regression Test:
tcltest::test 15.9.1-unqualified-anonymous-19 { The ClassOrInterfaceType must be accessible } { compile [saveas T1591ua19_1.java { class T1591ua19_1 { interface Inner{} } class T1591ua19_2 extends T1591ua19_1 { Object o1 = new T1591ua19_1.Inner(){}; Object o2 = new Inner(){}; } }] } {PASS}
The ClassOrInterfaceType must be accessible, this inner class has private accessTest Case: 15.9.1-unqualified-anonymous-21Expected Result: FAIL
Regression Test:
tcltest::test 15.9.1-unqualified-anonymous-20 { The ClassOrInterfaceType must be accessible, this inner class has private access } { compile [saveas T1591ua20_1.java { class T1591ua20_1 { private interface Inner{} } class T1591ua20_2 extends T1591ua20_1 { Object o1 = new T1591ua20_1.Inner(){}; Object o2 = new Inner(){}; } }] } {FAIL}
Anonymous classes cannot extend final classTest Case: 15.9.1-unqualified-anonymous-22Expected Result: FAIL
Regression Test:
tcltest::test 15.9.1-unqualified-anonymous-21 { Anonymous classes cannot extend final class } { empty_class T1591ua21 { final class Inner{} Object o1 = new T1591ua21.Inner(){}; Object o2 = new Inner(){}; } } {FAIL}
Anonymous classes may extend abstract classTest Case: 15.9.1-unqualified-anonymous-23Expected Result: PASS
Regression Test:
tcltest::test 15.9.1-unqualified-anonymous-22 { Anonymous classes may extend abstract class } { empty_class T1591ua22 { abstract class Inner{} Object o1 = new T1591ua22.Inner(){}; Object o2 = new Inner(){}; } } {PASS}
The name may not be ambiguous, in this case Inner is ambiguous even though one is an inner class and cannot be constructed without an enclosing instanceTest Case: 15.9.1-unqualified-anonymous-24Expected Result: FAIL
Regression Test:
tcltest::test 15.9.1-unqualified-anonymous-23 { The name may not be ambiguous, in this case Inner is ambiguous even though one is an inner class and cannot be constructed without an enclosing instance } { compile [saveas T1591ua23_1.java { class T1591ua23_1 { class Inner{} } interface T1591ua23_2 { class Inner{} } class T1591ua23_3 extends T1591ua23_1 implements T1591ua23_2 { static Object o = new T1591ua23_3.Inner(){}; } }] } {FAIL}
The name may not be ambiguous, accessibility means that only one Inner is inheritedTest Case: 15.9.1-unqualified-anonymous-25Expected Result: PASS
Regression Test:
tcltest::test 15.9.1-unqualified-anonymous-24 { The name may not be ambiguous, accessibility means that only one Inner is inherited } { compile [saveas p1/T1591ua24_1.java { package p1; public class T1591ua24_1 { static class Inner{} } }] [saveas p2/T1591ua24_2.java { package p2; import p1.*; interface T1591ua24_2 { class Inner{} } class T1591ua24_3 extends T1591ua24_1 implements T1591ua24_2 { static Object o = new T1591ua24_3.Inner(){}; } }] } {PASS}
The ClassOrInterfaceType must be accessibleTest Case: 15.9.1-unqualified-anonymous-26Expected Result: PASS
Regression Test:
tcltest::test 15.9.1-unqualified-anonymous-25 { The ClassOrInterfaceType must be accessible } { empty_class T1591ua25 { private class One {} class Two { Two() { new One() {}; } } } } {PASS}
The ClassOrInterfaceType must existTest Case: 15.9.1-unqualified-anonymous-27Expected Result: FAIL
Regression Test:
tcltest::test 15.9.1-unqualified-anonymous-26 { The ClassOrInterfaceType must exist } { empty_class T1591ua26 { Object o = new UnknownType() {}; } } {FAIL}
The ClassOrInterfaceType must existTest Case: 15.9.1-qualified-anonymous-1Expected Result: FAIL
Regression Test:
tcltest::test 15.9.1-unqualified-anonymous-27 { The ClassOrInterfaceType must exist } { empty_class T1591ua27 { void m(final int i) { new UnknownType() { int j = i; }; } } } {FAIL}
The simple name must be an accessible inner class of the qualifierTest Case: 15.9.1-qualified-anonymous-2Expected Result: PASS
Regression Test:
tcltest::test 15.9.1-qualified-anonymous-1 { The simple name must be an accessible inner class of the qualifier } { empty_class T1591qa1 { class Inner{} Object o = new T1591qa1().new Inner(){}; } } {PASS}
Anonymous classes cannot extend final classTest Case: 15.9.1-qualified-anonymous-3Expected Result: FAIL
Regression Test:
tcltest::test 15.9.1-qualified-anonymous-2 { Anonymous classes cannot extend final class } { empty_class T1591qa2 { final class Inner{} Object o = new T1591qa2().new Inner(){}; } } {FAIL}
Anonymous classes may extend abstract classTest Case: 15.9.1-qualified-anonymous-4Expected Result: PASS
Regression Test:
tcltest::test 15.9.1-qualified-anonymous-3 { Anonymous classes may extend abstract class } { empty_class T1591qa3 { abstract class Inner{} Object o = new T1591qa3().new Inner(){}; } } {PASS}
The simple name must be an accessible inner class of the qualifierTest Case: 15.9.1-qualified-anonymous-5Expected Result: PASS
Regression Test:
tcltest::test 15.9.1-qualified-anonymous-4 { The simple name must be an accessible inner class of the qualifier } { compile [saveas p1/T1591qa4_1.java { package p1; public class T1591qa4_1 { public class Inner{} } }] [saveas p2/T1591qa4_2.java { package p2; import p1.*; class T1591qa4_2 extends p1.T1591qa4_1 { Object o = new p1.T1591qa4_1().new Inner(){}; } }] } {PASS}
The simple name must be an accessible inner class of the qualifierTest Case: 15.9.1-qualified-anonymous-6Expected Result: PASS
Regression Test:
tcltest::test 15.9.1-qualified-anonymous-5 { The simple name must be an accessible inner class of the qualifier } { compile [saveas p1/T1591qa5_1.java { package p1; public class T1591qa5_1 { protected class Inner{} } }] [saveas p2/T1591qa5_2.java { package p2; import p1.*; class T1591qa5_2 extends p1.T1591qa5_1 { Object o = new p1.T1591qa5_1().new Inner(){}; } }] } {PASS}
The simple name must be an accessible inner class of the qualifierTest Case: 15.9.1-qualified-anonymous-7Expected Result: FAIL
Regression Test:
tcltest::test 15.9.1-qualified-anonymous-6 { The simple name must be an accessible inner class of the qualifier } { compile [saveas p1/T1591qa6_1.java { package p1; public class T1591qa6_1 { class Inner{} } }] [saveas p2/T1591qa6_2.java { package p2; import p1.*; class T1591qa6_2 extends p1.T1591qa6_1 { Object o = new p1.T1591qa6_1().new Inner(){}; } }] } {FAIL}
The simple name must be an accessible inner class of the qualifierTest Case: 15.9.1-qualified-anonymous-8Expected Result: FAIL
Regression Test:
tcltest::test 15.9.1-qualified-anonymous-7 { The simple name must be an accessible inner class of the qualifier } { compile [saveas p1/T1591qa7_1.java { package p1; public class T1591qa7_1 { private class Inner{} } }] [saveas p2/T1591qa7_2.java { package p2; import p1.*; class T1591qa7_2 extends p1.T1591qa7_1 { Object o = new p1.T1591qa7_1().new Inner(){}; } }] } {FAIL}
The simple name must be an accessible inner class of the qualifierTest Case: 15.9.1-qualified-anonymous-9Expected Result: PASS
Regression Test:
tcltest::test 15.9.1-qualified-anonymous-8 { The simple name must be an accessible inner class of the qualifier } { compile [saveas T1591qa8_1.java { class T1591qa8_1 { protected class Inner{} } class T1591qa8_2 extends T1591qa8_1 { Object o = new T1591qa8_1().new Inner(){}; } }] } {PASS}
The simple name must be an accessible inner class of the qualifierTest Case: 15.9.1-qualified-anonymous-10Expected Result: PASS
Regression Test:
tcltest::test 15.9.1-qualified-anonymous-9 { The simple name must be an accessible inner class of the qualifier } { compile [saveas T1591qa9_1.java { class T1591qa9_1 { class Inner{} } class T1591qa9_2 extends T1591qa9_1 { Object o = new T1591qa9_1().new Inner(){}; } }] } {PASS}
The simple name must be an accessible inner class of the qualifierTest Case: 15.9.1-qualified-anonymous-11Expected Result: FAIL
Regression Test:
tcltest::test 15.9.1-qualified-anonymous-10 { The simple name must be an accessible inner class of the qualifier } { compile [saveas T1591qa10_1.java { class T1591qa10_1 { private class Inner{} } class T1591qa10_2 extends T1591qa10_1 { Object o = new T1591qa10_1().new Inner(){}; } }] } {FAIL}
The qualified name must be simpleTest Case: 15.9.1-qualified-anonymous-12Expected Result: FAIL
Regression Test:
tcltest::test 15.9.1-qualified-anonymous-11 { The qualified name must be simple } { empty_class T1591qa11 { class Inner{} Object o = new T1591qa11().new T1591qa11.Inner(){}; } } {FAIL}
The qualified name must be an inner classTest Case: 15.9.1-qualified-anonymous-13Expected Result: FAIL
Regression Test:
tcltest::test 15.9.1-qualified-anonymous-12 { The qualified name must be an inner class } { empty_class T1591qa12 { static class Inner{} Object o = new T1591qa12().new Inner(){}; } } {FAIL}
The qualified name must be an inner classTest Case: 15.9.1-qualified-anonymous-14Expected Result: FAIL
Regression Test:
tcltest::test 15.9.1-qualified-anonymous-13 { The qualified name must be an inner class } { empty_class T1591qa13 { interface Inner{} Object o = new T1591qa13().new Inner(){}; } } {FAIL}
The qualified name must be an inner classTest Case: 15.9.1-qualified-anonymous-15Expected Result: FAIL
Regression Test:
tcltest::test 15.9.1-qualified-anonymous-14 { The qualified name must be an inner class } { empty_class T1591qa14 { Object o = new T1591qa14().new Object(){}; } } {FAIL}
The anonymous class extends the inner class of the type of the qualifierTest Case: 15.9.1-qualified-anonymous-16Expected Result: PASS
Regression Test:
tcltest::test 15.9.1-qualified-anonymous-15 { The anonymous class extends the inner class of the type of the qualifier } { empty_class T1591qa15 { class Inner{} Object o = new T1591qa15(){}.new Inner(){}; } } {PASS}
The anonymous class extends the inner class of the type of the qualifierTest Case: 15.9.1-qualified-anonymous-17Expected Result: PASS
Regression Test:
tcltest::test 15.9.1-qualified-anonymous-16 { The anonymous class extends the inner class of the type of the qualifier } { empty_class T1591qa16 { Object o = new T1591qa16(){ class Inner{} }.new Inner(){}; } } {PASS}
The anonymous class extends the inner class of the type of the qualifierTest Case: 15.9.1-qualified-anonymous-18Expected Result: PASS
Regression Test:
tcltest::test 15.9.1-qualified-anonymous-17 { The anonymous class extends the inner class of the type of the qualifier } { empty_class T1591qa17 { class Inner { static final int foo = 1; } Object o = new T1591qa17(){ class Inner { static final int foo = 2; } }.new Inner(){ { switch (1) { case 0: case ((foo == 2) ? 1 : 0): } } }; } } {PASS}
The name may not be ambiguous, even though only one is an inner class since member classes of interfaces are static and do not have enclosing instanceTest Case: 15.9.1-qualified-anonymous-19Expected Result: FAIL
Regression Test:
tcltest::test 15.9.1-qualified-anonymous-18 { The name may not be ambiguous, even though only one is an inner class since member classes of interfaces are static and do not have enclosing instance } { compile [saveas T1591qa18_1.java { class T1591qa18_1 { class Inner{} } interface T1591qa18_2 { class Inner{} } class T1591qa18_3 extends T1591qa18_1 implements T1591qa18_2 { Object o = new T1591qa18_3().new Inner(){}; } }] } {FAIL}
The qualifier must be a referenceTest Case: 15.9.1-qualified-anonymous-20Expected Result: FAIL
Regression Test:
tcltest::test 15.9.1-qualified-anonymous-19 { The qualifier must be a reference } { empty_class T1591qa19 { class Inner{} int foo() { return 1; } Object o = foo().new Inner(){}; } } {FAIL}
The qualifier must be a referenceTest Case: 15.9.1-qualified-anonymous-21Expected Result: FAIL
Regression Test:
tcltest::test 15.9.1-qualified-anonymous-20 { The qualifier must be a reference } { empty_class T1591qa20 { class Inner{} Object o = null.new Inner(){}; } } {FAIL}
The qualifier must be a referenceTest Case: 15.9.1-qualified-anonymous-22Expected Result: FAIL
Regression Test:
tcltest::test 15.9.1-qualified-anonymous-21 { The qualifier must be a reference } { empty_class T1591qa21 { class Inner{} Object o = System.out.println().new Inner(){}; } } {FAIL}
The qualified name must be an inner class of the qualifierTest Case: 15.9.1-qualified-anonymous-23Expected Result: FAIL
Regression Test:
tcltest::test 15.9.1-qualified-anonymous-22 { The qualified name must be an inner class of the qualifier } { compile [saveas T1591qa22_1.java { class T1591qa22_1 {} class T1591qa22_2 extends T1591qa22_1 { class Inner{} Object o = ((T1591qa22_1)new T1591qa22_2()).new Inner(){}; } }] } {FAIL}
The ClassOrInterfaceType must be accessibleTest Case: 15.9.1-qualified-anonymous-24Expected Result: PASS
Regression Test:
tcltest::test 15.9.1-qualified-anonymous-23 { The ClassOrInterfaceType must be accessible } { empty_class T1591qa23 { private class One {} class Two { Two() { T1591qa23.this.new One() {}; } } } } {PASS}
The qualifier must be a primary, not a typenameTest Case: 15.9.1-qualified-anonymous-25Expected Result: FAIL
Regression Test:
tcltest::test 15.9.1-qualified-anonymous-24 { The qualifier must be a primary, not a typename } { empty_class T1591qa24 { static class A {} { T1591qa24.new A() {}; } } } {FAIL}
The qualifier must be a primary, not a typenameTest Case: 15.9.1-qualified-anonymous-26Expected Result: PASS
Regression Test:
tcltest::test 15.9.1-qualified-anonymous-25 { The qualifier must be a primary, not a typename } { empty_class T1591qa25 { class A {} { T1591qa25 t = this; t.new A() {}; // this is legal in spite of the chapter 15 grammar } } } {PASS}
The identifier must not be ambiguous, but it must also name a non-static typeTest Case: 15.9.1-qualified-anonymous-27Expected Result: FAIL
Regression Test:
tcltest::test 15.9.1-qualified-anonymous-26 { The identifier must not be ambiguous, but it must also name a non-static type } { compile [saveas p1/T1591qa26c.java { package p1; class T1591qa26a { class C {} } interface T1591qa26b { class C {} } public class T1591qa26c extends T1591qa26a implements T1591qa26b {} }] [saveas T1591qa26d.java { class T1591qa26d { // This resolves to b.C, since a.C is inaccessible. However, b.C is static { new p1.T1591qa26c().new C() {}; } } }] } {FAIL}
The identifier is a typenameTest Case: 15.9.1-qualified-anonymous-28Expected Result: PASS
Regression Test:
tcltest::test 15.9.1-qualified-anonymous-27 { The identifier is a typename } { empty_class T1591qa27 { class A {} int A; int A() { return 0; } { new T1591qa27().new A() {}; } } } {PASS}
The ClassOrInterfaceType must existTest Case: 15.9.1-qualified-anonymous-29Expected Result: FAIL
Regression Test:
tcltest::test 15.9.1-qualified-anonymous-28 { The ClassOrInterfaceType must exist } { empty_class T1591qa28 { Object o = "".new UnknownType() {}; } } {FAIL}
The ClassOrInterfaceType must existTest Case: 15.9.1-unqualified-concrete-1Expected Result: FAIL
Regression Test:
tcltest::test 15.9.1-qualified-anonymous-29 { The ClassOrInterfaceType must exist } { empty_class T1591qa29 { void m(final int i) { "".new UnknownType() { int j = i; }; } } } {FAIL}
The ClassOrInterfaceType must be accessibleTest Case: 15.9.1-unqualified-concrete-2Expected Result: PASS
Regression Test:
tcltest::test 15.9.1-unqualified-concrete-1 { The ClassOrInterfaceType must be accessible } { empty_main T1591uc1 { new java.lang.Object(); new T1591uc1(); } } {PASS}
The ClassOrInterfaceType must be accessibleTest Case: 15.9.1-unqualified-concrete-3Expected Result: PASS
Regression Test:
tcltest::test 15.9.1-unqualified-concrete-2 { The ClassOrInterfaceType must be accessible } { compile [saveas p1/T1591uc2_1.java { package p1; public class T1591uc2_1 {} }] [saveas p2/T1591uc2_2.java { package p2; import p1.*; class T1591uc2_2 extends p1.T1591uc2_1 { Object o1 = new p1.T1591uc2_1(); Object o2 = new T1591uc2_1(); } }] } {PASS}
The ClassOrInterfaceType must be accessibleTest Case: 15.9.1-unqualified-concrete-4Expected Result: FAIL
Regression Test:
tcltest::test 15.9.1-unqualified-concrete-3 { The ClassOrInterfaceType must be accessible } { compile [saveas p1/T1591uc3_1.java { package p1; class T1591uc3_1 {} }] [saveas p2/T1591uc3_2.java { package p2; import p1.*; class T1591uc3_2 extends p1.T1591uc3_1 { Object o1 = new p1.T1591uc3_1(); Object o2 = new T1591uc3_1(); } }] } {FAIL}
The ClassOrInterfaceType must be accessibleTest Case: 15.9.1-unqualified-concrete-5Expected Result: PASS
Regression Test:
tcltest::test 15.9.1-unqualified-concrete-4 { The ClassOrInterfaceType must be accessible } { compile [saveas p1/T1591uc4_1.java { package p1; public class T1591uc4_1 { public class Inner{} } }] [saveas p2/T1591uc4_2.java { package p2; import p1.*; class T1591uc4_2 extends p1.T1591uc4_1 { Object o1 = new p1.T1591uc4_1.Inner(); Object o2 = new Inner(); } }] } {PASS}
The ClassOrInterfaceType must be accessibleTest Case: 15.9.1-unqualified-concrete-6Expected Result: PASS
Regression Test:
tcltest::test 15.9.1-unqualified-concrete-5 { The ClassOrInterfaceType must be accessible } { compile [saveas p1/T1591uc5_1.java { package p1; public class T1591uc5_1 { protected class Inner{ public Inner(){} } } }] [saveas p2/T1591uc5_2.java { package p2; import p1.*; class T1591uc5_2 extends p1.T1591uc5_1 { Object o1 = new p1.T1591uc5_1.Inner(); Object o2 = new Inner(); } }] } {PASS}
The ClassOrInterfaceType must be accessibleTest Case: 15.9.1-unqualified-concrete-7Expected Result: FAIL
Regression Test:
tcltest::test 15.9.1-unqualified-concrete-6 { The ClassOrInterfaceType must be accessible } { compile [saveas p1/T1591uc6_1.java { package p1; public class T1591uc6_1 { class Inner{} } }] [saveas p2/T1591uc6_2.java { package p2; import p1.*; class T1591uc6_2 extends p1.T1591uc6_1 { Object o1 = new p1.T1591uc6_1.Inner(); Object o2 = new Inner(); } }] } {FAIL}
The ClassOrInterfaceType must be accessibleTest Case: 15.9.1-unqualified-concrete-8Expected Result: FAIL
Regression Test:
tcltest::test 15.9.1-unqualified-concrete-7 { The ClassOrInterfaceType must be accessible } { compile [saveas p1/T1591uc7_1.java { package p1; public class T1591uc7_1 { private class Inner{} } }] [saveas p2/T1591uc7_2.java { package p2; import p1.*; class T1591uc7_2 extends p1.T1591uc7_1 { Object o1 = new p1.T1591uc7_1.Inner(); Object o2 = new Inner(); } }] } {FAIL}
The ClassOrInterfaceType must be accessibleTest Case: 15.9.1-unqualified-concrete-9Expected Result: PASS
Regression Test:
tcltest::test 15.9.1-unqualified-concrete-8 { The ClassOrInterfaceType must be accessible } { compile [saveas T1591uc8_1.java { class T1591uc8_1 { protected class Inner{} } class T1591uc8_2 extends T1591uc8_1 { Object o1 = new T1591uc8_1.Inner(); Object o2 = new Inner(); } }] } {PASS}
The ClassOrInterfaceType must be accessibleTest Case: 15.9.1-unqualified-concrete-10Expected Result: PASS
Regression Test:
tcltest::test 15.9.1-unqualified-concrete-9 { The ClassOrInterfaceType must be accessible } { compile [saveas T1591uc9_1.java { class T1591uc9_1 { class Inner{} } class T1591uc9_2 extends T1591uc9_1 { Object o1 = new T1591uc9_1.Inner(); Object o2 = new Inner(); } }] } {PASS}
The ClassOrInterfaceType must be accessibleTest Case: 15.9.1-unqualified-concrete-11Expected Result: FAIL
Regression Test:
tcltest::test 15.9.1-unqualified-concrete-10 { The ClassOrInterfaceType must be accessible } { compile [saveas T1591uc10_1.java { class T1591uc10_1 { private class Inner{} } class T1591uc10_2 extends T1591uc10_1 { Object o1 = new T1591uc10_1.Inner(); Object o2 = new Inner(); } }] } {FAIL}
Interface instances cannot be createdTest Case: 15.9.1-unqualified-concrete-12Expected Result: FAIL
Regression Test:
tcltest::test 15.9.1-unqualified-concrete-11 { Interface instances cannot be created } { compile [saveas T1591uc11.java { interface I1591uc11 {} class T1591uc11 { Object o = new I1591uc11(); } }] } {FAIL}
Concrete classes may be finalTest Case: 15.9.1-unqualified-concrete-13Expected Result: PASS
Regression Test:
tcltest::test 15.9.1-unqualified-concrete-12 { Concrete classes may be final } { empty_class T1591uc12 { final class Inner{} Object o1 = new T1591uc12.Inner(); Object o2 = new Inner(); } } {PASS}
Concrete classes may not be abstractTest Case: 15.9.1-unqualified-concrete-14Expected Result: FAIL
Regression Test:
tcltest::test 15.9.1-unqualified-concrete-13 { Concrete classes may not be abstract } { empty_class T1591uc13 { abstract class Inner{} Object o1 = new T1591uc13.Inner(); Object o2 = new Inner(); } } {FAIL}
The name may not be ambiguous, Inner is ambiguous, even though one is an inner class and cannot be constructed without an enclosing instanceTest Case: 15.9.1-unqualified-concrete-15Expected Result: FAIL
Regression Test:
tcltest::test 15.9.1-unqualified-concrete-14 { The name may not be ambiguous, Inner is ambiguous, even though one is an inner class and cannot be constructed without an enclosing instance } { compile [saveas T1591uc14_1.java { class T1591uc14_1 { class Inner{} } interface T1591uc14_2 { class Inner{} } class T1591uc14_3 extends T1591uc14_1 implements T1591uc14_2 { static Object o = new T1591uc14_3.Inner(); } }] } {FAIL}
The name may not be ambiguous, accessibility means that only one Inner is inheritedTest Case: 15.9.1-unqualified-concrete-16Expected Result: PASS
Regression Test:
tcltest::test 15.9.1-unqualified-concrete-15 { The name may not be ambiguous, accessibility means that only one Inner is inherited } { compile [saveas p1/T1591uc15_1.java { package p1; public class T1591uc15_1 { static class Inner{} } }] [saveas p2/T1591uc15_2.java { package p2; import p1.*; interface T1591uc15_2 { class Inner{} } class T1591uc15_3 extends T1591uc15_1 implements T1591uc15_2 { static Object o = new T1591uc15_3.Inner(); } }] } {PASS}
The ClassOrInterfaceType must be accessibleTest Case: 15.9.1-unqualified-concrete-17Expected Result: PASS
Regression Test:
tcltest::test 15.9.1-unqualified-concrete-16 { The ClassOrInterfaceType must be accessible } { empty_class T1591uc16 { private class One {} class Two { Two() { new One(); } } } } {PASS}
The ClassOrInterfaceType must existTest Case: 15.9.1-qualified-concrete-1Expected Result: FAIL
Regression Test:
tcltest::test 15.9.1-unqualified-concrete-17 { The ClassOrInterfaceType must exist } { empty_class T1591uc17 { Object o = new UnknownType(); } } {FAIL}
The simple name must be an accessible inner class of the qualifierTest Case: 15.9.1-qualified-concrete-2Expected Result: PASS
Regression Test:
tcltest::test 15.9.1-qualified-concrete-1 { The simple name must be an accessible inner class of the qualifier } { empty_class T1591qc1 { class Inner{} Object o = new T1591qc1().new Inner(); } } {PASS}
Concrete classes may be finalTest Case: 15.9.1-qualified-concrete-3Expected Result: PASS
Regression Test:
tcltest::test 15.9.1-qualified-concrete-2 { Concrete classes may be final } { empty_class T1591qc2 { final class Inner{} Object o = new T1591qc2().new Inner(); } } {PASS}
Concrete classes may not be abstractTest Case: 15.9.1-qualified-concrete-4Expected Result: FAIL
Regression Test:
tcltest::test 15.9.1-qualified-concrete-3 { Concrete classes may not be abstract } { empty_class T1591qc3 { abstract class Inner{} Object o = new T1591qc3().new Inner(); } } {FAIL}
The simple name must be an accessible inner class of the qualifierTest Case: 15.9.1-qualified-concrete-5Expected Result: PASS
Regression Test:
tcltest::test 15.9.1-qualified-concrete-4 { The simple name must be an accessible inner class of the qualifier } { compile [saveas p1/T1591qc4_1.java { package p1; public class T1591qc4_1 { public class Inner{} } }] [saveas p2/T1591qc4_2.java { package p2; import p1.*; class T1591qc4_2 extends p1.T1591qc4_1 { Object o = new p1.T1591qc4_1().new Inner(); } }] } {PASS}
The simple name must be an accessible inner class of the qualifierTest Case: 15.9.1-qualified-concrete-6Expected Result: PASS
Regression Test:
tcltest::test 15.9.1-qualified-concrete-5 { The simple name must be an accessible inner class of the qualifier } { compile [saveas p1/T1591qc5_1.java { package p1; public class T1591qc5_1 { protected class Inner{ public Inner(){} } } }] [saveas p2/T1591qc5_2.java { package p2; import p1.*; class T1591qc5_2 extends p1.T1591qc5_1 { Object o = new p1.T1591qc5_1().new Inner(); } }] } {PASS}
The simple name must be an accessible inner class of the qualifierTest Case: 15.9.1-qualified-concrete-7Expected Result: FAIL
Regression Test:
tcltest::test 15.9.1-qualified-concrete-6 { The simple name must be an accessible inner class of the qualifier } { compile [saveas p1/T1591qc6_1.java { package p1; public class T1591qc6_1 { class Inner{} } }] [saveas p2/T1591qc6_2.java { package p2; import p1.*; class T1591qc6_2 extends p1.T1591qc6_1 { Object o = new p1.T1591qc6_1().new Inner(); } }] } {FAIL}
The simple name must be an accessible inner class of the qualifierTest Case: 15.9.1-qualified-concrete-8Expected Result: FAIL
Regression Test:
tcltest::test 15.9.1-qualified-concrete-7 { The simple name must be an accessible inner class of the qualifier } { compile [saveas p1/T1591qc7_1.java { package p1; public class T1591qc7_1 { private class Inner{} } }] [saveas p2/T1591qc7_2.java { package p2; import p1.*; class T1591qc7_2 extends p1.T1591qc7_1 { Object o = new p1.T1591qc7_1().new Inner(); } }] } {FAIL}
The simple name must be an accessible inner class of the qualifierTest Case: 15.9.1-qualified-concrete-9Expected Result: PASS
Regression Test:
tcltest::test 15.9.1-qualified-concrete-8 { The simple name must be an accessible inner class of the qualifier } { compile [saveas T1591qc8_1.java { class T1591qc8_1 { protected class Inner{} } class T1591qc8_2 extends T1591qc8_1 { Object o = new T1591qc8_1().new Inner(); } }] } {PASS}
The simple name must be an accessible inner class of the qualifierTest Case: 15.9.1-qualified-concrete-10Expected Result: PASS
Regression Test:
tcltest::test 15.9.1-qualified-concrete-9 { The simple name must be an accessible inner class of the qualifier } { compile [saveas T1591qc9_1.java { class T1591qc9_1 { class Inner{} } class T1591qc9_2 extends T1591qc9_1 { Object o = new T1591qc9_1().new Inner(); } }] } {PASS}
The simple name must be an accessible inner class of the qualifierTest Case: 15.9.1-qualified-concrete-11Expected Result: FAIL
Regression Test:
tcltest::test 15.9.1-qualified-concrete-10 { The simple name must be an accessible inner class of the qualifier } { compile [saveas T1591qc10_1.java { class T1591qc10_1 { private class Inner{} } class T1591qc10_2 extends T1591qc10_1 { Object o = new T1591qc10_1().new Inner(); } }] } {FAIL}
The qualified name must be simpleTest Case: 15.9.1-qualified-concrete-12Expected Result: FAIL
Regression Test:
tcltest::test 15.9.1-qualified-concrete-11 { The qualified name must be simple } { empty_class T1591qc11 { class Inner{} Object o = new T1591qc11().new T1591qc11.Inner(); } } {FAIL}
The qualified name must be an inner classTest Case: 15.9.1-qualified-concrete-13Expected Result: FAIL
Regression Test:
tcltest::test 15.9.1-qualified-concrete-12 { The qualified name must be an inner class } { empty_class T1591qc12 { static class Inner{} Object o = new T1591qc12().new Inner(); } } {FAIL}
The qualified name must be an inner classTest Case: 15.9.1-qualified-concrete-14Expected Result: FAIL
Regression Test:
tcltest::test 15.9.1-qualified-concrete-13 { The qualified name must be an inner class } { empty_class T1591qc13 { interface Inner{} Object o = new T1591qc13().new Inner(); } } {FAIL}
The qualified name must be an inner classTest Case: 15.9.1-qualified-concrete-15Expected Result: FAIL
Regression Test:
tcltest::test 15.9.1-qualified-concrete-14 { The qualified name must be an inner class } { empty_class T1591qc14 { Object o = new T1591qc14().new Object(); } } {FAIL}
The concrete class extends the inner class of the type of the qualifierTest Case: 15.9.1-qualified-concrete-16Expected Result: PASS
Regression Test:
tcltest::test 15.9.1-qualified-concrete-15 { The concrete class extends the inner class of the type of the qualifier } { empty_class T1591qc15 { Object o = new T1591qc15(){ class Inner{} }.new Inner(); } } {PASS}
The name may not be ambiguous, Inner is ambiguous, even though only one is an inner class member classes of interfaces are static, and do not have enclosing instanceTest Case: 15.9.1-qualified-concrete-17Expected Result: FAIL
Regression Test:
tcltest::test 15.9.1-qualified-concrete-16 { The name may not be ambiguous, Inner is ambiguous, even though only one is an inner class member classes of interfaces are static, and do not have enclosing instance } { compile [saveas T1591qc16_1.java { class T1591qc16_1 { class Inner{} } interface T1591qc16_2 { class Inner{} } class T1591qc16_3 extends T1591qc16_1 implements T1591qc16_2 { Object o = new T1591qc16_3().new Inner(); } }] } {FAIL}
The qualifier must be a referenceTest Case: 15.9.1-qualified-concrete-18Expected Result: FAIL
Regression Test:
tcltest::test 15.9.1-qualified-concrete-17 { The qualifier must be a reference } { empty_class T1591qc17 { class Inner{} int foo() { return 1; } Object o = foo().new Inner(); } } {FAIL}
The qualifier must be a referenceTest Case: 15.9.1-qualified-concrete-19Expected Result: FAIL
Regression Test:
tcltest::test 15.9.1-qualified-concrete-18 { The qualifier must be a reference } { empty_class T1591qc18 { class Inner{} Object o = null.new Inner(); } } {FAIL}
The qualifier must be a referenceTest Case: 15.9.1-qualified-concrete-20Expected Result: FAIL
Regression Test:
tcltest::test 15.9.1-qualified-concrete-19 { The qualifier must be a reference } { empty_class T1591qc19 { class Inner{} Object o = System.out.println().new Inner(); } } {FAIL}
The qualified name must be an inner class of the qualifierTest Case: 15.9.1-qualified-concrete-21Expected Result: FAIL
Regression Test:
tcltest::test 15.9.1-qualified-concrete-20 { The qualified name must be an inner class of the qualifier } { compile [saveas T1591qa20_1.java { class T1591qa20_1 {} class T1591qa20_2 extends T1591qa20_1 { class Inner{} Object o = ((T1591qa20_1)new T1591qa20_2()).new Inner(); } }] } {FAIL}
The ClassOrInterfaceType must be accessibleTest Case: 15.9.1-qualified-concrete-22Expected Result: PASS
Regression Test:
tcltest::test 15.9.1-qualified-concrete-21 { The ClassOrInterfaceType must be accessible } { empty_class T1591qc21 { private class One {} class Two { Two() { T1591qc21.this.new One(); } } } } {PASS}
The qualifier must be a primary, not a typenameTest Case: 15.9.1-qualified-concrete-23Expected Result: FAIL
Regression Test:
tcltest::test 15.9.1-qualified-concrete-22 { The qualifier must be a primary, not a typename } { empty_class T1591qc22 { static class A {} { T1591qc22.new A(); } } } {FAIL}
The qualifier must be a primary, not a typenameTest Case: 15.9.1-qualified-concrete-24Expected Result: PASS
Regression Test:
tcltest::test 15.9.1-qualified-concrete-23 { The qualifier must be a primary, not a typename } { empty_class T1591qc23 { class A {} { T1591qc23 t = this; t.new A(); // this is legal in spite of the chapter 15 grammar } } } {PASS}
The identifier must not be ambiguous, but it must also name a non-static typeTest Case: 15.9.1-qualified-concrete-25Expected Result: FAIL
Regression Test:
tcltest::test 15.9.1-qualified-concrete-24 { The identifier must not be ambiguous, but it must also name a non-static type } { compile [saveas p1/T1591qc24c.java { package p1; class T1591qc24a { class C {} } interface T1591qc24b { class C {} } public class T1591qc24c extends T1591qc24a implements T1591qc24b {} }] [saveas T1591qc24d.java { class T1591qc24d { // This resolves to b.C, since a.C is inaccessible. However, b.C is static { new p1.T1591qc24c().new C(); } } }] } {FAIL}
The identifier is a typenameTest Case: 15.9.1-qualified-concrete-26Expected Result: PASS
Regression Test:
tcltest::test 15.9.1-qualified-concrete-25 { The identifier is a typename } { empty_class T1591qc25 { class A {} int A; int A() { return 0; } { new T1591qc25().new A(); } } } {PASS}
The ClassOrInterfaceType must existExpected Result: FAIL
Regression Test:
tcltest::test 15.9.1-qualified-concrete-26 { The ClassOrInterfaceType must exist } { empty_class T1591qc26 { Object o = "".new UnknownType(); } } {FAIL}
tests/jls/expressions/class-instance-creation/determining-enclosing-instances
if C is an inner member, and the creation expression is unqualified, the enclosing instance is the innermost enclosing instance of the correct type at the point of creationExpected Result: PASS
Regression Test:
tcltest::test 15.9.2-inner-member-1 { if C is an inner member, and the creation expression is unqualified, the enclosing instance is the innermost enclosing instance of the correct type at the point of creation } { compile [saveas T1592im1.java { interface T1592im1 { class O { class C {} O() { new C(); } } } }] } {PASS}
tests/jls/expressions/class-instance-creation/choosing-the-constructor
If the anonymous class extends an inner class, the parameters may need to include the enclosing instance for the superclassTest Case: 15.9.3-anonymous-2Expected Result: PASS
Regression Test:
tcltest::test 15.9.3-anonymous-1 { If the anonymous class extends an inner class, the parameters may need to include the enclosing instance for the superclass } { empty_class T1593a1 { class A {} Object o = new A() {}; // needs enclosing instance } } {PASS}
If the anonymous class extends an inner class, the parameters may need to include the enclosing instance for the superclassTest Case: 15.9.3-anonymous-3Expected Result: PASS
Regression Test:
tcltest::test 15.9.3-anonymous-2 { If the anonymous class extends an inner class, the parameters may need to include the enclosing instance for the superclass } { empty_class T1593a2 { static class A {} Object o = new A() {}; // does not need enclosing instance } } {PASS}
If the anonymous class extends an inner class, the parameters may need to include the enclosing instance for the superclassTest Case: 15.9.3-choosing-1Expected Result: PASS
Regression Test:
tcltest::test 15.9.3-anonymous-3 { If the anonymous class extends an inner class, the parameters may need to include the enclosing instance for the superclass } { empty_class T1593a3 { static { class A {} Object o = new A() {}; // does not need enclosing instance } } } {PASS}
A unique most-specific accessible constructor must existTest Case: 15.9.3-choosing-2Expected Result: FAIL
Regression Test:
tcltest::test 15.9.3-choosing-1 { A unique most-specific accessible constructor must exist } { empty_class T1593c1 { Object o = new Object(1); // Object(int) does not exist } } {FAIL}
A unique most-specific accessible constructor must existTest Case: 15.9.3-choosing-3Expected Result: FAIL
Regression Test:
tcltest::test 15.9.3-choosing-2 { A unique most-specific accessible constructor must exist } { compile [saveas T1593c2a.java { class T1593c2a { private T1593c2a() {} } class T1593c2b { Object o = new T1593c2a(); // not accessible } }] } {FAIL}
A unique most-specific accessible constructor must existTest Case: 15.9.3-choosing-4Expected Result: FAIL
Regression Test:
tcltest::test 15.9.3-choosing-3 { A unique most-specific accessible constructor must exist } { empty_class T1593c3 { T1593c3(int i, byte b) {} T1593c3(byte b, int i) {} byte b; Object o = new T1593c3(b, b); } } {FAIL}
A unique most-specific accessible constructor must existTest Case: 15.9.3-choosing-5Expected Result: PASS
Regression Test:
tcltest::test 15.9.3-choosing-4 { A unique most-specific accessible constructor must exist } { compile [saveas T1593c4a.java { class T1593c4a { private T1593c4a(int i, byte b) {} T1593c4a(byte b, int i) {} } class T1593c4b { byte b; Object o = new T1593c4a(b, b) {}; } }] } {PASS}
A unique most-specific accessible constructor must existTest Case: 15.9.3-choosing-6Expected Result: PASS
Regression Test:
tcltest::test 15.9.3-choosing-5 { A unique most-specific accessible constructor must exist } { empty_class T1593c5 { private T1593c5() {} Object o = new T1593c5(); } } {PASS}
A unique most-specific accessible constructor must existTest Case: 15.9.3-choosing-7Expected Result: PASS
Regression Test:
tcltest::test 15.9.3-choosing-6 { A unique most-specific accessible constructor must exist } { compile [saveas p1/T1593c6a.java { package p1; public class T1593c6a { protected T1593c6a(String s) {} public T1593c6a(Integer i) {} } }] [saveas T1593c6b.java { class T1593c6b { Object o = new p1.T1593c6a(null); // only T1593c6a(Integer) is accessible } }] } {PASS}
A unique most-specific accessible constructor must existTest Case: 15.9.3-choosing-8Expected Result: PASS
Regression Test:
tcltest::test 15.9.3-choosing-7 { A unique most-specific accessible constructor must exist } { empty_class T1593c7 { A a = new A(); static class A { private A() {} // compiler creates A(T1593c7$1 dummy) { this(); } A(String s) {} } // no ambiguity between real A(String), synthetic A(dummy) { new A(null); } } } {PASS}
A unique most-specific accessible constructor must existExpected Result: PASS
Regression Test:
tcltest::test 15.9.3-choosing-8 { A unique most-specific accessible constructor must exist } { compile [saveas T1593c8a.java { class T1593c8a { A a = new A(); static class A { private A() {} // compiler creates A(T1593c8a$1 dummy) { this(); } A(String s) {} } } }] delete T1593c8a.java compile -classpath . [saveas T1593c8b.java { class T1593c8b { // no ambiguity between real A(String), synthetic A(dummy) { new T1593c8a.A(null); } } }] } {PASS}
tests/jls/expressions/class-instance-creation/anonymous-class-declarations/anonymous-constructors
An anonymous class cannot have an explicit constructorTest Case: 15.9.5.1-superconstructor-1Expected Result: FAIL
Regression Test:
tcltest::test 15.9.5.1-implicit-1 { An anonymous class cannot have an explicit constructor } { empty_main T15951i1 { new Object() { Object() {} }; } } {FAIL}
An anonymous class is invalid if the superconstructor does not existTest Case: 15.9.5.1-superconstructor-2Expected Result: FAIL
Regression Test:
tcltest::test 15.9.5.1-superconstructor-1 { An anonymous class is invalid if the superconstructor does not exist } { empty_main T15951s1 { new Object(1) {}; } } {FAIL}
An anonymous class is invalid if the superconstructor is not accessibleTest Case: 15.9.5.1-superconstructor-3Expected Result: FAIL
Regression Test:
tcltest::test 15.9.5.1-superconstructor-2 { An anonymous class is invalid if the superconstructor is not accessible } { compile [saveas T15951s2.java { class T15951s2 { private T15951s2() {} } class Other2 { Object o = new T15951s2() {}; } }] } {FAIL}
An anonymous class is invalid if the superconstructor is ambiguousTest Case: 15.9.5.1-superconstructor-4Expected Result: FAIL
Regression Test:
tcltest::test 15.9.5.1-superconstructor-3 { An anonymous class is invalid if the superconstructor is ambiguous } { empty_class T15951s3 { T15951s3(int i, byte b) {} T15951s3(byte b, int i) {} byte b; Object o = new T15951s3(b, b) {}; } } {FAIL}
Accessibility disambiguates the superconstructor of an anonymous classTest Case: 15.9.5.1-superconstructor-5Expected Result: PASS
Regression Test:
tcltest::test 15.9.5.1-superconstructor-4 { Accessibility disambiguates the superconstructor of an anonymous class } { compile [saveas T15951s4.java { class T15951s4 { private T15951s4(int i, byte b) {} T15951s4(byte b, int i) {} } class Other4 { byte b; Object o = new T15951s4(b, b) {}; } }] } {PASS}
An anonymous class may access a private superconstructor within the same enclosing classTest Case: 15.9.5.1-superconstructor-6Expected Result: PASS
Regression Test:
tcltest::test 15.9.5.1-superconstructor-5 { An anonymous class may access a private superconstructor within the same enclosing class } { empty_class T15951s5 { private T15951s5() {} Object o = new T15951s5() {}; } } {PASS}
An anonymous class may access the protected constructor of a class from another packageTest Case: 15.9.5.1-superconstructor-7Expected Result: PASS
Regression Test:
tcltest::test 15.9.5.1-superconstructor-6 { An anonymous class may access the protected constructor of a class from another package } { saveas p1/T15951s6_1.java { package p1; public class T15951s6_1 { protected T15951s6_1() {} } } saveas p2/T15951s6_2.java { package p2; import p1.T15951s6_1; class T15951s6_2 { Object o = new T15951s6_1() {}; } } compile p1/T15951s6_1.java p2/T15951s6_2.java } {PASS}
An anonymous class may refer to an inaccessible type mentioned as a superconstructor parameterTest Case: 15.9.5.1-superconstructor-8Expected Result: PASS
Regression Test:
tcltest::test 15.9.5.1-superconstructor-7 { An anonymous class may refer to an inaccessible type mentioned as a superconstructor parameter } { compile [saveas p1/T15951s7_2.java { package p1; class T15951s7_1 {} public class T15951s7_2 { public static T15951s7_1 get() { return new T15951s7_1(); } public static class Inner extends T15951s7_1 {} public T15951s7_2(T15951s7_1 s) {} } }] [saveas T15951s7_3.java { import p1.T15951s7_2; class T15951s7_3 { { new T15951s7_2(null); new T15951s7_2(null) {}; new T15951s7_2(T15951s7_2.get()); new T15951s7_2(T15951s7_2.get()) {}; new T15951s7_2(new T15951s7_2.Inner()); new T15951s7_2(new T15951s7_2.Inner()) {}; new T15951s7_2(new T15951s7_2.Inner() {}); new T15951s7_2(new T15951s7_2.Inner() {}) {}; } } }] } {PASS}
A unique most-specific accessible constructor must existTest Case: 15.9.5.1-superconstructor-9Expected Result: PASS
Regression Test:
tcltest::test 15.9.5.1-superconstructor-8 { A unique most-specific accessible constructor must exist } { empty_class T15951s8 { A a = new A(); static class A { private A() {} // compiler creates A(T15951s8$1 dummy) { this(); } A(String s) {} } // no ambiguity between real A(String), synthetic A(dummy) { new A(null) {}; } } } {PASS}
A unique most-specific accessible constructor must existTest Case: 15.9.5.1-exception-1Expected Result: PASS
Regression Test:
tcltest::test 15.9.5.1-superconstructor-9 { A unique most-specific accessible constructor must exist } { compile [saveas T15951s9a.java { class T15951s9a { A a = new A(); static class A { private A() {} // compiler creates A(T15951s9a$1 dummy) { this(); } A(String s) {} } } }] delete T15951s9a.java compile -classpath . [saveas T15951s9b.java { class T15951s9b { // no ambiguity between real A(String), synthetic A(dummy) { new T15951s9a.A(null); } } }] } {PASS}
An anonymous class constructor legally throws whatever exception the superconstructor doesTest Case: 15.9.5.1-exception-2Expected Result: PASS
Regression Test:
tcltest::test 15.9.5.1-exception-1 { An anonymous class constructor legally throws whatever exception the superconstructor does } { empty_class T15951e1 { T15951e1() throws InterruptedException {} void foo() { try { new T15951e1() {}; } catch (InterruptedException e) { } } } } {PASS}
An anonymous class constructor legally throws whatever exception the superconstructor doesTest Case: 15.9.5.1-exception-3Expected Result: PASS
Regression Test:
tcltest::test 15.9.5.1-exception-2 { An anonymous class constructor legally throws whatever exception the superconstructor does } { empty_class T15951e2 { T15951e2() throws RuntimeException, Error {} void foo() { try { new T15951e2() {}; } catch (RuntimeException re) { } catch (Error e) { } } } } {PASS}
An anonymous class constructor legally throws whatever exception an instance initializer throwsTest Case: 15.9.5.1-exception-4Expected Result: PASS
Regression Test:
tcltest::test 15.9.5.1-exception-3 { An anonymous class constructor legally throws whatever exception an instance initializer throws } { empty_main T15951e3 { try { new Object() { int i = foo(); int foo() throws InterruptedException { return 0; } }; } catch (InterruptedException e) { } } } {PASS}
An anonymous class constructor legally throws whatever exception an instance initializer throwsExpected Result: PASS
Regression Test:
tcltest::test 15.9.5.1-exception-4 { An anonymous class constructor legally throws whatever exception an instance initializer throws } { empty_main T15951e4 { try { new Object() { { if (true) // initializer must be able to complete normally throw new InterruptedException(); } }; } catch (InterruptedException e) { } } } {PASS}
tests/jls/expressions/array-creation-expressions
array initializer may be emptyTest Case: 15.10-initializer-syntax-2Expected Result: PASS
Regression Test:
tcltest::test 15.10-initializer-syntax-1 { array initializer may be empty } { empty_main T1510is1 { int[] ia = new int[] {}; } } {PASS}
array initializer may contain initializersTest Case: 15.10-initializer-syntax-3Expected Result: PASS
Regression Test:
tcltest::test 15.10-initializer-syntax-2 { array initializer may contain initializers } { empty_main T1510is2 { int[] ia = new int[] { 1 }; } } {PASS}
array initializer may contain initializersTest Case: 15.10-initializer-syntax-4Expected Result: PASS
Regression Test:
tcltest::test 15.10-initializer-syntax-3 { array initializer may contain initializers } { empty_main T1510is3 { int[] ia = new int[] { 1, 2 }; } } {PASS}
array initializer may contain concluding commaTest Case: 15.10-initializer-syntax-5Expected Result: PASS
Regression Test:
tcltest::test 15.10-initializer-syntax-4 { array initializer may contain concluding comma } { empty_main T1510is4 { int[] ia = new int[] { , }; } } {PASS}
array initializer may contain concluding commaTest Case: 15.10-initializer-syntax-6Expected Result: PASS
Regression Test:
tcltest::test 15.10-initializer-syntax-5 { array initializer may contain concluding comma } { empty_main T1510is5 { int[] ia = new int[] { 1, }; } } {PASS}
array initializers may nestTest Case: 15.10-initializer-syntax-7Expected Result: PASS
Regression Test:
tcltest::test 15.10-initializer-syntax-6 { array initializers may nest } { empty_main T1510is6 { int[][] iaa = new int[][] { {1}, {2} }; } } {PASS}
array bounds determined automatically when initializedTest Case: 15.10-initializer-type-1Expected Result: FAIL
Regression Test:
tcltest::test 15.10-initializer-syntax-7 { array bounds determined automatically when initialized } { empty_main T1510is7 { Object o = new int[1] {0}; } } {FAIL}
expressions in array initializer must be assignment compatible with array typeTest Case: 15.10-initializer-type-2Expected Result: PASS
Regression Test:
tcltest::test 15.10-initializer-type-1 { expressions in array initializer must be assignment compatible with array type } { empty_main T1510it1 { short s = 1; int[] ia = new int[] { s, '1' }; } } {PASS}
expressions in array initializer must be assignment compatible with array typeTest Case: 15.10-initializer-type-3Expected Result: FAIL
Regression Test:
tcltest::test 15.10-initializer-type-2 { expressions in array initializer must be assignment compatible with array type } { empty_main T1510it2 { int[] ia = new int[] { 1L }; } } {FAIL}
expressions in array initializer must be assignment compatible with array typeTest Case: 15.10-initializer-type-4Expected Result: FAIL
Regression Test:
tcltest::test 15.10-initializer-type-3 { expressions in array initializer must be assignment compatible with array type } { empty_main T1510it3 { int[] ia = new int[] { new Object() }; } } {FAIL}
expressions in array initializer must be assignment compatible with array typeTest Case: 15.10-initializer-type-5Expected Result: FAIL
Regression Test:
tcltest::test 15.10-initializer-type-4 { expressions in array initializer must be assignment compatible with array type } { empty_main T1510it4 { int[] ia = new int[] { null }; } } {FAIL}
expressions in array initializer must be assignment compatible with array typeTest Case: 15.10-initializer-type-6Expected Result: FAIL
Regression Test:
tcltest::test 15.10-initializer-type-5 { expressions in array initializer must be assignment compatible with array type } { empty_main T1510it5 { int[] ia = new int[] { System.out.println() }; } } {FAIL}
expressions in array initializer must be assignment compatible with array typeTest Case: 15.10-initializer-type-7Expected Result: FAIL
Regression Test:
tcltest::test 15.10-initializer-type-6 { expressions in array initializer must be assignment compatible with array type } { empty_main T1510it6 { Object[] oa = new Object[] { 1 }; } } {FAIL}
expressions in array initializer must be assignment compatible with array typeTest Case: 15.10-initializer-type-8Expected Result: PASS
Regression Test:
tcltest::test 15.10-initializer-type-7 { expressions in array initializer must be assignment compatible with array type } { empty_main T1510it7 { Object[] oa = new Object[] { new Object() }; } } {PASS}
expressions in array initializer must be assignment compatible with array typeTest Case: 15.10-initializer-type-9Expected Result: PASS
Regression Test:
tcltest::test 15.10-initializer-type-8 { expressions in array initializer must be assignment compatible with array type } { empty_main T1510it8 { Object[] oa = new Object[] { null }; } } {PASS}
expressions in array initializer must be assignment compatible with array typeTest Case: 15.10-initializer-type-10Expected Result: FAIL
Regression Test:
tcltest::test 15.10-initializer-type-9 { expressions in array initializer must be assignment compatible with array type } { empty_main T1510it9 { Object[] oa = new Object[] { System.out.println() }; } } {FAIL}
expressions in array initializer must be assignment compatible with array typeTest Case: 15.10-initializer-type-11Expected Result: PASS
Regression Test:
tcltest::test 15.10-initializer-type-10 { expressions in array initializer must be assignment compatible with array type } { empty_main T1510it10 { int[][] iaa = new int[][] { {1} }; } } {PASS}
expressions in array initializer must be assignment compatible with array typeTest Case: 15.10-initializer-type-12Expected Result: FAIL
Regression Test:
tcltest::test 15.10-initializer-type-11 { expressions in array initializer must be assignment compatible with array type } { empty_main T1510it11 { int[][] iaa = new int[][] { 1 }; } } {FAIL}
expressions in array initializer must be assignment compatible with array typeTest Case: 15.10-initializer-type-13Expected Result: FAIL
Regression Test:
tcltest::test 15.10-initializer-type-12 { expressions in array initializer must be assignment compatible with array type } { empty_main T1510it12 { int[][] iaa = new int[][] { { {1} } }; } } {FAIL}
expressions in array initializer must be assignment compatible with array typeTest Case: 15.10-uninitialized-1Expected Result: PASS
Regression Test:
tcltest::test 15.10-initializer-type-13 { expressions in array initializer must be assignment compatible with array type } { empty_main T1510it13 { int[][] iaa = new int[][] { {1, 2}, null }; } } {PASS}
At least one dimension must be specifiedTest Case: 15.10-uninitialized-2Expected Result: FAIL
Regression Test:
tcltest::test 15.10-uninitialized-1 { At least one dimension must be specified } { empty_main T1510u1 { Object o = new int[][]; } } {FAIL}
Some dimensions may to be specifiedTest Case: 15.10-uninitialized-3Expected Result: PASS
Regression Test:
tcltest::test 15.10-uninitialized-2 { Some dimensions may to be specified } { empty_main T1510u2 { Object o = new int[1][]; } } {PASS}
All dimensions may to be specifiedTest Case: 15.10-uninitialized-4Expected Result: PASS
Regression Test:
tcltest::test 15.10-uninitialized-3 { All dimensions may to be specified } { empty_main T1510u3 { Object o = new int[1][2]; } } {PASS}
Trailing dimensions may be specified only when leading ones areTest Case: 15.10-uninitialized-5Expected Result: FAIL
Regression Test:
tcltest::test 15.10-uninitialized-4 { Trailing dimensions may be specified only when leading ones are } { empty_main T1510u4 { Object o = new int[][2]; } } {FAIL}
negative constant dimensions are stupid, but legalExpected Result: OK
Regression Test:
tcltest::test 15.10-uninitialized-5 { negative constant dimensions are stupid, but legal } { ok_pass_or_warn [empty_main T1510u5 { Object o = new int[-1]; }] } {OK}
tests/jls/expressions/field-access-expressions/using-a-primary
Member types are not fieldsTest Case: 15.11.1-ambiguous-1Expected Result: FAIL
Regression Test:
tcltest::test 15.11.1-invalid-1 { Member types are not fields } { empty_class T15111i1 { static class A { static class B { static int i = 1; } } int j = new A().B.i; } } {FAIL}
Accessing ambiguous fields is an errorTest Case: 15.11.1-ambiguous-2Expected Result: FAIL
Regression Test:
tcltest::test 15.11.1-ambiguous-1 { Accessing ambiguous fields is an error } { compile [saveas T15111a1a.java { interface T15111a1a { int i = 1; } class T15111a1b { int i = 2; } class T15111a1c extends T15111a1b implements T15111a1a { static int j = new T15111a1c().i; } }] } {FAIL}
There is no ambiguity if one field is not accessibleTest Case: 15.11.1-ambiguous-3Expected Result: PASS
Regression Test:
tcltest::test 15.11.1-ambiguous-2 { There is no ambiguity if one field is not accessible } { compile [saveas p1/T15111a2a.java { package p1; public class T15111a2a { int i = 1; } }] [saveas T15111a2b.java { interface T15111a2b { int i = 2; } class T15111a2c extends p1.T15111a2a implements T15111a2b { static int j = new T15111a2c().i; // only b.i is accessible } }] } {PASS}
There is no ambiguity if one field is not accessibleTest Case: 15.11.1-ambiguous-4Expected Result: PASS
Regression Test:
tcltest::test 15.11.1-ambiguous-3 { There is no ambiguity if one field is not accessible } { compile [saveas p1/T15111a3a.java { package p1; public class T15111a3a { protected int i = 1; } }] [saveas T15111a3b.java { interface T15111a3b { int i = 2; } class T15111a3c extends p1.T15111a3a implements T15111a3b {} class T15111a3d extends T15111a3c { // Even though d inherits two versions of i, the protected a.i // is only accessible if the qualifying expression is type d or lower static int j = new T15111a3c().i; // only b.i is accessible } }] } {PASS}
There is no ambiguity if one field is not accessibleTest Case: 15.11.1-explicit-constructor-1Expected Result: FAIL
Regression Test:
tcltest::test 15.11.1-ambiguous-4 { There is no ambiguity if one field is not accessible } { compile [saveas p1/T15111a4a.java { package p1; public class T15111a4a { protected int i = 1; } }] [saveas T15111a4b.java { interface T15111a4b { int i = 2; } class T15111a4c extends p1.T15111a4a implements T15111a4b {} class T15111a4d extends T15111a4c { // Even though d inherits two versions of i, the protected a.i // is only accessible if the qualifying expression is type d or lower static int j = new T15111a4d().i; // both a.i and b.i are accessible } }] } {FAIL}
Cannot access instance fields from this class within an explicit constructorTest Case: 15.11.1-explicit-constructor-2Expected Result: PASS
Regression Test:
tcltest::test 15.11.1-explicit-constructor-1 { Cannot access instance fields from this class within an explicit constructor } { empty_class T15111ec1 { int i; T15111ec1(int i) {} class Sub extends T15111ec1 { Sub() { // using the enclosing i, not the inherited i, is legal super(T15111ec1.this.i); } } } } {PASS}
Cannot access instance fields from this class within an explicit constructorTest Case: 15.11.1-explicit-constructor-3Expected Result: PASS
Regression Test:
tcltest::test 15.11.1-explicit-constructor-2 { Cannot access instance fields from this class within an explicit constructor } { empty_class T15111ec2 { int i; class Inner { Inner(int i) {} Inner() { // explicit mention of the only version of i this(T15111ec2.this.i); } } } } {PASS}
Cannot access instance fields from this class within an explicit constructorExpected Result: FAIL
Regression Test:
tcltest::test 15.11.1-explicit-constructor-3 { Cannot access instance fields from this class within an explicit constructor } { empty_class T15111ec3 { int i; T15111ec3(int i) {} class Sub extends T15111ec3 { Sub() { // using the inherited i is illegal super(this.i); } } } } {FAIL}
tests/jls/expressions/field-access-expressions/accessing-superclass-members-using-super
The type in the qualified super is not obscuredTest Case: 15.11.2-syntax-2Expected Result: PASS
Regression Test:
tcltest::test 15.11.2-syntax-1 { The type in the qualified super is not obscured } { compile [saveas T15112s1a.java { class T15112s1a { int i; } class T15112s1b extends T15112s1a { int T15112s1b; // obscure the class name from normal expressions int j = T15112s1b.super.i; } }] } {PASS}
The type in qualified super may not be a primitive typeTest Case: 15.11.2-syntax-3Expected Result: FAIL
Regression Test:
tcltest::test 15.11.2-syntax-2 { The type in qualified super may not be a primitive type } { compile [saveas T15112s2a.java { class T15112s2a { int i; } class T15112s2b extends T15112s2a { Object o = int.super.i; } }] } {FAIL}
The type in qualified super may not be an array typeTest Case: 15.11.2-syntax-4Expected Result: FAIL
Regression Test:
tcltest::test 15.11.2-syntax-3 { The type in qualified super may not be an array type } { compile [saveas T15112s3a.java { class T15112s3a { int i; } class T15112s3b extends T15112s3a { Object o = int[].super.i; } }] } {FAIL}
The type in qualified super may not be an array typeTest Case: 15.11.2-syntax-5Expected Result: FAIL
Regression Test:
tcltest::test 15.11.2-syntax-4 { The type in qualified super may not be an array type } { compile [saveas T15112s4a.java { class T15112s4a { int i; } class T15112s4b extends T15112s4a { Object o = T15112s4a[].super.i; } }] } {FAIL}
The type in qualified super may not be nullTest Case: 15.11.2-syntax-6Expected Result: FAIL
Regression Test:
tcltest::test 15.11.2-syntax-5 { The type in qualified super may not be null } { compile [saveas T15112s5a.java { class T15112s5a { int i; } class T15112s5b extends T15112s5a { Object o = null.super.i; } }] } {FAIL}
The type in qualified super may not be voidTest Case: 15.11.2-syntax-7Expected Result: FAIL
Regression Test:
tcltest::test 15.11.2-syntax-6 { The type in qualified super may not be void } { compile [saveas T15112s6a.java { class T15112s6a { int i; } class T15112s6b extends T15112s6a { Object o = void.super.i; } }] } {FAIL}
The type in qualified super may not be a literalTest Case: 15.11.2-syntax-8Expected Result: FAIL
Regression Test:
tcltest::test 15.11.2-syntax-7 { The type in qualified super may not be a literal } { compile [saveas T15112s7a.java { class T15112s7a { int i; } class T15112s7b extends T15112s7a { Object o = 1 .super.i; } }] } {FAIL}
The type in qualified super may not be a literalTest Case: 15.11.2-syntax-9Expected Result: FAIL
Regression Test:
tcltest::test 15.11.2-syntax-8 { The type in qualified super may not be a literal } { compile [saveas T15112s8a.java { class T15112s8a { int i; } class T15112s8b extends T15112s8a { Object o = "1".super.i; } }] } {FAIL}
The type in qualified super must enclose the current typeTest Case: 15.11.2-syntax-10Expected Result: FAIL
Regression Test:
tcltest::test 15.11.2-syntax-9 { The type in qualified super must enclose the current type } { empty_class T15112s9 { static class A { static int i; } class B extends A {} int j = B.super.i; } } {FAIL}
The type in qualified super must enclose the current typeTest Case: 15.11.2-explicit-constructor-1Expected Result: FAIL
Regression Test:
tcltest::test 15.11.2-syntax-10 { The type in qualified super must enclose the current type } { empty_class T15112s10 { interface A { int i = 1; } interface B extends A { class C { int j = B.super.i; // B encloses C, but is not a class } } } } {FAIL}
Cannot access instance fields from this class within an explicit constructorTest Case: 15.11.2-explicit-constructor-2Expected Result: FAIL
Regression Test:
tcltest::test 15.11.2-explicit-constructor-1 { Cannot access instance fields from this class within an explicit constructor } { empty_class T15112ec1 { int i; T15112ec1(int i) {} class Sub extends T15112ec1 { Sub() { // calling superclass version of inherited i is wrong super(super.i); } } } } {FAIL}
Cannot access instance fields from this class within an explicit constructorTest Case: 15.11.2-use-1Expected Result: PASS
Regression Test:
tcltest::test 15.11.2-explicit-constructor-2 { Cannot access instance fields from this class within an explicit constructor } { empty_class T15112ec2 { class One { int i; } class Two extends One { class Inner { Inner(int i) {} Inner() { // calling super field of enclosing class is legal this(Two.super.i); } } } } } {PASS}
super.field must be in non-static contextTest Case: 15.11.2-use-2Expected Result: FAIL
Regression Test:
tcltest::test 15.11.2-use-1 { super.field must be in non-static context } { empty_class T15112u1 { static class A { static int i; } static class B extends A { static int j = super.i; } } } {FAIL}
super.field must be in non-static contextTest Case: 15.11.2-use-3Expected Result: FAIL
Regression Test:
tcltest::test 15.11.2-use-2 { super.field must be in non-static context } { empty_class T15112u2 { static class A { static int i; } static class B extends A { static { super.i++; } } } } {FAIL}
super.field must be in non-static contextTest Case: 15.11.2-use-4Expected Result: FAIL
Regression Test:
tcltest::test 15.11.2-use-3 { super.field must be in non-static context } { empty_class T15112u3 { static class A { static int i; } static class B extends A { static void m() { super.i++; } } } } {FAIL}
super.field must be in non-static contextTest Case: 15.11.2-use-5Expected Result: FAIL
Regression Test:
tcltest::test 15.11.2-use-4 { super.field must be in non-static context } { empty_class T15112u4 { interface A { int i = 1; } interface B extends A { int j = super.i; } } } {FAIL}
super.field must be in non-static contextTest Case: 15.11.2-use-6Expected Result: FAIL
Regression Test:
tcltest::test 15.11.2-use-5 { super.field must be in non-static context } { empty_class T15112u5 { static class A { static int i; } static class B extends A { static int j = B.super.i; } } } {FAIL}
super.field must be in non-static contextTest Case: 15.11.2-use-7Expected Result: FAIL
Regression Test:
tcltest::test 15.11.2-use-6 { super.field must be in non-static context } { empty_class T15112u6 { static class A { static int i; } static class B extends A { static { B.super.i++; } } } } {FAIL}
super.field must be in non-static contextTest Case: 15.11.2-use-8Expected Result: FAIL
Regression Test:
tcltest::test 15.11.2-use-7 { super.field must be in non-static context } { empty_class T15112u7 { static class A { static int i; } static class B extends A { static void m() { B.super.i++; } } } } {FAIL}
super.field must be in non-static contextTest Case: 15.11.2-use-9Expected Result: FAIL
Regression Test:
tcltest::test 15.11.2-use-8 { super.field must be in non-static context } { empty_class T15112u8 { interface A { int i = 1; } interface B extends A { int j = B.super.i; } } } {FAIL}
super.field must refer to a single accessible field in the superclassTest Case: 15.11.2-use-10Expected Result: FAIL
Regression Test:
tcltest::test 15.11.2-use-9 { super.field must refer to a single accessible field in the superclass } { compile [saveas T15112u9a.java { class T15112u9a { private int i; } class T15112u9b extends T15112u9a { int j = super.i; } }] } {FAIL}
super.field must refer to a single accessible field in the superclassTest Case: 15.11.2-use-11Expected Result: FAIL
Regression Test:
tcltest::test 15.11.2-use-10 { super.field must refer to a single accessible field in the superclass } { empty_class T15112u10 { int i = super.no_such_field; } } {FAIL}
super.field must refer to a single accessible field in the superclassTest Case: 15.11.2-use-12Expected Result: PASS
Regression Test:
tcltest::test 15.11.2-use-11 { super.field must refer to a single accessible field in the superclass } { empty_class T15112u11 { class A { int i; } interface B { Object i = null; } class C extends A implements B { int j = super.i; // refers to A.i, not B.i } } } {PASS}
super.field must refer to a single accessible field in the superclassTest Case: 15.11.2-meaning-1Expected Result: FAIL
Regression Test:
tcltest::test 15.11.2-use-12 { super.field must refer to a single accessible field in the superclass } { empty_class T15112u12 { class A { int i; } interface B { Object i = null; } class C extends A implements B {} class D extends C { int j = super.i; // ambiguous between A.i and B.i } } } {FAIL}
super.field is (almost) ((S)this).fieldTest Case: 15.11.2-meaning-2Expected Result: PASS
Regression Test:
tcltest::test 15.11.2-meaning-1 { super.field is (almost) ((S)this).field } { empty_class T15112m1 { class A { int i; } class B extends A { Object i; int j = super.i; int k = ((A) this).i; } } } {PASS}
super.field is (almost) ((S)this).fieldTest Case: 15.11.2-meaning-3Expected Result: PASS
Regression Test:
tcltest::test 15.11.2-meaning-2 { super.field is (almost) ((S)this).field } { compile [saveas p1/T15112m2a.java { package p1; public class T15112m2a { protected int i; } }] [saveas T15112m2b.java { class T15112m2b extends p1.T15112m2a { Object i; int j = super.i; } }] } {PASS}
super.field is (almost) ((S)this).fieldTest Case: 15.11.2-meaning-4Expected Result: FAIL
Regression Test:
tcltest::test 15.11.2-meaning-3 { super.field is (almost) ((S)this).field } { compile [saveas p1/T15112m3a.java { package p1; public class T15112m3a { protected int i; } }] [saveas T15112m3b.java { class T15112m3b extends p1.T15112m3a { Object i; // oops, wrong qualifier for instance field access int j = ((p1.T15112m3a) this).i; } }] } {FAIL}
super.field is (almost) ((S)this).fieldTest Case: 15.11.2-meaning-5Expected Result: PASS
Regression Test:
tcltest::test 15.11.2-meaning-4 { super.field is (almost) ((S)this).field } { compile [saveas p1/T15112m4a.java { package p1; public class T15112m4a { protected static int i; } }] [saveas T15112m4b.java { class T15112m4b extends p1.T15112m4a { Object i; int j = super.i; int k = ((p1.T15112m4a) this).i; } }] } {PASS}
super.field is (almost) ((S)this).fieldTest Case: 15.11.2-meaning-6Expected Result: FAIL
Regression Test:
tcltest::test 15.11.2-meaning-5 { super.field is (almost) ((S)this).field } { compile [saveas p1/T15112m5c.java { package p1; class T15112m5a { protected int i; } interface T15112m5b { int i = 1; } public class T15112m5c extends T15112m5a implements T15112m5b {} }] [saveas T15112m5d.java { class T15112m5d extends p1.T15112m5c { int j = super.i; // ambiguous between a.i and b.i } }] } {FAIL}
super.field is (almost) ((S)this).fieldTest Case: 15.11.2-meaning-7Expected Result: PASS
Regression Test:
tcltest::test 15.11.2-meaning-6 { super.field is (almost) ((S)this).field } { compile [saveas p1/T15112m6c.java { package p1; class T15112m6a { protected int i; } interface T15112m6b { int i = 1; } public class T15112m6c extends T15112m6a implements T15112m6b {} }] [saveas T15112m6d.java { class T15112m6d extends p1.T15112m6c { int j = ((p1.T15112m6c) this).i; // a.i not accessible, so this is b.i } }] } {PASS}
super.field is (almost) ((S)this).fieldTest Case: 15.11.2-meaning-8Expected Result: PASS
Regression Test:
tcltest::test 15.11.2-meaning-7 { super.field is (almost) ((S)this).field } { empty_class T15112m7 { class A { private int i; } class B extends A { Object i; int j = super.i; int k = ((A) this).i; } } } {PASS}
T.super.field is (almost) ((S)T.this).fieldTest Case: 15.11.2-meaning-9Expected Result: PASS
Regression Test:
tcltest::test 15.11.2-meaning-8 { T.super.field is (almost) ((S)T.this).field } { empty_class T15112m8 { class A { int i; } class B extends A { Object i; int j = B.super.i; int k = ((A) B.this).i; } } } {PASS}
T.super.field is (almost) ((S)T.this).fieldTest Case: 15.11.2-meaning-10Expected Result: PASS
Regression Test:
tcltest::test 15.11.2-meaning-9 { T.super.field is (almost) ((S)T.this).field } { compile [saveas p1/T15112m9a.java { package p1; public class T15112m9a { protected int i; } }] [saveas T15112m9b.java { class T15112m9b extends p1.T15112m9a { Object i; int j = T15112m9b.super.i; } }] } {PASS}
T.super.field is (almost) ((S)T.this).fieldTest Case: 15.11.2-meaning-11Expected Result: FAIL
Regression Test:
tcltest::test 15.11.2-meaning-10 { T.super.field is (almost) ((S)T.this).field } { compile [saveas p1/T15112m10a.java { package p1; public class T15112m10a { protected int i; } }] [saveas T15112m10b.java { class T15112m10b extends p1.T15112m10a { Object i; // oops, wrong qualifier for instance field access int j = ((p1.T15112m10a) T15112m10b.this).i; } }] } {FAIL}
T.super.field is (almost) ((S)T.this).fieldTest Case: 15.11.2-meaning-12Expected Result: PASS
Regression Test:
tcltest::test 15.11.2-meaning-11 { T.super.field is (almost) ((S)T.this).field } { compile [saveas p1/T15112m11a.java { package p1; public class T15112m11a { protected static int i; } }] [saveas T15112m11b.java { class T15112m11b extends p1.T15112m11a { Object i; int j = T15112m11b.super.i; int k = ((p1.T15112m11a) T15112m11b.this).i; } }] } {PASS}
T.super.field is (almost) ((S)T.this).fieldTest Case: 15.11.2-meaning-13Expected Result: FAIL
Regression Test:
tcltest::test 15.11.2-meaning-12 { T.super.field is (almost) ((S)T.this).field } { compile [saveas p1/T15112m12c.java { package p1; class T15112m12a { protected int i; } interface T15112m12b { int i = 1; } public class T15112m12c extends T15112m12a implements T15112m12b {} }] [saveas T15112m12d.java { class T15112m12d extends p1.T15112m12c { int j = T15112m12d.super.i; // ambiguous between a.i and b.i } }] } {FAIL}
T.super.field is (almost) ((S)T.this).fieldTest Case: 15.11.2-meaning-14Expected Result: PASS
Regression Test:
tcltest::test 15.11.2-meaning-13 { T.super.field is (almost) ((S)T.this).field } { compile [saveas p1/T15112m13c.java { package p1; class T15112m13a { protected int i; } interface T15112m13b { int i = 1; } public class T15112m13c extends T15112m13a implements T15112m13b {} }] [saveas T15112m13d.java { class T15112m13d extends p1.T15112m13c { // a.i not accessible, so this is b.i int j = ((p1.T15112m13c) T15112m13d.this).i; } }] } {PASS}
T.super.field is (almost) ((S)T.this).fieldTest Case: 15.11.2-meaning-15Expected Result: PASS
Regression Test:
tcltest::test 15.11.2-meaning-14 { T.super.field is (almost) ((S)T.this).field } { empty_class T15112m14 { class A { private int i; } class B extends A { Object i; int j = B.super.i; int k = ((A) B.this).i; } } } {PASS}
T.super.field is (almost) ((S)T.this).fieldTest Case: 15.11.2-meaning-16Expected Result: FAIL
Regression Test:
tcltest::test 15.11.2-meaning-15 { T.super.field is (almost) ((S)T.this).field } { empty_class T15112m15 { static class A { static int i; } static class B extends A { static class Inner { int i = B.super.i; } } } } {FAIL}
T.super.field is (almost) ((S)T.this).fieldTest Case: 15.11.2-meaning-17Expected Result: FAIL
Regression Test:
tcltest::test 15.11.2-meaning-16 { T.super.field is (almost) ((S)T.this).field } { empty_class T15112m16 { static class A { static int i; } static class B extends A { static class Inner { int i = ((A) B.this).i; } } } } {FAIL}
T.super.field is (almost) ((S)T.this).fieldExpected Result: PASS
Regression Test:
tcltest::test 15.11.2-meaning-17 { T.super.field is (almost) ((S)T.this).field } { empty_class T15112m17 { class A { int i; } class S { Object i; } class B extends A { Object i; class Inner extends S { Object i; int j = B.super.i; int k = ((A) B.this).i; } } } } {PASS}
tests/jls/expressions/method-invocation-expressions/determine-class-or-interface
The type in the qualified super is not obscuredTest Case: 15.12.1-syntax-2Expected Result: PASS
Regression Test:
tcltest::test 15.12.1-syntax-1 { The type in the qualified super is not obscured } { empty_class T15121s1 { int T15121s1; // obscure the class name from normal expressions String s = T15121s1.super.toString(); } } {PASS}
The type in qualified super may not be a primitive typeTest Case: 15.12.1-syntax-3Expected Result: FAIL
Regression Test:
tcltest::test 15.12.1-syntax-2 { The type in qualified super may not be a primitive type } { empty_class T15121s2 { Object o = int.super.toString(); } } {FAIL}
The type in qualified super may not be an array typeTest Case: 15.12.1-syntax-4Expected Result: FAIL
Regression Test:
tcltest::test 15.12.1-syntax-3 { The type in qualified super may not be an array type } { empty_class T15121s3 { Object o = int[].super.toString(); } } {FAIL}
The type in qualified super may not be an array typeTest Case: 15.12.1-syntax-5Expected Result: FAIL
Regression Test:
tcltest::test 15.12.1-syntax-4 { The type in qualified super may not be an array type } { empty_class T15121s4 { Object o = T15121s4[].super.toString(); } } {FAIL}
The type in qualified super may not be nullTest Case: 15.12.1-syntax-6Expected Result: FAIL
Regression Test:
tcltest::test 15.12.1-syntax-5 { The type in qualified super may not be null } { empty_class T15121s5 { Object o = null.super.toString(); } } {FAIL}
The type in qualified super may not be voidTest Case: 15.12.1-syntax-7Expected Result: FAIL
Regression Test:
tcltest::test 15.12.1-syntax-6 { The type in qualified super may not be void } { empty_class T15121s6 { Object o = void.super.toString(); } } {FAIL}
The type in qualified super may not be a literalTest Case: 15.12.1-syntax-8Expected Result: FAIL
Regression Test:
tcltest::test 15.12.1-syntax-7 { The type in qualified super may not be a literal } { compile [saveas T15121s7a.java { class T15121s7a { int i; } class T15121s7b extends T15121s7a { Object o = 1 .super.toString(); } }] } {FAIL}
The type in qualified super may not be a literalTest Case: 15.12.1-syntax-9Expected Result: FAIL
Regression Test:
tcltest::test 15.12.1-syntax-8 { The type in qualified super may not be a literal } { compile [saveas T15121s8a.java { class T15121s8a { int i; } class T15121s8b extends T15121s8a { Object o = "1".super.toString(); } }] } {FAIL}
The type in qualified super must enclose the current typeTest Case: 15.12.1-syntax-10Expected Result: FAIL
Regression Test:
tcltest::test 15.12.1-syntax-9 { The type in qualified super must enclose the current type } { empty_class T15121s9 { static class A { static int i() { return 1; } } class B extends A {} int j = B.super.i(); } } {FAIL}
The type in qualified super must enclose the current typeTest Case: 15.12.1-type-1Expected Result: FAIL
Regression Test:
tcltest::test 15.12.1-syntax-10 { The type in qualified super must enclose the current type } { empty_class T15121s10 { interface A { int i(); } interface B extends A { class C { int j = B.super.i(); // B encloses C, but is not a class } } } } {FAIL}
The type to search for plain MethodName is the innermost enclosing type which contains a method by that nameTest Case: 15.12.1-type-2Expected Result: FAIL
Regression Test:
tcltest::test 15.12.1-type-1 { The type to search for plain MethodName is the innermost enclosing type which contains a method by that name } { empty_class T15121t1 { void m() {} class A { void m(int i) {} { m(); } // A is searched, not T15121t1; and A.m() does not exist } } } {FAIL}
The type to search for plain MethodName is the innermost enclosing type which contains a method by that nameTest Case: 15.12.1-type-3Expected Result: PASS
Regression Test:
tcltest::test 15.12.1-type-2 { The type to search for plain MethodName is the innermost enclosing type which contains a method by that name } { empty_class T15121t2 { void m() {} class A { void m(int i) {} { m(1); } // A is searched, not T15121t1; and A.m(int) exists } } } {PASS}
The type to search for TypeName.MethodName is TypeName, which must be a classTest Case: 15.12.1-type-4Expected Result: FAIL
Regression Test:
tcltest::test 15.12.1-type-3 { The type to search for TypeName.MethodName is TypeName, which must be a class } { empty_class T15121t3 { static class A extends T15121t3 { static void m() {} { T15121t3.m(); } } } } {FAIL}
The type to search for TypeName.MethodName is TypeName, which must be a classTest Case: 15.12.1-type-5Expected Result: FAIL
Regression Test:
tcltest::test 15.12.1-type-4 { The type to search for TypeName.MethodName is TypeName, which must be a class } { empty_class T15121t4 { interface A { void m(); } { A.m(); } } } {FAIL}
The type to search for FieldName.MethodName is the compile-time type of FieldNameTest Case: 15.12.1-type-6Expected Result: FAIL
Regression Test:
tcltest::test 15.12.1-type-5 { The type to search for FieldName.MethodName is the compile-time type of FieldName } { empty_class T15121t5 { class A { void m() {} } class B extends A { void m(int i) {} } { A a = new B(); a.m(1); // search for A.m(int) fails, even though a has runtime // type B, and B.m(int) exists } } } {FAIL}
The type to search for primary.MethodName is the compile-time type of primaryTest Case: 15.12.1-type-7Expected Result: FAIL
Regression Test:
tcltest::test 15.12.1-type-6 { The type to search for primary.MethodName is the compile-time type of primary } { empty_class T15121t6 { class A { void m() {} } class B extends A { void m(int i) {} } { ((A)new B()).m(1); // search for A.m(int) fails, even though // ((A)new B()) has runtime type B, and B.m(int) exists } } } {FAIL}
The type to search for super.MethodName is the superclass, which must existTest Case: 15.12.1-type-8Expected Result: FAIL
Regression Test:
tcltest::test 15.12.1-type-7 { The type to search for super.MethodName is the superclass, which must exist } { empty_class T15121t7 { interface A { int m(); } interface B extends A { int i = super.m(); // A is not a superclass, but a superinterface } } } {FAIL}
The type to search for super.MethodName is the superclass, which must existTest Case: 15.12.1-type-9Expected Result: FAIL
Regression Test:
tcltest::test 15.12.1-type-8 { The type to search for super.MethodName is the superclass, which must exist } { empty_class T15121t8 { interface A { String s = super.toString(); // interfaces do not extend Object } } } {FAIL}
The type to search for super.MethodName is the superclass, which must existTest Case: 15.12.1-type-10Expected Result: FAIL
Regression Test:
tcltest::test 15.12.1-type-9 { The type to search for super.MethodName is the superclass, which must exist } { empty_class T15121t9 { class A { void m() {} } class B extends A { void m(int i) {} { super.m(1); } // A.m(int) does not exist } } } {FAIL}
The type to search for super.MethodName is the superclass, which must existTest Case: 15.12.1-type-11Expected Result: PASS
Regression Test:
tcltest::test 15.12.1-type-10 { The type to search for super.MethodName is the superclass, which must exist } { empty_class T15121t10 { class A { void m() {} } class B extends A { { super.m(); } } } } {PASS}
The type to search for ClassName.super.MethodName is the superclass of ClassNameTest Case: 15.12.1-type-12Expected Result: FAIL
Regression Test:
tcltest::test 15.12.1-type-11 { The type to search for ClassName.super.MethodName is the superclass of ClassName } { empty_class T15121t11 { interface A { int m(); } interface B extends A { int i = B.super.m(); // A is not a superclass, but a superinterface } } } {FAIL}
The type to search for ClassName.super.MethodName is the superclass of ClassNameTest Case: 15.12.1-type-13Expected Result: FAIL
Regression Test:
tcltest::test 15.12.1-type-12 { The type to search for ClassName.super.MethodName is the superclass of ClassName } { empty_class T15121t12 { interface A { String s = A.super.toString(); // interfaces do not extend Object } } } {FAIL}
The type to search for ClassName.super.MethodName is the superclass of ClassNameTest Case: 15.12.1-type-14Expected Result: FAIL
Regression Test:
tcltest::test 15.12.1-type-13 { The type to search for ClassName.super.MethodName is the superclass of ClassName } { empty_class T15121t13 { class A { void m() {} } class B extends A { void m(int i) {} { B.super.m(1); } // A.m(int) does not exist } } } {FAIL}
The type to search for ClassName.super.MethodName is the superclass of ClassNameExpected Result: PASS
Regression Test:
tcltest::test 15.12.1-type-14 { The type to search for ClassName.super.MethodName is the superclass of ClassName } { empty_class T15121t14 { class A { void m() {} } class B extends A { { B.super.m(); } } } } {PASS}
tests/jls/expressions/method-invocation-expressions/determine-method-signature/applicable-and-accessible
example code, should fail since two(int) is privateTest Case: 15.12.2.1-jls-example-2Expected Result: FAIL
Regression Test:
tcltest::test 15.12.2.1-jls-example-1 { example code, should fail since two(int) is private } { compile [saveas T151221je1.java { class Doubler { static int two() { return two(1); } private static int two(int i) { return 2*i; } } class Test extends Doubler { public static long two(long j) {return j+j; } public static void main(String[] args) { System.out.println(two(3)); System.out.println(Doubler.two(3)); // compile-time error } } }] } {FAIL}
example code, The type of the literal 37 is int, and int cannot be converted to byte by method invocation conversionTest Case: 15.12.2.1-accessibility-constructor-1Expected Result: FAIL
Regression Test:
tcltest::test 15.12.2.1-jls-example-2 { example code, The type of the literal 37 is int, and int cannot be converted to byte by method invocation conversion } { compile [saveas T151221je2.java { class ColoredPoint { int x, y; byte color; void setColor(byte color) { this.color = color; } } class Test { public static void main(String[] args) { ColoredPoint cp = new ColoredPoint(); byte color = 37; cp.setColor(color); cp.setColor(37); // compile-time error } } }] } {FAIL}
A constructor must be applicable and accessible, in this case the constructor is private so it is not accessible even though it is applicableTest Case: 15.12.2.1-accessibility-constructor-2Expected Result: PASS
Regression Test:
tcltest::test 15.12.2.1-accessibility-constructor-1 { A constructor must be applicable and accessible, in this case the constructor is private so it is not accessible even though it is applicable } { compile [saveas T151221ac1.java { class T151221ac1 { public T151221ac1(String s) {} private T151221ac1(Integer i) {} } class T151221ac1_Test { Object o = new T151221ac1(null); } }] } {PASS}
A private constructor is not accessibleTest Case: 15.12.2.1-accessibility-method-1Expected Result: PASS
Regression Test:
tcltest::test 15.12.2.1-accessibility-constructor-2 { A private constructor is not accessible } { compile [saveas T151221ac2.java { class T151221ac2 { public T151221ac2(String x, String y) {} private T151221ac2(String x, char[] y) {} } class T151221ac2_Test { Object o = new T151221ac2("hi", null); } }] } {PASS}
A method must be applicable and accessible, in this case the method is private so it is not accessible even though it is applicableTest Case: 15.12.2.1-accessibility-method-2Expected Result: PASS
Regression Test:
tcltest::test 15.12.2.1-accessibility-method-1 { A method must be applicable and accessible, in this case the method is private so it is not accessible even though it is applicable } { compile [saveas T151221am1.java { class T151221am1 { public int foo(String s) { return 0; } private int foo(Integer i) { return 0; } } class T151221am1_Test { int i = new T151221am1().foo(null); } }] } {PASS}
A method must be applicable and accessibleTest Case: 15.12.2.1-accessibility-method-3Expected Result: FAIL
Regression Test:
tcltest::test 15.12.2.1-accessibility-method-2 { A method must be applicable and accessible } { compile [saveas p1/T151221am2c.java { package p1; abstract class T151221am2a { abstract void m(); // note non-public accessibility } interface T151221am2b { void m() throws Exception; } public abstract class T151221am2c extends T151221am2a implements T151221am2b { // inherits 2 versions of m() } }] [saveas T151221am2d.java { abstract class T151221am2d extends p1.T151221am2c { // a concrete subclass of c will necessarily have an implementation of m // that does not throw, in order to implement a.m; but only b.m was // inherited here because of accessibility. Since b.m throws, this call // is illegal { m(); } } }] } {FAIL}
A method must be applicable and accessibleTest Case: 15.12.2.1-accessibility-method-4Expected Result: PASS
Regression Test:
tcltest::test 15.12.2.1-accessibility-method-3 { A method must be applicable and accessible } { compile [saveas p1/T151221am3c.java { package p1; abstract class T151221am3a { abstract void m(); // note non-public accessibility } interface T151221am3b { void m() throws Exception; } public abstract class T151221am3c extends T151221am3a implements T151221am3b { // inherits 2 versions of m() } }] [saveas T151221am3d.java { abstract class T151221am3d extends p1.T151221am3c { // a concrete subclass of c will necessarily have an implementation of m // that does not throw, in order to implement a.m; but only b.m was // inherited here because of accessibility. Since b.m throws, the catch // clause is reachable { try { m(); } catch (Exception e) { } } } }] } {PASS}
A method must be applicable and accessibleTest Case: 15.12.2.1-accessibility-method-5Expected Result: FAIL
Regression Test:
tcltest::test 15.12.2.1-accessibility-method-4 { A method must be applicable and accessible } { compile [saveas p1/T151221am4c.java { package p1; abstract class T151221am4a { abstract void m(); // note non-public accessibility } interface T151221am4b { void m() throws Exception; } public abstract class T151221am4c extends T151221am4a implements T151221am4b { // inherits 2 versions of m() } }] [saveas T151221am4d.java { class T151221am4d { // a concrete subclass of c will necessarily have an implementation of m // that does not throw, in order to implement a.m; but since only b.m is // accessible here, and it throws, this call is illegal void m(p1.T151221am4c t) { t.m(); } } }] } {FAIL}
A method must be applicable and accessibleTest Case: 15.12.2.1-accessibility-method-6Expected Result: PASS
Regression Test:
tcltest::test 15.12.2.1-accessibility-method-5 { A method must be applicable and accessible } { compile [saveas p1/T151221am5c.java { package p1; abstract class T151221am5a { abstract void m(); // note non-public accessibility } interface T151221am5b { void m() throws Exception; } public abstract class T151221am5c extends T151221am5a implements T151221am5b { // inherits 2 versions of m() } }] [saveas T151221am5d.java { class T151221am5d { // a concrete subclass of c will necessarily have an implementation of m // that does not throw, in order to implement a.m; but since only b.m is // accessible here, the catch clause is reachable void m(p1.T151221am5c t) { try { t.m(); } catch (Exception e) { } } } }] } {PASS}
A method must be applicable and accessibleTest Case: 15.12.2.1-accessibility-method-7Expected Result: PASS
Regression Test:
tcltest::test 15.12.2.1-accessibility-method-6 { A method must be applicable and accessible } { compile [saveas p1/T151221am6a.java { package p1; public class T151221am6a { public static class E1 extends Exception {} public static class E2 extends Exception {} public static abstract class A { protected abstract void m() throws E1; // note non-public accessibility } } }] [saveas T151221am6b.java { class T151221am6b extends p1.T151221am6a { interface B { void m() throws E2; } static abstract class C extends A implements B { // c inherits two versions of m } static abstract class D extends C { // likewise, d inherits two versions of m, but protected accessibility // rules state that access to a.m is only possible when the qualifier // is d or below. When both methods are accessible, the method cannot // throw either exception; but alone, b.m may throw. { m(); // merged throws clause try { ((C) this).m(); // only b.m accessible } catch (E2 e) { } } } } }] } {PASS}
A method must be applicable and accessibleTest Case: 15.12.2.1-accessibility-method-8Expected Result: FAIL
Regression Test:
tcltest::test 15.12.2.1-accessibility-method-7 { A method must be applicable and accessible } { compile [saveas p1/T151221am7a.java { package p1; public class T151221am7a { public static class E1 extends Exception {} public static class E2 extends Exception {} public static abstract class A { protected abstract void m() throws E1; // note non-public accessibility } } }] [saveas T151221am7b.java { class T151221am7b extends p1.T151221am7a { interface B { void m() throws E2; } static abstract class C extends A implements B { // c inherits two versions of m } static abstract class D extends C { // likewise, d inherits two versions of m, but protected accessibility // rules state that access to a.m is only possible when the qualifier // is d or below. When both methods are accessible, the method cannot // throw either exception; but alone, b.m may throw. { try { m(); // merged throws clause } catch (E2 e) { } } } } }] } {FAIL}
A method must be applicable and accessibleExpected Result: FAIL
Regression Test:
tcltest::test 15.12.2.1-accessibility-method-8 { A method must be applicable and accessible } { compile [saveas p1/T151221am8a.java { package p1; public class T151221am8a { public static class E1 extends Exception {} public static class E2 extends Exception {} public static abstract class A { protected abstract void m() throws E1; // note non-public accessibility } } }] [saveas T151221am8b.java { class T151221am8b extends p1.T151221am8a { interface B { void m() throws E2; } static abstract class C extends A implements B { // c inherits two versions of m } static abstract class D extends C { // likewise, d inherits two versions of m, but protected accessibility // rules state that access to a.m is only possible when the qualifier // is d or below. When both methods are accessible, the method cannot // throw either exception; but alone, b.m may throw. { ((C) this).m(); // only b.m accessible } } } }] } {FAIL}
tests/jls/expressions/method-invocation-expressions/determine-method-signature/choose-most-specific
More than one maximally specific method is ambiguous, and illegal. Here, A.foo(String) and T151222a1.foo(Object) are both maximally specific, as the latter does not override the former.Test Case: 15.12.2.2-ambiguous-2Expected Result: FAIL
Regression Test:
tcltest::test 15.12.2.2-ambiguous-1 { More than one maximally specific method is ambiguous, and illegal. Here, A.foo(String) and T151222a1.foo(Object) are both maximally specific, as the latter does not override the former. } { compile [saveas T151222a1.java { interface A { void foo(String s); } abstract class T151222a1 implements A { void foo(Object o) {} { foo(""); } } }] } {FAIL}
More than one maximally specific method is ambiguous, and illegal. Here, A.foo(String) and B.foo(Object) are both maximally specific, as the latter does not override the former.Test Case: 15.12.2.2-ambiguous-3Expected Result: FAIL
Regression Test:
tcltest::test 15.12.2.2-ambiguous-2 { More than one maximally specific method is ambiguous, and illegal. Here, A.foo(String) and B.foo(Object) are both maximally specific, as the latter does not override the former. } { compile [saveas T151222a2.java { interface A { void foo(String s); } interface B { void foo(Object o); } abstract class T151222a2 implements A, B { { foo(""); } } }] } {FAIL}
More than one maximally specific method is ambiguous, and illegal. Here, A.foo(String) and T151222a3.foo(Object) are both maximally specific, as the latter does not override the former.Test Case: 15.12.2.2-ambiguous-4Expected Result: FAIL
Regression Test:
tcltest::test 15.12.2.2-ambiguous-3 { More than one maximally specific method is ambiguous, and illegal. Here, A.foo(String) and T151222a3.foo(Object) are both maximally specific, as the latter does not override the former. } { compile [saveas T151222a3.java { class A { void foo(String s) {} } abstract class T151222a3 extends A { void foo(Object o) {} { foo(""); } } }] } {FAIL}
When multiple maximally specific methods have the same signature, any non-abstract version is chosenTest Case: 15.12.2.2-ambiguous-5Expected Result: PASS
Regression Test:
tcltest::test 15.12.2.2-ambiguous-4 { When multiple maximally specific methods have the same signature, any non-abstract version is chosen } { compile [saveas T151222a4a.java { class T151222a4a { public void m() {} } interface T151222a4b { void m(); } class T151222a4c extends T151222a4a implements T151222a4b { { m(); } } }] } {PASS}
When multiple maximally specific methods have the same signature, and all are abstract, it is arbitrary which is chosen, although the throws clauses are mergedTest Case: 15.12.2.2-ambiguous-6Expected Result: PASS
Regression Test:
tcltest::test 15.12.2.2-ambiguous-5 { When multiple maximally specific methods have the same signature, and all are abstract, it is arbitrary which is chosen, although the throws clauses are merged } { compile [saveas T151222a4a.java { abstract class T151222a5a { public abstract void m(); } interface T151222a5b { void m(); } abstract class T151222a5c extends T151222a5a implements T151222a5b { { m(); } } }] } {PASS}
When multiple maximally specific methods have the same signature, and all are abstract, it is arbitrary which is chosen, although the throws clauses are mergedTest Case: 15.12.2.2-ambiguous-7Expected Result: PASS
Regression Test:
tcltest::test 15.12.2.2-ambiguous-6 { When multiple maximally specific methods have the same signature, and all are abstract, it is arbitrary which is chosen, although the throws clauses are merged } { compile [saveas T151222a6a.java { class E1 extends Exception {} class E2 extends Exception {} class E3 extends Exception {} abstract class T151222a6a { public abstract void m() throws E1, E2; } interface T151222a6b { void m() throws E2, E3; } abstract class T151222a6c extends T151222a6a implements T151222a6b { { try { m(); // whether a.m() or b.m() is chosen, it cannot throw E1 or E3 } catch (E2 e2) { } } } }] } {PASS}
Example where accessibility makes what would otherwise be ambiguous maximally specific methods with conflicting signatures have a single resolutionTest Case: 15.12.2.2-ambiguous-8Expected Result: PASS
Regression Test:
tcltest::test 15.12.2.2-ambiguous-7 { Example where accessibility makes what would otherwise be ambiguous maximally specific methods with conflicting signatures have a single resolution } { compile [saveas p1/T151222a7a.java { package p1; public class T151222a7a { void m(Object o, String s) {} } }] [saveas T151222a7b.java { interface T151222a7b { void m(String s, Object o); } abstract class T151222a7c extends p1.T151222a7a implements T151222a7b { { m("", ""); } // only b.m(String, Object) is accessible } }] } {PASS}
Example where accessibility makes what would otherwise be ambiguous maximally specific methods with conflicting signatures have a single resolutionTest Case: 15.12.2.2-ambiguous-9Expected Result: PASS
Regression Test:
tcltest::test 15.12.2.2-ambiguous-8 { Example where accessibility makes what would otherwise be ambiguous maximally specific methods with conflicting signatures have a single resolution } { compile [saveas p1/T151222a8a.java { package p1; public class T151222a8a { protected void m(Object o, String s) {} } }] [saveas T151222a8b.java { interface T151222a8b { void m(String s, Object o); } abstract class T151222a8c extends p1.T151222a8a implements T151222a8b {} abstract class T151222a8d extends T151222a8c { // Even though d inherits two versions of m, the protected a.m // is only accessible if the qualifying expression is type d or lower void foo(T151222a8c c) { c.m("", ""); } // only b.m(String, Object) is accessible } }] } {PASS}
Example where accessibility makes what would otherwise be ambiguous maximally specific methods with conflicting signatures have a single resolutionTest Case: 15.12.2.2-ambiguous-10Expected Result: FAIL
Regression Test:
tcltest::test 15.12.2.2-ambiguous-9 { Example where accessibility makes what would otherwise be ambiguous maximally specific methods with conflicting signatures have a single resolution } { compile [saveas p1/T151222a9a.java { package p1; public class T151222a9a { protected void m(Object o, String s) {} } }] [saveas T151222a9b.java { interface T151222a9b { void m(String s, Object o); } abstract class T151222a9c extends p1.T151222a9a implements T151222a9b {} abstract class T151222a9d extends T151222a9c { // Even though d inherits two versions of m, the protected a.m // is only accessible if the qualifying expression is type d or lower void foo(T151222a9d d) { d.m("", ""); } // both a.m(Object, String) and b.m(String, Object) are accessible } }] } {FAIL}
When multiple maximally specific methods have the same signature, and all are abstract, it is arbitrary which is chosen, although the throws clauses are mergedTest Case: 15.12.2.2-ambiguous-11Expected Result: FAIL
Regression Test:
tcltest::test 15.12.2.2-ambiguous-10 { When multiple maximally specific methods have the same signature, and all are abstract, it is arbitrary which is chosen, although the throws clauses are merged } { compile [saveas T151222a10a.java { class E1 extends Exception {} class E2 extends Exception {} class E3 extends Exception {} abstract class T151222a10a { public abstract void m() throws E1, E2; } interface T151222a10b { void m() throws E2, E3; } abstract class T151222a10c extends T151222a10a implements T151222a10b { { try { m(); // whether a.m() or b.m() is chosen, it cannot throw E1 or E3 } catch (E1 e1) { } catch (E2 e2) { } } } }] } {FAIL}
When multiple maximally specific methods have the same signature, and all are abstract, it is arbitrary which is chosen, although the throws clauses are mergedTest Case: 15.12.2.2-ambiguous-12Expected Result: FAIL
Regression Test:
tcltest::test 15.12.2.2-ambiguous-11 { When multiple maximally specific methods have the same signature, and all are abstract, it is arbitrary which is chosen, although the throws clauses are merged } { compile [saveas T151222a11a.java { class E1 extends Exception {} class E2 extends Exception {} class E3 extends Exception {} abstract class T151222a11a { public abstract void m() throws E1, E2; } interface T151222a11b { void m() throws E2, E3; } abstract class T151222a11c extends T151222a11a implements T151222a11b { { try { m(); // whether a.m() or b.m() is chosen, it cannot throw E1 or E3 } catch (E2 e2) { } catch (E3 e3) { } } } }] } {FAIL}
When multiple maximally specific methods have the same signature, and all are abstract, it is arbitrary which is chosen, although the throws clauses are mergedTest Case: 15.12.2.2-ambiguous-13Expected Result: PASS
Regression Test:
tcltest::test 15.12.2.2-ambiguous-12 { When multiple maximally specific methods have the same signature, and all are abstract, it is arbitrary which is chosen, although the throws clauses are merged } { compile [saveas T151222a12a.java { class E1 extends Exception {} class E2 extends E1 {} class E3 extends Exception {} class E4 extends E3 {} abstract class T151222a12a { public abstract void m() throws E1, E4; } interface T151222a12b { void m() throws E2, E3; } abstract class T151222a12c extends T151222a12a implements T151222a12b { { try { m(); // whether a.m() or b.m() is chosen, it cannot throw E1 or E3 // directly; but can throw something assignable to E1 or E3 } catch (E2 e2) { } catch (E4 e4) { } } } }] } {PASS}
When multiple maximally specific methods have the same signature, and all are abstract, it is arbitrary which is chosen, although the throws clauses are mergedTest Case: 15.12.2.2-ambiguous-14Expected Result: PASS
Regression Test:
tcltest::test 15.12.2.2-ambiguous-13 { When multiple maximally specific methods have the same signature, and all are abstract, it is arbitrary which is chosen, although the throws clauses are merged } { compile [saveas T151222a13a.java { class E1 extends Exception {} class E2 extends E1 {} class E3 extends Exception {} class E4 extends E3 {} abstract class T151222a13a { public abstract void m() throws E1, E4; } interface T151222a13b { void m() throws E2, E3; } abstract class T151222a13c extends T151222a13a implements T151222a13b { { try { m(); // whether a.m() or b.m() is chosen, it cannot throw E1 or E3 // directly; but can throw something assignable to E1 or E3 } catch (E1 e1) { } catch (E3 e3) { } } } }] } {PASS}
When multiple maximally specific methods have the same signature, and all are abstract, it is arbitrary which is chosen, although the throws clauses are mergedTest Case: 15.12.2.2-ambiguous-15Expected Result: PASS
Regression Test:
tcltest::test 15.12.2.2-ambiguous-14 { When multiple maximally specific methods have the same signature, and all are abstract, it is arbitrary which is chosen, although the throws clauses are merged } { empty_class T151222a14 { class E1 extends Exception {} class E2 extends Exception {} abstract class C1 { abstract void m() throws E1; // note non-public accessibility } interface I { void m() throws E2; } abstract class C2 extends C1 implements I { { m(); } } } } {PASS}
When multiple maximally specific methods have the same signature, and all are abstract, it is arbitrary which is chosen, although the throws clauses are mergedTest Case: 15.12.2.2-ambiguous-16Expected Result: FAIL
Regression Test:
tcltest::test 15.12.2.2-ambiguous-15 { When multiple maximally specific methods have the same signature, and all are abstract, it is arbitrary which is chosen, although the throws clauses are merged } { empty_class T151222a15 { class E1 extends Exception {} class E2 extends Exception {} abstract class C1 { abstract void m() throws E1; // note non-public accessibility } interface I { void m() throws E2; } abstract class C2 extends C1 implements I { { try { m(); } catch (E1) { } } } } } {FAIL}
When multiple maximally specific methods have the same signature, and all are abstract, it is arbitrary which is chosen, although the throws clauses are mergedTest Case: 15.12.2.2-ambiguous-17Expected Result: FAIL
Regression Test:
tcltest::test 15.12.2.2-ambiguous-16 { When multiple maximally specific methods have the same signature, and all are abstract, it is arbitrary which is chosen, although the throws clauses are merged } { empty_class T151222a16 { class E1 extends Exception {} class E2 extends Exception {} abstract class C1 { abstract void m() throws E1; // note non-public accessibility } interface I { void m() throws E2; } abstract class C2 extends C1 implements I { { try { m(); } catch (E2 e) { } } } } } {FAIL}
More than one maximally specific method is ambiguous, and illegal. Here, T151222a17a.foo(int) and T151222a17b.foo(long) are both maximally specific, as the latter does not hide the former.Test Case: 15.12.2.2-ambiguous-18Expected Result: FAIL
Regression Test:
tcltest::test 15.12.2.2-ambiguous-17 { More than one maximally specific method is ambiguous, and illegal. Here, T151222a17a.foo(int) and T151222a17b.foo(long) are both maximally specific, as the latter does not hide the former. } { compile [saveas T151222a17a.java { class T151222a17a { static void foo(int i) {} } class T151222a17b extends T151222a17a { static void foo(long l) {} { foo(0); } } }] } {FAIL}
Example where accessibility makes what would otherwise be ambiguous maximally specific methods with conflicting signatures have a single resolutionTest Case: 15.12.2.2-ambiguous-19Expected Result: FAIL
Regression Test:
tcltest::test 15.12.2.2-ambiguous-18 { Example where accessibility makes what would otherwise be ambiguous maximally specific methods with conflicting signatures have a single resolution } { compile [saveas p1/T151222a18a.java { package p1; public class T151222a18a { protected void m(Object o, String s) {} } }] [saveas T151222a18b.java { interface T151222a18b { void m(String s, Object o); } abstract class T151222a18c extends p1.T151222a18a implements T151222a18b {} abstract class T151222a18d extends T151222a18c { // Even though d inherits two versions of m, the protected a.m // is only accessible if the qualifying expression is type d or lower void foo() { super.m("", ""); } // both a.m(Object, String) and b.m(String, Object) are accessible } }] } {FAIL}
Example where accessibility makes what would otherwise be ambiguous maximally specific methods with conflicting signatures have a single resolutionTest Case: 15.12.2.2-ambiguous-20Expected Result: FAIL
Regression Test:
tcltest::test 15.12.2.2-ambiguous-19 { Example where accessibility makes what would otherwise be ambiguous maximally specific methods with conflicting signatures have a single resolution } { compile [saveas p1/T151222a19a.java { package p1; public class T151222a19a { protected void m(Object o, String s) {} public void m(String s, Object o) {} } }] [saveas T151222a19b.java { class T151222a19b extends p1.T151222a19a { // Even though b inherits two versions of m, the protected a.m // is only accessible if the qualifying expression is type b or lower void foo() { super.m("", ""); } // both a.m(Object, String) and a.m(String, Object) are accessible } }] } {FAIL}
Example where accessibility makes what would otherwise be ambiguous maximally specific methods with conflicting signatures have a single resolutionTest Case: 15.12.2.2-ambiguous-21Expected Result: FAIL
Regression Test:
tcltest::test 15.12.2.2-ambiguous-20 { Example where accessibility makes what would otherwise be ambiguous maximally specific methods with conflicting signatures have a single resolution } { compile [saveas p1/T151222a20a.java { package p1; public class T151222a20a { protected void m(Object o, String s) {} public void m(String s, Object o) {} } }] [saveas T151222a20b.java { class T151222a20b extends p1.T151222a20a { // Even though b inherits two versions of m, the protected a.m // is only accessible if the qualifying expression is type b or lower void foo(T151222a20b t) { t.m("", ""); } // both a.m(Object, String) and a.m(String, Object) are accessible } }] } {FAIL}
Example where accessibility makes what would otherwise be ambiguous maximally specific methods with conflicting signatures have a single resolutionTest Case: 15.12.2.2-ambiguous-22Expected Result: PASS
Regression Test:
tcltest::test 15.12.2.2-ambiguous-21 { Example where accessibility makes what would otherwise be ambiguous maximally specific methods with conflicting signatures have a single resolution } { compile [saveas p1/T151222a21a.java { package p1; public class T151222a21a { protected void m(Object o, String s) {} public void m(String s, Object o) {} } }] [saveas T151222a21b.java { class T151222a21b extends p1.T151222a21a { // Even though b inherits two versions of m, the protected a.m // is only accessible if the qualifying expression is type b or lower void foo(p1.T151222a21a t) { t.m("", ""); } // only a.m(String, Object) is accessible } }] } {PASS}
Example where accessibility makes what would otherwise be ambiguous maximally specific methods with conflicting signatures have a single resolutionTest Case: 15.12.2.2-ambiguous-23Expected Result: FAIL
Regression Test:
tcltest::test 15.12.2.2-ambiguous-22 { Example where accessibility makes what would otherwise be ambiguous maximally specific methods with conflicting signatures have a single resolution } { compile [saveas p1/T151222a22a.java { package p1; public class T151222a22a { protected static void m(Object o, String s) {} public void m(String s, Object o) {} } }] [saveas T151222a22b.java { class T151222a22b extends p1.T151222a22a { // The protected a.m is accessible since it is static void foo(p1.T151222a22a t) { t.m("", ""); } // both a.m(Object, String) and a.m(String, Object) are accessible } }] } {FAIL}
The most specific method is chosen, regardless of return type or static considerationsTest Case: 15.12.2.2-ambiguous-24Expected Result: FAIL
Regression Test:
tcltest::test 15.12.2.2-ambiguous-23 { The most specific method is chosen, regardless of return type or static considerations } { empty_class T151222a23 { int m(long i) { return 0; } long m(int i) { return 0; } // long m(int) is chosen and fails, even though int m(long) would work int i = m(0); } } {FAIL}
The most specific method is chosen, regardless of return type or static considerationsExpected Result: FAIL
Regression Test:
tcltest::test 15.12.2.2-ambiguous-24 { The most specific method is chosen, regardless of return type or static considerations } { empty_class T151222a24 { static int m(long i) { return 0; } int m(int i) { return 0; } // int m(int) is chosen and fails, even though int m(long) would work static int i = m(0); } } {FAIL}
tests/jls/expressions/method-invocation-expressions/chosen-method-appropriate
Cannot access instance methods from this class within an explicit constructorTest Case: 15.12.3-explicit-constructor-2Expected Result: FAIL
Regression Test:
tcltest::test 15.12.3-explicit-constructor-1 { Cannot access instance methods from this class within an explicit constructor } { empty_class T15123ec1 { int m() { return 1; } T15123ec1(int i) {} T15123ec1() { this(m()); } } } {FAIL}
Cannot access instance methods from this class within an explicit constructorTest Case: 15.12.3-explicit-constructor-3Expected Result: FAIL
Regression Test:
tcltest::test 15.12.3-explicit-constructor-2 { Cannot access instance methods from this class within an explicit constructor } { empty_class T15123ec2 { int m() { return 1; } T15123ec2(int i) {} class Sub extends T15123ec2 { Sub() { super(m()); // m is inherited } } } } {FAIL}
Cannot access instance methods from this class within an explicit constructorTest Case: 15.12.3-explicit-constructor-4Expected Result: PASS
Regression Test:
tcltest::test 15.12.3-explicit-constructor-3 { Cannot access instance methods from this class within an explicit constructor } { empty_class T15123ec3 { int m() { return 1; } class Inner { Inner(int i) {} Inner() { this(m()); // m is not inherited, and this$0.m is available } } } } {PASS}
Cannot access instance methods from this class within an explicit constructorTest Case: 15.12.3-explicit-constructor-5Expected Result: PASS
Regression Test:
tcltest::test 15.12.3-explicit-constructor-4 { Cannot access instance methods from this class within an explicit constructor } { empty_class T15123ec4 { int m() { return 1; } T15123ec4(int i) {} class Sub extends T15123ec4 { Sub() { // calling the enclosing m, not the inherited m, is legal super(T15123ec4.this.m()); } } } } {PASS}
Cannot access instance methods from this class within an explicit constructorTest Case: 15.12.3-explicit-constructor-6Expected Result: PASS
Regression Test:
tcltest::test 15.12.3-explicit-constructor-5 { Cannot access instance methods from this class within an explicit constructor } { empty_class T15123ec5 { int m() { return 1; } class Inner { Inner(int i) {} Inner() { // explicit mention of the only version of m this(T15123ec5.this.m()); } } } } {PASS}
Cannot access instance methods from this class within an explicit constructorTest Case: 15.12.3-explicit-constructor-7Expected Result: FAIL
Regression Test:
tcltest::test 15.12.3-explicit-constructor-6 { Cannot access instance methods from this class within an explicit constructor } { empty_class T15123ec6 { int m() { return 1; } T15123ec6(int i) {} class Sub extends T15123ec6 { Sub() { // calling superclass version of inherited m is wrong super(super.m()); } } } } {FAIL}
Cannot access instance methods from this class within an explicit constructorTest Case: 15.12.3-explicit-constructor-8Expected Result: PASS
Regression Test:
tcltest::test 15.12.3-explicit-constructor-7 { Cannot access instance methods from this class within an explicit constructor } { empty_class T15123ec7 { class One { int m() { return 1; } } class Two extends One { class Inner { Inner(int i) {} Inner() { // calling super method of enclosing class is legal this(Two.super.m()); } } } } } {PASS}
Cannot access instance methods from this class within an explicit constructorTest Case: 15.12.3-explicit-constructor-9Expected Result: FAIL
Regression Test:
tcltest::test 15.12.3-explicit-constructor-8 { Cannot access instance methods from this class within an explicit constructor } { empty_class T15123ec8 { abstract class One { abstract int m(); } class Two extends One { int m() { return 1; } class Inner { Inner(int i) {} Inner() { // super method of enclosing class can't be abstract this(Two.super.m()); } } } } } {FAIL}
Cannot access instance methods from this class within an explicit constructorTest Case: 15.12.3-explicit-constructor-10Expected Result: PASS
Regression Test:
tcltest::test 15.12.3-explicit-constructor-9 { Cannot access instance methods from this class within an explicit constructor } { empty_class T15123ec9 { private int m() { return 1; } T15123ec9(int i) {} class Sub extends T15123ec9 { Sub() { super(m()); // m is not inherited, so it is the enclosing m } } } } {PASS}
Cannot access instance methods from this class within an explicit constructorTest Case: 15.12.3-abstract-1Expected Result: PASS
Regression Test:
tcltest::test 15.12.3-explicit-constructor-10 { Cannot access instance methods from this class within an explicit constructor } { compile [saveas p1/T15123ec10a.java { package p1; public class T15123ec10a { int m() { return 1; } class C extends p2.T15123ec10b { C(int j) {} C() { // c does not inherit m(), so use the enclosing version this(m()); } } } }] [saveas p2/T15123ec10b.java { package p2; public class T15123ec10b extends p1.T15123ec10a {} }] } {PASS}
super.abstractmethod() is invalidTest Case: 15.12.3-abstract-2Expected Result: FAIL
Regression Test:
tcltest::test 15.12.3-abstract-1 { super.abstractmethod() is invalid } { empty_class T15123a1 { abstract class A { abstract void m(); } abstract class C extends A { { super.m(); } } } } {FAIL}
super.abstractmethod() is invalidTest Case: 15.12.3-abstract-3Expected Result: FAIL
Regression Test:
tcltest::test 15.12.3-abstract-2 { super.abstractmethod() is invalid } { empty_class T15123a2 { abstract class A { abstract void m(); } abstract class B extends A {} abstract class C extends B { { super.m(); } } } } {FAIL}
super.abstractmethod() is invalidTest Case: 15.12.3-abstract-4Expected Result: FAIL
Regression Test:
tcltest::test 15.12.3-abstract-3 { super.abstractmethod() is invalid } { empty_class T15123a3 { interface A { void m(); } abstract class B implements A {} abstract class C extends B { { super.m(); } } } } {FAIL}
super.abstractmethod() is invalidTest Case: 15.12.3-abstract-5Expected Result: FAIL
Regression Test:
tcltest::test 15.12.3-abstract-4 { super.abstractmethod() is invalid } { empty_class T15123a4 { abstract class A { public abstract void m(); } interface I { void m(); } abstract class B implements A implements I {} abstract class C extends B { { super.m(); } } } } {FAIL}
super.abstractmethod() is invalidTest Case: 15.12.3-abstract-6Expected Result: FAIL
Regression Test:
tcltest::test 15.12.3-abstract-5 { super.abstractmethod() is invalid } { empty_class T15123a5 { abstract class A { abstract void m(); } abstract class C extends A { { C.super.m(); } } } } {FAIL}
super.abstractmethod() is invalidTest Case: 15.12.3-abstract-7Expected Result: FAIL
Regression Test:
tcltest::test 15.12.3-abstract-6 { super.abstractmethod() is invalid } { empty_class T15123a6 { abstract class A { abstract void m(); } abstract class B extends A {} abstract class C extends B { { C.super.m(); } } } } {FAIL}
super.abstractmethod() is invalidTest Case: 15.12.3-abstract-8Expected Result: FAIL
Regression Test:
tcltest::test 15.12.3-abstract-7 { super.abstractmethod() is invalid } { empty_class T15123a7 { interface A { void m(); } abstract class B implements A {} abstract class C extends B { { C.super.m(); } } } } {FAIL}
super.abstractmethod() is invalidTest Case: 15.12.3-abstract-9Expected Result: FAIL
Regression Test:
tcltest::test 15.12.3-abstract-8 { super.abstractmethod() is invalid } { empty_class T15123a8 { abstract class A { public abstract void m(); } interface I { void m(); } abstract class B implements A implements I {} abstract class C extends B { { C.super.m(); } } } } {FAIL}
super.abstractmethod() is invalidTest Case: 15.12.3-abstract-10Expected Result: FAIL
Regression Test:
tcltest::test 15.12.3-abstract-9 { super.abstractmethod() is invalid } { empty_class T15123a9 { abstract class A { abstract void m(); } abstract class C extends A { { new Object() { { C.super.m(); } }; } } } } {FAIL}
super.abstractmethod() is invalidTest Case: 15.12.3-abstract-11Expected Result: FAIL
Regression Test:
tcltest::test 15.12.3-abstract-10 { super.abstractmethod() is invalid } { empty_class T15123a10 { abstract class A { abstract void m(); } abstract class B extends A {} abstract class C extends B { { new Object() { { C.super.m(); } }; } } } } {FAIL}
super.abstractmethod() is invalidTest Case: 15.12.3-abstract-12Expected Result: FAIL
Regression Test:
tcltest::test 15.12.3-abstract-11 { super.abstractmethod() is invalid } { empty_class T15123a11 { interface A { void m(); } abstract class B implements A {} abstract class C extends B { { new Object() { { C.super.m(); } }; } } } } {FAIL}
super.abstractmethod() is invalidExpected Result: FAIL
Regression Test:
tcltest::test 15.12.3-abstract-12 { super.abstractmethod() is invalid } { empty_class T15123a12 { abstract class A { public abstract void m(); } interface I { void m(); } abstract class B implements A implements I {} abstract class C extends B { { new Object() { { C.super.m(); } }; } } } } {FAIL}
tests/jls/expressions/array-access-expressions
According to the grammar in Chapter 18, it is also legal to acess the element of an anonymous arrayTest Case: 15.13-index-1Expected Result: PASS
Regression Test:
tcltest::test 15.13-anon-1 { According to the grammar in Chapter 18, it is also legal to acess the element of an anonymous array } { empty_main T1513a1 { int i = new int[]{1}[0]; } } {PASS}
negative constant index is stupid, but legalTest Case: 15.13-index-2Expected Result: OK
Regression Test:
tcltest::test 15.13-index-1 { negative constant index is stupid, but legal } { ok_pass_or_warn [empty_main T1513i1 { int[] i = {}; i[-1] = 0; }] } {OK}
out-of-bound index is legal, even when size and index are constantTest Case: 15.13-index-3Expected Result: OK
Regression Test:
tcltest::test 15.13-index-2 { out-of-bound index is legal, even when size and index are constant } { ok_pass_or_warn [empty_main T1513i2 { final int[] i = {}; i[0] = 0; }] } {OK}
long index is illegalTest Case: 15.13-index-4Expected Result: FAIL
Regression Test:
tcltest::test 15.13-index-3 { long index is illegal } { empty_main T1513i3 { int[] i = { 1 }; i[0L] = 0; } } {FAIL}
float index is illegalTest Case: 15.13-index-5Expected Result: FAIL
Regression Test:
tcltest::test 15.13-index-4 { float index is illegal } { empty_main T1513i4 { int[] i = { 1 }; i[0f] = 0; } } {FAIL}
double index is illegalTest Case: 15.13-index-6Expected Result: FAIL
Regression Test:
tcltest::test 15.13-index-5 { double index is illegal } { empty_main T1513i5 { int[] i = { 1 }; i[0.] = 0; } } {FAIL}
null index is illegalTest Case: 15.13-index-7Expected Result: FAIL
Regression Test:
tcltest::test 15.13-index-6 { null index is illegal } { empty_main T1513i6 { int[] i = { 1 }; i[null] = 0; } } {FAIL}
boolean index is illegalTest Case: 15.13-index-8Expected Result: FAIL
Regression Test:
tcltest::test 15.13-index-7 { boolean index is illegal } { empty_main T1513i7 { int[] i = { 1 }; i[false] = 0; } } {FAIL}
Object index is illegalTest Case: 15.13-index-9Expected Result: FAIL
Regression Test:
tcltest::test 15.13-index-8 { Object index is illegal } { empty_main T1513i8 { int[] i = { 1 }; i[""] = 0; } } {FAIL}
void index is illegalTest Case: 15.13-index-10Expected Result: FAIL
Regression Test:
tcltest::test 15.13-index-9 { void index is illegal } { empty_main T1513i9 { int[] i = { 1 }; i[System.out.println()] = 0; } } {FAIL}
index is unary promoted to intTest Case: 15.13-reference-1Expected Result: PASS
Regression Test:
tcltest::test 15.13-index-10 { index is unary promoted to int } { empty_main T1513i10 { int[] i = { 1 }; short s = 0; byte b = 0; i[s] = i[b] = i['\0'] = i[0]; } } {PASS}
reference must be array typeTest Case: 15.13-reference-2Expected Result: FAIL
Regression Test:
tcltest::test 15.13-reference-1 { reference must be array type } { empty_main T1513r1 { 1[0]++; } } {FAIL}
reference must be array typeTest Case: 15.13-reference-3Expected Result: FAIL
Regression Test:
tcltest::test 15.13-reference-2 { reference must be array type } { empty_main T1513r2 { 1L[0]++; } } {FAIL}
reference must be array typeTest Case: 15.13-reference-4Expected Result: FAIL
Regression Test:
tcltest::test 15.13-reference-3 { reference must be array type } { empty_main T1513r3 { 1f[0]++; } } {FAIL}
reference must be array typeTest Case: 15.13-reference-5Expected Result: FAIL
Regression Test:
tcltest::test 15.13-reference-4 { reference must be array type } { empty_main T1513r4 { 1.[0]++; } } {FAIL}
reference must be array typeTest Case: 15.13-reference-6Expected Result: FAIL
Regression Test:
tcltest::test 15.13-reference-5 { reference must be array type } { empty_main T1513r5 { '1'[0]++; } } {FAIL}
reference must be array typeTest Case: 15.13-reference-7Expected Result: FAIL
Regression Test:
tcltest::test 15.13-reference-6 { reference must be array type } { empty_main T1513r6 { System.out.println()[0]++; } } {FAIL}
reference must be array typeTest Case: 15.13-reference-8Expected Result: FAIL
Regression Test:
tcltest::test 15.13-reference-7 { reference must be array type } { empty_main T1513r7 { new Object()[0]++; } } {FAIL}
reference must be array typeTest Case: 15.13-reference-9Expected Result: FAIL
Regression Test:
tcltest::test 15.13-reference-8 { reference must be array type } { empty_main T1513r8 { Object o = new int[1]; o[0]++; } } {FAIL}
reference must be array typeTest Case: 15.13-reference-10Expected Result: FAIL
Regression Test:
tcltest::test 15.13-reference-9 { reference must be array type } { empty_main T1513r9 { Object o = new int[1]; o[0]++; } } {FAIL}
reference must be array typeTest Case: 15.13-reference-11Expected Result: FAIL
Regression Test:
tcltest::test 15.13-reference-10 { reference must be array type } { empty_main T1513r10 { null[0]++; } } {FAIL}
reference must be array typeTest Case: 15.13-reference-12Expected Result: PASS
Regression Test:
tcltest::test 15.13-reference-11 { reference must be array type } { empty_class T1513r11 { int[] m() { return null; } void n() { m()[0]++; } } } {PASS}
reference must be array typeTest Case: 15.13-reference-13Expected Result: PASS
Regression Test:
tcltest::test 15.13-reference-12 { reference must be array type } { empty_main T1513r12 { (new int[1])[0]++; } } {PASS}
reference must be array typeTest Case: 15.13-reference-14Expected Result: PASS
Regression Test:
tcltest::test 15.13-reference-13 { reference must be array type } { empty_class T1513r13 { static int[] i; void m() { i[0]++; this.i[0]++; T1513r13.i[0]++; } } } {PASS}
reference must be array typeTest Case: 15.13-reference-15Expected Result: PASS
Regression Test:
tcltest::test 15.13-reference-14 { reference must be array type } { empty_main T1513r14 { int[][] i = { { 1 } }; i[0][0]++; (i[0])[0]--; } } {PASS}
reference must be array typeTest Case: 15.13-final-1Expected Result: FAIL
Regression Test:
tcltest::test 15.13-reference-15 { reference must be array type } { empty_main T1513r15 { int[][] i = { { 1 } }; i[0][0][0]++; } } {FAIL}
in a final array, array members aren't finalTest Case: 15.13-type-1Expected Result: PASS
Regression Test:
tcltest::test 15.13-final-1 { in a final array, array members aren't final } { empty_main T1513f1 { final int[] i = {0}; i[0]++; } } {PASS}
the type of an array access expression is the underlying type of the arrayTest Case: 15.13-type-2Expected Result: PASS
Regression Test:
tcltest::test 15.13-type-1 { the type of an array access expression is the underlying type of the array } { empty_main T1513t1 { String[] s = {""}; s[0].length(); s[0].valueOf(1); } } {PASS}
the type of an array access expression is the underlying type of the arrayTest Case: 15.13-type-3Expected Result: FAIL
Regression Test:
tcltest::test 15.13-type-2 { the type of an array access expression is the underlying type of the array } { empty_main T1513t2 { final Object[] s = {""}; s[0].length(); } } {FAIL}
the type of an array access expression is the underlying type of the arrayExpected Result: FAIL
Regression Test:
tcltest::test 15.13-type-3 { the type of an array access expression is the underlying type of the array } { empty_main T1513t3 { final Object[] s = {""}; s[0].valueOf(1); } } {FAIL}
tests/jls/expressions/postfix-expressions/postfix-increment-operator
Postfix++ must operate on a numeric variableTest Case: 15.14.1-argument-2Expected Result: FAIL
Regression Test:
tcltest::test 15.14.1-argument-1 { Postfix++ must operate on a numeric variable } { empty_class T15141a1 {int i = 1++;} } {FAIL}
Postfix++ must operate on a numeric variableTest Case: 15.14.1-argument-3Expected Result: FAIL
Regression Test:
tcltest::test 15.14.1-argument-2 { Postfix++ must operate on a numeric variable } { empty_class T15141a2 {boolean b = true++;} } {FAIL}
Postfix++ must operate on a numeric variableTest Case: 15.14.1-argument-4Expected Result: FAIL
Regression Test:
tcltest::test 15.14.1-argument-3 { Postfix++ must operate on a numeric variable } { empty_class T15141a3 {Object o = null++;} } {FAIL}
Postfix++ must operate on a numeric variableTest Case: 15.14.1-argument-5Expected Result: FAIL
Regression Test:
tcltest::test 15.14.1-argument-4 { Postfix++ must operate on a numeric variable } { empty_class T15141a4 {Object o = (new Object())++;} } {FAIL}
Postfix++ must operate on a numeric variableTest Case: 15.14.1-argument-6Expected Result: FAIL
Regression Test:
tcltest::test 15.14.1-argument-5 { Postfix++ must operate on a numeric variable } { empty_class T15141a5 {int i = (System.out.println())++;} } {FAIL}
Postfix++ must operate on a numeric variableTest Case: 15.14.1-argument-7Expected Result: FAIL
Regression Test:
tcltest::test 15.14.1-argument-6 { Postfix++ must operate on a numeric variable } { empty_class T15141a6 {boolean b = true, b2 = b++;} } {FAIL}
Postfix++ must operate on a numeric variableTest Case: 15.14.1-argument-8Expected Result: FAIL
Regression Test:
tcltest::test 15.14.1-argument-7 { Postfix++ must operate on a numeric variable } { empty_class T15141a7 {Object o = null, o2 = o++;} } {FAIL}
Postfix++ must operate on a numeric variableTest Case: 15.14.1-argument-9Expected Result: FAIL
Regression Test:
tcltest::test 15.14.1-argument-8 { Postfix++ must operate on a numeric variable } { empty_class T15141a8 {int i = 1, i2 = (-i)++;} } {FAIL}
Postfix++ cannot operate on final variableTest Case: 15.14.1-argument-10Expected Result: FAIL
Regression Test:
tcltest::test 15.14.1-argument-9 { Postfix++ cannot operate on final variable } { empty_class T15141a9 {final int i = 1, j = i++;} } {FAIL}
Postfix++ must operate on a numeric variable, parenthesis may now surround variablesTest Case: 15.14.1-type-1Expected Result: OK
Regression Test:
tcltest::test 15.14.1-argument-10 { Postfix++ must operate on a numeric variable, parenthesis may now surround variables } { ok_pass_or_warn [empty_class T15141a10 {int i = 1, j = (i)++;} ] } {OK}
Postfix++ operates on all numeric typesTest Case: 15.14.1-type-2Expected Result: PASS
Regression Test:
tcltest::test 15.14.1-type-1 { Postfix++ operates on all numeric types } { empty_class T15141t1 {byte b = 1, b2 = b++;} } {PASS}
Postfix++ operates on all numeric typesTest Case: 15.14.1-type-3Expected Result: PASS
Regression Test:
tcltest::test 15.14.1-type-2 { Postfix++ operates on all numeric types } { empty_class T15141t2 {short s = 1, s2 = s++;} } {PASS}
Postfix++ operates on all numeric typesTest Case: 15.14.1-type-4Expected Result: PASS
Regression Test:
tcltest::test 15.14.1-type-3 { Postfix++ operates on all numeric types } { empty_class T15141t3 {char c = 1, c2 = c++;} } {PASS}
Postfix++ operates on all numeric typesTest Case: 15.14.1-type-5Expected Result: PASS
Regression Test:
tcltest::test 15.14.1-type-4 { Postfix++ operates on all numeric types } { empty_class T15141t4 {int i = 1, i2 = i++;} } {PASS}
Postfix++ operates on all numeric typesTest Case: 15.14.1-type-6Expected Result: PASS
Regression Test:
tcltest::test 15.14.1-type-5 { Postfix++ operates on all numeric types } { empty_class T15141t5 {long l = 1, l2 = l++;} } {PASS}
Postfix++ operates on all numeric typesTest Case: 15.14.1-type-7Expected Result: PASS
Regression Test:
tcltest::test 15.14.1-type-6 { Postfix++ operates on all numeric types } { empty_class T15141t6 {float f = 1, f2 = f++;} } {PASS}
Postfix++ operates on all numeric typesTest Case: 15.14.1-result-1Expected Result: PASS
Regression Test:
tcltest::test 15.14.1-type-7 { Postfix++ operates on all numeric types } { empty_class T15141t7 {double d = 1, d2 = d++;} } {PASS}
Postfix++ results in a value, not a variableTest Case: 15.14.1-result-2Expected Result: FAIL
Regression Test:
tcltest::test 15.14.1-result-1 { Postfix++ results in a value, not a variable } { empty_main T15141r1 { int i = 1; i++ = 2; } } {FAIL}
Postfix++ results in a value, not a variableTest Case: 15.14.1-final-1Expected Result: FAIL
Regression Test:
tcltest::test 15.14.1-result-2 { Postfix++ results in a value, not a variable } { empty_main T15141r2 { int i = 1; (i++)++; } } {FAIL}
Postfix++ cannot be applied to a finalTest Case: 15.14.1-final-2Expected Result: FAIL
Regression Test:
tcltest::test 15.14.1-final-1 { Postfix++ cannot be applied to a final } { empty_class T15141f1 { final int i; int j = i++; } } {FAIL}
Postfix++ cannot be applied to a finalTest Case: 15.14.1-final-3Expected Result: FAIL
Regression Test:
tcltest::test 15.14.1-final-2 { Postfix++ cannot be applied to a final } { empty_main T15141f2 { final int i; if (false) i++; } } {FAIL}
Postfix++ cannot be applied to a finalExpected Result: FAIL
Regression Test:
tcltest::test 15.14.1-final-3 { Postfix++ cannot be applied to a final } { empty_class T15141f3 { void m(final int i) { if (false) i++; } } } {FAIL}
tests/jls/expressions/postfix-expressions/postfix-decrement-operator
Postfix-- must operate on a numeric variableTest Case: 15.14.2-argument-2Expected Result: FAIL
Regression Test:
tcltest::test 15.14.2-argument-1 { Postfix-- must operate on a numeric variable } { empty_class T15142a1 {int i = 1--;} } {FAIL}
Postfix-- must operate on a numeric variableTest Case: 15.14.2-argument-3Expected Result: FAIL
Regression Test:
tcltest::test 15.14.2-argument-2 { Postfix-- must operate on a numeric variable } { empty_class T15142a2 {boolean b = true--;} } {FAIL}
Postfix-- must operate on a numeric variableTest Case: 15.14.2-argument-4Expected Result: FAIL
Regression Test:
tcltest::test 15.14.2-argument-3 { Postfix-- must operate on a numeric variable } { empty_class T15142a3 {Object o = null--;} } {FAIL}
Postfix-- must operate on a numeric variableTest Case: 15.14.2-argument-5Expected Result: FAIL
Regression Test:
tcltest::test 15.14.2-argument-4 { Postfix-- must operate on a numeric variable } { empty_class T15142a4 {Object o = (new Object())--;} } {FAIL}
Postfix-- must operate on a numeric variableTest Case: 15.14.2-argument-6Expected Result: FAIL
Regression Test:
tcltest::test 15.14.2-argument-5 { Postfix-- must operate on a numeric variable } { empty_class T15142a5 {int i = (System.out.println())--;} } {FAIL}
Postfix-- must operate on a numeric variableTest Case: 15.14.2-argument-7Expected Result: FAIL
Regression Test:
tcltest::test 15.14.2-argument-6 { Postfix-- must operate on a numeric variable } { empty_class T15142a6 {boolean b = true, b2 = b--;} } {FAIL}
Postfix-- must operate on a numeric variableTest Case: 15.14.2-argument-8Expected Result: FAIL
Regression Test:
tcltest::test 15.14.2-argument-7 { Postfix-- must operate on a numeric variable } { empty_class T15142a7 {Object o = null, o2 = o--;} } {FAIL}
Postfix-- must operate on a numeric variableTest Case: 15.14.2-argument-9Expected Result: FAIL
Regression Test:
tcltest::test 15.14.2-argument-8 { Postfix-- must operate on a numeric variable } { empty_class T15142a8 {int i = 1, i2 = (-i)--;} } {FAIL}
Postfix-- cannot operate on final variableTest Case: 15.14.2-argument-10Expected Result: FAIL
Regression Test:
tcltest::test 15.14.2-argument-9 { Postfix-- cannot operate on final variable } { empty_class T15142a9 {final int i = 1, j = i--;} } {FAIL}
Postfix-- must operate on a numeric variable, parenthesis may now surround variablesTest Case: 15.14.2-type-1Expected Result: OK
Regression Test:
tcltest::test 15.14.2-argument-10 { Postfix-- must operate on a numeric variable, parenthesis may now surround variables } { ok_pass_or_warn [empty_class T15142a10 {int i = 1, j = (i)--;}] } {OK}
Postfix-- operates on all numeric typesTest Case: 15.14.2-type-2Expected Result: PASS
Regression Test:
tcltest::test 15.14.2-type-1 { Postfix-- operates on all numeric types } { empty_class T15142t1 {byte b = 1, b2 = b--;} } {PASS}
Postfix-- operates on all numeric typesTest Case: 15.14.2-type-3Expected Result: PASS
Regression Test:
tcltest::test 15.14.2-type-2 { Postfix-- operates on all numeric types } { empty_class T15142t2 {short s = 1, s2 = s--;} } {PASS}
Postfix-- operates on all numeric typesTest Case: 15.14.2-type-4Expected Result: PASS
Regression Test:
tcltest::test 15.14.2-type-3 { Postfix-- operates on all numeric types } { empty_class T15142t3 {char c = 1, c2 = c--;} } {PASS}
Postfix-- operates on all numeric typesTest Case: 15.14.2-type-5Expected Result: PASS
Regression Test:
tcltest::test 15.14.2-type-4 { Postfix-- operates on all numeric types } { empty_class T15142t4 {int i = 1, i2 = i--;} } {PASS}
Postfix-- operates on all numeric typesTest Case: 15.14.2-type-6Expected Result: PASS
Regression Test:
tcltest::test 15.14.2-type-5 { Postfix-- operates on all numeric types } { empty_class T15142t5 {long l = 1, l2 = l--;} } {PASS}
Postfix-- operates on all numeric typesTest Case: 15.14.2-type-7Expected Result: PASS
Regression Test:
tcltest::test 15.14.2-type-6 { Postfix-- operates on all numeric types } { empty_class T15142t6 {float f = 1, f2 = f--;} } {PASS}
Postfix-- operates on all numeric typesTest Case: 15.14.2-result-1Expected Result: PASS
Regression Test:
tcltest::test 15.14.2-type-7 { Postfix-- operates on all numeric types } { empty_class T15142t7 {double d = 1, d2 = d--;} } {PASS}
Postfix-- results in a value, not a variableTest Case: 15.14.2-result-2Expected Result: FAIL
Regression Test:
tcltest::test 15.14.2-result-1 { Postfix-- results in a value, not a variable } { empty_main T15142r1 { int i = 1; i-- = 2; } } {FAIL}
Postfix-- results in a value, not a variableTest Case: 15.14.2-final-1Expected Result: FAIL
Regression Test:
tcltest::test 15.14.2-result-2 { Postfix-- results in a value, not a variable } { empty_main T15142r2 { int i = 1; (i--)--; } } {FAIL}
Postfix-- cannot be applied to a finalTest Case: 15.14.2-final-2Expected Result: FAIL
Regression Test:
tcltest::test 15.14.2-final-1 { Postfix-- cannot be applied to a final } { empty_class T15142f1 { final int i; int j = i--; } } {FAIL}
Postfix-- cannot be applied to a finalTest Case: 15.14.2-final-3Expected Result: FAIL
Regression Test:
tcltest::test 15.14.2-final-2 { Postfix-- cannot be applied to a final } { empty_main T15142f2 { final int i; if (false) i--; } } {FAIL}
Postfix-- cannot be applied to a finalExpected Result: FAIL
Regression Test:
tcltest::test 15.14.2-final-3 { Postfix-- cannot be applied to a final } { empty_class T15142f3 { void m(final int i) { if (false) i--; } } } {FAIL}
tests/jls/expressions/unary-operators
Unary operators group right-to-leftTest Case: 15.15-precedence-1Expected Result: PASS
Regression Test:
tcltest::test 15.15-group-1 { Unary operators group right-to-left } { constant_expression T15151 {-~0xffffffff == 0} {~-0xffffffff == 0xfffffffe} } {PASS}
Unary operators have higher precedence than multiplicativeTest Case: 15.15-precedence-2Expected Result: FAIL
Regression Test:
tcltest::test 15.15-precedence-1 { Unary operators have higher precedence than multiplicative } { is_assignable_to T1515p1 float {(float) 1/1.0} } {FAIL}
Unary operators have higher precedence than multiplicativeTest Case: 15.15-precedence-3Expected Result: PASS
Regression Test:
tcltest::test 15.15-precedence-2 { Unary operators have higher precedence than multiplicative } { is_assignable_to T1515p2 float {(float) (1/1.0)} } {PASS}
Unary operators have higher precedence than multiplicativeTest Case: 15.15-precedence-4Expected Result: PASS
Regression Test:
tcltest::test 15.15-precedence-3 { Unary operators have higher precedence than multiplicative } { constant_expression T1515p3 {-0x80000000/2 == 0xc0000000} {-(0x80000000/2) == 0x40000000} } {PASS}
Unary operators have higher precedence than multiplicativeTest Case: 15.15-precedence-5Expected Result: PASS
Regression Test:
tcltest::test 15.15-precedence-4 { Unary operators have higher precedence than multiplicative } { constant_expression T1515p4 {~0xffffffff*2 == 0} {~(0xffffffff*2) == 1} } {PASS}
Unary operators have higher precedence than addition, for booleanExpected Result: PASS
Regression Test:
tcltest::test 15.15-precedence-5 { Unary operators have higher precedence than addition, for boolean } { constant_expression T1515p5 {!true + "" == "false"} } {PASS}
tests/jls/expressions/unary-operators/prefix-increment-operator
++Prefix must operate on a numeric variableTest Case: 15.15.1-argument-2Expected Result: FAIL
Regression Test:
tcltest::test 15.15.1-argument-1 { ++Prefix must operate on a numeric variable } { empty_class T15151a1 {int i = ++1;} } {FAIL}
++Prefix must operate on a numeric variableTest Case: 15.15.1-argument-3Expected Result: FAIL
Regression Test:
tcltest::test 15.15.1-argument-2 { ++Prefix must operate on a numeric variable } { empty_class T15151a2 {boolean b = ++true;} } {FAIL}
++Prefix must operate on a numeric variableTest Case: 15.15.1-argument-4Expected Result: FAIL
Regression Test:
tcltest::test 15.15.1-argument-3 { ++Prefix must operate on a numeric variable } { empty_class T15151a3 {Object o = ++null;} } {FAIL}
++Prefix must operate on a numeric variableTest Case: 15.15.1-argument-5Expected Result: FAIL
Regression Test:
tcltest::test 15.15.1-argument-4 { ++Prefix must operate on a numeric variable } { empty_class T15151a4 {Object o = ++(new Object());} } {FAIL}
++Prefix must operate on a numeric variableTest Case: 15.15.1-argument-6Expected Result: FAIL
Regression Test:
tcltest::test 15.15.1-argument-5 { ++Prefix must operate on a numeric variable } { empty_class T15151a5 {int i = ++(System.out.println());} } {FAIL}
++Prefix must operate on a numeric variableTest Case: 15.15.1-argument-7Expected Result: FAIL
Regression Test:
tcltest::test 15.15.1-argument-6 { ++Prefix must operate on a numeric variable } { empty_class T15151a6 {boolean b = true, b2 = ++b;} } {FAIL}
++Prefix must operate on a numeric variableTest Case: 15.15.1-argument-8Expected Result: FAIL
Regression Test:
tcltest::test 15.15.1-argument-7 { ++Prefix must operate on a numeric variable } { empty_class T15151a7 {Object o = null, o2 = ++o;} } {FAIL}
++Prefix must operate on a numeric variableTest Case: 15.15.1-argument-9Expected Result: FAIL
Regression Test:
tcltest::test 15.15.1-argument-8 { ++Prefix must operate on a numeric variable } { empty_class T15151a8 {int i = 1, i2 = ++(-i);} } {FAIL}
++Prefix cannot operate on final variableTest Case: 15.15.1-argument-10Expected Result: FAIL
Regression Test:
tcltest::test 15.15.1-argument-9 { ++Prefix cannot operate on final variable } { empty_class T15151a9 {final int i = 1, j = ++i;} } {FAIL}
++Prefix must operate on a numeric variable, parenthesis may now surround variablesTest Case: 15.15.1-type-1Expected Result: OK
Regression Test:
tcltest::test 15.15.1-argument-10 { ++Prefix must operate on a numeric variable, parenthesis may now surround variables } { ok_pass_or_warn [empty_class T15151a10 {int i = 1, j = ++(i);}] } {OK}
++Prefix operates on all numeric typesTest Case: 15.15.1-type-2Expected Result: PASS
Regression Test:
tcltest::test 15.15.1-type-1 { ++Prefix operates on all numeric types } { empty_class T15151t1 {byte b = 1, b2 = ++b;} } {PASS}
++Prefix operates on all numeric typesTest Case: 15.15.1-type-3Expected Result: PASS
Regression Test:
tcltest::test 15.15.1-type-2 { ++Prefix operates on all numeric types } { empty_class T15151t2 {short s = 1, s2 = ++s;} } {PASS}
++Prefix operates on all numeric typesTest Case: 15.15.1-type-4Expected Result: PASS
Regression Test:
tcltest::test 15.15.1-type-3 { ++Prefix operates on all numeric types } { empty_class T15151t3 {char c = 1, c2 = ++c;} } {PASS}
++Prefix operates on all numeric typesTest Case: 15.15.1-type-5Expected Result: PASS
Regression Test:
tcltest::test 15.15.1-type-4 { ++Prefix operates on all numeric types } { empty_class T15151t4 {int i = 1, i2 = ++i;} } {PASS}
++Prefix operates on all numeric typesTest Case: 15.15.1-type-6Expected Result: PASS
Regression Test:
tcltest::test 15.15.1-type-5 { ++Prefix operates on all numeric types } { empty_class T15151t5 {long l = 1, l2 = ++l;} } {PASS}
++Prefix operates on all numeric typesTest Case: 15.15.1-type-7Expected Result: PASS
Regression Test:
tcltest::test 15.15.1-type-6 { ++Prefix operates on all numeric types } { empty_class T15151t6 {float f = 1, f2 = ++f;} } {PASS}
++Prefix operates on all numeric typesTest Case: 15.15.1-result-1Expected Result: PASS
Regression Test:
tcltest::test 15.15.1-type-7 { ++Prefix operates on all numeric types } { empty_class T15151t7 {double d = 1, d2 = ++d;} } {PASS}
++Prefix results in a value, not a variableTest Case: 15.15.1-result-2Expected Result: FAIL
Regression Test:
tcltest::test 15.15.1-result-1 { ++Prefix results in a value, not a variable } { empty_class T15151r1 { int i = 1; ++i = 2; } } {FAIL}
++Prefix results in a value, not a variableTest Case: 15.15.1-final-1Expected Result: FAIL
Regression Test:
tcltest::test 15.15.1-result-2 { ++Prefix results in a value, not a variable } { empty_main T15151r2 { int i = 1; ++(++i); } } {FAIL}
++Prefix cannot be applied to a finalTest Case: 15.15.1-final-2Expected Result: FAIL
Regression Test:
tcltest::test 15.15.1-final-1 { ++Prefix cannot be applied to a final } { empty_class T15151f1 { final int i; int j = ++i; } } {FAIL}
++Prefix cannot be applied to a finalTest Case: 15.15.1-final-3Expected Result: FAIL
Regression Test:
tcltest::test 15.15.1-final-2 { ++Prefix cannot be applied to a final } { empty_main T15151f2 { final int i; if (false) ++i; } } {FAIL}
++Prefix cannot be applied to a finalExpected Result: FAIL
Regression Test:
tcltest::test 15.15.1-final-3 { ++Prefix cannot be applied to a final } { empty_class T15151f3 { void m(final int i) { if (false) ++i; } } } {FAIL}
tests/jls/expressions/unary-operators/prefix-decrement-operator
--Prefix must operate on a numeric variableTest Case: 15.15.2-argument-2Expected Result: FAIL
Regression Test:
tcltest::test 15.15.2-argument-1 { --Prefix must operate on a numeric variable } { empty_class T15152a1 {int i = --1;} } {FAIL}
--Prefix must operate on a numeric variableTest Case: 15.15.2-argument-3Expected Result: FAIL
Regression Test:
tcltest::test 15.15.2-argument-2 { --Prefix must operate on a numeric variable } { empty_class T15152a2 {boolean b = --true;} } {FAIL}
--Prefix must operate on a numeric variableTest Case: 15.15.2-argument-4Expected Result: FAIL
Regression Test:
tcltest::test 15.15.2-argument-3 { --Prefix must operate on a numeric variable } { empty_class T15152a3 {Object o = --null;} } {FAIL}
--Prefix must operate on a numeric variableTest Case: 15.15.2-argument-5Expected Result: FAIL
Regression Test:
tcltest::test 15.15.2-argument-4 { --Prefix must operate on a numeric variable } { empty_class T15152a4 {Object o = --(new Object());} } {FAIL}
--Prefix must operate on a numeric variableTest Case: 15.15.2-argument-6Expected Result: FAIL
Regression Test:
tcltest::test 15.15.2-argument-5 { --Prefix must operate on a numeric variable } { empty_class T15152a5 {int i = --(System.out.println());} } {FAIL}
--Prefix must operate on a numeric variableTest Case: 15.15.2-argument-7Expected Result: FAIL
Regression Test:
tcltest::test 15.15.2-argument-6 { --Prefix must operate on a numeric variable } { empty_class T15152a6 {boolean b = true, b2 = --b;} } {FAIL}
--Prefix must operate on a numeric variableTest Case: 15.15.2-argument-8Expected Result: FAIL
Regression Test:
tcltest::test 15.15.2-argument-7 { --Prefix must operate on a numeric variable } { empty_class T15152a7 {Object o = null, o2 = --o;} } {FAIL}
--Prefix must operate on a numeric variableTest Case: 15.15.2-argument-9Expected Result: FAIL
Regression Test:
tcltest::test 15.15.2-argument-8 { --Prefix must operate on a numeric variable } { empty_class T15152a8 {int i = 1, i2 = --(-i);} } {FAIL}
--Prefix cannot operate on final variableTest Case: 15.15.2-argument-10Expected Result: FAIL
Regression Test:
tcltest::test 15.15.2-argument-9 { --Prefix cannot operate on final variable } { empty_class T15152a9 {final int i = 1, j = --i;} } {FAIL}
--Prefix must operate on a numeric variable, parenthesis may now surround variablesTest Case: 15.15.2-type-1Expected Result: OK
Regression Test:
tcltest::test 15.15.2-argument-10 { --Prefix must operate on a numeric variable, parenthesis may now surround variables } { ok_pass_or_warn [empty_class T15152a10 {int i = 1, j = --(i);}] } {OK}
--Prefix operates on all numeric typesTest Case: 15.15.2-type-2Expected Result: PASS
Regression Test:
tcltest::test 15.15.2-type-1 { --Prefix operates on all numeric types } { empty_class T15152t1 {byte b = 1, b2 = --b;} } {PASS}
--Prefix operates on all numeric typesTest Case: 15.15.2-type-3Expected Result: PASS
Regression Test:
tcltest::test 15.15.2-type-2 { --Prefix operates on all numeric types } { empty_class T15152t2 {short s = 1, s2 = --s;} } {PASS}
--Prefix operates on all numeric typesTest Case: 15.15.2-type-4Expected Result: PASS
Regression Test:
tcltest::test 15.15.2-type-3 { --Prefix operates on all numeric types } { empty_class T15152t3 {char c = 1, c2 = --c;} } {PASS}
--Prefix operates on all numeric typesTest Case: 15.15.2-type-5Expected Result: PASS
Regression Test:
tcltest::test 15.15.2-type-4 { --Prefix operates on all numeric types } { empty_class T15152t4 {int i = 1, i2 = --i;} } {PASS}
--Prefix operates on all numeric typesTest Case: 15.15.2-type-6Expected Result: PASS
Regression Test:
tcltest::test 15.15.2-type-5 { --Prefix operates on all numeric types } { empty_class T15152t5 {long l = 1, l2 = --l;} } {PASS}
--Prefix operates on all numeric typesTest Case: 15.15.2-type-7Expected Result: PASS
Regression Test:
tcltest::test 15.15.2-type-6 { --Prefix operates on all numeric types } { empty_class T15152t6 {float f = 1, f2 = --f;} } {PASS}
--Prefix operates on all numeric typesTest Case: 15.15.2-result-1Expected Result: PASS
Regression Test:
tcltest::test 15.15.2-type-7 { --Prefix operates on all numeric types } { empty_class T15152t7 {double d = 1, d2 = --d;} } {PASS}
--Prefix results in a value, not a variableTest Case: 15.15.2-result-2Expected Result: FAIL
Regression Test:
tcltest::test 15.15.2-result-1 { --Prefix results in a value, not a variable } { empty_class T15152r1 { int i = 1; --i = 2; } } {FAIL}
--Prefix results in a value, not a variableTest Case: 15.15.2-final-1Expected Result: FAIL
Regression Test:
tcltest::test 15.15.2-result-2 { --Prefix results in a value, not a variable } { empty_main T15152r2 { int i = 1; --(--i); } } {FAIL}
--Prefix cannot be applied to a finalTest Case: 15.15.2-final-2Expected Result: FAIL
Regression Test:
tcltest::test 15.15.2-final-1 { --Prefix cannot be applied to a final } { empty_class T15152f1 { final int i; int j = --i; } } {FAIL}
--Prefix cannot be applied to a finalTest Case: 15.15.2-final-3Expected Result: FAIL
Regression Test:
tcltest::test 15.15.2-final-2 { --Prefix cannot be applied to a final } { empty_main T15152f2 { final int i; if (false) --i; } } {FAIL}
--Prefix cannot be applied to a finalExpected Result: FAIL
Regression Test:
tcltest::test 15.15.2-final-3 { --Prefix cannot be applied to a final } { empty_class T15152f3 { void m(final int i) { if (false) --i; } } } {FAIL}
tests/jls/expressions/unary-operators/unary-plus-operator
+ must have numeric operandTest Case: 15.15.3-type-2Expected Result: FAIL
Regression Test:
tcltest::test 15.15.3-type-1 { + must have numeric operand } { is_assignable_to T15153t1 Object +null } {FAIL}
+ must have numeric operandTest Case: 15.15.3-type-3Expected Result: FAIL
Regression Test:
tcltest::test 15.15.3-type-2 { + must have numeric operand } { is_assignable_to T15153t2 boolean +true } {FAIL}
+ must have numeric operandTest Case: 15.15.3-type-4Expected Result: FAIL
Regression Test:
tcltest::test 15.15.3-type-3 { + must have numeric operand } { is_assignable_to T15153t3 Object {+(new Object())} } {FAIL}
+ must have numeric operandTest Case: 15.15.3-type-5Expected Result: FAIL
Regression Test:
tcltest::test 15.15.3-type-4 { + must have numeric operand } { is_assignable_to T15153t4 int +System.out.println() } {FAIL}
+ performs unary promotionTest Case: 15.15.3-type-6Expected Result: FAIL
Regression Test:
tcltest::test 15.15.3-type-5 { + performs unary promotion } { #is_assignable_to creates byte n1, byte n2 is_assignable_to T15153t5 byte 1 byte +n1 } {FAIL}
+ must have numeric operandTest Case: 15.15.3-type-7Expected Result: PASS
Regression Test:
tcltest::test 15.15.3-type-6 { + must have numeric operand } { is_assignable_to T15153t6 int +1 } {PASS}
+ must have numeric operandTest Case: 15.15.3-type-8Expected Result: PASS
Regression Test:
tcltest::test 15.15.3-type-7 { + must have numeric operand } { is_assignable_to T15153t7 long +1L } {PASS}
+ must have numeric operandTest Case: 15.15.3-type-9Expected Result: PASS
Regression Test:
tcltest::test 15.15.3-type-8 { + must have numeric operand } { is_assignable_to T15153t8 float +1f } {PASS}
+ must have numeric operandTest Case: 15.15.3-type-10Expected Result: PASS
Regression Test:
tcltest::test 15.15.3-type-9 { + must have numeric operand } { is_assignable_to T15153t9 double +1d } {PASS}
+ must have numeric operandTest Case: 15.15.3-type-11Expected Result: PASS
Regression Test:
tcltest::test 15.15.3-type-10 { + must have numeric operand } { is_assignable_to T15153t10 short +1 } {PASS}
+ must have numeric operandTest Case: 15.15.3-type-12Expected Result: PASS
Regression Test:
tcltest::test 15.15.3-type-11 { + must have numeric operand } { is_assignable_to T15153t11 char +'1' } {PASS}
+ must have numeric operandExpected Result: PASS
Regression Test:
tcltest::test 15.15.3-type-12 { + must have numeric operand } { is_assignable_to T15153t12 byte +1 } {PASS}
tests/jls/expressions/unary-operators/unary-minus-operator
- must have numeric operandTest Case: 15.15.4-type-2Expected Result: FAIL
Regression Test:
tcltest::test 15.15.4-type-1 { - must have numeric operand } { is_assignable_to T15154t1 Object -null } {FAIL}
- must have numeric operandTest Case: 15.15.4-type-3Expected Result: FAIL
Regression Test:
tcltest::test 15.15.4-type-2 { - must have numeric operand } { is_assignable_to T15154t2 boolean -true } {FAIL}
- must have numeric operandTest Case: 15.15.4-type-4Expected Result: FAIL
Regression Test:
tcltest::test 15.15.4-type-3 { - must have numeric operand } { is_assignable_to T15154t3 Object {-(new Object())} } {FAIL}
- must have numeric operandTest Case: 15.15.4-type-5Expected Result: FAIL
Regression Test:
tcltest::test 15.15.4-type-4 { - must have numeric operand } { is_assignable_to T15154t4 int -System.out.println() } {FAIL}
- performs unary promotionTest Case: 15.15.4-type-6Expected Result: FAIL
Regression Test:
tcltest::test 15.15.4-type-5 { - performs unary promotion } { #is_assignable_to creates byte n1, byte n2 is_assignable_to T15154t5 byte 1 byte -n1 } {FAIL}
- must have numeric operandTest Case: 15.15.4-type-7Expected Result: PASS
Regression Test:
tcltest::test 15.15.4-type-6 { - must have numeric operand } { is_assignable_to T15154t6 short -1 } {PASS}
- must have numeric operandTest Case: 15.15.4-type-8Expected Result: PASS
Regression Test:
tcltest::test 15.15.4-type-7 { - must have numeric operand } { is_assignable_to T15154t7 char -(-'1') } {PASS}
- must have numeric operandTest Case: 15.15.4-int-1Expected Result: PASS
Regression Test:
tcltest::test 15.15.4-type-8 { - must have numeric operand } { is_assignable_to T15154t8 byte -1 } {PASS}
-x = ~x+1 for all intsTest Case: 15.15.4-int-2Expected Result: PASS
Regression Test:
tcltest::test 15.15.4-int-1 { -x = ~x+1 for all ints } { constant_expression T15154i1 {-0 == ~0+1} } {PASS}
-x = ~x+1 for all intsTest Case: 15.15.4-int-3Expected Result: PASS
Regression Test:
tcltest::test 15.15.4-int-2 { -x = ~x+1 for all ints } { constant_expression T15154i2 {-0xffffffff == ~0xffffffff+1} } {PASS}
-MIN_INT is still MIN_INTTest Case: 15.15.4-long-1Expected Result: PASS
Regression Test:
tcltest::test 15.15.4-int-3 { -MIN_INT is still MIN_INT } { constant_expression T15154i3 {-0x80000000 == 0x80000000} } {PASS}
-x = ~x+1 for all longsTest Case: 15.15.4-long-2Expected Result: PASS
Regression Test:
tcltest::test 15.15.4-long-1 { -x = ~x+1 for all longs } { constant_expression T15154l1 {-0L == ~0L+1} } {PASS}
-x = ~x+1 for all longsTest Case: 15.15.4-long-3Expected Result: PASS
Regression Test:
tcltest::test 15.15.4-long-2 { -x = ~x+1 for all longs } { constant_expression T15154l2 {-0xffffffffffffffffL == ~0xffffffffffffffffL+1} } {PASS}
-MIN_LONG is still MIN_LONGTest Case: 15.15.4-float-1Expected Result: PASS
Regression Test:
tcltest::test 15.15.4-long-3 { -MIN_LONG is still MIN_LONG } { constant_expression T15154l3 {-0x8000000000000000L == 0x8000000000000000L} } {PASS}
-NaN is still NaNTest Case: 15.15.4-float-2Expected Result: PASS
Regression Test:
tcltest::test 15.15.4-float-1 { -NaN is still NaN } { constant_expression T15154f1 {-Float.NaN != -Float.NaN} } {PASS}
- Infinity is Infinity of opposite signTest Case: 15.15.4-float-3Expected Result: PASS
Regression Test:
tcltest::test 15.15.4-float-2 { - Infinity is Infinity of opposite sign } { constant_expression T15154f2 {-Float.POSITIVE_INFINITY == Float.NEGATIVE_INFINITY} } {PASS}
- 0.0 is zero of opposite signTest Case: 15.15.4-double-1Expected Result: PASS
Regression Test:
tcltest::test 15.15.4-float-3 { - 0.0 is zero of opposite sign } { constant_expression T15154f3 {(1/0.0f) != (1/-0.0f)} } {PASS}
-NaN is still NaNTest Case: 15.15.4-double-2Expected Result: PASS
Regression Test:
tcltest::test 15.15.4-double-1 { -NaN is still NaN } { constant_expression T15154d1 {-Double.NaN != -Double.NaN} } {PASS}
- Infinity is Infinity of opposite signTest Case: 15.15.4-double-3Expected Result: PASS
Regression Test:
tcltest::test 15.15.4-double-2 { - Infinity is Infinity of opposite sign } { constant_expression T15154d2 {-Double.POSITIVE_INFINITY == Double.NEGATIVE_INFINITY} } {PASS}
- 0.0 is zero of opposite signExpected Result: PASS
Regression Test:
tcltest::test 15.15.4-double-3 { - 0.0 is zero of opposite sign } { constant_expression T15154d3 {(1/0.0) != (1/-0.0)} } {PASS}
tests/jls/expressions/unary-operators/bitwise-complement-operator
~ must have integral operandTest Case: 15.15.5-type-2Expected Result: FAIL
Regression Test:
tcltest::test 15.15.5-type-1 { ~ must have integral operand } { is_assignable_to T15155t1 Object ~null } {FAIL}
~ must have integral operandTest Case: 15.15.5-type-3Expected Result: FAIL
Regression Test:
tcltest::test 15.15.5-type-2 { ~ must have integral operand } { is_assignable_to T15155t2 boolean ~true } {FAIL}
~ must have integral operandTest Case: 15.15.5-type-4Expected Result: FAIL
Regression Test:
tcltest::test 15.15.5-type-3 { ~ must have integral operand } { is_assignable_to T15155t3 Object {~(new Object())} } {FAIL}
~ must have integral operandTest Case: 15.15.5-type-5Expected Result: FAIL
Regression Test:
tcltest::test 15.15.5-type-4 { ~ must have integral operand } { is_assignable_to T15155t4 int ~System.out.println() } {FAIL}
~ must have integral operandTest Case: 15.15.5-type-6Expected Result: FAIL
Regression Test:
tcltest::test 15.15.5-type-5 { ~ must have integral operand } { is_assignable_to T15155t5 int ~0.0f } {FAIL}
~ must have integral operandTest Case: 15.15.5-type-7Expected Result: FAIL
Regression Test:
tcltest::test 15.15.5-type-6 { ~ must have integral operand } { is_assignable_to T15155t6 int ~0.0d } {FAIL}
~ performs unary promotionTest Case: 15.15.5-type-8Expected Result: FAIL
Regression Test:
tcltest::test 15.15.5-type-7 { ~ performs unary promotion } { #is_assignable_to creates byte n1, byte n2 is_assignable_to T15155t7 byte 1 byte ~n1 } {FAIL}
~ must have integral operandTest Case: 15.15.5-type-9Expected Result: PASS
Regression Test:
tcltest::test 15.15.5-type-8 { ~ must have integral operand } { is_assignable_to T15155t8 short ~1 } {PASS}
~ must have integral operandTest Case: 15.15.5-type-10Expected Result: PASS
Regression Test:
tcltest::test 15.15.5-type-9 { ~ must have integral operand } { is_assignable_to T15155t9 char ~(~'1') } {PASS}
~ must have integral operandTest Case: 15.15.5-int-1Expected Result: PASS
Regression Test:
tcltest::test 15.15.5-type-10 { ~ must have integral operand } { is_assignable_to T15155t10 byte ~1 } {PASS}
~x = -x-1 for all intsTest Case: 15.15.5-int-2Expected Result: PASS
Regression Test:
tcltest::test 15.15.5-int-1 { ~x = -x-1 for all ints } { constant_expression T15155i1 {~0 == -0-1} } {PASS}
~x = -x-1 for all intsTest Case: 15.15.5-long-1Expected Result: PASS
Regression Test:
tcltest::test 15.15.5-int-2 { ~x = -x-1 for all ints } { constant_expression T15155i2 {~0xffffffff == -0xffffffff-1} } {PASS}
~x = -x-1 for all longsTest Case: 15.15.5-long-2Expected Result: PASS
Regression Test:
tcltest::test 15.15.5-long-1 { ~x = -x-1 for all longs } { constant_expression T15155l1 {~0L == -0L-1} } {PASS}
~x = -x-1 for all longsExpected Result: PASS
Regression Test:
tcltest::test 15.15.5-long-2 { ~x = -x-1 for all longs } { constant_expression T15155l2 {~0xffffffffffffffffL == -0xffffffffffffffffL-1} } {PASS}
tests/jls/expressions/unary-operators/logical-complement-operator
! must have boolean operandTest Case: 15.15.6-type-2Expected Result: FAIL
Regression Test:
tcltest::test 15.15.6-type-1 { ! must have boolean operand } { is_assignable_to T15156t1 Object !null } {FAIL}
! must have boolean operandTest Case: 15.15.6-type-3Expected Result: FAIL
Regression Test:
tcltest::test 15.15.6-type-2 { ! must have boolean operand } { is_assignable_to T15156t2 Object {!(new Object())} } {FAIL}
! must have boolean operandTest Case: 15.15.6-type-4Expected Result: FAIL
Regression Test:
tcltest::test 15.15.6-type-3 { ! must have boolean operand } { is_assignable_to T15156t3 int !System.out.println() } {FAIL}
! must have boolean operandTest Case: 15.15.6-type-5Expected Result: FAIL
Regression Test:
tcltest::test 15.15.6-type-4 { ! must have boolean operand } { is_assignable_to T15156t4 int !0.0f } {FAIL}
! must have boolean operandTest Case: 15.15.6-type-6Expected Result: FAIL
Regression Test:
tcltest::test 15.15.6-type-5 { ! must have boolean operand } { is_assignable_to T15156t5 int !0.0d } {FAIL}
! must have boolean operandTest Case: 15.15.6-type-7Expected Result: FAIL
Regression Test:
tcltest::test 15.15.6-type-6 { ! must have boolean operand } { is_assignable_to T15156t6 short !1 } {FAIL}
! must have boolean operandTest Case: 15.15.6-type-8Expected Result: FAIL
Regression Test:
tcltest::test 15.15.6-type-7 { ! must have boolean operand } { is_assignable_to T15156t7 char !'1' } {FAIL}
! must have boolean operandTest Case: 15.15.6-boolean-1Expected Result: FAIL
Regression Test:
tcltest::test 15.15.6-type-8 { ! must have boolean operand } { is_assignable_to T15156t8 byte !1 } {FAIL}
! true is falseTest Case: 15.15.6-boolean-2Expected Result: PASS
Regression Test:
tcltest::test 15.15.6-boolean-1 { ! true is false } { constant_expression T15156b1 {!true == false} } {PASS}
! false is trueExpected Result: PASS
Regression Test:
tcltest::test 15.15.6-boolean-2 { ! false is true } { constant_expression T15156b2 {!false == true} } {PASS}
tests/jls/expressions/cast-expressions
Except for boolean, (primitive) primitive is always legalTest Case: 15.16-primitive-2Expected Result: PASS
Regression Test:
tcltest::test 15.16-primitive-1 { Except for boolean, (primitive) primitive is always legal } { empty_main T1516p1 { boolean b = (boolean) true; } } {PASS}
Except for boolean, (primitive) primitive is always legalTest Case: 15.16-primitive-3Expected Result: FAIL
Regression Test:
tcltest::test 15.16-primitive-2 { Except for boolean, (primitive) primitive is always legal } { empty_main T1516p2 { boolean b = (boolean) 1; } } {FAIL}
Except for boolean, (primitive) primitive is always legalTest Case: 15.16-primitive-4Expected Result: FAIL
Regression Test:
tcltest::test 15.16-primitive-3 { Except for boolean, (primitive) primitive is always legal } { empty_main T1516p3 { int i = (int) true; } } {FAIL}
Except for boolean, (primitive) primitive is always legalTest Case: 15.16-primitive-5Expected Result: PASS
Regression Test:
tcltest::test 15.16-primitive-4 { Except for boolean, (primitive) primitive is always legal } { empty_main T1516p4 { int i = (int) 1; } } {PASS}
Except for boolean, (primitive) primitive is always legalTest Case: 15.16-primitive-6Expected Result: PASS
Regression Test:
tcltest::test 15.16-primitive-5 { Except for boolean, (primitive) primitive is always legal } { empty_main T1516p5 { double d = (double) 1; } } {PASS}
Except for boolean, (primitive) primitive is always legalTest Case: 15.16-primitive-7Expected Result: PASS
Regression Test:
tcltest::test 15.16-primitive-6 { Except for boolean, (primitive) primitive is always legal } { empty_main T1516p6 { int i = (int) 1.0; } } {PASS}
Except for boolean, (primitive) primitive is always legalTest Case: 15.16-primitive-8Expected Result: PASS
Regression Test:
tcltest::test 15.16-primitive-7 { Except for boolean, (primitive) primitive is always legal } { empty_main T1516p7 { int i = (int) '1'; } } {PASS}
(primitive) non-primitive is never legalTest Case: 15.16-primitive-9Expected Result: FAIL
Regression Test:
tcltest::test 15.16-primitive-8 { (primitive) non-primitive is never legal } { empty_main T1516p8 { int i = (int) "1"; } } {FAIL}
(primitive) non-primitive is never legalTest Case: 15.16-primitive-10Expected Result: FAIL
Regression Test:
tcltest::test 15.16-primitive-9 { (primitive) non-primitive is never legal } { empty_main T1516p9 { int i = (int) new Integer(1); } } {FAIL}
(primitive) non-primitive is never legalTest Case: 15.16-primitive-11Expected Result: FAIL
Regression Test:
tcltest::test 15.16-primitive-10 { (primitive) non-primitive is never legal } { empty_main T1516p10 { int i = (int) null; } } {FAIL}
(primitive) non-primitive is never legalTest Case: 15.16-value-1Expected Result: FAIL
Regression Test:
tcltest::test 15.16-primitive-11 { (primitive) non-primitive is never legal } { empty_main T1516p11 { int i = (int) System.out.println(); } } {FAIL}
casts create values, not variablesTest Case: 15.16-value-2Expected Result: FAIL
Regression Test:
tcltest::test 15.16-value-1 { casts create values, not variables } { empty_main T1516v1 { int i = 1; ((int) i)++; } } {FAIL}
casts create values, not variablesTest Case: 15.16-value-3Expected Result: FAIL
Regression Test:
tcltest::test 15.16-value-2 { casts create values, not variables } { empty_main T1516v2 { int i = 1; ++(int) i; } } {FAIL}
casts create values, not variablesTest Case: 15.16-value-4Expected Result: FAIL
Regression Test:
tcltest::test 15.16-value-3 { casts create values, not variables } { empty_main T1516v3 { int i; (long) i = 1; } } {FAIL}
casts create values, not variablesTest Case: 15.16-array-1Expected Result: FAIL
Regression Test:
tcltest::test 15.16-value-4 { casts create values, not variables } { empty_main T1516v4 { int i; ((long) i) = 1; } } {FAIL}
array type casting is legal if a widening or narrowing conversion can be madeTest Case: 15.16-array-2Expected Result: FAIL
Regression Test:
tcltest::test 15.16-array-1 { array type casting is legal if a widening or narrowing conversion can be made } { empty_main T1516a1 { int[] i = {}; long[] l = (long[]) i; } } {FAIL}
array type casting is legal if a widening or narrowing conversion can be madeTest Case: 15.16-array-3Expected Result: PASS
Regression Test:
tcltest::test 15.16-array-2 { array type casting is legal if a widening or narrowing conversion can be made } { empty_main T1516a2 { int[] i = {}; int[] l = (int[]) i; } } {PASS}
array type casting is legal if a widening or narrowing conversion can be madeTest Case: 15.16-array-4Expected Result: PASS
Regression Test:
tcltest::test 15.16-array-3 { array type casting is legal if a widening or narrowing conversion can be made } { empty_main T1516a3 { int[] i = {}; Object o = (Object) i; } } {PASS}
array type casting is legal if a widening or narrowing conversion can be madeTest Case: 15.16-array-5Expected Result: PASS
Regression Test:
tcltest::test 15.16-array-4 { array type casting is legal if a widening or narrowing conversion can be made } { empty_main T1516a4 { int[][] i = {}; Cloneable c = (Cloneable) i; } } {PASS}
array type casting is legal if a widening or narrowing conversion can be madeTest Case: 15.16-array-6Expected Result: PASS
Regression Test:
tcltest::test 15.16-array-5 { array type casting is legal if a widening or narrowing conversion can be made } { empty_main T1516a5 { int[][][] i = {}; java.io.Serializable[] s = (java.io.Serializable[]) i; } } {PASS}
array type casting is legal if a widening or narrowing conversion can be madeTest Case: 15.16-array-7Expected Result: PASS
Regression Test:
tcltest::test 15.16-array-6 { array type casting is legal if a widening or narrowing conversion can be made } { empty_main T1516a6 { Object[][][] o = {}; java.io.Serializable[] s = (java.io.Serializable[]) o; } } {PASS}
array type casting is legal if a widening or narrowing conversion can be madeTest Case: 15.16-array-8Expected Result: PASS
Regression Test:
tcltest::test 15.16-array-7 { array type casting is legal if a widening or narrowing conversion can be made } { empty_main T1516a7 { Object o = null; Cloneable[] s = (Cloneable[]) o; } } {PASS}
array type casting is legal if a widening or narrowing conversion can be madeTest Case: 15.16-array-9Expected Result: FAIL
Regression Test:
tcltest::test 15.16-array-8 { array type casting is legal if a widening or narrowing conversion can be made } { empty_main T1516a8 { Error[] o = null; Cloneable[][] s = (Cloneable[][]) o; } } {FAIL}
array type casting is legal if a widening or narrowing conversion can be madeTest Case: 15.16-array-10Expected Result: PASS
Regression Test:
tcltest::test 15.16-array-9 { array type casting is legal if a widening or narrowing conversion can be made } { empty_main T1516a9 { Cloneable[][] s = (Cloneable[][]) (Object) (Integer[]) (Cloneable) (int[]) null; } } {PASS}
array type casting is legal if a widening or narrowing conversion can be madeTest Case: 15.16-array-11Expected Result: FAIL
Regression Test:
tcltest::test 15.16-array-10 { array type casting is legal if a widening or narrowing conversion can be made } { empty_main T1516a10 { class A {} class B {} B[] b = (B[]) new A[0]; } } {FAIL}
array type casting is legal if a widening or narrowing conversion can be madeTest Case: 15.16-array-12Expected Result: FAIL
Regression Test:
tcltest::test 15.16-array-11 { array type casting is legal if a widening or narrowing conversion can be made } { empty_main T1516a11 { Runnable[] r = (Runnable[]) new String[0]; } } {FAIL}
array type casting is legal if a widening or narrowing conversion can be madeTest Case: 15.16-array-13Expected Result: PASS
Regression Test:
tcltest::test 15.16-array-12 { array type casting is legal if a widening or narrowing conversion can be made } { empty_class T1516a12 { interface I {} class C {} I[] i = (I[]) new C[0]; } } {PASS}
array type casting is legal if a widening or narrowing conversion can be madeTest Case: 15.16-array-14Expected Result: PASS
Regression Test:
tcltest::test 15.16-array-13 { array type casting is legal if a widening or narrowing conversion can be made } { empty_class T1516a13 { interface I { int m(); } class C { void m() {} } I[] i = (I[]) new C[0]; } } {PASS}
array type casting is legal if a widening or narrowing conversion can be madeTest Case: 15.16-array-15Expected Result: PASS
Regression Test:
tcltest::test 15.16-array-14 { array type casting is legal if a widening or narrowing conversion can be made } { empty_class T1516a14 { interface I {} interface J {} I[] i = (I[]) new J[0]; } } {PASS}
array type casting is legal if a widening or narrowing conversion can be madeTest Case: 15.16-ref-1Expected Result: FAIL
Regression Test:
tcltest::test 15.16-array-15 { array type casting is legal if a widening or narrowing conversion can be made } { empty_class T1516a15 { interface I { int m(); } interface J { void m(); } I[] i = (I[]) new J[0]; } } {FAIL}
reference type casting is legal if a widening or narrowing conversion can be madeTest Case: 15.16-ref-2Expected Result: PASS
Regression Test:
tcltest::test 15.16-ref-1 { reference type casting is legal if a widening or narrowing conversion can be made } { empty_main T1516r1 { Object o = null; String s = (String) o; } } {PASS}
reference type casting is legal if a widening or narrowing conversion can be madeTest Case: 15.16-ref-3Expected Result: PASS
Regression Test:
tcltest::test 15.16-ref-2 { reference type casting is legal if a widening or narrowing conversion can be made } { empty_main T1516r2 { String o = null; String s = (String) o; } } {PASS}
reference type casting is legal if a widening or narrowing conversion can be madeTest Case: 15.16-ref-4Expected Result: PASS
Regression Test:
tcltest::test 15.16-ref-3 { reference type casting is legal if a widening or narrowing conversion can be made } { empty_main T1516r3 { String s = null; Object o = (Object) s; } } {PASS}
reference type casting is legal if a widening or narrowing conversion can be madeTest Case: 15.16-ref-5Expected Result: FAIL
Regression Test:
tcltest::test 15.16-ref-4 { reference type casting is legal if a widening or narrowing conversion can be made } { empty_main T1516r4 { class A {} class B {} B b = (B) new A(); } } {FAIL}
reference type casting is legal if a widening or narrowing conversion can be madeTest Case: 15.16-ref-6Expected Result: FAIL
Regression Test:
tcltest::test 15.16-ref-5 { reference type casting is legal if a widening or narrowing conversion can be made } { empty_main T1516r5 { Runnable r = (Runnable) ""; } } {FAIL}
reference type casting is legal if a widening or narrowing conversion can be madeTest Case: 15.16-ref-7Expected Result: PASS
Regression Test:
tcltest::test 15.16-ref-6 { reference type casting is legal if a widening or narrowing conversion can be made } { empty_class T1516r6 { interface I {} class C {} I i = (I) new C(); } } {PASS}
reference type casting is legal if a widening or narrowing conversion can be madeTest Case: 15.16-ref-8Expected Result: PASS
Regression Test:
tcltest::test 15.16-ref-7 { reference type casting is legal if a widening or narrowing conversion can be made } { empty_class T1516r7 { interface I { int m(); } class C { void m() {} } I i = (I) new C(); } } {PASS}
reference type casting is legal if a widening or narrowing conversion can be madeTest Case: 15.16-ref-9Expected Result: PASS
Regression Test:
tcltest::test 15.16-ref-8 { reference type casting is legal if a widening or narrowing conversion can be made } { empty_class T1516r8 { interface I {} interface J {} void m(J j) { I i = (I) j; } } } {PASS}
reference type casting is legal if a widening or narrowing conversion can be madeTest Case: 15.16-semantic-1Expected Result: FAIL
Regression Test:
tcltest::test 15.16-ref-9 { reference type casting is legal if a widening or narrowing conversion can be made } { empty_class T1516r9 { interface I { int m(); } interface J { void m(); } void m(J j) { I i = (I) j; } } } {FAIL}
To avoid grammar ambiguities, this syntax is accepted; semantics must reject itTest Case: 15.16-semantic-2Expected Result: FAIL
Regression Test:
tcltest::test 15.16-semantic-1 { To avoid grammar ambiguities, this syntax is accepted; semantics must reject it } { empty_class T1516s1 { Object o = (int[]) + 5; } } {FAIL}
To avoid grammar ambiguities, this syntax is accepted; semantics must reject itTest Case: 15.16-semantic-3Expected Result: FAIL
Regression Test:
tcltest::test 15.16-semantic-2 { To avoid grammar ambiguities, this syntax is accepted; semantics must reject it } { empty_class T1516s2 { Object o = (T1516s2) + ""; } } {FAIL}
To avoid grammar ambiguities, this syntax is accepted; semantics must reject itTest Case: 15.16-semantic-4Expected Result: FAIL
Regression Test:
tcltest::test 15.16-semantic-3 { To avoid grammar ambiguities, this syntax is accepted; semantics must reject it } { empty_class T1516s3 { Object o = (T1516s3 + "") null; } } {FAIL}
To avoid grammar ambiguities, this syntax is accepted; semantics must reject itTest Case: 15.16-semantic-5Expected Result: FAIL
Regression Test:
tcltest::test 15.16-semantic-4 { To avoid grammar ambiguities, this syntax is accepted; semantics must reject it } { empty_main T1516s4 { // Because (String) is followed by +, it is an expression not a cast int String; Object o = (String) + 1 + ""; } } {FAIL}
To avoid grammar ambiguities, this syntax is acceptedExpected Result: PASS
Regression Test:
tcltest::test 15.16-semantic-5 { To avoid grammar ambiguities, this syntax is accepted } { empty_main T1516s5 { // Because (String) is followed by +, it is an expression not a cast final int String = 1; switch (String) { case 0: case ((String) + 1 + "") == "2" ? 1 : 0: } } } {PASS}
tests/jls/expressions/multiplicative-operators
null is not a primitive numeric typeTest Case: 15.17-null-2Expected Result: FAIL
Regression Test:
tcltest::test 15.17-null-1 { null is not a primitive numeric type } { empty_class T1517null1 {int i = 2*null;} } {FAIL}
null is not a primitive numeric typeTest Case: 15.17-null-3Expected Result: FAIL
Regression Test:
tcltest::test 15.17-null-2 { null is not a primitive numeric type } { empty_class T1517null2 {int i = 2/null;} } {FAIL}
null is not a primitive numeric typeTest Case: 15.17-boolean-1Expected Result: FAIL
Regression Test:
tcltest::test 15.17-null-3 { null is not a primitive numeric type } { empty_class T1517null3 {int i = 2%null;} } {FAIL}
boolean is not a primitive numeric typeTest Case: 15.17-boolean-2Expected Result: FAIL
Regression Test:
tcltest::test 15.17-boolean-1 { boolean is not a primitive numeric type } { empty_class T1517boolean1 {int i = 2*true;} } {FAIL}
boolean is not a primitive numeric typeTest Case: 15.17-boolean-3Expected Result: FAIL
Regression Test:
tcltest::test 15.17-boolean-2 { boolean is not a primitive numeric type } { empty_class T1517boolean2 {int i = 2/true;} } {FAIL}
boolean is not a primitive numeric typeTest Case: 15.17-object-1Expected Result: FAIL
Regression Test:
tcltest::test 15.17-boolean-3 { boolean is not a primitive numeric type } { empty_class T1517boolean3 {int i = 2%true;} } {FAIL}
Object is not a primitive numeric typeTest Case: 15.17-object-2Expected Result: FAIL
Regression Test:
tcltest::test 15.17-object-1 { Object is not a primitive numeric type } { empty_class T1517object1 {int i = 2*(new Object());} } {FAIL}
Object is not a primitive numeric typeTest Case: 15.17-object-3Expected Result: FAIL
Regression Test:
tcltest::test 15.17-object-2 { Object is not a primitive numeric type } { empty_class T1517object2 {int i = 2/(new Object());} } {FAIL}
Object is not a primitive numeric typeTest Case: 15.17-void-1Expected Result: FAIL
Regression Test:
tcltest::test 15.17-object-3 { Object is not a primitive numeric type } { empty_class T1517object3 {int i = 2%(new Object());} } {FAIL}
void is not a primitive numeric typeTest Case: 15.17-void-2Expected Result: FAIL
Regression Test:
tcltest::test 15.17-void-1 { void is not a primitive numeric type } { empty_class T1517void1 {int i = 2*System.out.println();} } {FAIL}
void is not a primitive numeric typeTest Case: 15.17-void-3Expected Result: FAIL
Regression Test:
tcltest::test 15.17-void-2 { void is not a primitive numeric type } { empty_class T1517void2 {int i = 2/System.out.println();} } {FAIL}
void is not a primitive numeric typeTest Case: 15.17-mult-1Expected Result: FAIL
Regression Test:
tcltest::test 15.17-void-3 { void is not a primitive numeric type } { empty_class T1517void3 {int i = 2%System.out.println();} } {FAIL}
* is a multiplicative operatorTest Case: 15.17-mult-2Expected Result: PASS
Regression Test:
tcltest::test 15.17-mult-1 { * is a multiplicative operator } { constant_expression T1517mult1 {2*2 == 4} } {PASS}
* is a multiplicative operatorTest Case: 15.17-mult-3Expected Result: PASS
Regression Test:
tcltest::test 15.17-mult-2 { * is a multiplicative operator } { constant_expression T1517mult2 {2L*2L == 4L} } {PASS}
* is a multiplicative operatorTest Case: 15.17-mult-4Expected Result: PASS
Regression Test:
tcltest::test 15.17-mult-3 { * is a multiplicative operator } { constant_expression T1517mult3 {2.0F * 2.0F == 4.0F} } {PASS}
* is a multiplicative operatorTest Case: 15.17-div-1Expected Result: PASS
Regression Test:
tcltest::test 15.17-mult-4 { * is a multiplicative operator } { constant_expression T1517mult4 {2.0D * 2.0D == 4.0D} } {PASS}
/ is a multiplicative operatorTest Case: 15.17-div-2Expected Result: PASS
Regression Test:
tcltest::test 15.17-div-1 { / is a multiplicative operator } { constant_expression T1517div1 {2/2 == 1} } {PASS}
/ is a multiplicative operatorTest Case: 15.17-div-3Expected Result: PASS
Regression Test:
tcltest::test 15.17-div-2 { / is a multiplicative operator } { constant_expression T1517div2 {2L/2L == 1L} } {PASS}
/ is a multiplicative operatorTest Case: 15.17-div-4Expected Result: PASS
Regression Test:
tcltest::test 15.17-div-3 { / is a multiplicative operator } { constant_expression T1517div3 {2.0F / 2.0F == 1.0F} } {PASS}
/ is a multiplicative operatorTest Case: 15.17-mod-1Expected Result: PASS
Regression Test:
tcltest::test 15.17-div-4 { / is a multiplicative operator } { constant_expression T1517div4 {2.0D / 2.0D == 1.0D} } {PASS}
% is a multiplicative operatorTest Case: 15.17-mod-2Expected Result: PASS
Regression Test:
tcltest::test 15.17-mod-1 { % is a multiplicative operator } { constant_expression T1517mod1 {2%2 == 0} } {PASS}
% is a multiplicative operatorTest Case: 15.17-mod-3Expected Result: PASS
Regression Test:
tcltest::test 15.17-mod-2 { % is a multiplicative operator } { constant_expression T1517mod2 {2L%2L == 0L} } {PASS}
% is a multiplicative operatorTest Case: 15.17-mod-4Expected Result: PASS
Regression Test:
tcltest::test 15.17-mod-3 { % is a multiplicative operator } { constant_expression T1517mod3 {2.0F % 2.0F == 0.0F} } {PASS}
% is a multiplicative operatorTest Case: 15.17-type-1Expected Result: PASS
Regression Test:
tcltest::test 15.17-mod-4 { % is a multiplicative operator } { constant_expression T1517mod4 {2.0D % 2.0D == 0.0D} } {PASS}
The type of a multiplicative expression is the promoted type of its operands.Test Case: 15.17-type-2Expected Result: FAIL
Regression Test:
tcltest::test 15.17-type-1 { The type of a multiplicative expression is the promoted type of its operands. } { is_assignable_to T1517type1 int {1 * 2L} } {FAIL}
The type of a multiplicative expression is the promoted type of its operands.Test Case: 15.17-type-3Expected Result: PASS
Regression Test:
tcltest::test 15.17-type-2 { The type of a multiplicative expression is the promoted type of its operands. } { is_assignable_to T1517type2 long {1 * 2L} } {PASS}
The type of a multiplicative expression is the promoted type of its operands.Test Case: 15.17-type-4Expected Result: FAIL
Regression Test:
tcltest::test 15.17-type-3 { The type of a multiplicative expression is the promoted type of its operands. } { is_assignable_to T1517type3 int {1 / 2L} } {FAIL}
The type of a multiplicative expression is the promoted type of its operands.Test Case: 15.17-type-5Expected Result: PASS
Regression Test:
tcltest::test 15.17-type-4 { The type of a multiplicative expression is the promoted type of its operands. } { is_assignable_to T1517type4 long {1 / 2L} } {PASS}
The type of a multiplicative expression is the promoted type of its operands.Test Case: 15.17-type-6Expected Result: FAIL
Regression Test:
tcltest::test 15.17-type-5 { The type of a multiplicative expression is the promoted type of its operands. } { is_assignable_to T1517type5 int {1 % 2L} } {FAIL}
The type of a multiplicative expression is the promoted type of its operands.Test Case: 15.17-type-7Expected Result: PASS
Regression Test:
tcltest::test 15.17-type-6 { The type of a multiplicative expression is the promoted type of its operands. } { is_assignable_to T1517type6 long {1 % 2L} } {PASS}
The type of a multiplicative expression is the promoted type of its operands.Test Case: 15.17-type-8Expected Result: FAIL
Regression Test:
tcltest::test 15.17-type-7 { The type of a multiplicative expression is the promoted type of its operands. } { is_assignable_to T1517type7 float {1f * 2D} } {FAIL}
The type of a multiplicative expression is the promoted type of its operands.Test Case: 15.17-type-9Expected Result: PASS
Regression Test:
tcltest::test 15.17-type-8 { The type of a multiplicative expression is the promoted type of its operands. } { is_assignable_to T1517type8 double {1f * 2D} } {PASS}
The type of a multiplicative expression is the promoted type of its operands.Test Case: 15.17-type-10Expected Result: FAIL
Regression Test:
tcltest::test 15.17-type-9 { The type of a multiplicative expression is the promoted type of its operands. } { is_assignable_to T1517type9 float {1f / 2D} } {FAIL}
The type of a multiplicative expression is the promoted type of its operands.Test Case: 15.17-type-11Expected Result: PASS
Regression Test:
tcltest::test 15.17-type-10 { The type of a multiplicative expression is the promoted type of its operands. } { is_assignable_to T1517type10 double {1f / 2D} } {PASS}
The type of a multiplicative expression is the promoted type of its operands.Test Case: 15.17-type-12Expected Result: FAIL
Regression Test:
tcltest::test 15.17-type-11 { The type of a multiplicative expression is the promoted type of its operands. } { is_assignable_to T1517type11 float {1f % 2D} } {FAIL}
The type of a multiplicative expression is the promoted type of its operands.Test Case: 15.17-type-13Expected Result: PASS
Regression Test:
tcltest::test 15.17-type-12 { The type of a multiplicative expression is the promoted type of its operands. } { is_assignable_to T1517type12 double {1f % 2D} } {PASS}
The type of a multiplicative expression is the promoted type of its operands.Test Case: 15.17-type-14Expected Result: FAIL
Regression Test:
tcltest::test 15.17-type-13 { The type of a multiplicative expression is the promoted type of its operands. } { is_assignable_to T1517type13 int {1 * 2D} } {FAIL}
The type of a multiplicative expression is the promoted type of its operands.Test Case: 15.17-type-15Expected Result: PASS
Regression Test:
tcltest::test 15.17-type-14 { The type of a multiplicative expression is the promoted type of its operands. } { is_assignable_to T1517type14 double {1 * 2D} } {PASS}
The type of a multiplicative expression is the promoted type of its operands.Test Case: 15.17-type-16Expected Result: FAIL
Regression Test:
tcltest::test 15.17-type-15 { The type of a multiplicative expression is the promoted type of its operands. } { is_assignable_to T1517type15 int {1 / 2D} } {FAIL}
The type of a multiplicative expression is the promoted type of its operands.Test Case: 15.17-type-17Expected Result: PASS
Regression Test:
tcltest::test 15.17-type-16 { The type of a multiplicative expression is the promoted type of its operands. } { is_assignable_to T1517type16 double {1 / 2D} } {PASS}
The type of a multiplicative expression is the promoted type of its operands.Test Case: 15.17-type-18Expected Result: FAIL
Regression Test:
tcltest::test 15.17-type-17 { The type of a multiplicative expression is the promoted type of its operands. } { is_assignable_to T1517type17 int {1 % 2D} } {FAIL}
The type of a multiplicative expression is the promoted type of its operands.Expected Result: PASS
Regression Test:
tcltest::test 15.17-type-18 { The type of a multiplicative expression is the promoted type of its operands. } { is_assignable_to T1517type18 double {1 % 2D} } {PASS}
tests/jls/expressions/multiplicative-operators/multiplication-operator
side-effect-free multiplication is commutativeTest Case: 15.17.1-commute-2Expected Result: PASS
Regression Test:
tcltest::test 15.17.1-commute-1 { side-effect-free multiplication is commutative } { constant_expression T15171commute1 {1 * 2 == 2 * 1} } {PASS}
side-effect-free multiplication is commutativeTest Case: 15.17.1-commute-3Expected Result: PASS
Regression Test:
tcltest::test 15.17.1-commute-2 { side-effect-free multiplication is commutative } { constant_expression T15171commute2 {1L * 2L == 2L * 1L} } {PASS}
side-effect-free multiplication is commutativeTest Case: 15.17.1-commute-4Expected Result: PASS
Regression Test:
tcltest::test 15.17.1-commute-3 { side-effect-free multiplication is commutative } { constant_expression T15171commute3 {1f * 2f == 2f * 1f} } {PASS}
side-effect-free multiplication is commutativeTest Case: 15.17.1-assoc-1Expected Result: PASS
Regression Test:
tcltest::test 15.17.1-commute-4 { side-effect-free multiplication is commutative } { constant_expression T15171commute4 {1d * 2d == 2d * 1d} } {PASS}
integer multiplication is associative when all arguments are of the same typeTest Case: 15.17.1-assoc-2Expected Result: PASS
Regression Test:
tcltest::test 15.17.1-assoc-1 { integer multiplication is associative when all arguments are of the same type } { constant_expression T15171assoc1 {(1 * 2) * 3 == 1 * (2 * 3)} } {PASS}
integer multiplication is not associative when arguments are of different typesTest Case: 15.17.1-assoc-3Expected Result: FAIL
Regression Test:
tcltest::test 15.17.1-assoc-2 { integer multiplication is not associative when arguments are of different types } { constant_expression T15171assoc2 {(1L * 0x70000000) * 20 == 1L * (0x70000000 * 20)} } {FAIL}
floating-point multiplication is not associativeTest Case: 15.17.1-assoc-4Expected Result: FAIL
Regression Test:
tcltest::test 15.17.1-assoc-3 { floating-point multiplication is not associative } { constant_expression T15171assoc3 {(1e308 * 100.0) * .01 == 1e308 * (100.0 * .01)} } {FAIL}
multiplication is left-associativeTest Case: 15.17.1-float-1Expected Result: PASS
Regression Test:
tcltest::test 15.17.1-assoc-4 { multiplication is left-associative } { constant_expression T15171assoc4 {1e308 * 100.0 * .01 == (1e308 * 100.0) * .01} } {PASS}
NaN * NaN is NaNTest Case: 15.17.1-float-2Expected Result: PASS
Regression Test:
tcltest::test 15.17.1-float-1 { NaN * NaN is NaN } { constant_expression T15171f1 {Float.NaN * Float.NaN != Float.NaN * Float.NaN} } {PASS}
NaN * anything is NaNTest Case: 15.17.1-float-3Expected Result: PASS
Regression Test:
tcltest::test 15.17.1-float-2 { NaN * anything is NaN } { constant_expression T15171f2 {Float.NaN * 1f != Float.NaN * 1f} } {PASS}
the result is positive in floating-point multiplication if both operands have the same signTest Case: 15.17.1-float-4Expected Result: PASS
Regression Test:
tcltest::test 15.17.1-float-3 { the result is positive in floating-point multiplication if both operands have the same sign } { constant_expression T15171f3 {-1f * -2f > 0f} {1f * 2f > 0f} } {PASS}
the result is negative in floating-point multiplication if the operands have opposite signTest Case: 15.17.1-float-5Expected Result: PASS
Regression Test:
tcltest::test 15.17.1-float-4 { the result is negative in floating-point multiplication if the operands have opposite sign } { constant_expression T15171f4 {-1f * 2f < 0f} {1f * -2f < 0f} } {PASS}
Infinity * 0 is NaNTest Case: 15.17.1-float-6Expected Result: PASS
Regression Test:
tcltest::test 15.17.1-float-5 { Infinity * 0 is NaN } { constant_expression T15171f5 {Float.POSITIVE_INFINITY * 0f != Float.POSITIVE_INFINITY * 0f} } {PASS}
Infinity * finite == Infinity of correct signTest Case: 15.17.1-float-7Expected Result: PASS
Regression Test:
tcltest::test 15.17.1-float-6 { Infinity * finite == Infinity of correct sign } { constant_expression T15171f6 {Float.NEGATIVE_INFINITY * -1f == Float.POSITIVE_INFINITY} {Float.POSITIVE_INFINITY * -1f == Float.NEGATIVE_INFINITY} } {PASS}
Infinity * Infinity == Infinity of correct sign (Specified in JVMS errata)Test Case: 15.17.1-float-8Expected Result: PASS
Regression Test:
tcltest::test 15.17.1-float-7 { Infinity * Infinity == Infinity of correct sign (Specified in JVMS errata) } { constant_expression T15171f7 {Float.NEGATIVE_INFINITY * Float.NEGATIVE_INFINITY == Float.POSITIVE_INFINITY} {Float.POSITIVE_INFINITY * Float.POSITIVE_INFINITY == Float.POSITIVE_INFINITY} } {PASS}
Infinity * Infinity == Infinity of correct sign (Specified in JVMS errata)Test Case: 15.17.1-float-9Expected Result: PASS
Regression Test:
tcltest::test 15.17.1-float-8 { Infinity * Infinity == Infinity of correct sign (Specified in JVMS errata) } { constant_expression T15171f8 {Float.NEGATIVE_INFINITY * Float.POSITIVE_INFINITY == Float.NEGATIVE_INFINITY} {Float.POSITIVE_INFINITY * Float.NEGATIVE_INFINITY == Float.NEGATIVE_INFINITY} } {PASS}
Floating-point * produces Infinity for overflowTest Case: 15.17.1-float-10Expected Result: PASS
Regression Test:
tcltest::test 15.17.1-float-9 { Floating-point * produces Infinity for overflow } { constant_expression T15171f9 {1.0e30f * 1.0e30f == Float.POSITIVE_INFINITY} {1.0e30f * -1.0e30f == Float.NEGATIVE_INFINITY} } {PASS}
Floating-point * supports gradual underflowTest Case: 15.17.1-float-11Expected Result: PASS
Regression Test:
tcltest::test 15.17.1-float-10 { Floating-point * supports gradual underflow } { constant_expression T15171f10 {1e-22f * 1e-22f == 1e-44f} {1e-22f * -1e-22f == -1e-44f} } {PASS}
Floating-point * produces 0 for underflow (check 1/0 to determine sign)Test Case: 15.17.1-float-12Expected Result: PASS
Regression Test:
tcltest::test 15.17.1-float-11 { Floating-point * produces 0 for underflow (check 1/0 to determine sign) } { constant_expression T15171f11 {1e-30f * 1e-30f == 0} {1/(1e-30f * 1e-30f) == Float.POSITIVE_INFINITY} {1e-30f * -1e-30f == 0} {1/(1e-30f * -1e-30f) == Float.NEGATIVE_INFINITY} } {PASS}
Floating-point * works even with denormsTest Case: 15.17.1-float-13Expected Result: PASS
Regression Test:
tcltest::test 15.17.1-float-12 { Floating-point * works even with denorms } { constant_expression T15171f12 {1e30f * 1e-40f == 9.999946e-11f} {1e30f * -1e-40f == -9.999946e-11f} {1e-40f * -1e30f == -9.999946e-11f} {-1e-40f * -1e30f == 9.999946e-11f} } {PASS}
Floating-point * follows round-to-nearest rulesTest Case: 15.17.1-float-14Expected Result: PASS
Regression Test:
tcltest::test 15.17.1-float-13 { Floating-point * follows round-to-nearest rules } { constant_expression T15171f13 {0x800001 * 3f == 0x1800004} {0x800001 * 5f == 0x2800004} {0x800003 * 5f == 0x2800010} {0x800002 * 5f == 0x2800008} } {PASS}
Floating-point * follows round-to-nearest, even with denormsTest Case: 15.17.1-double-1Expected Result: PASS
Regression Test:
tcltest::test 15.17.1-float-14 { Floating-point * follows round-to-nearest, even with denorms } { constant_expression T15171f14 {2.1302879E-19f * 5.4316195E-20f == 1.1570912E-38f} } {PASS}
NaN * NaN is NaNTest Case: 15.17.1-double-2Expected Result: PASS
Regression Test:
tcltest::test 15.17.1-double-1 { NaN * NaN is NaN } { constant_expression T15171d1 {Double.NaN * Double.NaN != Double.NaN * Double.NaN} } {PASS}
NaN * anything is NaNTest Case: 15.17.1-double-3Expected Result: PASS
Regression Test:
tcltest::test 15.17.1-double-2 { NaN * anything is NaN } { constant_expression T15171d2 {Double.NaN * 1d != Double.NaN * 1d} } {PASS}
the result is positive in floating-point multiplication if both operands have the same signTest Case: 15.17.1-double-4Expected Result: PASS
Regression Test:
tcltest::test 15.17.1-double-3 { the result is positive in floating-point multiplication if both operands have the same sign } { constant_expression T15171d3 {-1d * -2d > 0d} {1d * 2d > 0d} } {PASS}
the result is negative in floating-point multiplication if the operands have opposite signTest Case: 15.17.1-double-5Expected Result: PASS
Regression Test:
tcltest::test 15.17.1-double-4 { the result is negative in floating-point multiplication if the operands have opposite sign } { constant_expression T15171d4 {-1.0 * 2.0 < 0.0} {1.0 * -2.0 < 0.0} } {PASS}
Infinity * 0 is NaNTest Case: 15.17.1-double-6Expected Result: PASS
Regression Test:
tcltest::test 15.17.1-double-5 { Infinity * 0 is NaN } { constant_expression T15171d5 {Double.POSITIVE_INFINITY * 0d != Double.POSITIVE_INFINITY * 0d} } {PASS}
Infinity * finite == Infinity of correct signTest Case: 15.17.1-double-7Expected Result: PASS
Regression Test:
tcltest::test 15.17.1-double-6 { Infinity * finite == Infinity of correct sign } { constant_expression T15171d6 {Double.NEGATIVE_INFINITY * -1d == Double.POSITIVE_INFINITY} {Double.POSITIVE_INFINITY * -1d == Double.NEGATIVE_INFINITY} } {PASS}
Infinity * Infinity == Infinity of correct sign (Specified in JVMS errata)Test Case: 15.17.1-double-8Expected Result: PASS
Regression Test:
tcltest::test 15.17.1-double-7 { Infinity * Infinity == Infinity of correct sign (Specified in JVMS errata) } { constant_expression T15171d7 {Double.NEGATIVE_INFINITY * Double.NEGATIVE_INFINITY == Double.POSITIVE_INFINITY} {Double.POSITIVE_INFINITY * Double.POSITIVE_INFINITY == Double.POSITIVE_INFINITY} } {PASS}
Infinity * Infinity == Infinity of correct sign (Specified in JVMS errata)Test Case: 15.17.1-double-9Expected Result: PASS
Regression Test:
tcltest::test 15.17.1-double-8 { Infinity * Infinity == Infinity of correct sign (Specified in JVMS errata) } { constant_expression T15171d8 {Double.NEGATIVE_INFINITY * Double.POSITIVE_INFINITY == Double.NEGATIVE_INFINITY} {Double.POSITIVE_INFINITY * Double.NEGATIVE_INFINITY == Double.NEGATIVE_INFINITY} } {PASS}
Floating-point * produces Infinity for overflowTest Case: 15.17.1-double-10Expected Result: PASS
Regression Test:
tcltest::test 15.17.1-double-9 { Floating-point * produces Infinity for overflow } { constant_expression T15171d9 {1.0e160 * 1.0e160 == Double.POSITIVE_INFINITY} {1.0e160 * -1.0e160 == Double.NEGATIVE_INFINITY} } {PASS}
Floating-point * supports gradual underflowTest Case: 15.17.1-double-11Expected Result: PASS
Regression Test:
tcltest::test 15.17.1-double-10 { Floating-point * supports gradual underflow } { constant_expression T15171d10 {1e-160 * 1e-160 == 1e-320} {1e-160 * -1e-160 == -1e-320} } {PASS}
Floating-point * produces 0 for underflow (check 1/0 to determine sign)Test Case: 15.17.1-double-12Expected Result: PASS
Regression Test:
tcltest::test 15.17.1-double-11 { Floating-point * produces 0 for underflow (check 1/0 to determine sign) } { constant_expression T15171d11 {1e-170 * 1e-170 == 0} {1/(1e-170 * 1e-170) == Double.POSITIVE_INFINITY} {1e-170 * -1e-170 == 0} {1/(1e-170 * -1e-170) == Double.NEGATIVE_INFINITY} } {PASS}
Floating-point * works even with denormsTest Case: 15.17.1-double-13Expected Result: PASS
Regression Test:
tcltest::test 15.17.1-double-12 { Floating-point * works even with denorms } { constant_expression T15171d12 {1e300 * 1e-320 == 9.99988867182683E-21} {1e300 * -1e-320 == -9.99988867182683E-21} {1e-320 * -1e300 == -9.99988867182683E-21} {-1e-320 * -1e300 == 9.99988867182683E-21} } {PASS}
Floating-point * follows round-to-nearest rulesTest Case: 15.17.1-double-14Expected Result: PASS
Regression Test:
tcltest::test 15.17.1-double-13 { Floating-point * follows round-to-nearest rules } { constant_expression T15171d13 {0x10000000000001L * 3d == 0x30000000000004L} {0x10000000000001L * 5d == 0x50000000000004L} {0x10000000000003L * 5d == 0x50000000000010L} {0x10000000000002L * 5d == 0x50000000000008L} } {PASS}
Floating-point * follows round-to-nearest, even with denorms, known bug in Sun's javacTest Case: 15.17.1-int-1Expected Result: PASS
Regression Test:
tcltest::test 15.17.1-double-14 { Floating-point * follows round-to-nearest, even with denorms, known bug in Sun's javac } { constant_expression T15171d14 {8.578459548793971E-162 * 2.512418001798401E-147 == 2.155267619808936E-308} {6.946121092140867E-162 * 2.669444126910801E-147 == 1.8542282154226677E-308} } {PASS}
overflow in integer multiplication, simply selects low-order bits, possibly changing signTest Case: 15.17.1-int-2Expected Result: PASS
Regression Test:
tcltest::test 15.17.1-int-1 { overflow in integer multiplication, simply selects low-order bits, possibly changing sign } { constant_expression T15171i1 {1234567890 * 10 == -539222988} } {PASS}
constant expression with int multiplicationTest Case: 15.17.1-long-1Expected Result: PASS
Regression Test:
tcltest::test 15.17.1-int-2 { constant expression with int multiplication } { constant_expression T15171i2 {-12300000 == 100000 * -123} {-50000000 == 500 * -100000} } {PASS}
constant expression with long multiplicationTest Case: 15.17.1-long-2Expected Result: PASS
Regression Test:
tcltest::test 15.17.1-long-1 { constant expression with long multiplication } { constant_expression T15171l1 {-12192592592745L == 987654321L * -12345} {-12192592592745L == 12345 * -987654321L} {12192592592745L == 987654321L * 12345} {12192592592745L == -987654321L * -12345} } {PASS}
constant expression with long multiplicationExpected Result: PASS
Regression Test:
tcltest::test 15.17.1-long-2 { constant expression with long multiplication } { constant_expression T15171l2 {-2L*(1L<<28) == 0xffffffffe0000000L} } {PASS}
tests/jls/expressions/multiplicative-operators/division-operator
division is left-associativeTest Case: 15.17.2-assoc-2Expected Result: PASS
Regression Test:
tcltest::test 15.17.2-assoc-1 { division is left-associative } { constant_expression T15172assoc1 {10 / 3 / 2 == 1} {10 / (3 / 2) == 10} } {PASS}
division is left-associativeTest Case: 15.17.2-float-1Expected Result: PASS
Regression Test:
tcltest::test 15.17.2-assoc-2 { division is left-associative } { constant_expression T15172assoc2 {10.0 / 3.0 / 2.0 == 1.6666666666666667} {10.0 / (3.0 / 2.0) == 6.666666666666667} } {PASS}
NaN / NaN is NaNTest Case: 15.17.2-float-2Expected Result: PASS
Regression Test:
tcltest::test 15.17.2-float-1 { NaN / NaN is NaN } { constant_expression T15172f1 {Float.NaN / Float.NaN != Float.NaN / Float.NaN} } {PASS}
NaN / anything is NaNTest Case: 15.17.2-float-3Expected Result: PASS
Regression Test:
tcltest::test 15.17.2-float-2 { NaN / anything is NaN } { constant_expression T15172f2 {Float.NaN / 1f != Float.NaN / 1f} {1f / Float.NaN != 1f / Float.NaN} } {PASS}
the result is positive in floating-point division if both operands have the same signTest Case: 15.17.2-float-4Expected Result: PASS
Regression Test:
tcltest::test 15.17.2-float-3 { the result is positive in floating-point division if both operands have the same sign } { constant_expression T15172f3 {-1f / -2f > 0f} {1f / 2f > 0f} } {PASS}
the result is negative in floating-point division if the operands have opposite signTest Case: 15.17.2-float-5Expected Result: PASS
Regression Test:
tcltest::test 15.17.2-float-4 { the result is negative in floating-point division if the operands have opposite sign } { constant_expression T15172f4 {-1f / 2f < 0f} {1f / -2f < 0f} } {PASS}
0 / 0 is NaNTest Case: 15.17.2-float-6Expected Result: PASS
Regression Test:
tcltest::test 15.17.2-float-5 { 0 / 0 is NaN } { constant_expression T15172f5 {0f / 0f != 0f / 0f} {-0f / 0f != -0f / 0f} } {PASS}
Infinity / finite == Infinity of correct signTest Case: 15.17.2-float-7Expected Result: PASS
Regression Test:
tcltest::test 15.17.2-float-6 { Infinity / finite == Infinity of correct sign } { constant_expression T15172f6 {Float.NEGATIVE_INFINITY / -1f == Float.POSITIVE_INFINITY} {Float.POSITIVE_INFINITY / -1f == Float.NEGATIVE_INFINITY} } {PASS}
Infinity / Infinity is NaNTest Case: 15.17.2-float-8Expected Result: PASS
Regression Test:
tcltest::test 15.17.2-float-7 { Infinity / Infinity is NaN } { constant_expression T15172f7 {Float.NEGATIVE_INFINITY / Float.NEGATIVE_INFINITY != Float.NEGATIVE_INFINITY / Float.NEGATIVE_INFINITY} {Float.POSITIVE_INFINITY / Float.NEGATIVE_INFINITY != Float.POSITIVE_INFINITY / Float.NEGATIVE_INFINITY} {Float.NEGATIVE_INFINITY / Float.POSITIVE_INFINITY != Float.NEGATIVE_INFINITY / Float.POSITIVE_INFINITY} {Float.POSITIVE_INFINITY / Float.POSITIVE_INFINITY != Float.POSITIVE_INFINITY / Float.POSITIVE_INFINITY} } {PASS}
Finite / Infinity == Signed zero (check 1/0 to determine sign)Test Case: 15.17.2-float-9Expected Result: PASS
Regression Test:
tcltest::test 15.17.2-float-8 { Finite / Infinity == Signed zero (check 1/0 to determine sign) } { constant_expression T15172f8 {1f / Float.NEGATIVE_INFINITY == 0} {1/(1f / Float.NEGATIVE_INFINITY) == Float.NEGATIVE_INFINITY} {1f / Float.POSITIVE_INFINITY == 0} {1/(1f / Float.POSITIVE_INFINITY) == Float.POSITIVE_INFINITY} {-1f / Float.NEGATIVE_INFINITY == 0} {1/(-1f / Float.NEGATIVE_INFINITY) == Float.POSITIVE_INFINITY} {-1f / Float.POSITIVE_INFINITY == 0} {1/(-1f / Float.POSITIVE_INFINITY) == Float.NEGATIVE_INFINITY} } {PASS}
Finite / 0 == Signed infinityTest Case: 15.17.2-float-10Expected Result: PASS
Regression Test:
tcltest::test 15.17.2-float-9 { Finite / 0 == Signed infinity } { constant_expression T15172f9 {1f / 0f == Float.POSITIVE_INFINITY} {-1f / 0f == Float.NEGATIVE_INFINITY} {1f / -0f == Float.NEGATIVE_INFINITY} {-1f / -0f == Float.POSITIVE_INFINITY} } {PASS}
0 / non-zero Finite == Signed zero (check 1/0 to determine sign)Test Case: 15.17.2-float-11Expected Result: PASS
Regression Test:
tcltest::test 15.17.2-float-10 { 0 / non-zero Finite == Signed zero (check 1/0 to determine sign) } { constant_expression T15172f10 {0f / 1f == 0} {1/(0f / 1f) == Float.POSITIVE_INFINITY} {-0f / 1f == 0} {1/(-0f / 1f) == Float.NEGATIVE_INFINITY} {0f / -1f == 0} {1/(0f / -1f) == Float.NEGATIVE_INFINITY} {-0f / -1f == 0} {1/(-0f / -1f) == Float.POSITIVE_INFINITY} } {PASS}
Floating-point / produces Infinity for overflowTest Case: 15.17.2-float-12Expected Result: PASS
Regression Test:
tcltest::test 15.17.2-float-11 { Floating-point / produces Infinity for overflow } { constant_expression T15172f11 {1.0e30f / 1.0e-30f == Float.POSITIVE_INFINITY} {1.0e30f / -1.0e-30f == Float.NEGATIVE_INFINITY} } {PASS}
Floating-point / supports gradual underflowTest Case: 15.17.2-float-13Expected Result: PASS
Regression Test:
tcltest::test 15.17.2-float-12 { Floating-point / supports gradual underflow } { constant_expression T15172f12 {1e-22f / 1e22f == 1e-44f} {1e-22f / -1e22f == -1e-44f} } {PASS}
Floating-point / produces 0 for underflow (check 1/0 to determine sign)Test Case: 15.17.2-float-14Expected Result: PASS
Regression Test:
tcltest::test 15.17.2-float-13 { Floating-point / produces 0 for underflow (check 1/0 to determine sign) } { constant_expression T15172f13 {1e-30f / 1e30f == 0} {1/(1e-30f / 1e30f) == Float.POSITIVE_INFINITY} {1e-30f / -1e30f == 0} {1/(1e-30f / -1e30f) == Float.NEGATIVE_INFINITY} } {PASS}
Floating-point / works even with denormsTest Case: 15.17.2-float-15Expected Result: PASS
Regression Test:
tcltest::test 15.17.2-float-14 { Floating-point / works even with denorms } { constant_expression T15172f14 {1e-10f / 1e-40f == 1.0000054E30f} {1e-10f / -1e-40f == -1.0000054E30f} {1e-40f / -1e-10f == -9.999946E-31f} {-1e-40f / -1e-10f == 9.999946E-31f} } {PASS}
Floating-point / follows round-to-nearest rulesTest Case: 15.17.2-float-16Expected Result: PASS
Regression Test:
tcltest::test 15.17.2-float-15 { Floating-point / follows round-to-nearest rules } { constant_expression T15172f15 {0x1800004 / 3f == 0x800001} {0x1800008 / 3f == 0x800003} {7e-45f / 2f == 2.8e-45f} {9.8e-45f / 2f == 5.6e-45f} } {PASS}
Floating-point constants must be evaluated in strictfp modeTest Case: 15.17.2-double-1Expected Result: PASS
Regression Test:
tcltest::test 15.17.2-float-16 { Floating-point constants must be evaluated in strictfp mode } { constant_expression T15172f16 {4.294968e9f / 256 / 16777216 == 1.0000001f} } {PASS}
NaN / NaN is NaNTest Case: 15.17.2-double-2Expected Result: PASS
Regression Test:
tcltest::test 15.17.2-double-1 { NaN / NaN is NaN } { constant_expression T15172d1 {Double.NaN / Double.NaN != Double.NaN / Double.NaN} } {PASS}
NaN / anything is NaNTest Case: 15.17.2-double-3Expected Result: PASS
Regression Test:
tcltest::test 15.17.2-double-2 { NaN / anything is NaN } { constant_expression T15172d2 {Double.NaN / 1d != Double.NaN / 1d} {1d / Double.NaN != 1d / Double.NaN} } {PASS}
the result is positive in floating-point division if both operands have the same signTest Case: 15.17.2-double-4Expected Result: PASS
Regression Test:
tcltest::test 15.17.2-double-3 { the result is positive in floating-point division if both operands have the same sign } { constant_expression T15172d3 {-1d / -2d > 0d} {1d / 2d > 0d} } {PASS}
the result is negative in floating-point division if the operands have opposite signTest Case: 15.17.2-double-5Expected Result: PASS
Regression Test:
tcltest::test 15.17.2-double-4 { the result is negative in floating-point division if the operands have opposite sign } { constant_expression T15172d4 {-1.0 / 2.0 < 0.0} {1.0 / -2.0 < 0.0} } {PASS}
0 / 0 is NaNTest Case: 15.17.2-double-6Expected Result: PASS
Regression Test:
tcltest::test 15.17.2-double-5 { 0 / 0 is NaN } { constant_expression T15172d5 {0d / 0d != 0d / 0d} {-0d / 0d != -0d / 0d} } {PASS}
Infinity / finite == Infinity of correct signTest Case: 15.17.2-double-7Expected Result: PASS
Regression Test:
tcltest::test 15.17.2-double-6 { Infinity / finite == Infinity of correct sign } { constant_expression T15172d6 {Double.NEGATIVE_INFINITY / -1d == Double.POSITIVE_INFINITY} {Double.POSITIVE_INFINITY / -1d == Double.NEGATIVE_INFINITY} } {PASS}
Infinity / Infinity is NaNTest Case: 15.17.2-double-8Expected Result: PASS
Regression Test:
tcltest::test 15.17.2-double-7 { Infinity / Infinity is NaN } { constant_expression T15172d7 {Double.NEGATIVE_INFINITY / Double.NEGATIVE_INFINITY != Double.NEGATIVE_INFINITY / Double.NEGATIVE_INFINITY} {Double.POSITIVE_INFINITY / Double.NEGATIVE_INFINITY != Double.POSITIVE_INFINITY / Double.NEGATIVE_INFINITY} {Double.NEGATIVE_INFINITY / Double.POSITIVE_INFINITY != Double.NEGATIVE_INFINITY / Double.POSITIVE_INFINITY} {Double.POSITIVE_INFINITY / Double.POSITIVE_INFINITY != Double.POSITIVE_INFINITY / Double.POSITIVE_INFINITY} } {PASS}
Finite / Infinity == Signed zero (check 1/0 to determine sign)Test Case: 15.17.2-double-9Expected Result: PASS
Regression Test:
tcltest::test 15.17.2-double-8 { Finite / Infinity == Signed zero (check 1/0 to determine sign) } { constant_expression T15172d8 {1d / Double.NEGATIVE_INFINITY == 0} {1/(1d / Double.NEGATIVE_INFINITY) == Double.NEGATIVE_INFINITY} {1d / Double.POSITIVE_INFINITY == 0} {1/(1d / Double.POSITIVE_INFINITY) == Double.POSITIVE_INFINITY} {-1d / Double.NEGATIVE_INFINITY == 0} {1/(-1d / Double.NEGATIVE_INFINITY) == Double.POSITIVE_INFINITY} {-1d / Double.POSITIVE_INFINITY == 0} {1/(-1d / Double.POSITIVE_INFINITY) == Double.NEGATIVE_INFINITY} } {PASS}
Finite / 0 == Signed infinityTest Case: 15.17.2-double-10Expected Result: PASS
Regression Test:
tcltest::test 15.17.2-double-9 { Finite / 0 == Signed infinity } { constant_expression T15172d9 {1d / 0d == Double.POSITIVE_INFINITY} {-1d / 0d == Double.NEGATIVE_INFINITY} {1d / -0d == Double.NEGATIVE_INFINITY} {-1d / -0d == Double.POSITIVE_INFINITY} } {PASS}
0 / non-zero Finite == Signed zero (check 1/0 to determine sign)Test Case: 15.17.2-double-11Expected Result: PASS
Regression Test:
tcltest::test 15.17.2-double-10 { 0 / non-zero Finite == Signed zero (check 1/0 to determine sign) } { constant_expression T15172d10 {0d / 1d == 0} {1/(0d / 1d) == Double.POSITIVE_INFINITY} {-0d / 1d == 0} {1/(-0d / 1d) == Double.NEGATIVE_INFINITY} {0d / -1d == 0} {1/(0d / -1d) == Double.NEGATIVE_INFINITY} {-0d / -1d == 0} {1/(-0d / -1d) == Double.POSITIVE_INFINITY} } {PASS}
Floating-point / produces Infinity for overflowTest Case: 15.17.2-double-12Expected Result: PASS
Regression Test:
tcltest::test 15.17.2-double-11 { Floating-point / produces Infinity for overflow } { constant_expression T15172d11 {1.0e160 / 1.0e-160 == Double.POSITIVE_INFINITY} {1.0e160 / -1.0e-160 == Double.NEGATIVE_INFINITY} } {PASS}
Floating-point / supports gradual underflowTest Case: 15.17.2-double-13Expected Result: PASS
Regression Test:
tcltest::test 15.17.2-double-12 { Floating-point / supports gradual underflow } { constant_expression T15172d12 {1e-160 / 1e160 == 1e-320} {1e-160 / -1e160 == -1e-320} } {PASS}
Floating-point / produces 0 for underflow (check 1/0 to determine sign)Test Case: 15.17.2-double-14Expected Result: PASS
Regression Test:
tcltest::test 15.17.2-double-13 { Floating-point / produces 0 for underflow (check 1/0 to determine sign) } { constant_expression T15172d13 {1e-170 / 1e170 == 0} {1/(1e-170 / 1e170) == Double.POSITIVE_INFINITY} {1e-170 / -1e170 == 0} {1/(1e-170 / -1e170) == Double.NEGATIVE_INFINITY} } {PASS}
Floating-point / works even with denormsTest Case: 15.17.2-double-15Expected Result: PASS
Regression Test:
tcltest::test 15.17.2-double-14 { Floating-point / works even with denorms } { constant_expression T15172d14 {1e-20 / 1e-320 == 1.0000111329412579e300} {1e-20 / -1e-320 == -1.0000111329412579e300} {1e-320 / -1e-20 == -9.999888671826831E-301} {-1e-320 / -1e-20 == 9.999888671826831E-301} } {PASS}
Floating-point / follows round-to-nearest rulesTest Case: 15.17.2-int-1Expected Result: PASS
Regression Test:
tcltest::test 15.17.2-double-15 { Floating-point / follows round-to-nearest rules } { constant_expression T15172d15 {0x30000000000004L / 3d == 0x10000000000001L} {0x30000000000008L / 3d == 0x10000000000003L} {2.5e-323 / 2d == 1e-323} {3.5e-323 / 2d == 2e-323} } {PASS}
integer division rounds to 0Test Case: 15.17.2-int-2Expected Result: PASS
Regression Test:
tcltest::test 15.17.2-int-1 { integer division rounds to 0 } { constant_expression T15172i1 {5 / 3 == 1} {5 / -3 == -1} {-5 / 3 == -1} {-5 / -3 == 1} } {PASS}
MIN_INT / -1 overflowsTest Case: 15.17.2-int-3Expected Result: PASS
Regression Test:
tcltest::test 15.17.2-int-2 { MIN_INT / -1 overflows } { constant_expression T15172i2 {0x80000000 / -1 == 0x80000000} } {PASS}
Not a compile-time error to divide by constant integer 0Test Case: 15.17.2-long-1Expected Result: OK
Regression Test:
tcltest::test 15.17.2-int-3 { Not a compile-time error to divide by constant integer 0 } { ok_pass_or_warn [empty_class T15172i3 {int i = 1 / 0;}] } {OK}
integer division rounds to 0Test Case: 15.17.2-long-2Expected Result: PASS
Regression Test:
tcltest::test 15.17.2-long-1 { integer division rounds to 0 } { constant_expression T15172l1 {5L / 3L == 1L} {5L / -3L == -1L} {-5L / 3L == -1L} {-5L / -3L == 1L} } {PASS}
MIN_LONG / -1 overflowsTest Case: 15.17.2-long-3Expected Result: PASS
Regression Test:
tcltest::test 15.17.2-long-2 { MIN_LONG / -1 overflows } { constant_expression T15172l2 {0x8000000000000000L / -1L == 0x8000000000000000L} } {PASS}
Not a compile-time error to divide by constant integer 0Expected Result: OK
Regression Test:
tcltest::test 15.17.2-long-3 { Not a compile-time error to divide by constant integer 0 } { ok_pass_or_warn [empty_class T15172l3 {long l = 1L / 0L;}] } {OK}
tests/jls/expressions/multiplicative-operators/remainder-operator
remainder is left-associativeTest Case: 15.17.3-assoc-2Expected Result: PASS
Regression Test:
tcltest::test 15.17.3-assoc-1 { remainder is left-associative } { constant_expression T15173assoc1 {10 % 4 % 3 == 2} {10 % (4 % 3) == 0} } {PASS}
remainder is left-associativeTest Case: 15.17.3-float-1Expected Result: PASS
Regression Test:
tcltest::test 15.17.3-assoc-2 { remainder is left-associative } { constant_expression T15173assoc2 {10.0 % 4.0 % 3.0 == 2.0} {10.0 % (4.0 % 3.0) == 0.0} } {PASS}
NaN % NaN is NaNTest Case: 15.17.3-float-2Expected Result: PASS
Regression Test:
tcltest::test 15.17.3-float-1 { NaN % NaN is NaN } { constant_expression T15173f1 {Float.NaN % Float.NaN != Float.NaN % Float.NaN} } {PASS}
NaN % anything is NaNTest Case: 15.17.3-float-3Expected Result: PASS
Regression Test:
tcltest::test 15.17.3-float-2 { NaN % anything is NaN } { constant_expression T15173f2 {Float.NaN % 1f != Float.NaN % 1f} {1f % Float.NaN != 1f % Float.NaN} } {PASS}
the result is positive in floating-point remainder if the dividend is positiveTest Case: 15.17.3-float-4Expected Result: PASS
Regression Test:
tcltest::test 15.17.3-float-3 { the result is positive in floating-point remainder if the dividend is positive } { constant_expression T15173f3 {3f % -2f > 0f} {3f % 2f > 0f} } {PASS}
the result is negative in floating-point remainder if the dividend is negativeTest Case: 15.17.3-float-5Expected Result: PASS
Regression Test:
tcltest::test 15.17.3-float-4 { the result is negative in floating-point remainder if the dividend is negative } { constant_expression T15173f4 {-3f % 2f < 0f} {-3f % -2f < 0f} } {PASS}
0 % 0 is NaNTest Case: 15.17.3-float-6Expected Result: PASS
Regression Test:
tcltest::test 15.17.3-float-5 { 0 % 0 is NaN } { constant_expression T15173f5 {0f % 0f != 0f % 0f} {-0f % 0f != -0f % 0f} } {PASS}
Infinity % finite is NaNTest Case: 15.17.3-float-7Expected Result: PASS
Regression Test:
tcltest::test 15.17.3-float-6 { Infinity % finite is NaN } { constant_expression T15173f6 {Float.NEGATIVE_INFINITY % -1f != Float.NEGATIVE_INFINITY % -1f} {Float.POSITIVE_INFINITY % -1f != Float.POSITIVE_INFINITY % -1f} } {PASS}
Infinity % Infinity is NaNTest Case: 15.17.3-float-8Expected Result: PASS
Regression Test:
tcltest::test 15.17.3-float-7 { Infinity % Infinity is NaN } { constant_expression T15173f7 {Float.NEGATIVE_INFINITY % Float.NEGATIVE_INFINITY != Float.NEGATIVE_INFINITY % Float.NEGATIVE_INFINITY} {Float.POSITIVE_INFINITY % Float.NEGATIVE_INFINITY != Float.POSITIVE_INFINITY % Float.NEGATIVE_INFINITY} {Float.NEGATIVE_INFINITY % Float.POSITIVE_INFINITY != Float.NEGATIVE_INFINITY % Float.POSITIVE_INFINITY} {Float.POSITIVE_INFINITY % Float.POSITIVE_INFINITY != Float.POSITIVE_INFINITY % Float.POSITIVE_INFINITY} } {PASS}
Finite % Infinity == dividendTest Case: 15.17.3-float-9Expected Result: PASS
Regression Test:
tcltest::test 15.17.3-float-8 { Finite % Infinity == dividend } { constant_expression T15173f8 {1f % Float.NEGATIVE_INFINITY == 1f} {1f % Float.POSITIVE_INFINITY == 1f} {-1f % Float.NEGATIVE_INFINITY == -1f} {-1f % Float.POSITIVE_INFINITY == -1f} } {PASS}
Finite % 0 is NaNTest Case: 15.17.3-float-10Expected Result: PASS
Regression Test:
tcltest::test 15.17.3-float-9 { Finite % 0 is NaN } { constant_expression T15173f9 {1f % 0f != 1f % 0f} {-1f % 0f != -1f % 0f} {1f % -0f != 1f % -0f} {-1f % -0f != -1f % -0f} } {PASS}
0 % non-zero Finite == Dividend (check 1/0 to determine sign)Test Case: 15.17.3-float-11Expected Result: PASS
Regression Test:
tcltest::test 15.17.3-float-10 { 0 % non-zero Finite == Dividend (check 1/0 to determine sign) } { constant_expression T15173f10 {0f % 1f == 0} {1/(0f % 1f) == Float.POSITIVE_INFINITY} {-0f % 1f == 0} {1/(-0f % 1f) == Float.NEGATIVE_INFINITY} {0f % -1f == 0} {1/(0f % -1f) == Float.POSITIVE_INFINITY} {-0f % -1f == 0} {1/(-0f % -1f) == Float.NEGATIVE_INFINITY} } {PASS}
0 % Infinity == Dividend (check 1/0 to determine sign)Test Case: 15.17.3-float-12Expected Result: PASS
Regression Test:
tcltest::test 15.17.3-float-11 { 0 % Infinity == Dividend (check 1/0 to determine sign) } { constant_expression T15173f11 {0f % Float.POSITIVE_INFINITY == 0} {1/(0f % Float.POSITIVE_INFINITY) == Float.POSITIVE_INFINITY} {-0f % Float.POSITIVE_INFINITY == 0} {1/(-0f % Float.POSITIVE_INFINITY) == Float.NEGATIVE_INFINITY} {0f % Float.NEGATIVE_INFINITY == 0} {1/(0f % Float.NEGATIVE_INFINITY) == Float.POSITIVE_INFINITY} {-0f % Float.NEGATIVE_INFINITY == 0} {1/(-0f % Float.NEGATIVE_INFINITY) == Float.NEGATIVE_INFINITY} } {PASS}
Floating-point % cannot overflowTest Case: 15.17.3-float-13Expected Result: PASS
Regression Test:
tcltest::test 15.17.3-float-12 { Floating-point % cannot overflow } { constant_expression T15173f12 {1e30f % 1e-30f == 8.166816e-31f} {-1e30f % -1e-30f == -8.166816e-31f} } {PASS}
Floating-point % works even with denormsTest Case: 15.17.3-float-14Expected Result: PASS
Regression Test:
tcltest::test 15.17.3-float-13 { Floating-point % works even with denorms } { constant_expression T15173f13 {1e30f % 1e-40f == 7.121e-42f} {1e30f % -1e-40f == 7.121e-42f} {-1e-40f % 1e30f == -1e-40f} {-1e-40f % -1e30f == -1e-40f} } {PASS}
Example casesTest Case: 15.17.3-double-1Expected Result: PASS
Regression Test:
tcltest::test 15.17.3-float-14 { Example cases } { constant_expression T15173f14 {5.0f % 3.0f == 2.0f} {5.0f % -3.0f == 2.0f} {-5.0f % 3.0f == -2.0f} {-5.0f % -3.0f == -2.0f} } {PASS}
NaN % NaN is NaNTest Case: 15.17.3-double-2Expected Result: PASS
Regression Test:
tcltest::test 15.17.3-double-1 { NaN % NaN is NaN } { constant_expression T15173d1 {Double.NaN % Double.NaN != Double.NaN % Double.NaN} } {PASS}
NaN % anything is NaNTest Case: 15.17.3-double-3Expected Result: PASS
Regression Test:
tcltest::test 15.17.3-double-2 { NaN % anything is NaN } { constant_expression T15173d2 {Double.NaN % 1d != Double.NaN % 1d} {1d % Double.NaN != 1d % Double.NaN} } {PASS}
the result is positive in floating-point remainder if the dividend is positiveTest Case: 15.17.3-double-4Expected Result: PASS
Regression Test:
tcltest::test 15.17.3-double-3 { the result is positive in floating-point remainder if the dividend is positive } { constant_expression T15173d3 {3d % -2d > 0d} {3d % 2d > 0d} } {PASS}
the result is negative in floating-point remainder if the dividend is negativeTest Case: 15.17.3-double-5Expected Result: PASS
Regression Test:
tcltest::test 15.17.3-double-4 { the result is negative in floating-point remainder if the dividend is negative } { constant_expression T15173d4 {-3d % 2d < 0d} {-3d % -2d < 0d} } {PASS}
0 % 0 is NaNTest Case: 15.17.3-double-6Expected Result: PASS
Regression Test:
tcltest::test 15.17.3-double-5 { 0 % 0 is NaN } { constant_expression T15173d5 {0d % 0d != 0d % 0d} {-0d % 0d != -0d % 0d} } {PASS}
Infinity % finite is NaNTest Case: 15.17.3-double-7Expected Result: PASS
Regression Test:
tcltest::test 15.17.3-double-6 { Infinity % finite is NaN } { constant_expression T15173d6 {Double.NEGATIVE_INFINITY % -1d != Double.NEGATIVE_INFINITY % -1d} {Double.POSITIVE_INFINITY % -1d != Double.POSITIVE_INFINITY % -1d} } {PASS}
Infinity % Infinity is NaNTest Case: 15.17.3-double-8Expected Result: PASS
Regression Test:
tcltest::test 15.17.3-double-7 { Infinity % Infinity is NaN } { constant_expression T15173d7 {Double.NEGATIVE_INFINITY % Double.NEGATIVE_INFINITY != Double.NEGATIVE_INFINITY % Double.NEGATIVE_INFINITY} {Double.POSITIVE_INFINITY % Double.NEGATIVE_INFINITY != Double.POSITIVE_INFINITY % Double.NEGATIVE_INFINITY} {Double.NEGATIVE_INFINITY % Double.POSITIVE_INFINITY != Double.NEGATIVE_INFINITY % Double.POSITIVE_INFINITY} {Double.POSITIVE_INFINITY % Double.POSITIVE_INFINITY != Double.POSITIVE_INFINITY % Double.POSITIVE_INFINITY} } {PASS}
Finite % Infinity == dividendTest Case: 15.17.3-double-9Expected Result: PASS
Regression Test:
tcltest::test 15.17.3-double-8 { Finite % Infinity == dividend } { constant_expression T15173d8 {1d % Double.NEGATIVE_INFINITY == 1d} {1d % Double.POSITIVE_INFINITY == 1d} {-1d % Double.NEGATIVE_INFINITY == -1d} {-1d % Double.POSITIVE_INFINITY == -1d} } {PASS}
Finite % 0 is NaNTest Case: 15.17.3-double-10Expected Result: PASS
Regression Test:
tcltest::test 15.17.3-double-9 { Finite % 0 is NaN } { constant_expression T15173d9 {1d % 0d != 1d % 0d} {-1d % 0d != -1d % 0d} {1d % -0d != 1d % -0d} {-1d % -0d != -1d % -0d} } {PASS}
0 % non-zero Finite == Dividend (check 1/0 to determine sign)Test Case: 15.17.3-double-11Expected Result: PASS
Regression Test:
tcltest::test 15.17.3-double-10 { 0 % non-zero Finite == Dividend (check 1/0 to determine sign) } { constant_expression T15173d10 {0d % 1d == 0} {1/(0d % 1d) == Double.POSITIVE_INFINITY} {-0d % 1d == 0} {1/(-0d % 1d) == Double.NEGATIVE_INFINITY} {0d % -1d == 0} {1/(0d % -1d) == Double.POSITIVE_INFINITY} {-0d % -1d == 0} {1/(-0d % -1d) == Double.NEGATIVE_INFINITY} } {PASS}
0 % Infinity == Dividend (check 1/0 to determine sign)Test Case: 15.17.3-double-12Expected Result: PASS
Regression Test:
tcltest::test 15.17.3-double-11 { 0 % Infinity == Dividend (check 1/0 to determine sign) } { constant_expression T15173d11 {0d % Double.POSITIVE_INFINITY == 0} {1/(0d % Double.POSITIVE_INFINITY) == Double.POSITIVE_INFINITY} {-0d % Double.POSITIVE_INFINITY == 0} {1/(-0d % Double.POSITIVE_INFINITY) == Double.NEGATIVE_INFINITY} {0d % Double.NEGATIVE_INFINITY == 0} {1/(0d % Double.NEGATIVE_INFINITY) == Double.POSITIVE_INFINITY} {-0d % Double.NEGATIVE_INFINITY == 0} {1/(-0d % Double.NEGATIVE_INFINITY) == Double.NEGATIVE_INFINITY} } {PASS}
Floating-point % cannot overflowTest Case: 15.17.3-double-13Expected Result: PASS
Regression Test:
tcltest::test 15.17.3-double-12 { Floating-point % cannot overflow } { constant_expression T15173d12 {1e300 % 1e-300 == 4.891554850853602e-301} {-1e300 % -1e-300 == -4.891554850853602e-301} } {PASS}
Floating-point % works even with denormsTest Case: 15.17.3-double-14Expected Result: PASS
Regression Test:
tcltest::test 15.17.3-double-13 { Floating-point % works even with denorms } { constant_expression T15173d13 {1e300 % 1e-320 == 3.16e-321} {1e300 % -1e-320 == 3.16e-321} {-1e-320 % 1e300 == -1e-320} {-1e-320 % -1e300 == -1e-320} } {PASS}
Example casesTest Case: 15.17.3-int-1Expected Result: PASS
Regression Test:
tcltest::test 15.17.3-double-14 { Example cases } { constant_expression T15173d14 {5.0 % 3.0 == 2.0} {5.0 % -3.0 == 2.0} {-5.0 % 3.0 == -2.0} {-5.0 % -3.0 == -2.0} } {PASS}
Example casesTest Case: 15.17.3-int-2Expected Result: PASS
Regression Test:
tcltest::test 15.17.3-int-1 { Example cases } { constant_expression T15173i1 {5 % 3 == 2} {5 % -3 == 2} {-5 % 3 == -2} {-5 % -3 == -2} } {PASS}
(a/b)*b+(a%b) == aTest Case: 15.17.3-int-3Expected Result: PASS
Regression Test:
tcltest::test 15.17.3-int-2 { (a/b)*b+(a%b) == a } { constant_expression T15173i2 {(0x80000000 / -1) * -1 + (0x80000000 % -1) == 0x80000000} {(5 / 3) * 3 + (5 % 3) == 5} {(5 / -3) * -3 + (5 % -3) == 5} {(-5 / 3) * 3 + (-5 % 3) == -5} {(-5 / -3) * -3 + (-5 % -3) == -5} } {PASS}
Not a compile-time error to divide by constant integer 0Test Case: 15.17.3-int-4Expected Result: OK
Regression Test:
tcltest::test 15.17.3-int-3 { Not a compile-time error to divide by constant integer 0 } { ok_pass_or_warn [empty_class T15173i3 {int i = 1 / 0;}] } {OK}
MIN_INT % -1 == 0Test Case: 15.17.3-long-1Expected Result: PASS
Regression Test:
tcltest::test 15.17.3-int-4 { MIN_INT % -1 == 0 } { constant_expression T15173i4 {0x80000000 % -1 == 0} } {PASS}
Example casesTest Case: 15.17.3-long-2Expected Result: PASS
Regression Test:
tcltest::test 15.17.3-long-1 { Example cases } { constant_expression T15173l1 {5L % 3L == 2L} {5L % -3L == 2L} {-5L % 3L == -2L} {-5L % -3L == -2L} } {PASS}
(a/b)*b+(a%b) == aTest Case: 15.17.3-long-3Expected Result: PASS
Regression Test:
tcltest::test 15.17.3-long-2 { (a/b)*b+(a%b) == a } { constant_expression T15173l2 {(0x8000000000000000L / -1L) * -1L + (0x8000000000000000L % -1L) == 0x8000000000000000L} {(5L / 3L) * 3L + (5L % 3L) == 5L} {(5L / -3L) * -3L + (5L % -3L) == 5L} {(-5L / 3L) * 3L + (-5L % 3L) == -5L} {(-5L / -3L) * -3L + (-5L % -3L) == -5L} } {PASS}
Not a compile-time error to divide by constant integer 0Test Case: 15.17.3-long-4Expected Result: OK
Regression Test:
tcltest::test 15.17.3-long-3 { Not a compile-time error to divide by constant integer 0 } { ok_pass_or_warn [empty_class T15173l3 {long l = 1L % 0L;}] } {OK}
MIN_LONG % -1 == 0Expected Result: PASS
Regression Test:
tcltest::test 15.17.3-long-4 { MIN_LONG % -1 == 0 } { constant_expression T15173l4 {0x8000000000000000L % -1L == 0L} } {PASS}
tests/jls/expressions/additive-operators
at least one argument of + should be String, or else both must be primitive numeric typeTest Case: 15.18-null-2Expected Result: FAIL
Regression Test:
tcltest::test 15.18-null-1 { at least one argument of + should be String, or else both must be primitive numeric type } { # Sun seems to have relaxed this so that null is used as type String is_assignable_to T1518n1 String {null + null} } {FAIL}
both arguments to - must be of a primitive numeric typeTest Case: 15.18-boolean-1Expected Result: FAIL
Regression Test:
tcltest::test 15.18-null-2 { both arguments to - must be of a primitive numeric type } { is_assignable_to T1518n2 String {null - null} } {FAIL}
at least one argument of + should be String, or else both must be primitive numeric typeTest Case: 15.18-boolean-2Expected Result: FAIL
Regression Test:
tcltest::test 15.18-boolean-1 { at least one argument of + should be String, or else both must be primitive numeric type } { is_assignable_to T1518b1 boolean {true + false} } {FAIL}
both arguments to - must be of a primitive numeric typeExpected Result: FAIL
Regression Test:
tcltest::test 15.18-boolean-2 { both arguments to - must be of a primitive numeric type } { is_assignable_to T1518b2 boolean {5 - false} } {FAIL}
tests/jls/expressions/additive-operators/string-concatenation-operator
String + requires a String argumentTest Case: 15.18.1-2Expected Result: FAIL
Regression Test:
tcltest::test 15.18.1-1 { String + requires a String argument } { # Sun seems to have relaxed this so that null is used as type String implicitly is_assignable_to T151811 String {null + 1} String {1 + null} } {FAIL}
(String)null denotes String concatenationTest Case: 15.18.1-3Expected Result: PASS
Regression Test:
tcltest::test 15.18.1-2 { (String)null denotes String concatenation } { is_assignable_to T151812 String {(String)null + 1} String {1 + (String)null} } {PASS}
(String)null + null denotes String concatenationTest Case: 15.18.1-4Expected Result: PASS
Regression Test:
tcltest::test 15.18.1-3 { (String)null + null denotes String concatenation } { is_assignable_to T151813 String {null + (String)null} String {(String)null + null} String {(String)null + (String)null} } {PASS}
void + String is invalidTest Case: 15.18.1-5Expected Result: FAIL
Regression Test:
tcltest::test 15.18.1-4 { void + String is invalid } { is_assignable_to T151814 String {System.out.println() + ""} String {"" + System.out.println()} } {FAIL}
+ operator should be left-associativeTest Case: 15.18.1-6Expected Result: PASS
Regression Test:
tcltest::test 15.18.1-5 { + operator should be left-associative } { constant_expression T151815 {1 + 2 + " fiddlers" == "3 fiddlers"} {"fiddlers " + 1 + 2 == "fiddlers 12"} } {PASS}
+ operator and integer constantsTest Case: 15.18.1-7Expected Result: PASS
Regression Test:
tcltest::test 15.18.1-6 { + operator and integer constants } { constant_expression T151816 {"-12300000" == "" + -12300000} {"-12300000,-50000000" == -12300000 + "," + -50000000} } {PASS}
+ operator and long constantsTest Case: 15.18.1-float-1Expected Result: PASS
Regression Test:
tcltest::test 15.18.1-7 { + operator and long constants } { constant_expression T151817 {"-12192592592745" == "" + -12192592592745L} {"-12192592592745,-12192592592745" == -12192592592745L + "," + -12192592592745L} } {PASS}
convert denormalized float to StringTest Case: 15.18.1-float-2Expected Result: PASS
Regression Test:
tcltest::test 15.18.1-float-1 { convert denormalized float to String } { constant_expression T15181f1 {"" + 1e-44f == "9.8E-45"} } {PASS}
convert NaN float to StringTest Case: 15.18.1-float-3Expected Result: PASS
Regression Test:
tcltest::test 15.18.1-float-2 { convert NaN float to String } { constant_expression T15181f2 {"" + Float.NaN == "NaN"} {"" + (-Float.NaN) == "NaN"} } {PASS}
convert Infinity float to StringTest Case: 15.18.1-float-4Expected Result: PASS
Regression Test:
tcltest::test 15.18.1-float-3 { convert Infinity float to String } { constant_expression T15181f3 {"" + Float.NEGATIVE_INFINITY == "-Infinity"} {"" + Float.POSITIVE_INFINITY == "Infinity"} } {PASS}
convert min float to StringTest Case: 15.18.1-float-5Expected Result: PASS
Regression Test:
tcltest::test 15.18.1-float-4 { convert min float to String } { constant_expression T15181f4 {"" + Float.MIN_VALUE == "1.4E-45"} } {PASS}
convert max float to StringTest Case: 15.18.1-float-6Expected Result: PASS
Regression Test:
tcltest::test 15.18.1-float-5 { convert max float to String } { constant_expression T15181f5 {"" + Float.MAX_VALUE == "3.4028235E38"} } {PASS}
conversion of float to String must use as few digits after decimal as produce the same float again by roundingTest Case: 15.18.1-float-7Expected Result: PASS
Regression Test:
tcltest::test 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 } { constant_expression T15181f6 {"" + 123456768f == "1.2345677E8"} {"" + 123456776f == "1.23456776E8"} {"" + 123456784f == "1.2345678E8"} {"" + 123456792f == "1.2345679E8"} {"" + 123456800f == "1.234568E8"} } {PASS}
conversion of float to String switches from plain to exponent at 1e7Test Case: 15.18.1-float-8Expected Result: PASS
Regression Test:
tcltest::test 15.18.1-float-7 { conversion of float to String switches from plain to exponent at 1e7 } { constant_expression T15181f7 {"" + 9999999f == "9999999.0"} {"" + 10000000f == "1.0E7"} } {PASS}
conversion of float to String switches from plain to exponent at 1e-3. Trailing 0's are not permitted.Test Case: 15.18.1-float-9Expected Result: PASS
Regression Test:
tcltest::test 15.18.1-float-8 { conversion of float to String switches from plain to exponent at 1e-3. Trailing 0's are not permitted. } { constant_expression T15181f8 {"" + .001f == "0.001"} {"" + .000999998f == "9.99998E-4"} } {PASS}
conversion of float to String produces the shortest string that parses back to the same floatTest Case: 15.18.1-float-10Expected Result: PASS
Regression Test:
tcltest::test 15.18.1-float-9 { conversion of float to String produces the shortest string that parses back to the same float } { constant_expression T15181f9 {"" + 9.9999998e22f == "1.0E23"} } {PASS}
One of the longest possible Strings possible when converting floatsTest Case: 15.18.1-float-11Expected Result: PASS
Regression Test:
tcltest::test 15.18.1-float-10 { One of the longest possible Strings possible when converting floats } { constant_expression T15181f10 {"" + -1.00000126e-10f == "-1.00000126E-10"} } {PASS}
conversion of float to String prints the closest decimal string to the exact value, even on denormsTest Case: 15.18.1-float-12Expected Result: PASS
Regression Test:
tcltest::test 15.18.1-float-11 { conversion of float to String prints the closest decimal string to the exact value, even on denorms } { constant_expression T15181f11 {"" + 1e-43f == "9.9E-44"} } {PASS}
conversion of float to String must use as few digits after decimal as produce the same float again by roundingTest Case: 15.18.1-double-1Expected Result: PASS
Regression Test:
tcltest::test 15.18.1-float-12 { conversion of float to String must use as few digits after decimal as produce the same float again by rounding } { constant_expression T15181f12 {"" + 4294967808f == "4.294968E9"} } {PASS}
convert denormalized double to StringTest Case: 15.18.1-double-2Expected Result: PASS
Regression Test:
tcltest::test 15.18.1-double-1 { convert denormalized double to String } { constant_expression T15181d1 {"" + 1e-315 == "1.0E-315"} } {PASS}
convert Nan double to StringTest Case: 15.18.1-double-3Expected Result: PASS
Regression Test:
tcltest::test 15.18.1-double-2 { convert Nan double to String } { constant_expression T15181d2 {"" + Double.NaN == "NaN"} {"" + (-Double.NaN) == "NaN"} } {PASS}
convert Infinity double to StringTest Case: 15.18.1-double-4Expected Result: PASS
Regression Test:
tcltest::test 15.18.1-double-3 { convert Infinity double to String } { constant_expression T15181d3 {"" + Double.NEGATIVE_INFINITY == "-Infinity"} {"" + Double.POSITIVE_INFINITY == "Infinity"} } {PASS}
convert min double to StringTest Case: 15.18.1-double-5Expected Result: PASS
Regression Test:
tcltest::test 15.18.1-double-4 { convert min double to String } { constant_expression T15181d4 {"" + Double.MIN_VALUE == "4.9E-324"} } {PASS}
convert max double to StringTest Case: 15.18.1-double-6Expected Result: PASS
Regression Test:
tcltest::test 15.18.1-double-5 { convert max double to String } { constant_expression T15181d5 {"" + Double.MAX_VALUE == "1.7976931348623157E308"} } {PASS}
NaN != 12.0Test Case: 15.18.1-double-7Expected Result: PASS
Regression Test:
tcltest::test 15.18.1-double-6 { NaN != 12.0 } { constant_expression T15181d6 {"" + Double.NaN == "NaN"} {"" + 12.0 == "12.0"} } {PASS}
NaN != 12.0Test Case: 15.18.1-double-8Expected Result: PASS
Regression Test:
tcltest::test 15.18.1-double-7 { NaN != 12.0 } { constant_expression T15181d7 {"" + 12.0 == "12.0"} {"" + Double.NaN == "NaN"} } {PASS}
conversion of double to String must use as few digits after decimal as produce the same double again by roundingTest Case: 15.18.1-double-9Expected Result: PASS
Regression Test:
tcltest::test 15.18.1-double-8 { conversion of double to String must use as few digits after decimal as produce the same double again by rounding } { constant_expression T15181d8 {"" + 40000000000000000. == "4.0E16"} {"" + 40000000000000008. == "4.000000000000001E16"} {"" + 40000000000000016. == "4.000000000000002E16"} {"" + 40000000000000024. == "4.0000000000000024E16"} {"" + 40000000000000032. == "4.000000000000003E16"} {"" + 40000000000000040. == "4.000000000000004E16"} } {PASS}
conversion of double to String switches from plain to exponent at 1e7Test Case: 15.18.1-double-10Expected Result: PASS
Regression Test:
tcltest::test 15.18.1-double-9 { conversion of double to String switches from plain to exponent at 1e7 } { constant_expression T15181d9 {"" + 9999999.999999998 == "9999999.999999998"} {"" + 10000000.0 == "1.0E7"} } {PASS}
conversion of double to String switches from plain to exponent at 1e-3. Trailing 0's are not permitted.Test Case: 15.18.1-double-11Expected Result: PASS
Regression Test:
tcltest::test 15.18.1-double-10 { conversion of double to String switches from plain to exponent at 1e-3. Trailing 0's are not permitted. } { constant_expression T15181d10 {"" + .001 == "0.001"} {"" + .0009999999999999998 == "9.999999999999998E-4"} } {PASS}
conversion of double to String produces the shortest string that parses back to the same doubleTest Case: 15.18.1-double-12Expected Result: PASS
Regression Test:
tcltest::test 15.18.1-double-11 { conversion of double to String produces the shortest string that parses back to the same double } { constant_expression T15181d11 {"" + 9.999999999999999e22 == "1.0E23"} } {PASS}
One of the longest possible Strings possible when converting doublesTest Case: 15.18.1-double-13Expected Result: PASS
Regression Test:
tcltest::test 15.18.1-double-12 { One of the longest possible Strings possible when converting doubles } { constant_expression T15181d12 {"" + -1.2345678912345678e-200 == "-1.2345678912345678E-200"} } {PASS}
conversion of double to String prints the closest decimal string to the exact value, even on denormsTest Case: 15.18.1-boolean-1Expected Result: PASS
Regression Test:
tcltest::test 15.18.1-double-13 { conversion of double to String prints the closest decimal string to the exact value, even on denorms } { constant_expression T15181d13 {"" + 1e-323 == "9.9E-324"} {"" + 1e-322 == "9.9E-323"} } {PASS}
conversion of boolean to StringTest Case: 15.18.1-boolean-2Expected Result: PASS
Regression Test:
tcltest::test 15.18.1-boolean-1 { conversion of boolean to String } { constant_expression T15181b1 {"" + true == "true"} {"" + false == "false"} } {PASS}
conversion of boolean to StringTest Case: 15.18.1-valid-1Expected Result: PASS
Regression Test:
tcltest::test 15.18.1-boolean-2 { conversion of boolean to String } { empty_main T15181b2 { String s1 = "" + true; String s2 = "" + false; } } {PASS}
String + null type is validTest Case: 15.18.1-valid-2Expected Result: PASS
Regression Test:
tcltest::test 15.18.1-valid-1 { String + null type is valid } { empty_main T15181v1 { boolean b = true; String s = "" + (b ? null : null); } } {PASS}
String + primitive is validTest Case: 15.18.1-valid-3Expected Result: PASS
Regression Test:
tcltest::test 15.18.1-valid-2 { String + primitive is valid } { empty_main T15181v2 { boolean b = true; String s1 = "" + b; String s2 = b + ""; } } {PASS}
String + primitive is validTest Case: 15.18.1-valid-4Expected Result: PASS
Regression Test:
tcltest::test 15.18.1-valid-3 { String + primitive is valid } { empty_main T15181v3 { byte b = 1; String s1 = "" + b; String s2 = b + ""; } } {PASS}
String + primitive is validTest Case: 15.18.1-valid-5Expected Result: PASS
Regression Test:
tcltest::test 15.18.1-valid-4 { String + primitive is valid } { empty_main T15181v4 { short s = 1; String s1 = "" + s; String s2 = s + ""; } } {PASS}
String + primitive is validTest Case: 15.18.1-valid-6Expected Result: PASS
Regression Test:
tcltest::test 15.18.1-valid-5 { String + primitive is valid } { empty_main T15181v5 { char c = 1; String s1 = "" + c; String s2 = c + ""; } } {PASS}
String + primitive is validTest Case: 15.18.1-valid-7Expected Result: PASS
Regression Test:
tcltest::test 15.18.1-valid-6 { String + primitive is valid } { empty_main T15181v6 { int i = 1; String s1 = "" + i; String s2 = i + ""; } } {PASS}
String + primitive is validTest Case: 15.18.1-valid-8Expected Result: PASS
Regression Test:
tcltest::test 15.18.1-valid-7 { String + primitive is valid } { empty_main T15181v7 { long l = 1; String s1 = "" + l; String s2 = l + ""; } } {PASS}
String + primitive is validTest Case: 15.18.1-valid-9Expected Result: PASS
Regression Test:
tcltest::test 15.18.1-valid-8 { String + primitive is valid } { empty_main T15181v8 { float f = 1; String s1 = "" + f; String s2 = f + ""; } } {PASS}
String + primitive is validTest Case: 15.18.1-non-const-1Expected Result: PASS
Regression Test:
tcltest::test 15.18.1-valid-9 { String + primitive is valid } { empty_main T15181v9 { double d = 1; String s1 = "" + d; String s2 = d + ""; } } {PASS}
runtime concatenationTest Case: 15.18.1-non-const-2Expected Result: PASS
Regression Test:
tcltest::test 15.18.1-non-const-1 { runtime concatenation } { empty_main T15181nc1 { byte n = 0; String s = "s" + n; } } {PASS}
runtime concatenationTest Case: 15.18.1-non-const-3Expected Result: PASS
Regression Test:
tcltest::test 15.18.1-non-const-2 { runtime concatenation } { empty_main T15181nc2 { String s1 = "C"; String s2 = "A" + "B" + s1; } } {PASS}
runtime concatenationTest Case: 15.18.1-non-const-4Expected Result: PASS
Regression Test:
tcltest::test 15.18.1-non-const-3 { runtime concatenation } { empty_main T15181nc3 { String s1 = "C"; String s2 = "A" + ("B" + s1); } } {PASS}
runtime concatenationTest Case: 15.18.1-non-const-5Expected Result: PASS
Regression Test:
tcltest::test 15.18.1-non-const-4 { runtime concatenation } { empty_main T15181nc4 { String s1 = "C"; int n = 10; String s2 = "A" + n + s1; } } {PASS}
runtime concatenationTest Case: 15.18.1-non-const-6Expected Result: PASS
Regression Test:
tcltest::test 15.18.1-non-const-5 { runtime concatenation } { empty_main T15181nc5 { String s1 = "C"; int n = 10; String s2 = "A" + (n + s1); } } {PASS}
runtime concatenationTest Case: 15.18.1-non-const-7Expected Result: PASS
Regression Test:
tcltest::test 15.18.1-non-const-6 { runtime concatenation } { empty_main T15181nc6 { String s1 = "C"; int n = 10; String s2 = n + ("B" + s1); } } {PASS}
concatenation of empty stringTest Case: 15.18.1-non-const-8Expected Result: PASS
Regression Test:
tcltest::test 15.18.1-non-const-7 { concatenation of empty string } { empty_main T15181nc7 { String s1 = "C"; String s2 = "" + s1; } } {PASS}
concatenation of empty stringTest Case: 15.18.1-non-const-9Expected Result: PASS
Regression Test:
tcltest::test 15.18.1-non-const-8 { concatenation of empty string } { empty_main T15181nc8 { int i = 10; String s2 = "" + i; } } {PASS}
concatenation of empty stringTest Case: 15.18.1-non-const-10Expected Result: PASS
Regression Test:
tcltest::test 15.18.1-non-const-9 { concatenation of empty string } { empty_main T15181nc9 { int i = 10; String s2 = "" + i + ""; } } {PASS}
jikes had an optimization of string appends which resulted in an assertion failure. Bug id 2919.Expected Result: PASS
Regression Test:
tcltest::test 15.18.1-non-const-10 { jikes had an optimization of string appends which resulted in an assertion failure. Bug id 2919. } { empty_class T15181nc10 { private final static String s = val() + 'a' + "bcde"; static String val () { return null; } } } {PASS}
tests/jls/expressions/additive-operators/numeric-types
side-effect-free addition is commutativeTest Case: 15.18.2-commute-2Expected Result: PASS
Regression Test:
tcltest::test 15.18.2-commute-1 { side-effect-free addition is commutative } { constant_expression T15182commute1 {1 + 2 == 2 + 1} } {PASS}
side-effect-free addition is commutativeTest Case: 15.18.2-commute-3Expected Result: PASS
Regression Test:
tcltest::test 15.18.2-commute-2 { side-effect-free addition is commutative } { constant_expression T15182commute2 {1L + 2L == 2L + 1L} } {PASS}
side-effect-free addition is commutativeTest Case: 15.18.2-commute-4Expected Result: PASS
Regression Test:
tcltest::test 15.18.2-commute-3 { side-effect-free addition is commutative } { constant_expression T15182commute3 {1f + 2f == 2f + 1f} } {PASS}
side-effect-free addition is commutativeTest Case: 15.18.2-assoc-1Expected Result: PASS
Regression Test:
tcltest::test 15.18.2-commute-4 { side-effect-free addition is commutative } { constant_expression T15182commute4 {1d + 2d == 2d + 1d} } {PASS}
integer addition is associative when all arguments are of the same typeTest Case: 15.18.2-assoc-2Expected Result: PASS
Regression Test:
tcltest::test 15.18.2-assoc-1 { integer addition is associative when all arguments are of the same type } { constant_expression T15182assoc1 {(1 + 2) + 3 == 1 + (2 + 3)} } {PASS}
integer addition is not associative when arguments are of different typesTest Case: 15.18.2-assoc-3Expected Result: FAIL
Regression Test:
tcltest::test 15.18.2-assoc-2 { integer addition is not associative when arguments are of different types } { constant_expression T15182assoc2 {(1L + 0x70000000) + 0x70000000 == 1L + (0x70000000 + 0x70000000)} } {FAIL}
floating-point addition is not associativeTest Case: 15.18.2-assoc-4Expected Result: FAIL
Regression Test:
tcltest::test 15.18.2-assoc-3 { floating-point addition is not associative } { constant_expression T15182assoc3 {(1e10f + 256f) + 256f == 1e10f + (256f + 256f)} } {FAIL}
addition is left-associativeTest Case: 15.18.2-int-1Expected Result: PASS
Regression Test:
tcltest::test 15.18.2-assoc-4 { addition is left-associative } { constant_expression T15182assoc3 {1e10f + 256f + 256f == (1e10f + 256f) + 256f} } {PASS}
overflow in integer addition simply selects low-order bits, changing signTest Case: 15.18.2-float-1Expected Result: PASS
Regression Test:
tcltest::test 15.18.2-int-1 { overflow in integer addition simply selects low-order bits, changing sign } { constant_expression T15182i1 {1073741824 + 1073741824 == -2147483648} } {PASS}
NaN + NaN is NaNTest Case: 15.18.2-float-2Expected Result: PASS
Regression Test:
tcltest::test 15.18.2-float-1 { NaN + NaN is NaN } { constant_expression T15182f1 {Float.NaN + Float.NaN != Float.NaN + Float.NaN} } {PASS}
NaN + anything is NaNTest Case: 15.18.2-float-3Expected Result: PASS
Regression Test:
tcltest::test 15.18.2-float-2 { NaN + anything is NaN } { constant_expression T15182f2 {Float.NaN + 1f != Float.NaN + 1f} } {PASS}
the result of floating-point addition follows arithmetic sign rulesTest Case: 15.18.2-float-4Expected Result: PASS
Regression Test:
tcltest::test 15.18.2-float-3 { the result of floating-point addition follows arithmetic sign rules } { constant_expression T15182f3 {-1f + -2f < 0f} } {PASS}
the result of floating-point addition follows arithmetic sign rulesTest Case: 15.18.2-float-5Expected Result: PASS
Regression Test:
tcltest::test 15.18.2-float-4 { the result of floating-point addition follows arithmetic sign rules } { constant_expression T15182f4 {-1.0f + 2.0f > 0f} } {PASS}
Infinity + 0 = InfinityTest Case: 15.18.2-float-6Expected Result: PASS
Regression Test:
tcltest::test 15.18.2-float-5 { Infinity + 0 = Infinity } { constant_expression T15182f5 {Float.POSITIVE_INFINITY + -0.0f == Float.POSITIVE_INFINITY} } {PASS}
Infinity + finite = Same sign InfinityTest Case: 15.18.2-float-7Expected Result: PASS
Regression Test:
tcltest::test 15.18.2-float-6 { Infinity + finite = Same sign Infinity } { constant_expression T15182f6 {Float.NEGATIVE_INFINITY + -1f == Float.NEGATIVE_INFINITY} } {PASS}
Sum of Infinities of same sign is InfinityTest Case: 15.18.2-float-8Expected Result: PASS
Regression Test:
tcltest::test 15.18.2-float-7 { Sum of Infinities of same sign is Infinity } { constant_expression T15182f7 {Float.NEGATIVE_INFINITY + Float.NEGATIVE_INFINITY == Float.NEGATIVE_INFINITY} } {PASS}
Sum of Infinities of opposite sign is NaNTest Case: 15.18.2-float-9Expected Result: PASS
Regression Test:
tcltest::test 15.18.2-float-8 { Sum of Infinities of opposite sign is NaN } { constant_expression T15182f8 {Float.NEGATIVE_INFINITY + Float.POSITIVE_INFINITY != Float.NEGATIVE_INFINITY + Float.POSITIVE_INFINITY} } {PASS}
Sum of zeroes of same sign is same zeroTest Case: 15.18.2-float-10Expected Result: PASS
Regression Test:
tcltest::test 15.18.2-float-9 { Sum of zeroes of same sign is same zero } { constant_expression T15182f9 {1.0f / (-0.0f + -0.0f) == Float.NEGATIVE_INFINITY} } {PASS}
Sum of zeroes of opposite sign is +0Test Case: 15.18.2-float-11Expected Result: PASS
Regression Test:
tcltest::test 15.18.2-float-10 { Sum of zeroes of opposite sign is +0 } { constant_expression T15182f10 {1.0f / (-0.0f + 0.0f) == Float.POSITIVE_INFINITY} } {PASS}
Sum of oppositely signed floating-point is +0Test Case: 15.18.2-float-12Expected Result: PASS
Regression Test:
tcltest::test 15.18.2-float-11 { Sum of oppositely signed floating-point is +0 } { constant_expression T15182f11 {1.0f / (1.0f + -1.0f) == Float.POSITIVE_INFINITY} } {PASS}
0.0 - x is not negation, for x = 0.0Test Case: 15.18.2-float-13Expected Result: PASS
Regression Test:
tcltest::test 15.18.2-float-12 { 0.0 - x is not negation, for x = 0.0 } { constant_expression T15182f12 {1.0f / (0.0f - 0.0f) != Float.NEGATIVE_INFINITY} } {PASS}
a - b == a + (-b)Test Case: 15.18.2-float-14Expected Result: PASS
Regression Test:
tcltest::test 15.18.2-float-13 { a - b == a + (-b) } { constant_expression T15182f13 {1.0f - 2.0f == 1.0f + -2.0f} } {PASS}
Floating-point addition takes place with infinite accuracy, then rounds to nearestTest Case: 15.18.2-float-15Expected Result: PASS
Regression Test:
tcltest::test 15.18.2-float-14 { Floating-point addition takes place with infinite accuracy, then rounds to nearest } { constant_expression T15182f14 {0xfffff00 + 8.03125f == 0xfffff10} } {PASS}
Floating-point addition takes place with infinite accuracy, then rounds to nearestTest Case: 15.18.2-float-16Expected Result: PASS
Regression Test:
tcltest::test 15.18.2-float-15 { Floating-point addition takes place with infinite accuracy, then rounds to nearest } { constant_expression T15182f15 {-0xfffff00 - -8.03125f == -0xffffef0} } {PASS}
Floating-point addition takes place with infinite accuracy, then rounds to nearestTest Case: 15.18.2-double-1Expected Result: PASS
Regression Test:
tcltest::test 15.18.2-float-16 { Floating-point addition takes place with infinite accuracy, then rounds to nearest } { constant_expression T15182f16 {5.960465e-8f + 1 == 1.0000001f} } {PASS}
NaN + NaN is NaNTest Case: 15.18.2-double-2Expected Result: PASS
Regression Test:
tcltest::test 15.18.2-double-1 { NaN + NaN is NaN } { constant_expression T15182d1 {Double.NaN + Double.NaN != Double.NaN + Double.NaN} } {PASS}
NaN + anything is NaNTest Case: 15.18.2-double-3Expected Result: PASS
Regression Test:
tcltest::test 15.18.2-double-2 { NaN + anything is NaN } { constant_expression T15182d2 {Double.NaN + 1d != Double.NaN + 1d} } {PASS}
the result of floating-point addition follows arithmetic sign rulesTest Case: 15.18.2-double-4Expected Result: PASS
Regression Test:
tcltest::test 15.18.2-double-3 { the result of floating-point addition follows arithmetic sign rules } { constant_expression T15182d3 {-1d + -2d < 0d} } {PASS}
the result of floating-point addition follows arithmetic sign rulesTest Case: 15.18.2-double-5Expected Result: PASS
Regression Test:
tcltest::test 15.18.2-double-4 { the result of floating-point addition follows arithmetic sign rules } { constant_expression T15182d4 {-1.0 + 2.0 > 0.0} } {PASS}
Infinity + 0 = InfinityTest Case: 15.18.2-double-6Expected Result: PASS
Regression Test:
tcltest::test 15.18.2-double-5 { Infinity + 0 = Infinity } { constant_expression T15182d5 {Double.POSITIVE_INFINITY + 0d == Double.POSITIVE_INFINITY} } {PASS}
Infinity + finite = Same sign InfinityTest Case: 15.18.2-double-7Expected Result: PASS
Regression Test:
tcltest::test 15.18.2-double-6 { Infinity + finite = Same sign Infinity } { constant_expression T15182d6 {Double.NEGATIVE_INFINITY + -1d == Double.NEGATIVE_INFINITY} } {PASS}
Sum of Infinities of same sign is InfinityTest Case: 15.18.2-double-8Expected Result: PASS
Regression Test:
tcltest::test 15.18.2-double-7 { Sum of Infinities of same sign is Infinity } { constant_expression T15182d7 {Double.NEGATIVE_INFINITY + Double.NEGATIVE_INFINITY == Double.NEGATIVE_INFINITY} } {PASS}
Sum of Infinities of opposite sign is NaNTest Case: 15.18.2-double-9Expected Result: PASS
Regression Test:
tcltest::test 15.18.2-double-8 { Sum of Infinities of opposite sign is NaN } { constant_expression T15182d8 {Double.NEGATIVE_INFINITY + Double.POSITIVE_INFINITY != Double.NEGATIVE_INFINITY + Double.POSITIVE_INFINITY} } {PASS}
Sum of zeroes of same sign is same zeroTest Case: 15.18.2-double-10Expected Result: PASS
Regression Test:
tcltest::test 15.18.2-double-9 { Sum of zeroes of same sign is same zero } { constant_expression T15182d9 {1.0 / (-0.0 + -0.0) == Double.NEGATIVE_INFINITY} } {PASS}
Sum of zeroes of opposite sign is +0Test Case: 15.18.2-double-11Expected Result: PASS
Regression Test:
tcltest::test 15.18.2-double-10 { Sum of zeroes of opposite sign is +0 } { constant_expression T15182d10 {1.0 / (-0.0 + 0.0) == Double.POSITIVE_INFINITY} } {PASS}
Sum of oppositely signed floating-point is +0Test Case: 15.18.2-double-12Expected Result: PASS
Regression Test:
tcltest::test 15.18.2-double-11 { Sum of oppositely signed floating-point is +0 } { constant_expression T15182d11 {1.0 / (1.0 + -1.0) == Double.POSITIVE_INFINITY} } {PASS}
0.0 - x is not negation, for x = 0.0Test Case: 15.18.2-double-13Expected Result: PASS
Regression Test:
tcltest::test 15.18.2-double-12 { 0.0 - x is not negation, for x = 0.0 } { constant_expression T15182d12 {1.0 / (0.0 - 0.0) != Double.NEGATIVE_INFINITY} } {PASS}
a - b == a + (-b)Test Case: 15.18.2-double-14Expected Result: PASS
Regression Test:
tcltest::test 15.18.2-double-13 { a - b == a + (-b) } { constant_expression T15182d13 {1.0 - 2.0 == 1.0 + -2.0} } {PASS}
Floating-point addition takes place with infinite accuracy, then rounds to nearestTest Case: 15.18.2-double-15Expected Result: PASS
Regression Test:
tcltest::test 15.18.2-double-14 { Floating-point addition takes place with infinite accuracy, then rounds to nearest } { constant_expression T15182d14 {0x1ffffffffffff00L + 8.03125 == 0x1ffffffffffff10L } } {PASS}
Floating-point addition takes place with infinite accuracy, then rounds to nearestTest Case: 15.18.2-double-16Expected Result: PASS
Regression Test:
tcltest::test 15.18.2-double-15 { Floating-point addition takes place with infinite accuracy, then rounds to nearest } { constant_expression T15182d15 {-0x1ffffffffffff00L - -8.03125 == -0x1fffffffffffef0L } } {PASS}
Floating-point addition takes place with infinite accuracy, then rounds to nearest, use of 80-bit extended precision instead of 64-bit double precision will fail for this test caseTest Case: 15.18.2-mixed-1Expected Result: PASS
Regression Test:
tcltest::test 15.18.2-double-16 { Floating-point addition takes place with infinite accuracy, then rounds to nearest, use of 80-bit extended precision instead of 64-bit double precision will fail for this test case } { constant_expression T15182d16 {1.1107651257113993e-16 + 1 == 1.0000000000000002} } {PASS}
Test mixed type addition to 0 for proper optimization - jikes bug 3078Expected Result: PASS
Regression Test:
tcltest::test 15.18.2-mixed-1 { Test mixed type addition to 0 for proper optimization - jikes bug 3078 } { empty_class T15182m1 { void m(int i, long l, float f, double d) { l = 0L + i; l = i + 0L; l = 0L - i; l = i - 0L; f = 0f + i; f = i + 0f; f = 0f - i; f = i - 0f; f = -0f + i; f = i + -0f; f = -0f - i; f = i - -0f; f = 0f + l; f = l + 0f; f = 0f - l; f = l - 0f; f = -0f + l; f = l + -0f; f = -0f - l; f = l - -0f; d = 0. + i; d = i + 0.; d = 0. - i; d = i - 0.; d = -0. + i; d = i + -0.; d = -0. - i; d = i - -0.; d = 0. + l; d = l + 0.; d = 0. - l; d = l - 0.; d = -0. + l; d = l + -0.; d = -0. - l; d = l - -0.; d = 0. + f; d = f + 0.; d = 0. - f; d = f - 0.; d = -0. + f; d = f + -0.; d = -0. - f; d = f - -0.; } } } {PASS}
tests/jls/expressions/relational-operators/type-comparison-operator-instanceof
Always true (but expression is still evaluated)Test Case: 15.20-2-always-2Expected Result: PASS
Regression Test:
tcltest::test 15.20-2-always-1 { Always true (but expression is still evaluated) } { empty_main T15202a1 { // identity conversion of non-null boolean b = new Object() instanceof Object; } } {PASS}
Always true (but expression is still evaluated)Test Case: 15.20-2-always-3Expected Result: PASS
Regression Test:
tcltest::test 15.20-2-always-2 { Always true (but expression is still evaluated) } { empty_main T15202a2 { // non-null subclass to superclass boolean b = new String() instanceof Object; } } {PASS}
Always true (but expression is still evaluated)Test Case: 15.20-2-always-4Expected Result: PASS
Regression Test:
tcltest::test 15.20-2-always-3 { Always true (but expression is still evaluated) } { empty_main T15202a3 { // non-null array to Object boolean b = new int[1] instanceof Object; } } {PASS}
Always true (but expression is still evaluated)Test Case: 15.20-2-always-5Expected Result: PASS
Regression Test:
tcltest::test 15.20-2-always-4 { Always true (but expression is still evaluated) } { empty_main T15202a4 { // non-null array to compatible array boolean b = new String[] {} instanceof String[]; } } {PASS}
Always true (but expression is still evaluated)Test Case: 15.20-2-always-6Expected Result: PASS
Regression Test:
tcltest::test 15.20-2-always-5 { Always true (but expression is still evaluated) } { empty_main T15202a5 { // non-null array to compatible array boolean b = new Integer[] {} instanceof Comparable[]; } } {PASS}
Always true (but expression is still evaluated)Test Case: 15.20-2-always-7Expected Result: PASS
Regression Test:
tcltest::test 15.20-2-always-6 { Always true (but expression is still evaluated) } { empty_main T15202a6 { // non-null array to Cloneable boolean b = new int[1] instanceof Cloneable; } } {PASS}
Always true (but expression is still evaluated)Test Case: 15.20-2-always-8Expected Result: PASS
Regression Test:
tcltest::test 15.20-2-always-7 { Always true (but expression is still evaluated) } { empty_main T15202a7 { // non-null array to Serializable boolean b = new int[] {} instanceof java.io.Serializable; } } {PASS}
Always true (but expression is still evaluated)Test Case: 15.20-2-sometimes-1Expected Result: PASS
Regression Test:
tcltest::test 15.20-2-always-8 { Always true (but expression is still evaluated) } { empty_main T15202a8 { // non-null instance to superinterface boolean b = new Cloneable() {} instanceof Cloneable; } } {PASS}
Sometimes true - requires runtime check that reference is non-null and compatibleTest Case: 15.20-2-sometimes-2Expected Result: PASS
Regression Test:
tcltest::test 15.20-2-sometimes-1 { Sometimes true - requires runtime check that reference is non-null and compatible } { empty_main T15202s1 { Object o = new Object(); // identity boolean b = o instanceof Object; } } {PASS}
Sometimes true - requires runtime check that reference is non-null and compatibleTest Case: 15.20-2-sometimes-3Expected Result: PASS
Regression Test:
tcltest::test 15.20-2-sometimes-2 { Sometimes true - requires runtime check that reference is non-null and compatible } { empty_main T15202s2 { Object o = ""; // narrowing boolean b = o instanceof Integer; // false at runtime } } {PASS}
Sometimes true - requires runtime check that reference is non-null and compatibleTest Case: 15.20-2-sometimes-4Expected Result: PASS
Regression Test:
tcltest::test 15.20-2-sometimes-3 { Sometimes true - requires runtime check that reference is non-null and compatible } { empty_main T15202s3 { String s = ""; // widening boolean b = s instanceof Object; } } {PASS}
Sometimes true - requires runtime check that reference is non-null and compatibleTest Case: 15.20-2-sometimes-5Expected Result: PASS
Regression Test:
tcltest::test 15.20-2-sometimes-4 { Sometimes true - requires runtime check that reference is non-null and compatible } { empty_main T15202s4 { Object o = ""; // narrowing to interface boolean b = o instanceof Cloneable; } } {PASS}
Sometimes true - requires runtime check that reference is non-null and compatibleTest Case: 15.20-2-sometimes-6Expected Result: PASS
Regression Test:
tcltest::test 15.20-2-sometimes-5 { Sometimes true - requires runtime check that reference is non-null and compatible } { empty_main T15202s5 { Object o = ""; // narrowing to array boolean b = o instanceof int[]; } } {PASS}
Sometimes true - requires runtime check that reference is non-null and compatibleTest Case: 15.20-2-sometimes-7Expected Result: PASS
Regression Test:
tcltest::test 15.20-2-sometimes-6 { Sometimes true - requires runtime check that reference is non-null and compatible } { empty_main T15202s6 { Comparable c = ""; // widening to Object boolean b = c instanceof Object; } } {PASS}
Sometimes true - requires runtime check that reference is non-null and compatibleTest Case: 15.20-2-sometimes-8Expected Result: PASS
Regression Test:
tcltest::test 15.20-2-sometimes-7 { Sometimes true - requires runtime check that reference is non-null and compatible } { empty_class T15202s7 { interface I extends Cloneable {} I i = new I() {}; // widening to superinterface boolean b = i instanceof Cloneable; } } {PASS}
Sometimes true - requires runtime check that reference is non-null and compatibleTest Case: 15.20-2-sometimes-9Expected Result: PASS
Regression Test:
tcltest::test 15.20-2-sometimes-8 { Sometimes true - requires runtime check that reference is non-null and compatible } { empty_class T15202s8 { interface I extends Cloneable {} Cloneable c = new Cloneable() {}; // narrowing to subinterface boolean b = c instanceof I; } } {PASS}
Sometimes true - requires runtime check that reference is non-null and compatibleTest Case: 15.20-2-sometimes-10Expected Result: PASS
Regression Test:
tcltest::test 15.20-2-sometimes-9 { Sometimes true - requires runtime check that reference is non-null and compatible } { empty_class T15202s9 { Cloneable c = new Cloneable() {}; // narrowing to array boolean b = c instanceof int[]; } } {PASS}
Sometimes true - requires runtime check that reference is non-null and compatibleTest Case: 15.20-2-sometimes-11Expected Result: PASS
Regression Test:
tcltest::test 15.20-2-sometimes-10 { Sometimes true - requires runtime check that reference is non-null and compatible } { empty_class T15202s10 { interface I {} Cloneable c = new Cloneable() {}; // narrowing to compatible interface boolean b = c instanceof I; } } {PASS}
Sometimes true - requires runtime check that reference is non-null and compatibleTest Case: 15.20-2-sometimes-12Expected Result: PASS
Regression Test:
tcltest::test 15.20-2-sometimes-11 { Sometimes true - requires runtime check that reference is non-null and compatible } { empty_class T15202s11 { int[] i = {}; // widening to interface boolean b = i instanceof Cloneable; } } {PASS}
Sometimes true - requires runtime check that reference is non-null and compatibleTest Case: 15.20-2-sometimes-13Expected Result: PASS
Regression Test:
tcltest::test 15.20-2-sometimes-12 { Sometimes true - requires runtime check that reference is non-null and compatible } { empty_class T15202s12 { String[] s = {}; // widening to compatible array boolean b = s instanceof Object[]; } } {PASS}
Sometimes true - requires runtime check that reference is non-null and compatibleTest Case: 15.20-2-sometimes-14Expected Result: PASS
Regression Test:
tcltest::test 15.20-2-sometimes-13 { Sometimes true - requires runtime check that reference is non-null and compatible } { empty_class T15202s13 { String[] s = {}; // widening to compatible array boolean b = s instanceof Comparable[]; } } {PASS}
Sometimes true - requires runtime check that reference is non-null and compatibleTest Case: 15.20-2-sometimes-15Expected Result: PASS
Regression Test:
tcltest::test 15.20-2-sometimes-14 { Sometimes true - requires runtime check that reference is non-null and compatible } { empty_class T15202s14 { Object[] o = {}; // narrowing to compatible array boolean b = o instanceof Integer[]; } } {PASS}
Sometimes true - requires runtime check that reference is non-null and compatibleTest Case: 15.20-2-never-1Expected Result: PASS
Regression Test:
tcltest::test 15.20-2-sometimes-15 { Sometimes true - requires runtime check that reference is non-null and compatible } { empty_class T15202s15 { Object[] o = {}; // narrowing to compatible array boolean b = o instanceof Comparable[]; } } {PASS}
Compile-time error - not cast-compatibleTest Case: 15.20-2-never-2Expected Result: FAIL
Regression Test:
tcltest::test 15.20-2-never-1 { Compile-time error - not cast-compatible } { empty_main T15202n1 { boolean b = "" instanceof Integer; } } {FAIL}
Compile-time error - not cast-compatibleTest Case: 15.20-2-never-3Expected Result: FAIL
Regression Test:
tcltest::test 15.20-2-never-2 { Compile-time error - not cast-compatible } { empty_main T15202n2 { boolean b = "" instanceof int[]; } } {FAIL}
Compile-time error - not cast-compatibleTest Case: 15.20-2-never-4Expected Result: FAIL
Regression Test:
tcltest::test 15.20-2-never-3 { Compile-time error - not cast-compatible } { empty_main T15202n3 { boolean b = new String[1] instanceof int[]; } } {FAIL}
Compile-time error - not cast-compatibleTest Case: 15.20-2-never-5Expected Result: FAIL
Regression Test:
tcltest::test 15.20-2-never-4 { Compile-time error - not cast-compatible } { empty_class T15202n4 { interface I { void m(); } interface J { int m(); } boolean n(I i) { return i instanceof J; } } } {FAIL}
Compile-time error - not cast-compatibleTest Case: 15.20-2-never-6Expected Result: FAIL
Regression Test:
tcltest::test 15.20-2-never-5 { Compile-time error - not cast-compatible } { empty_class T15202n5 { boolean b = new int[1] instanceof Runnable; } } {FAIL}
Compile-time error - not cast-compatibleTest Case: 15.20-2-never-7Expected Result: FAIL
Regression Test:
tcltest::test 15.20-2-never-6 { Compile-time error - not cast-compatible } { empty_class T15202n6 { boolean b = new int[1] instanceof Object[]; } } {FAIL}
Compile-time error - not cast-compatibleExpected Result: FAIL
Regression Test:
tcltest::test 15.20-2-never-7 { Compile-time error - not cast-compatible } { empty_class T15202n7 { boolean b = new byte[1] instanceof short[]; } } {FAIL}
tests/jls/expressions/relational-operators/type-comparison-operator-instanceof
The left side may be nullTest Case: 15.20.2-type-2Expected Result: PASS
Regression Test:
tcltest::test 15.20.2-type-1 { The left side may be null } { empty_main T15202t1 { boolean b = null instanceof Object; // always false, but valid } } {PASS}
The left side may be nullTest Case: 15.20.2-type-3Expected Result: PASS
Regression Test:
tcltest::test 15.20.2-type-2 { The left side may be null } { empty_main T15202t2 { boolean b = null instanceof Runnable; } } {PASS}
The left side may be nullTest Case: 15.20.2-type-4Expected Result: PASS
Regression Test:
tcltest::test 15.20.2-type-3 { The left side may be null } { empty_main T15202t3 { boolean b = null instanceof int[]; } } {PASS}
The left side may not be primitiveTest Case: 15.20.2-type-5Expected Result: FAIL
Regression Test:
tcltest::test 15.20.2-type-4 { The left side may not be primitive } { empty_main T15202t4 { boolean b = true instanceof Boolean; } } {FAIL}
The left side may not be primitiveTest Case: 15.20.2-type-6Expected Result: FAIL
Regression Test:
tcltest::test 15.20.2-type-5 { The left side may not be primitive } { empty_main T15202t5 { boolean b = true instanceof boolean; } } {FAIL}
The left side may not be primitiveTest Case: 15.20.2-type-7Expected Result: FAIL
Regression Test:
tcltest::test 15.20.2-type-6 { The left side may not be primitive } { empty_main T15202t6 { boolean b = 1 instanceof Integer; } } {FAIL}
The left side may not be primitiveTest Case: 15.20.2-type-8Expected Result: FAIL
Regression Test:
tcltest::test 15.20.2-type-7 { The left side may not be primitive } { empty_main T15202t7 { boolean b = 1 instanceof int; } } {FAIL}
The left side may not be primitiveTest Case: 15.20.2-type-9Expected Result: FAIL
Regression Test:
tcltest::test 15.20.2-type-8 { The left side may not be primitive } { empty_main T15202t8 { boolean b = '1' instanceof Character; } } {FAIL}
The left side may not be primitiveTest Case: 15.20.2-type-10Expected Result: FAIL
Regression Test:
tcltest::test 15.20.2-type-9 { The left side may not be primitive } { empty_main T15202t9 { boolean b = '1' instanceof char; } } {FAIL}
The left side may not be primitiveTest Case: 15.20.2-type-11Expected Result: FAIL
Regression Test:
tcltest::test 15.20.2-type-10 { The left side may not be primitive } { empty_main T15202t10 { boolean b = 1.0 instanceof Double; } } {FAIL}
The left side may not be primitiveTest Case: 15.20.2-type-12Expected Result: FAIL
Regression Test:
tcltest::test 15.20.2-type-11 { The left side may not be primitive } { empty_main T15202t11 { boolean b = 1.0 instanceof double; } } {FAIL}
The left side may not be voidTest Case: 15.20.2-type-13Expected Result: FAIL
Regression Test:
tcltest::test 15.20.2-type-12 { The left side may not be void } { empty_class T15202t12 { void m() {} boolean b = m() instanceof Object; } } {FAIL}
The left side may not be voidTest Case: 15.20.2-type-14Expected Result: FAIL
Regression Test:
tcltest::test 15.20.2-type-13 { The left side may not be void } { empty_class T15202t13 { void m() {} boolean b = m() instanceof void; } } {FAIL}
The left side may be a class literalTest Case: 15.20.2-type-15Expected Result: PASS
Regression Test:
tcltest::test 15.20.2-type-14 { The left side may be a class literal } { empty_main T15202t14 { boolean b = Object.class instanceof Class; } } {PASS}
The left side may be a string literalTest Case: 15.20.2-type-16Expected Result: PASS
Regression Test:
tcltest::test 15.20.2-type-15 { The left side may be a string literal } { empty_main T15202t15 { boolean b = "" instanceof String; } } {PASS}
The left side may not be a typeTest Case: 15.20.2-type-17Expected Result: FAIL
Regression Test:
tcltest::test 15.20.2-type-16 { The left side may not be a type } { empty_main T15202t16 { boolean b = String instanceof Object; } } {FAIL}
The right side must be a reference typeTest Case: 15.20.2-type-18Expected Result: FAIL
Regression Test:
tcltest::test 15.20.2-type-17 { The right side must be a reference type } { empty_main T15202t17 { boolean b = null instanceof null; } } {FAIL}
The right side must be a reference typeExpected Result: FAIL
Regression Test:
tcltest::test 15.20.2-type-18 { The right side must be a reference type } { empty_main T15202t18 { boolean b = new Integer() instanceof int; } } {FAIL}
tests/jls/expressions/equality-operators
a==b==c is (a==b)==c, and hence c must be booleanTest Case: 15.21-assoc-2Expected Result: FAIL
Regression Test:
tcltest::test 15.21-assoc-1 { a==b==c is (a==b)==c, and hence c must be boolean } { constant_expression T1521a1 {1 == 2 == 0} } {FAIL}
a==b==c is (a==b)==c, and hence c must be booleanTest Case: 15.21-assoc-3Expected Result: FAIL
Regression Test:
tcltest::test 15.21-assoc-2 { a==b==c is (a==b)==c, and hence c must be boolean } { constant_expression T1521a2 {1 != 2 != 0} } {FAIL}
a==b==c is (a==b)==c, and hence c must be booleanTest Case: 15.21-assoc-4Expected Result: PASS
Regression Test:
tcltest::test 15.21-assoc-3 { a==b==c is (a==b)==c, and hence c must be boolean } { constant_expression T1521a3 {1 == 2 == false} {1 != 2 == true} {1 == 2 != true} {1 != 2 != false} } {PASS}
a==b==c is (a==b)==c, and hence c must be booleanTest Case: 15.21-assoc-5Expected Result: PASS
Regression Test:
tcltest::test 15.21-assoc-4 { a==b==c is (a==b)==c, and hence c must be boolean } { constant_expression T1521a4 {(1 == 2) == false} {(1 != 2) == true} {(1 == 2) != true} {(1 != 2) != false} } {PASS}
a==b==c is (a==b)==c, and hence c must be booleanTest Case: 15.21-assoc-6Expected Result: PASS
Regression Test:
tcltest::test 15.21-assoc-5 { a==b==c is (a==b)==c, and hence c must be boolean } { constant_expression T1521a5 {true == false == false} {true != false == true} {true == false != true} {true != false != false} } {PASS}
a==b==c is (a==b)==c, and hence c must be booleanTest Case: 15.21-assoc-7Expected Result: PASS
Regression Test:
tcltest::test 15.21-assoc-6 { a==b==c is (a==b)==c, and hence c must be boolean } { constant_expression T1521a6 {(true == false) == false} {(true != false) == true} {(true == false) != true} {(true != false) != false} } {PASS}
a==b==c is (a==b)==c, and hence c must be booleanTest Case: 15.21-assoc-8Expected Result: PASS
Regression Test:
tcltest::test 15.21-assoc-7 { a==b==c is (a==b)==c, and hence c must be boolean } { constant_expression T1521a7 {"1" == "2" == false} {"1" != "2" == true} {"1" == "2" != true} {"1" != "2" != false} } {PASS}
a==b==c is (a==b)==c, and hence c must be booleanTest Case: 15.21-assoc-9Expected Result: PASS
Regression Test:
tcltest::test 15.21-assoc-8 { a==b==c is (a==b)==c, and hence c must be boolean } { constant_expression T1521a8 {("1" == "2") == false} {("1" != "2") == true} {("1" == "2") != true} {("1" != "2") != false} } {PASS}
a==b==c is (a==b)==cTest Case: 15.21-precedence-1Expected Result: FAIL
Regression Test:
tcltest::test 15.21-assoc-9 { a==b==c is (a==b)==c } { constant_expression T1521a9 {1 == (0 == false)} } {FAIL}
== is lower than <Test Case: 15.21-precedence-2Expected Result: PASS
Regression Test:
tcltest::test 15.21-precedence-1 { == is lower than < } { constant_expression T1521p1 {1 < 2 == 2 < 3} {(1 < 2) == (2 < 3)} } {PASS}
== is lower than <Test Case: 15.21-precedence-3Expected Result: FAIL
Regression Test:
tcltest::test 15.21-precedence-2 { == is lower than < } { constant_expression T1521p2 {1 < (2 == 2) < 3} } {FAIL}
== is lower than <Test Case: 15.21-equal-1Expected Result: FAIL
Regression Test:
tcltest::test 15.21-precedence-3 { == is lower than < } { constant_expression T1521p3 {((1 < 2) == 2) < 3} } {FAIL}
a!=b is !(a==b)Test Case: 15.21-equal-2Expected Result: PASS
Regression Test:
tcltest::test 15.21-equal-1 { a!=b is !(a==b) } { constant_expression T1521e1 {(1!=2) == (!(1==2))} {(1!=1) == (!(1==1))} } {PASS}
a!=b is !(a==b)Test Case: 15.21-equal-3Expected Result: PASS
Regression Test:
tcltest::test 15.21-equal-2 { a!=b is !(a==b) } { constant_expression T1521e2 {(true!=true) == (!(true==true))} {(true!=false) == (!(true==false))} } {PASS}
a!=b is !(a==b)Test Case: 15.21-type-1Expected Result: PASS
Regression Test:
tcltest::test 15.21-equal-3 { a!=b is !(a==b) } { constant_expression T1521e3 {("1"!="1") == (!("1"=="1"))} {("1"!="2") == (!("1"=="2"))} } {PASS}
in a==b, if a is boolean, b must be tooTest Case: 15.21-type-2Expected Result: FAIL
Regression Test:
tcltest::test 15.21-type-1 { in a==b, if a is boolean, b must be too } { empty_main T1521t1 { boolean b = true == 1; } } {FAIL}
in a==b, if a is boolean, b must be tooTest Case: 15.21-type-3Expected Result: FAIL
Regression Test:
tcltest::test 15.21-type-2 { in a==b, if a is boolean, b must be too } { empty_main T1521t2 { boolean b = true == 1L; } } {FAIL}
in a==b, if a is boolean, b must be tooTest Case: 15.21-type-4Expected Result: FAIL
Regression Test:
tcltest::test 15.21-type-3 { in a==b, if a is boolean, b must be too } { empty_main T1521t3 { boolean b = true == '1'; } } {FAIL}
in a==b, if a is boolean, b must be tooTest Case: 15.21-type-5Expected Result: FAIL
Regression Test:
tcltest::test 15.21-type-4 { in a==b, if a is boolean, b must be too } { empty_main T1521t4 { boolean b = true == 1f; } } {FAIL}
in a==b, if a is boolean, b must be tooTest Case: 15.21-type-6Expected Result: FAIL
Regression Test:
tcltest::test 15.21-type-5 { in a==b, if a is boolean, b must be too } { empty_main T1521t5 { boolean b = true == 1.; } } {FAIL}
in a==b, if a is boolean, b must be tooTest Case: 15.21-type-7Expected Result: FAIL
Regression Test:
tcltest::test 15.21-type-6 { in a==b, if a is boolean, b must be too } { empty_main T1521t6 { boolean b = true == "1"; } } {FAIL}
in a==b, if a is boolean, b must be tooTest Case: 15.21-type-8Expected Result: FAIL
Regression Test:
tcltest::test 15.21-type-7 { in a==b, if a is boolean, b must be too } { empty_main T1521t7 { boolean b = true == null; } } {FAIL}
in a==b, if a is boolean, b must be tooTest Case: 15.21-type-9Expected Result: FAIL
Regression Test:
tcltest::test 15.21-type-8 { in a==b, if a is boolean, b must be too } { empty_main T1521t8 { boolean b = true == System.out.println(); } } {FAIL}
in a==b, if a is boolean, b must be tooTest Case: 15.21-type-10Expected Result: FAIL
Regression Test:
tcltest::test 15.21-type-9 { in a==b, if a is boolean, b must be too } { empty_main T1521t9 { boolean b = true == new Boolean(true); } } {FAIL}
in a==b, if a is boolean, b must be tooTest Case: 15.21-type-11Expected Result: PASS
Regression Test:
tcltest::test 15.21-type-10 { in a==b, if a is boolean, b must be too } { empty_main T1521t10 { boolean b = true == false; } } {PASS}
in a==b, if a is numeric, b must be tooTest Case: 15.21-type-12Expected Result: PASS
Regression Test:
tcltest::test 15.21-type-11 { in a==b, if a is numeric, b must be too } { empty_main T1521t11 { boolean b = 1 == 1; } } {PASS}
in a==b, if a is numeric, b must be tooTest Case: 15.21-type-13Expected Result: PASS
Regression Test:
tcltest::test 15.21-type-12 { in a==b, if a is numeric, b must be too } { empty_main T1521t12 { boolean b = 1 == 1L; } } {PASS}
in a==b, if a is numeric, b must be tooTest Case: 15.21-type-14Expected Result: PASS
Regression Test:
tcltest::test 15.21-type-13 { in a==b, if a is numeric, b must be too } { empty_main T1521t13 { boolean b = 1 == '1'; } } {PASS}
in a==b, if a is numeric, b must be tooTest Case: 15.21-type-15Expected Result: PASS
Regression Test:
tcltest::test 15.21-type-14 { in a==b, if a is numeric, b must be too } { empty_main T1521t14 { boolean b = 1 == 1f; } } {PASS}
in a==b, if a is numeric, b must be tooTest Case: 15.21-type-16Expected Result: PASS
Regression Test:
tcltest::test 15.21-type-15 { in a==b, if a is numeric, b must be too } { empty_main T1521t15 { boolean b = 1 == 1.; } } {PASS}
in a==b, if a is numeric, b must be tooTest Case: 15.21-type-17Expected Result: FAIL
Regression Test:
tcltest::test 15.21-type-16 { in a==b, if a is numeric, b must be too } { empty_main T1521t16 { boolean b = 1 == "1"; } } {FAIL}
in a==b, if a is numeric, b must be tooTest Case: 15.21-type-18Expected Result: FAIL
Regression Test:
tcltest::test 15.21-type-17 { in a==b, if a is numeric, b must be too } { empty_main T1521t17 { boolean b = 1 == null; } } {FAIL}
in a==b, if a is numeric, b must be tooTest Case: 15.21-type-19Expected Result: FAIL
Regression Test:
tcltest::test 15.21-type-18 { in a==b, if a is numeric, b must be too } { empty_main T1521t18 { boolean b = 1 == System.out.println(); } } {FAIL}
in a==b, if a is numeric, b must be tooTest Case: 15.21-type-20Expected Result: FAIL
Regression Test:
tcltest::test 15.21-type-19 { in a==b, if a is numeric, b must be too } { empty_main T1521t19 { boolean b = 1 == new Integer(1); } } {FAIL}
in a==b, if a is numeric, b must be tooTest Case: 15.21-type-21Expected Result: FAIL
Regression Test:
tcltest::test 15.21-type-20 { in a==b, if a is numeric, b must be too } { empty_main T1521t20 { boolean b = 1 == true; } } {FAIL}
in a==b, if a is a reference, b must be tooTest Case: 15.21-type-22Expected Result: FAIL
Regression Test:
tcltest::test 15.21-type-21 { in a==b, if a is a reference, b must be too } { empty_main T1521t21 { boolean b = null == 1; } } {FAIL}
in a==b, if a is a reference, b must be tooTest Case: 15.21-type-23Expected Result: FAIL
Regression Test:
tcltest::test 15.21-type-22 { in a==b, if a is a reference, b must be too } { empty_main T1521t22 { boolean b = null == 1L; } } {FAIL}
in a==b, if a is a reference, b must be tooTest Case: 15.21-type-24Expected Result: FAIL
Regression Test:
tcltest::test 15.21-type-23 { in a==b, if a is a reference, b must be too } { empty_main T1521t23 { boolean b = null == '1'; } } {FAIL}
in a==b, if a is a reference, b must be tooTest Case: 15.21-type-25Expected Result: FAIL
Regression Test:
tcltest::test 15.21-type-24 { in a==b, if a is a reference, b must be too } { empty_main T1521t24 { boolean b = null == 1f; } } {FAIL}
in a==b, if a is a reference, b must be tooTest Case: 15.21-type-26Expected Result: FAIL
Regression Test:
tcltest::test 15.21-type-25 { in a==b, if a is a reference, b must be too } { empty_main T1521t25 { boolean b = null == 1.; } } {FAIL}
in a==b, if a is a reference, b must be tooTest Case: 15.21-type-27Expected Result: PASS
Regression Test:
tcltest::test 15.21-type-26 { in a==b, if a is a reference, b must be too } { empty_main T1521t26 { boolean b = null == "1"; } } {PASS}
in a==b, if a is a reference, b must be tooTest Case: 15.21-type-28Expected Result: PASS
Regression Test:
tcltest::test 15.21-type-27 { in a==b, if a is a reference, b must be too } { empty_main T1521t27 { boolean b = null == null; } } {PASS}
in a==b, if a is a reference, b must be tooTest Case: 15.21-type-29Expected Result: FAIL
Regression Test:
tcltest::test 15.21-type-28 { in a==b, if a is a reference, b must be too } { empty_main T1521t28 { boolean b = null == System.out.println(); } } {FAIL}
in a==b, if a is a reference, b must be tooTest Case: 15.21-type-30Expected Result: PASS
Regression Test:
tcltest::test 15.21-type-29 { in a==b, if a is a reference, b must be too } { empty_main T1521t29 { boolean b = null == new Boolean(true); } } {PASS}
in a==b, if a is a reference, b must be tooTest Case: 15.21-type-31Expected Result: FAIL
Regression Test:
tcltest::test 15.21-type-30 { in a==b, if a is a reference, b must be too } { empty_main T1521t30 { boolean b = null == false; } } {FAIL}
in a==b, if a is a reference, b must be tooTest Case: 15.21-type-32Expected Result: FAIL
Regression Test:
tcltest::test 15.21-type-31 { in a==b, if a is a reference, b must be too } { empty_main T1521t31 { boolean b = "1" == 1; } } {FAIL}
in a==b, if a is a reference, b must be tooTest Case: 15.21-type-33Expected Result: FAIL
Regression Test:
tcltest::test 15.21-type-32 { in a==b, if a is a reference, b must be too } { empty_main T1521t32 { boolean b = "1" == 1L; } } {FAIL}
in a==b, if a is a reference, b must be tooTest Case: 15.21-type-34Expected Result: FAIL
Regression Test:
tcltest::test 15.21-type-33 { in a==b, if a is a reference, b must be too } { empty_main T1521t33 { boolean b = "1" == '1'; } } {FAIL}
in a==b, if a is a reference, b must be tooTest Case: 15.21-type-35Expected Result: FAIL
Regression Test:
tcltest::test 15.21-type-34 { in a==b, if a is a reference, b must be too } { empty_main T1521t34 { boolean b = "1.0" == 1f; } } {FAIL}
in a==b, if a is a reference, b must be tooTest Case: 15.21-type-36Expected Result: FAIL
Regression Test:
tcltest::test 15.21-type-35 { in a==b, if a is a reference, b must be too } { empty_main T1521t35 { boolean b = "1.0" == 1.; } } {FAIL}
in a==b, if a is a reference, b must be tooTest Case: 15.21-type-37Expected Result: PASS
Regression Test:
tcltest::test 15.21-type-36 { in a==b, if a is a reference, b must be too } { empty_main T1521t36 { boolean b = "1" == "1"; } } {PASS}
in a==b, if a is a reference, b must be tooTest Case: 15.21-type-38Expected Result: PASS
Regression Test:
tcltest::test 15.21-type-37 { in a==b, if a is a reference, b must be too } { empty_main T1521t37 { boolean b = "null" == null; } } {PASS}
in a==b, if a is a reference, b must be tooTest Case: 15.21-type-39Expected Result: FAIL
Regression Test:
tcltest::test 15.21-type-38 { in a==b, if a is a reference, b must be too } { empty_main T1521t38 { boolean b = "" == System.out.println(); } } {FAIL}
in a==b, if a is a reference, b must be tooTest Case: 15.21-type-40Expected Result: PASS
Regression Test:
tcltest::test 15.21-type-39 { in a==b, if a is a reference, b must be too } { empty_main T1521t39 { boolean b = new Object() == new Integer(1); } } {PASS}
in a==b, if a is a reference, b must be tooTest Case: 15.21-type-41Expected Result: FAIL
Regression Test:
tcltest::test 15.21-type-40 { in a==b, if a is a reference, b must be too } { empty_main T1521t40 { boolean b = "true" == true; } } {FAIL}
void==void is not validExpected Result: FAIL
Regression Test:
tcltest::test 15.21-type-41 { void==void is not valid } { empty_main T1521t41 { boolean b = System.out.println() == System.out.println(); } } {FAIL}
tests/jls/expressions/equality-operators/numerical-equality
Binary promotion is done for numeric ==Test Case: 15.21.1-promote-2Expected Result: PASS
Regression Test:
tcltest::test 15.21.1-promote-1 { Binary promotion is done for numeric == } { # Note the same bit patterns constant_expression T15211p1 {(char)0xffff != (short)0xffff} } {PASS}
Binary promotion is done for numeric ==Test Case: 15.21.1-promote-3Expected Result: PASS
Regression Test:
tcltest::test 15.21.1-promote-2 { Binary promotion is done for numeric == } { # Note the different bit patterns constant_expression T15211p2 {(short)0xffff == (byte)0xff} } {PASS}
Binary promotion is done for numeric ==Test Case: 15.21.1-floating-1Expected Result: PASS
Regression Test:
tcltest::test 15.21.1-promote-3 { Binary promotion is done for numeric == } { # Note the same decimal starting point constant_expression T15211p3 {.1f != .1} } {PASS}
In floating point, -0 == 0Test Case: 15.21.1-floating-2Expected Result: PASS
Regression Test:
tcltest::test 15.21.1-floating-1 { In floating point, -0 == 0 } { constant_expression T15211f1 {0. == -0.} {!(0. != -0.)} } {PASS}
In floating point, -0 == 0Test Case: 15.21.1-floating-3Expected Result: PASS
Regression Test:
tcltest::test 15.21.1-floating-2 { In floating point, -0 == 0 } { constant_expression T15211f2 {0f == -0f} {!(0f != -0f)} } {PASS}
In floating point, NaN is never ==Test Case: 15.21.1-floating-4Expected Result: PASS
Regression Test:
tcltest::test 15.21.1-floating-3 { In floating point, NaN is never == } { constant_expression T15211f3 {Double.NaN != Double.NaN} {!(Double.NaN == Double.NaN)} {Float.NaN != Float.NaN} {!(Float.NaN == Float.NaN)} } {PASS}
In floating point, NaN is never ==Test Case: 15.21.1-floating-5Expected Result: PASS
Regression Test:
tcltest::test 15.21.1-floating-4 { In floating point, NaN is never == } { constant_expression T15211f4 {Double.NaN != 0} {!(Double.NaN == 0)} {Double.NaN != -0.} {!(Double.NaN == -0.)} } {PASS}
In floating point, NaN is never ==Test Case: 15.21.1-floating-6Expected Result: PASS
Regression Test:
tcltest::test 15.21.1-floating-5 { In floating point, NaN is never == } { constant_expression T15211f5 {Float.NaN != 0} {!(Float.NaN == 0)} {Float.NaN != -0f} {!(Float.NaN == -0f)} } {PASS}
In floating point, NaN is never ==Test Case: 15.21.1-floating-7Expected Result: PASS
Regression Test:
tcltest::test 15.21.1-floating-6 { In floating point, NaN is never == } { constant_expression T15211f6 {Double.NaN != Double.POSITIVE_INFINITY} {!(Double.NaN == Double.POSITIVE_INFINITY)} {Double.NaN != Double.NEGATIVE_INFINITY} {!(Double.NaN == Double.NEGATIVE_INFINITY)} } {PASS}
In floating point, NaN is never ==Test Case: 15.21.1-floating-8Expected Result: PASS
Regression Test:
tcltest::test 15.21.1-floating-7 { In floating point, NaN is never == } { constant_expression T15211f7 {Float.NaN != Float.POSITIVE_INFINITY} {!(Float.NaN == Float.POSITIVE_INFINITY)} {Float.NaN != Float.NEGATIVE_INFINITY} {!(Float.NaN == Float.NEGATIVE_INFINITY)} } {PASS}
In floating point, infinities compare only to themselvesTest Case: 15.21.1-floating-9Expected Result: PASS
Regression Test:
tcltest::test 15.21.1-floating-8 { In floating point, infinities compare only to themselves } { constant_expression T15211f8 {Double.POSITIVE_INFINITY == Double.POSITIVE_INFINITY} {Double.POSITIVE_INFINITY != Double.NEGATIVE_INFINITY} {Double.NEGATIVE_INFINITY == Double.NEGATIVE_INFINITY} {Double.POSITIVE_INFINITY != 0} {Double.NEGATIVE_INFINITY != -0.} } {PASS}
In floating point, infinities compare only to themselvesExpected Result: PASS
Regression Test:
tcltest::test 15.21.1-floating-9 { In floating point, infinities compare only to themselves } { constant_expression T15211f9 {Float.POSITIVE_INFINITY == Float.POSITIVE_INFINITY} {Float.POSITIVE_INFINITY != Float.NEGATIVE_INFINITY} {Float.NEGATIVE_INFINITY == Float.NEGATIVE_INFINITY} {Float.POSITIVE_INFINITY != 0} {Float.NEGATIVE_INFINITY != -0f} } {PASS}
tests/jls/expressions/equality-operators/reference-equality
In reference equality, the two types must be cast convertibleTest Case: 15.21.3-type-2Expected Result: FAIL
Regression Test:
tcltest::test 15.21.3-type-1 { In reference equality, the two types must be cast convertible } { empty_main T15213t1 { boolean b = new Integer(1) == ""; } } {FAIL}
In reference equality, the two types must be cast convertibleTest Case: 15.21.3-type-3Expected Result: PASS
Regression Test:
tcltest::test 15.21.3-type-2 { In reference equality, the two types must be cast convertible } { empty_main T15213t2 { boolean b = new Integer(1) == (Object) ""; b = (Object) new Integer(1) == ""; } } {PASS}
In reference equality, the two types must be cast convertibleTest Case: 15.21.3-type-4Expected Result: PASS
Regression Test:
tcltest::test 15.21.3-type-3 { In reference equality, the two types must be cast convertible } { empty_class T15213t3 { interface I {} class C {} boolean m(I i, C c) { return i == c; } } } {PASS}
In reference equality, the two types must be cast convertibleTest Case: 15.21.3-type-5Expected Result: FAIL
Regression Test:
tcltest::test 15.21.3-type-4 { In reference equality, the two types must be cast convertible } { empty_class T15213t4 { interface I {} final class C {} boolean m(I i, C c) { return i == c; } } } {FAIL}
In reference equality, the two types must be cast convertibleTest Case: 15.21.3-type-6Expected Result: PASS
Regression Test:
tcltest::test 15.21.3-type-5 { In reference equality, the two types must be cast convertible } { empty_class T15213t5 { interface I {} final class C {} boolean m(I i, C c) { return (i == (Object) c) || ((Object) i == c); } } } {PASS}
In reference equality, the two types must be cast convertibleTest Case: 15.21.3-type-7Expected Result: FAIL
Regression Test:
tcltest::test 15.21.3-type-6 { In reference equality, the two types must be cast convertible } { empty_class T15213t6 { interface I1 { void m(); } interface I2 { int m(); } boolean m(I1 i1, I2 i2) { return i1 == i2; } } } {FAIL}
In reference equality, the two types must be cast convertibleTest Case: 15.21.3-type-8Expected Result: PASS
Regression Test:
tcltest::test 15.21.3-type-7 { In reference equality, the two types must be cast convertible } { empty_class T15213t7 { interface I1 { void m(); } interface I2 { int m(); } boolean m(I1 i1, I2 i2) { return ((Object) i1 == i2) || (i1 == (Object) i2); } } } {PASS}
In reference equality, the two types must be cast convertibleTest Case: 15.21.3-type-9Expected Result: PASS
Regression Test:
tcltest::test 15.21.3-type-8 { In reference equality, the two types must be cast convertible } { empty_class T15213t8 { interface I { void m(); } class C { int m() { return 1; } } boolean m(I i, C c) { // Note that no subclass of C can implement i! return i == c; } } } {PASS}
In reference equality, the two types must be cast convertibleTest Case: 15.21.3-type-10Expected Result: PASS
Regression Test:
tcltest::test 15.21.3-type-9 { In reference equality, the two types must be cast convertible } { empty_class T15213t9 { boolean m(Cloneable c, int[] i) { return c == i; } } } {PASS}
In reference equality, the two types must be cast convertibleTest Case: 15.21.3-type-11Expected Result: FAIL
Regression Test:
tcltest::test 15.21.3-type-10 { In reference equality, the two types must be cast convertible } { empty_class T15213t10 { interface I {} boolean m(I i, int[] a) { return i == a; } } } {FAIL}
In reference equality, the two types must be cast convertibleExpected Result: PASS
Regression Test:
tcltest::test 15.21.3-type-11 { In reference equality, the two types must be cast convertible } { empty_class T15213t11 { interface I {} boolean m(I i, int[] a) { return ((Object)i == a) || (i == (Object) a); } } } {PASS}
tests/jls/expressions/conditional-and-operator
Test that a compiler that optimizes && does so correctlyTest Case: 15.23-optimize-2Expected Result: PASS
Regression Test:
tcltest::test 15.23-optimize-1 { Test that a compiler that optimizes && does so correctly } { empty_main T1523o1 { boolean b = true; if (b && true); if (!b && true); b = false; } } {PASS}
Test that a compiler that optimizes && does so correctlyTest Case: 15.23-optimize-3Expected Result: PASS
Regression Test:
tcltest::test 15.23-optimize-2 { Test that a compiler that optimizes && does so correctly } { empty_main T1523o2 { boolean b = true; if (true && b); if (true && !b); b = false; } } {PASS}
Test that a compiler that optimizes && does so correctlyTest Case: 15.23-optimize-4Expected Result: PASS
Regression Test:
tcltest::test 15.23-optimize-3 { Test that a compiler that optimizes && does so correctly } { empty_main T1523o3 { boolean b = true; if (b && false); if (!b && false); b = false; } } {PASS}
Test that a compiler that optimizes && does so correctlyExpected Result: PASS
Regression Test:
tcltest::test 15.23-optimize-4 { Test that a compiler that optimizes && does so correctly } { empty_main T1523o4 { boolean b = true; if (false && b); if (false && !b); b = false; } } {PASS}
tests/jls/expressions/conditional-or-operator
Test that a compiler that optimizes || does so correctlyTest Case: 15.24-optimize-2Expected Result: PASS
Regression Test:
tcltest::test 15.24-optimize-1 { Test that a compiler that optimizes || does so correctly } { empty_main T1524o1 { boolean b = true; if (b || true); if (!b || true); b = false; } } {PASS}
Test that a compiler that optimizes || does so correctlyTest Case: 15.24-optimize-3Expected Result: PASS
Regression Test:
tcltest::test 15.24-optimize-2 { Test that a compiler that optimizes || does so correctly } { empty_main T1524o2 { boolean b = true; if (true || b); if (true || !b); b = false; } } {PASS}
Test that a compiler that optimizes || does so correctlyTest Case: 15.24-optimize-4Expected Result: PASS
Regression Test:
tcltest::test 15.24-optimize-3 { Test that a compiler that optimizes || does so correctly } { empty_main T1524o3 { boolean b = true; if (b || false); if (!b || false); b = false; } } {PASS}
Test that a compiler that optimizes || does so correctlyExpected Result: PASS
Regression Test:
tcltest::test 15.24-optimize-4 { Test that a compiler that optimizes || does so correctly } { empty_main T1524o4 { boolean b = true; if (false || b); if (false || !b); b = false; } } {PASS}
tests/jls/expressions/conditional-operator
?: uses a boolean value to decide which of two other expressions should be evaluatedTest Case: 15.25-basic-2Expected Result: PASS
Regression Test:
tcltest::test 15.25-basic-1 { ?: uses a boolean value to decide which of two other expressions should be evaluated } { empty_main T1525b1 {String s = true ? "1" : "2";} } {PASS}
?: uses a boolean value to decide which of two other expressions should be evaluatedTest Case: 15.25-syntax-1Expected Result: PASS
Regression Test:
tcltest::test 15.25-basic-2 { ?: uses a boolean value to decide which of two other expressions should be evaluated } { empty_main T1525b2 {String s = false ? "1" : "2";} } {PASS}
conditional operator has three operandsTest Case: 15.25-syntax-2Expected Result: FAIL
Regression Test:
tcltest::test 15.25-syntax-1 { conditional operator has three operands } { empty_main T1525s1 {String s = false ? : "2";} } {FAIL}
conditional operator has three operandsTest Case: 15.25-syntax-3Expected Result: FAIL
Regression Test:
tcltest::test 15.25-syntax-2 { conditional operator has three operands } { empty_main T1525s2 {String s = false ? "1" : ;} } {FAIL}
conditional operator has three operandsTest Case: 15.25-syntax-4Expected Result: FAIL
Regression Test:
tcltest::test 15.25-syntax-3 { conditional operator has three operands } { empty_main T1525s3 {String s = false ? "1" "2" ;} } {FAIL}
conditional operator has three operandsTest Case: 15.25-syntax-5Expected Result: FAIL
Regression Test:
tcltest::test 15.25-syntax-4 { conditional operator has three operands } { empty_main T1525s4 {String s = ? "1" : "2" ;} } {FAIL}
conditional operator has three operandsTest Case: 15.25-not-boolean-1Expected Result: FAIL
Regression Test:
tcltest::test 15.25-syntax-5 { conditional operator has three operands } { empty_main T1525s5 {String s = true "1" : "2" ;} } {FAIL}
first expression must be boolean typeTest Case: 15.25-not-boolean-2Expected Result: FAIL
Regression Test:
tcltest::test 15.25-not-boolean-1 { first expression must be boolean type } { empty_main T1525nb1 {String s = (byte) 1 ? "1" : "2";} } {FAIL}
first expression must be boolean typeTest Case: 15.25-not-boolean-3Expected Result: FAIL
Regression Test:
tcltest::test 15.25-not-boolean-2 { first expression must be boolean type } { empty_main T1525nb2 {String s = (short) 1 ? "1" : "2";} } {FAIL}
first expression must be boolean typeTest Case: 15.25-not-boolean-4Expected Result: FAIL
Regression Test:
tcltest::test 15.25-not-boolean-3 { first expression must be boolean type } { empty_main T1525nb3 {String s = '1' ? "1" : "2";} } {FAIL}
first expression must be boolean typeTest Case: 15.25-not-boolean-5Expected Result: FAIL
Regression Test:
tcltest::test 15.25-not-boolean-4 { first expression must be boolean type } { empty_main T1525nb4 {String s = 1 ? "1" : "2";} } {FAIL}
first expression must be boolean typeTest Case: 15.25-not-boolean-6Expected Result: FAIL
Regression Test:
tcltest::test 15.25-not-boolean-5 { first expression must be boolean type } { empty_main T1525nb5 {String s = 1L ? "1" : "2";} } {FAIL}
first expression must be boolean typeTest Case: 15.25-not-boolean-7Expected Result: FAIL
Regression Test:
tcltest::test 15.25-not-boolean-6 { first expression must be boolean type } { empty_main T1525nb6 {String s = 1F ? "1" : "2";} } {FAIL}
first expression must be boolean typeTest Case: 15.25-not-boolean-8Expected Result: FAIL
Regression Test:
tcltest::test 15.25-not-boolean-7 { first expression must be boolean type } { empty_main T1525nb7 {String s = 1D ? "1" : "2";} } {FAIL}
first expression must be boolean typeTest Case: 15.25-not-boolean-9Expected Result: FAIL
Regression Test:
tcltest::test 15.25-not-boolean-8 { first expression must be boolean type } { empty_main T1525nb8 {String s = "true" ? "1" : "2";} } {FAIL}
first expression must be boolean typeTest Case: 15.25-not-boolean-10Expected Result: FAIL
Regression Test:
tcltest::test 15.25-not-boolean-9 { first expression must be boolean type } { empty_main T1525nb9 {String s = new Object() ? "1" : "2";} } {FAIL}
first expression must be boolean typeTest Case: 15.25-not-boolean-11Expected Result: FAIL
Regression Test:
tcltest::test 15.25-not-boolean-10 { first expression must be boolean type } { empty_main T1525nb10 {String s = null ? "1" : "2";} } {FAIL}
first expression must be boolean typeTest Case: 15.25-operand-type-1Expected Result: FAIL
Regression Test:
tcltest::test 15.25-not-boolean-11 { first expression must be boolean type } { empty_main T1525nb11 {String s = System.out.println() ? "1" : "2";} } {FAIL}
second and third operands may be booleanTest Case: 15.25-operand-type-2Expected Result: PASS
Regression Test:
tcltest::test 15.25-operand-type-1 { second and third operands may be boolean } { empty_main T1525ot1 {boolean b = true ? true : false;} } {PASS}
second and third operands may be nullTest Case: 15.25-operand-type-3Expected Result: PASS
Regression Test:
tcltest::test 15.25-operand-type-2 { second and third operands may be null } { empty_main T1525ot2 {String s = true ? null : null;} } {PASS}
second or third operands may be nullTest Case: 15.25-operand-type-4Expected Result: PASS
Regression Test:
tcltest::test 15.25-operand-type-3 { second or third operands may be null } { empty_main T1525ot3 {String s = true ? "" : null;} } {PASS}
second or third operands may be nullTest Case: 15.25-operand-type-void-1Expected Result: PASS
Regression Test:
tcltest::test 15.25-operand-type-4 { second or third operands may be null } { empty_main T1525ot4 {String s = true ? null : "";} } {PASS}
operand may not be void typeTest Case: 15.25-operand-type-void-2Expected Result: FAIL
Regression Test:
tcltest::test 15.25-operand-type-void-1 { operand may not be void type } { empty_class T1525otv1 { void foo() {} void bar() { String s = true ? foo() : foo(); } } } {FAIL}
operand may not be void typeTest Case: 15.25-operand-type-void-3Expected Result: FAIL
Regression Test:
tcltest::test 15.25-operand-type-void-2 { operand may not be void type } { empty_class T1525otv2 { void foo() {} void bar() { String s = false ? foo() : ""; } } } {FAIL}
operand may not be void typeTest Case: 15.25-operand-type-void-4Expected Result: FAIL
Regression Test:
tcltest::test 15.25-operand-type-void-3 { operand may not be void type } { empty_class T1525otv3 { void foo() {} void bar() { String s = true ? "" : foo(); } } } {FAIL}
operand may not be void typeTest Case: 15.25-operand-type-void-5Expected Result: FAIL
Regression Test:
tcltest::test 15.25-operand-type-void-4 { operand may not be void type } { empty_class T1525otv4 { void foo() {} void bar() { String s = true ? null : foo(); } } } {FAIL}
operand may not be void typeTest Case: 15.25-byte-operand-type-mismatch-1Expected Result: FAIL
Regression Test:
tcltest::test 15.25-operand-type-void-5 { operand may not be void type } { empty_class T1525otv5 { void foo() {} void bar() { String s = false ? foo() : null; } } } {FAIL}
if one operand is of type byte and the other is a constant expression of type int whose value is representable as a byte, then the type of the conditional expression is byteTest Case: 15.25-byte-operand-type-mismatch-2Expected Result: PASS
Regression Test:
tcltest::test 15.25-byte-operand-type-mismatch-1 { if one operand is of type byte and the other is a constant expression of type int whose value is representable as a byte, then the type of the conditional expression is byte } { empty_class T1525botm1 { void foo(byte b) {} void foo(int i) throws Exception {} void bar(boolean b) { foo(b ? (byte) 0 : 0); foo(b ? 0 : (byte) 0); } } } {PASS}
if one operand is of type byte and the other is a constant expression of type int whose value is representable as a byte, then the type of the conditional expression is byte, Otherwise, binary numeric promotion is applied to the operand typesTest Case: 15.25-byte-operand-type-mismatch-3Expected Result: PASS
Regression Test:
tcltest::test 15.25-byte-operand-type-mismatch-2 { if one operand is of type byte and the other is a constant expression of type int whose value is representable as a byte, then the type of the conditional expression is byte, Otherwise, binary numeric promotion is applied to the operand types } { empty_class T1525botm2 { void foo(byte b) throws Exception {} void foo(int i) {} void bar(boolean b, int i) { foo(b ? (byte) 0 : i); foo(b ? i : (byte) 0); } } } {PASS}
if one operand is of type byte and the other is a constant expression of type int whose value is representable as a byte, then the type of the conditional expression is byte, Otherwise, binary numeric promotion is applied to the operand typesTest Case: 15.25-byte-operand-type-mismatch-4Expected Result: PASS
Regression Test:
tcltest::test 15.25-byte-operand-type-mismatch-3 { if one operand is of type byte and the other is a constant expression of type int whose value is representable as a byte, then the type of the conditional expression is byte, Otherwise, binary numeric promotion is applied to the operand types } { empty_class T1525botm3 { void foo(byte b) throws Exception {} void foo(int i) {} void bar(boolean b) { foo(b ? (byte) 0 : 128); foo(b ? 128 : (byte) 0); } } } {PASS}
if one operand is of type byte and the other is a constant expression of type int whose value is representable as a byte, then the type of the conditional expression is byte, Otherwise, binary numeric promotion is applied to the operand typesTest Case: 15.25-byte-operand-type-mismatch-5Expected Result: PASS
Regression Test:
tcltest::test 15.25-byte-operand-type-mismatch-4 { if one operand is of type byte and the other is a constant expression of type int whose value is representable as a byte, then the type of the conditional expression is byte, Otherwise, binary numeric promotion is applied to the operand types } { empty_class T1525botm4 { void foo(byte b) throws Exception {} void foo(int i) {} void bar() { foo(true ? (byte) 0 : 128); foo(false ? (byte) 0 : 128); foo(true ? 128 : (byte) 0); foo(false ? 128 : (byte) 0); } } } {PASS}
if one operand is of type byte and the other is a constant expression of type int whose value is representable as a byte, then the type of the conditional expression is byte, Otherwise, binary numeric promotion is applied to the operand typesTest Case: 15.25-byte-operand-type-mismatch-6Expected Result: PASS
Regression Test:
tcltest::test 15.25-byte-operand-type-mismatch-5 { if one operand is of type byte and the other is a constant expression of type int whose value is representable as a byte, then the type of the conditional expression is byte, Otherwise, binary numeric promotion is applied to the operand types } { empty_class T1525botm5 { void foo(byte b) {} void foo(int i) throws Exception {} void bar(boolean b, byte b1) { foo(b ? b1 : 0); foo(b ? 0 : b1); } } } {PASS}
if one operand is of type byte and the other is a constant expression of type int whose value is representable as a byte, then the type of the conditional expression is byte, Otherwise, binary numeric promotion is applied to the operand typesTest Case: 15.25-byte-operand-type-mismatch-7Expected Result: PASS
Regression Test:
tcltest::test 15.25-byte-operand-type-mismatch-6 { if one operand is of type byte and the other is a constant expression of type int whose value is representable as a byte, then the type of the conditional expression is byte, Otherwise, binary numeric promotion is applied to the operand types } { empty_class T1525botm6 { void foo(byte b) {} void foo(int i) throws Exception {} void bar(byte b) { foo(true ? b : 0); foo(false ? b : 0); foo(true ? 0 : b); foo(false ? 0 : b); } } } {PASS}
if one operand is of type byte and the other is a constant expression of type int whose value is representable as a byte, then the type of the conditional expression is byte, Otherwise, binary numeric promotion is applied to the operand typesTest Case: 15.25-byte-operand-type-mismatch-8Expected Result: PASS
Regression Test:
tcltest::test 15.25-byte-operand-type-mismatch-7 { if one operand is of type byte and the other is a constant expression of type int whose value is representable as a byte, then the type of the conditional expression is byte, Otherwise, binary numeric promotion is applied to the operand types } { empty_class T1525botm7 { void foo(byte b) throws Exception {} void foo(int i) {} void bar(boolean b, byte b1, int i) { foo(b ? b1 : i); foo(b ? i : b1); } } } {PASS}
if one operand is of type byte and the other is a constant expression of type int whose value is representable as a byte, then the type of the conditional expression is byte, Otherwise, binary numeric promotion is applied to the operand typesTest Case: 15.25-byte-operand-type-mismatch-9Expected Result: PASS
Regression Test:
tcltest::test 15.25-byte-operand-type-mismatch-8 { if one operand is of type byte and the other is a constant expression of type int whose value is representable as a byte, then the type of the conditional expression is byte, Otherwise, binary numeric promotion is applied to the operand types } { empty_class T1525botm8 { void foo(byte b) throws Exception {} void foo(int i) {} void bar(byte b, int i) { foo(true ? b : i); foo(false ? b : i); foo(true ? i : b); foo(false ? i : b); } } } {PASS}
if one operand is of type byte and the other is a constant expression of type int whose value is representable as a byte, then the type of the conditional expression is byte, Otherwise, binary numeric promotion is applied to the operand typesTest Case: 15.25-byte-operand-type-mismatch-10Expected Result: PASS
Regression Test:
tcltest::test 15.25-byte-operand-type-mismatch-9 { if one operand is of type byte and the other is a constant expression of type int whose value is representable as a byte, then the type of the conditional expression is byte, Otherwise, binary numeric promotion is applied to the operand types } { empty_class T1525botm9 { void foo(byte b) throws Exception {} void foo(char c) throws Exception {} void foo(int i) {} void bar(boolean b, byte b1) { foo(b ? b1 : '0'); foo(b ? '0' : b1); } } } {PASS}
if one operand is of type byte and the other is a constant expression of type int whose value is representable as a byte, then the type of the conditional expression is byte, Otherwise, binary numeric promotion is applied to the operand typesTest Case: 15.25-byte-operand-type-mismatch-11Expected Result: PASS
Regression Test:
tcltest::test 15.25-byte-operand-type-mismatch-10 { if one operand is of type byte and the other is a constant expression of type int whose value is representable as a byte, then the type of the conditional expression is byte, Otherwise, binary numeric promotion is applied to the operand types } { empty_class T1525botm10 { void foo(byte b) throws Exception {} void foo(char c) throws Exception {} void foo(int i) {} void bar(byte b) { foo(true ? b : '0'); foo(false ? b : '0'); foo(true ? '0' : b); foo(false ? '0' : b); } } } {PASS}
if one operand is of type byte and the other is a constant expression of type int whose value is representable as a byte, then the type of the conditional expression is byte, Otherwise, binary numeric promotion is applied to the operand typesTest Case: 15.25-byte-operand-type-mismatch-12Expected Result: PASS
Regression Test:
tcltest::test 15.25-byte-operand-type-mismatch-11 { if one operand is of type byte and the other is a constant expression of type int whose value is representable as a byte, then the type of the conditional expression is byte, Otherwise, binary numeric promotion is applied to the operand types } { empty_class T1525botm11 { void foo(byte b) throws Exception {} void foo(char c) throws Exception {} void foo(int i) {} void bar(boolean b, byte b1, char c) { foo(b ? b1 : c); foo(b ? c : b1); } } } {PASS}
if one operand is of type byte and the other is a constant expression of type int whose value is representable as a byte, then the type of the conditional expression is byte, Otherwise, binary numeric promotion is applied to the operand typesTest Case: 15.25-short-operand-type-mismatch-1Expected Result: PASS
Regression Test:
tcltest::test 15.25-byte-operand-type-mismatch-12 { if one operand is of type byte and the other is a constant expression of type int whose value is representable as a byte, then the type of the conditional expression is byte, Otherwise, binary numeric promotion is applied to the operand types } { empty_class T1525botm12 { void foo(byte b) throws Exception {} void foo(char c) throws Exception {} void foo(int i) {} void bar(byte b, char c) { foo(true ? b : c); foo(false ? b : c); foo(true ? c : b); foo(false ? c : b); } } } {PASS}
if one operand is of type byte and the other is of type short, then the type of the conditional expression is shortTest Case: 15.25-short-operand-type-mismatch-2Expected Result: PASS
Regression Test:
tcltest::test 15.25-short-operand-type-mismatch-1 { if one operand is of type byte and the other is of type short, then the type of the conditional expression is short } { empty_class T1525sotm1 { void foo(short s) {} void foo(byte b) throws Exception {} void foo(int i) throws Exception {} void bar(boolean b) { foo(b ? (byte) 0 : (short) 0); foo(true ? (byte) 0 : (short) 0); foo(false ? (byte) 0 : (short) 0); } } } {PASS}
if one operand is of type short and the other is a constant expression of type int whose value is representable as a short, then the type of the conditional expression is shortTest Case: 15.25-short-operand-type-mismatch-3Expected Result: PASS
Regression Test:
tcltest::test 15.25-short-operand-type-mismatch-2 { if one operand is of type short and the other is a constant expression of type int whose value is representable as a short, then the type of the conditional expression is short } { empty_class T1525sotm2 { void foo(short s) {} void foo(int i) throws Exception {} void bar(boolean b) { foo(b ? (short) 0 : 0); } } } {PASS}
if one operand is of type short and the other is a constant expression of type int whose value is representable as a short, then the type of the conditional expression is short, Otherwise, binary numeric promotion is applied to the operand typesTest Case: 15.25-short-operand-type-mismatch-4Expected Result: PASS
Regression Test:
tcltest::test 15.25-short-operand-type-mismatch-3 { if one operand is of type short and the other is a constant expression of type int whose value is representable as a short, then the type of the conditional expression is short, Otherwise, binary numeric promotion is applied to the operand types } { empty_class T1525sotm3 { void foo(short s) throws Exception {} void foo(int i) {} void bar(boolean b, int i) { foo(b ? (short) 0 : i); } } } {PASS}
if one operand is of type short and the other is a constant expression of type int whose value is representable as a short, then the type of the conditional expression is short, Otherwise, binary numeric promotion is applied to the operand typesTest Case: 15.25-short-operand-type-mismatch-5Expected Result: PASS
Regression Test:
tcltest::test 15.25-short-operand-type-mismatch-4 { if one operand is of type short and the other is a constant expression of type int whose value is representable as a short, then the type of the conditional expression is short, Otherwise, binary numeric promotion is applied to the operand types } { empty_class T1525sotm4 { void foo(short s) throws Exception {} void foo(int i) {} void bar(boolean b) { foo(b ? (short) 0 : 32768); } } } {PASS}
if one operand is of type short and the other is a constant expression of type int whose value is representable as a short, then the type of the conditional expression is short, Otherwise, binary numeric promotion is applied to the operand typesTest Case: 15.25-short-operand-type-mismatch-6Expected Result: PASS
Regression Test:
tcltest::test 15.25-short-operand-type-mismatch-5 { if one operand is of type short and the other is a constant expression of type int whose value is representable as a short, then the type of the conditional expression is short, Otherwise, binary numeric promotion is applied to the operand types } { empty_class T1525sotm5 { void foo(short s) throws Exception {} void foo(int i) {} void bar() { foo(true ? (short) 0 : 32768); foo(false ? (short) 0 : 32768); } } } {PASS}
if one operand is of type byte and the other is of type short, then the type of the conditional expression is shortTest Case: 15.25-short-operand-type-mismatch-7Expected Result: PASS
Regression Test:
tcltest::test 15.25-short-operand-type-mismatch-6 { if one operand is of type byte and the other is of type short, then the type of the conditional expression is short } { empty_class T1525sotm6 { void foo(short s) {} void foo(byte b) throws Exception {} void foo(int i) throws Exception {} void bar(boolean b, byte b1) { foo(b ? b1 : (short) 0); foo(true ? b1 : (short) 0); foo(false ? b1 : (short) 0); } } } {PASS}
if one operand is of type byte and the other is of type short, then the type of the conditional expression is shortTest Case: 15.25-short-operand-type-mismatch-8Expected Result: PASS
Regression Test:
tcltest::test 15.25-short-operand-type-mismatch-7 { if one operand is of type byte and the other is of type short, then the type of the conditional expression is short } { empty_class T1525sotm7 { void foo(short s) {} void foo(byte b) throws Exception {} void foo(int i) throws Exception {} void bar(boolean b, short s) { foo(b ? (byte) 0 : s); foo(true ? (byte) 0 : s); foo(false ? (byte) 0 : s); } } } {PASS}
if one operand is of type byte and the other is of type short, then the type of the conditional expression is shortTest Case: 15.25-short-operand-type-mismatch-9Expected Result: PASS
Regression Test:
tcltest::test 15.25-short-operand-type-mismatch-8 { if one operand is of type byte and the other is of type short, then the type of the conditional expression is short } { empty_class T1525sotm8 { void foo(short s) {} void foo(byte b) throws Exception {} void foo(int i) throws Exception {} void bar(boolean b, byte b1, short s) { foo(b ? b1 : s); foo(true ? b1 : s); foo(false ? b1 : s); } } } {PASS}
if one operand is of type short and the other is a constant expression of type int whose value is representable as a short, then the type of the conditional expression is short, Otherwise, binary numeric promotion is applied to the operand typesTest Case: 15.25-short-operand-type-mismatch-10Expected Result: PASS
Regression Test:
tcltest::test 15.25-short-operand-type-mismatch-9 { if one operand is of type short and the other is a constant expression of type int whose value is representable as a short, then the type of the conditional expression is short, Otherwise, binary numeric promotion is applied to the operand types } { empty_class T1525sotm9 { void foo(short s) {} void foo(int i) throws Exception {} void bar(boolean b, short s) { foo(b ? s : 0); foo(b ? 0 : s); } } } {PASS}
if one operand is of type short and the other is a constant expression of type int whose value is representable as a short, then the type of the conditional expression is short, Otherwise, binary numeric promotion is applied to the operand typesTest Case: 15.25-short-operand-type-mismatch-11Expected Result: PASS
Regression Test:
tcltest::test 15.25-short-operand-type-mismatch-10 { if one operand is of type short and the other is a constant expression of type int whose value is representable as a short, then the type of the conditional expression is short, Otherwise, binary numeric promotion is applied to the operand types } { empty_class T1525sotm10 { void foo(short s) {} void foo(int i) throws Exception {} void bar(short s) { foo(true ? s : 0); foo(false ? s : 0); foo(true ? 0 : s); foo(false ? 0 : s); } } } {PASS}
if one operand is of type short and the other is a constant expression of type int whose value is representable as a short, then the type of the conditional expression is short, Otherwise, binary numeric promotion is applied to the operand typesTest Case: 15.25-short-operand-type-mismatch-12Expected Result: PASS
Regression Test:
tcltest::test 15.25-short-operand-type-mismatch-11 { if one operand is of type short and the other is a constant expression of type int whose value is representable as a short, then the type of the conditional expression is short, Otherwise, binary numeric promotion is applied to the operand types } { empty_class T1525sotm11 { void foo(short s) throws Exception {} void foo(int i) {} void bar(boolean b, short s, int i) { foo(b ? s : i); foo(b ? i : s); } } } {PASS}
if one operand is of type short and the other is a constant expression of type int whose value is representable as a short, then the type of the conditional expression is short, Otherwise, binary numeric promotion is applied to the operand typesTest Case: 15.25-char-operand-type-mismatch-1Expected Result: PASS
Regression Test:
tcltest::test 15.25-short-operand-type-mismatch-12 { if one operand is of type short and the other is a constant expression of type int whose value is representable as a short, then the type of the conditional expression is short, Otherwise, binary numeric promotion is applied to the operand types } { empty_class T1525sotm12 { void foo(short s) throws Exception {} void foo(int i) {} void bar(short s, int i) { foo(true ? s : i); foo(false ? s : i); foo(true ? i : s); foo(false ? i : s); } } } {PASS}
if one operand is of type char and the other is a constant expression of type int whose value is representable as a char, then the type of the conditional expression is charTest Case: 15.25-char-operand-type-mismatch-2Expected Result: PASS
Regression Test:
tcltest::test 15.25-char-operand-type-mismatch-1 { if one operand is of type char and the other is a constant expression of type int whose value is representable as a char, then the type of the conditional expression is char } { empty_class T1525cotm1 { void foo(char c) {} void foo(int i) throws Exception {} void bar(boolean b) { foo(b ? '0' : 0); foo(b ? 0 : '0'); } } } {PASS}
if one operand is of type char and the other is a constant expression of type int whose value is representable as a char, then the type of the conditional expression is char, Otherwise, binary numeric promotion is applied to the operand typesTest Case: 15.25-char-operand-type-mismatch-3Expected Result: PASS
Regression Test:
tcltest::test 15.25-char-operand-type-mismatch-2 { if one operand is of type char and the other is a constant expression of type int whose value is representable as a char, then the type of the conditional expression is char, Otherwise, binary numeric promotion is applied to the operand types } { empty_class T1525cotm2 { void foo(char c) throws Exception {} void foo(int i) {} void bar(boolean b, int i) { foo(b ? '0' : i); foo(b ? i : '0'); } } } {PASS}
if one operand is of type char and the other is a constant expression of type int whose value is representable as a char, then the type of the conditional expression is char, Otherwise, binary numeric promotion is applied to the operand typesTest Case: 15.25-char-operand-type-mismatch-4Expected Result: PASS
Regression Test:
tcltest::test 15.25-char-operand-type-mismatch-3 { if one operand is of type char and the other is a constant expression of type int whose value is representable as a char, then the type of the conditional expression is char, Otherwise, binary numeric promotion is applied to the operand types } { empty_class T1525cotm3 { void foo(char c) throws Exception {} void foo(int i) {} void bar(boolean b) { foo(b ? '0' : -1); foo(b ? -1 : '0'); } } } {PASS}
if one operand is of type char and the other is a constant expression of type int whose value is representable as a char, then the type of the conditional expression is char, Otherwise, binary numeric promotion is applied to the operand typesTest Case: 15.25-char-operand-type-mismatch-5Expected Result: PASS
Regression Test:
tcltest::test 15.25-char-operand-type-mismatch-4 { if one operand is of type char and the other is a constant expression of type int whose value is representable as a char, then the type of the conditional expression is char, Otherwise, binary numeric promotion is applied to the operand types } { empty_class T1525cotm4 { void foo(char c) throws Exception {} void foo(int i) {} void bar() { foo(true ? '0' : -1); foo(false ? '0' : -1); foo(true ? -1 : '0'); foo(false ? -1 : '0'); } } } {PASS}
if one operand is of type char and the other is a constant expression of type int whose value is representable as a char, then the type of the conditional expression is char, Otherwise, binary numeric promotion is applied to the operand typesTest Case: 15.25-char-operand-type-mismatch-6Expected Result: PASS
Regression Test:
tcltest::test 15.25-char-operand-type-mismatch-5 { if one operand is of type char and the other is a constant expression of type int whose value is representable as a char, then the type of the conditional expression is char, Otherwise, binary numeric promotion is applied to the operand types } { empty_class T1525cotm5 { void foo(char c) {} void foo(int i) throws Exception {} void bar(boolean b, char c) { foo(b ? c : 0); foo(b ? 0 : c); } } } {PASS}
if one operand is of type char and the other is a constant expression of type int whose value is representable as a char, then the type of the conditional expression is char, Otherwise, binary numeric promotion is applied to the operand typesTest Case: 15.25-char-operand-type-mismatch-7Expected Result: PASS
Regression Test:
tcltest::test 15.25-char-operand-type-mismatch-6 { if one operand is of type char and the other is a constant expression of type int whose value is representable as a char, then the type of the conditional expression is char, Otherwise, binary numeric promotion is applied to the operand types } { empty_class T1525cotm6 { void foo(char c) {} void foo(int i) throws Exception {} void bar(char c) { foo(true ? c : 0); foo(false ? c : 0); foo(true ? 0 : c); foo(false ? 0 : c); } } } {PASS}
if one operand is of type char and the other is a constant expression of type int whose value is representable as a char, then the type of the conditional expression is char, Otherwise, binary numeric promotion is applied to the operand typesTest Case: 15.25-char-operand-type-mismatch-8Expected Result: PASS
Regression Test:
tcltest::test 15.25-char-operand-type-mismatch-7 { if one operand is of type char and the other is a constant expression of type int whose value is representable as a char, then the type of the conditional expression is char, Otherwise, binary numeric promotion is applied to the operand types } { empty_class T1525cotm7 { void foo(char c) throws Exception {} void foo(int i) {} void bar(boolean b, char c, int i) { foo(b ? c : i); foo(b ? i : c); } } } {PASS}
if one operand is of type char and the other is a constant expression of type int whose value is representable as a char, then the type of the conditional expression is char, Otherwise, binary numeric promotion is applied to the operand typesTest Case: 15.25-char-operand-type-mismatch-9Expected Result: PASS
Regression Test:
tcltest::test 15.25-char-operand-type-mismatch-8 { if one operand is of type char and the other is a constant expression of type int whose value is representable as a char, then the type of the conditional expression is char, Otherwise, binary numeric promotion is applied to the operand types } { empty_class T1525cotm8 { void foo(char c) throws Exception {} void foo(int i) {} void bar(char c, int i) { foo(true ? c : i); foo(false ? c : i); foo(true ? i : c); foo(false ? i : c); } } } {PASS}
if one operand is of type char and the other is a constant expression of type int whose value is representable as a char, then the type of the conditional expression is char, Otherwise, binary numeric promotion is applied to the operand typesTest Case: 15.25-char-operand-type-mismatch-10Expected Result: PASS
Regression Test:
tcltest::test 15.25-char-operand-type-mismatch-9 { if one operand is of type char and the other is a constant expression of type int whose value is representable as a char, then the type of the conditional expression is char, Otherwise, binary numeric promotion is applied to the operand types } { empty_class T1525cotm9 { void foo(short s) throws Exception {} void foo(char c) throws Exception {} void foo(int i) {} void bar(boolean b, char c) { foo(b ? c : (short) 0); foo(b ? (short) 0 : c); } } } {PASS}
if one operand is of type char and the other is a constant expression of type int whose value is representable as a char, then the type of the conditional expression is char, Otherwise, binary numeric promotion is applied to the operand typesTest Case: 15.25-char-operand-type-mismatch-11Expected Result: PASS
Regression Test:
tcltest::test 15.25-char-operand-type-mismatch-10 { if one operand is of type char and the other is a constant expression of type int whose value is representable as a char, then the type of the conditional expression is char, Otherwise, binary numeric promotion is applied to the operand types } { empty_class T1525cotm10 { void foo(short s) throws Exception {} void foo(char c) throws Exception {} void foo(int i) {} void bar(char c) { foo(true ? c : (short) 0); foo(false ? c : (short) 0); foo(true ? (short) 0 : c); foo(false ? (short) 0 : c); } } } {PASS}
if one operand is of type char and the other is a constant expression of type int whose value is representable as a char, then the type of the conditional expression is char, Otherwise, binary numeric promotion is applied to the operand typesTest Case: 15.25-char-operand-type-mismatch-12Expected Result: PASS
Regression Test:
tcltest::test 15.25-char-operand-type-mismatch-11 { if one operand is of type char and the other is a constant expression of type int whose value is representable as a char, then the type of the conditional expression is char, Otherwise, binary numeric promotion is applied to the operand types } { empty_class T1525cotm11 { void foo(short s) throws Exception {} void foo(char c) throws Exception {} void foo(int i) {} void bar(boolean b, char c, short s) { foo(b ? c : s); foo(b ? s : c); } } } {PASS}
if one operand is of type char and the other is a constant expression of type int whose value is representable as a char, then the type of the conditional expression is char, Otherwise, binary numeric promotion is applied to the operand typesTest Case: 15.25-operand-type-mismatch-1Expected Result: PASS
Regression Test:
tcltest::test 15.25-char-operand-type-mismatch-12 { if one operand is of type char and the other is a constant expression of type int whose value is representable as a char, then the type of the conditional expression is char, Otherwise, binary numeric promotion is applied to the operand types } { empty_class T1525cotm12 { void foo(short s) throws Exception {} void foo(char c) throws Exception {} void foo(int i) {} void bar(char c, short s) { foo(true ? c : s); foo(false ? c : s); foo(true ? s : c); foo(false ? s : c); } } } {PASS}
binary numeric promotion is applied to mismatched primitive operand types if no special cases applyTest Case: 15.25-operand-type-mismatch-2Expected Result: PASS
Regression Test:
tcltest::test 15.25-operand-type-mismatch-1 { binary numeric promotion is applied to mismatched primitive operand types if no special cases apply } { empty_main T1525otm1 {float f = true ? 0 : 0F;} } {PASS}
binary numeric promotion is applied to mismatched primitive operand types if no special cases applyTest Case: 15.25-operand-type-mismatch-3Expected Result: PASS
Regression Test:
tcltest::test 15.25-operand-type-mismatch-2 { binary numeric promotion is applied to mismatched primitive operand types if no special cases apply } { empty_main T1525otm2 {double d = false ? 'c' : 0D;} } {PASS}
binary numeric promotion is applied to mismatched primitive operand types if no special cases applyTest Case: 15.25-operand-type-mismatch-4Expected Result: PASS
Regression Test:
tcltest::test 15.25-operand-type-mismatch-3 { binary numeric promotion is applied to mismatched primitive operand types if no special cases apply } { empty_main T1525otm3 {long l = true ? (byte) 0 : 0L;} } {PASS}
reference operand types must match or they must support assignment conversionTest Case: 15.25-operand-type-mismatch-5Expected Result: FAIL
Regression Test:
tcltest::test 15.25-operand-type-mismatch-4 { reference operand types must match or they must support assignment conversion } { empty_main T1525otm4 {Object o = true ? new Integer(0) : new Double(0D);} } {FAIL}
reference operand types must match or they must support assignment conversionTest Case: 15.25-operand-type-mismatch-6Expected Result: PASS
Regression Test:
tcltest::test 15.25-operand-type-mismatch-5 { reference operand types must match or they must support assignment conversion } { empty_class T1525otm5 { class C1 {} class C2 extends C1 {} void foo() { Object o = true ? new C1() : new C2(); } } } {PASS}
primitive and reference types don't mixTest Case: 15.25-operand-type-mismatch-7Expected Result: FAIL
Regression Test:
tcltest::test 15.25-operand-type-mismatch-6 { primitive and reference types don't mix } { empty_main T1525otm6 {Object o = true ? "" : 42;} } {FAIL}
primitive and reference types don't mixTest Case: 15.25-operand-type-mismatch-8Expected Result: FAIL
Regression Test:
tcltest::test 15.25-operand-type-mismatch-7 { primitive and reference types don't mix } { empty_main T1525otm7 {Object o = true ? 42 : "";} } {FAIL}
primitive and reference types don't mix, even in a method invocationTest Case: 15.25-operand-type-mismatch-9Expected Result: FAIL
Regression Test:
tcltest::test 15.25-operand-type-mismatch-8 { primitive and reference types don't mix, even in a method invocation } { empty_class T1525otm8 { void foo(String s) {} void foo(int i) {} void bar() { foo(true ? "" : 42); } } } {FAIL}
reference operand types must match or they must support assignment conversionTest Case: 15.25-operand-type-mismatch-10Expected Result: FAIL
Regression Test:
tcltest::test 15.25-operand-type-mismatch-9 { reference operand types must match or they must support assignment conversion } { empty_class T1525otm9 { class C1 {} class C2 extends C1 {} void foo() { C2 c = true ? new C2() : new C1(); c = false ? new C1() : new C2(); } } } {FAIL}
reference array types mix iff the component types are assignableTest Case: 15.25-operand-type-mismatch-11Expected Result: FAIL
Regression Test:
tcltest::test 15.25-operand-type-mismatch-10 { reference array types mix iff the component types are assignable } { empty_main T1525otm10 { Object o = true ? new int[1] : new short[1]; } } {FAIL}
reference array types mix iff the component types are assignableTest Case: 15.25-error-1Expected Result: PASS
Regression Test:
tcltest::test 15.25-operand-type-mismatch-11 { reference array types mix iff the component types are assignable } { empty_main T1525otm11 { Object o = true ? new Integer[1] : new Number[1]; } } {PASS}
Check for compiler error optimizing the following conditional operatorExpected Result: PASS
Regression Test:
tcltest::test 15.25-error-1 { Check for compiler error optimizing the following conditional operator } { empty_class T1525e1 { boolean isNeg(int i) { return (i < 0) ? true : false; } } } {PASS}
tests/jls/expressions/assignment-operators/compound-assignment-operators
String += null is validTest Case: 15.26.2-string-2Expected Result: PASS
Regression Test:
tcltest::test 15.26.2-string-1 { String += null is valid } { compile [saveas T15262s1.java { class T15262s1 { void foo() { String s = ""; s += null; } } }] } {PASS}
String += void method is invalidTest Case: 15.26.2-string-3Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-string-2 { String += void method is invalid } { compile [saveas T15262s2.java { class T15262s2 { void foo() { String s = ""; s += System.out.println(); } } }] } {FAIL}
left-hand side of += should be StringTest Case: 15.26.2-string-4Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-string-3 { left-hand side of += should be String } { # Sun seems to have relaxed this to left-hand side of += should be # assignment compatible if right-hand side is type String (or null) compile [saveas T15262s3.java { class T15262s3 { void foo() { Object o = null; o += ""; } } }] } {FAIL}
left-hand side of += should be StringTest Case: 15.26.2-string-5Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-string-4 { left-hand side of += should be String } { # Sun seems to have relaxed this to left-hand side of += should be # assignment compatible if right-hand side is type String (or null) compile [saveas T15262s4.java { class T15262s4 { void foo() { Comparable[] c = new Integer[1]; c[0] += ""; } } }] } {FAIL}
test String += when right side is not String, jikes bug 3066Test Case: 15.26.2-string-6Expected Result: PASS
Regression Test:
tcltest::test 15.26.2-string-5 { test String += when right side is not String, jikes bug 3066 } { empty_main T15262s5 { String s = ""; s += true; s += 1; s += '1'; s += 1L; s += 1.0f; s += 1.0; } } {PASS}
test String += when right side is not String, jikes bug 3066Test Case: 15.26.2-mult-1Expected Result: PASS
Regression Test:
tcltest::test 15.26.2-string-6 { test String += when right side is not String, jikes bug 3066 } { empty_main T15262s5 { String s = ""; s += true + s; s += 1 + s; s += '1' + s; s += 1L + s; s += 1.0f + s; s += 1.0 + s; } } {PASS}
test legal identity *= assignmentsTest Case: 15.26.2-mult-2Expected Result: PASS
Regression Test:
tcltest::test 15.26.2-mult-1 { test legal identity *= assignments } { empty_main T15262mult1 { byte b = 1; b *= 1; short s = 1; s *= 1; char c = 1; c *= 1; int i = 1; i *= 1; long l = 1; l *= 1; float f = 1; f *= 1; double d = 1; d *= 1; } } {PASS}
test illegal *= assignments: boolean argumentTest Case: 15.26.2-mult-3Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-mult-2 { test illegal *= assignments: boolean argument } { empty_main T15262mult2 { int i = 1; i *= false; } } {FAIL}
test illegal *= assignments: void argumentTest Case: 15.26.2-mult-4Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-mult-3 { test illegal *= assignments: void argument } { empty_class T15262mult3 { void foo() {} void bar() { int i = 1; i *= foo(); } } } {FAIL}
test illegal *= assignments: Object argumentTest Case: 15.26.2-mult-5Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-mult-4 { test illegal *= assignments: Object argument } { empty_main T15262mult4 { int i = 1; i *= new Object(); } } {FAIL}
test illegal *= assignments: String argumentTest Case: 15.26.2-mult-6Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-mult-5 { test illegal *= assignments: String argument } { empty_main T15262mult5 { int i = 1; i *= ""; } } {FAIL}
test illegal *= assignments: null argumentTest Case: 15.26.2-mult-7Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-mult-6 { test illegal *= assignments: null argument } { empty_main T15262mult6 { int i = 1; i *= null; } } {FAIL}
test illegal *= assignments: Object variableTest Case: 15.26.2-mult-8Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-mult-7 { test illegal *= assignments: Object variable } { empty_main T15262mult7 { Object o = new Object(); o *= 1; } } {FAIL}
test illegal *= assignments: String variableTest Case: 15.26.2-mult-9Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-mult-8 { test illegal *= assignments: String variable } { empty_main T15262mult8 { String s = ""; s *= 1; } } {FAIL}
test illegal *= assignments: null variableTest Case: 15.26.2-mult-10Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-mult-9 { test illegal *= assignments: null variable } { empty_main T15262mult9 { null *= 1; } } {FAIL}
test illegal *= assignments: boolean variableTest Case: 15.26.2-mult-11Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-mult-10 { test illegal *= assignments: boolean variable } { empty_main T15262mult10 { boolean b = true; b *= true; } } {FAIL}
test illegal *= assignments: non-variableTest Case: 15.26.2-mult-12Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-mult-11 { test illegal *= assignments: non-variable } { empty_main T15262mult11 { 1 *= 1; } } {FAIL}
test illegal *= assignments: parenthesized expressions can now be variablesTest Case: 15.26.2-mult-13Expected Result: OK
Regression Test:
tcltest::test 15.26.2-mult-12 { test illegal *= assignments: parenthesized expressions can now be variables } { ok_pass_or_warn [empty_main T15262mult12 { int i = 1; (i) *= 1; }] } {OK}
test widening *= assignmentsTest Case: 15.26.2-mult-14Expected Result: PASS
Regression Test:
tcltest::test 15.26.2-mult-13 { test widening *= assignments } { empty_main T15262mult13 { byte b = 1; short s = 1; char c = 1; int i = 1; long l = 1; float f = 1; double d = 1; s *= b; i *= b; i *= s; i *= c; l *= b; l *= s; l *= c; l *= i; f *= b; f *= s; f *= c; f *= i; f *= l; d *= b; d *= s; d *= c; d *= i; d *= l; d *= f; } } {PASS}
test narrowing *= assignmentsTest Case: 15.26.2-div-1Expected Result: PASS
Regression Test:
tcltest::test 15.26.2-mult-14 { test narrowing *= assignments } { empty_main T15262mult14 { byte b = 1; short s = 1; char c = 1; int i = 1; long l = 1; float f = 1; double d = 1; b *= s; b *= c; b *= i; b *= l; b *= f; b *= d; s *= c; s *= i; s *= l; s *= f; s *= d; c *= b; c *= s; c *= i; c *= l; c *= f; c *= d; i *= l; i *= f; i *= d; l *= f; l *= d; f *= d; } } {PASS}
test legal identity /= assignmentsTest Case: 15.26.2-div-2Expected Result: PASS
Regression Test:
tcltest::test 15.26.2-div-1 { test legal identity /= assignments } { empty_main T15262div1 { byte b = 1; b /= 1; short s = 1; s /= 1; char c = 1; c /= 1; int i = 1; i /= 1; long l = 1; l /= 1; float f = 1; f /= 1; double d = 1; d /= 1; } } {PASS}
test illegal /= assignments: boolean argumentTest Case: 15.26.2-div-3Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-div-2 { test illegal /= assignments: boolean argument } { empty_main T15262div2 { int i = 1; i /= false; } } {FAIL}
test illegal /= assignments: void argumentTest Case: 15.26.2-div-4Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-div-3 { test illegal /= assignments: void argument } { empty_class T15262div3 { void foo() {} void bar() { int i = 1; i /= foo(); } } } {FAIL}
test illegal /= assignments: Object argumentTest Case: 15.26.2-div-5Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-div-4 { test illegal /= assignments: Object argument } { empty_main T15262div4 { int i = 1; i /= new Object(); } } {FAIL}
test illegal /= assignments: String argumentTest Case: 15.26.2-div-6Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-div-5 { test illegal /= assignments: String argument } { empty_main T15262div5 { int i = 1; i /= ""; } } {FAIL}
test illegal /= assignments: null argumentTest Case: 15.26.2-div-7Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-div-6 { test illegal /= assignments: null argument } { empty_main T15262div6 { int i = 1; i /= null; } } {FAIL}
test illegal /= assignments: Object variableTest Case: 15.26.2-div-8Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-div-7 { test illegal /= assignments: Object variable } { empty_main T15262div7 { Object o = new Object(); o /= 1; } } {FAIL}
test illegal /= assignments: String variableTest Case: 15.26.2-div-9Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-div-8 { test illegal /= assignments: String variable } { empty_main T15262div8 { String s = ""; s /= 1; } } {FAIL}
test illegal /= assignments: null variableTest Case: 15.26.2-div-10Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-div-9 { test illegal /= assignments: null variable } { empty_main T15262div9 { null /= 1; } } {FAIL}
test illegal /= assignments: boolean variableTest Case: 15.26.2-div-11Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-div-10 { test illegal /= assignments: boolean variable } { empty_main T15262div10 { boolean b = true; b /= true; } } {FAIL}
test illegal /= assignments: non-variableTest Case: 15.26.2-div-12Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-div-11 { test illegal /= assignments: non-variable } { empty_main T15262div11 { 1 /= 1; } } {FAIL}
test illegal /= assignments: parenthesized expressions can now be variablesTest Case: 15.26.2-div-13Expected Result: OK
Regression Test:
tcltest::test 15.26.2-div-12 { test illegal /= assignments: parenthesized expressions can now be variables } { ok_pass_or_warn [empty_main T15262div12 { int i = 1; (i) /= 1; }] } {OK}
test widening /= assignmentsTest Case: 15.26.2-div-14Expected Result: PASS
Regression Test:
tcltest::test 15.26.2-div-13 { test widening /= assignments } { empty_main T15262div13 { byte b = 1; short s = 1; char c = 1; int i = 1; long l = 1; float f = 1; double d = 1; s /= b; i /= b; i /= s; i /= c; l /= b; l /= s; l /= c; l /= i; f /= b; f /= s; f /= c; f /= i; f /= l; d /= b; d /= s; d /= c; d /= i; d /= l; d /= f; } } {PASS}
test narrowing /= assignmentsTest Case: 15.26.2-div-zero-1Expected Result: PASS
Regression Test:
tcltest::test 15.26.2-div-14 { test narrowing /= assignments } { empty_main T15262div14 { byte b = 1; short s = 1; char c = 1; int i = 1; long l = 1; float f = 1; double d = 1; b /= s; b /= c; b /= i; b /= l; b /= f; b /= d; s /= c; s /= i; s /= l; s /= f; s /= d; c /= b; c /= s; c /= i; c /= l; c /= f; c /= d; i /= l; i /= f; i /= d; l /= f; l /= d; f /= d; } } {PASS}
test integer /= by integer 0 (warning recommended)Test Case: 15.26.2-div-zero-2Expected Result: OK
Regression Test:
tcltest::test 15.26.2-div-zero-1 { test integer /= by integer 0 (warning recommended) } { ok_pass_or_warn [empty_class T15262dz1 { int i = 1; void foo() { i /= 0; i /= 0L; } }] } {OK}
test integer /= by integer 0 (warning recommended)Test Case: 15.26.2-div-zero-3Expected Result: OK
Regression Test:
tcltest::test 15.26.2-div-zero-2 { test integer /= by integer 0 (warning recommended) } { ok_pass_or_warn [empty_class T15262dz2 { long l = 1; void foo() { l /= 0; l /= 0L; } }] } {OK}
test integer /= by floating 0 (no warning needed)Test Case: 15.26.2-div-zero-4Expected Result: PASS
Regression Test:
tcltest::test 15.26.2-div-zero-3 { test integer /= by floating 0 (no warning needed) } { empty_main T15262dz3 { int i = 1; long l = 1; i /= 0.0f; i /= 0.0d; l /= 0.0f; l /= 0.0d; } } {PASS}
test floating /= by integer 0 (no warning needed)Test Case: 15.26.2-div-zero-5Expected Result: PASS
Regression Test:
tcltest::test 15.26.2-div-zero-4 { test floating /= by integer 0 (no warning needed) } { empty_main T15262dz4 { float f = 1; double d = 1; f /= 0; f /= 0L; d /= 0; d /= 0L; } } {PASS}
test floating /= by floating 0 (no warning needed)Test Case: 15.26.2-mod-1Expected Result: PASS
Regression Test:
tcltest::test 15.26.2-div-zero-5 { test floating /= by floating 0 (no warning needed) } { empty_main T15262dz5 { float f = 1; double d = 1; f /= 0.0f; d /= 0.0d; } } {PASS}
test legal identity %= assignmentsTest Case: 15.26.2-mod-2Expected Result: PASS
Regression Test:
tcltest::test 15.26.2-mod-1 { test legal identity %= assignments } { empty_main T15262mod1 { byte b = 1; b %= 1; short s = 1; s %= 1; char c = 1; c %= 1; int i = 1; i %= 1; long l = 1; l %= 1; float f = 1; f %= 1; double d = 1; d %= 1; } } {PASS}
test illegal %= assignments: boolean argumentTest Case: 15.26.2-mod-3Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-mod-2 { test illegal %= assignments: boolean argument } { empty_main T15262mod2 { int i = 1; i %= false; } } {FAIL}
test illegal %= assignments: void argumentTest Case: 15.26.2-mod-4Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-mod-3 { test illegal %= assignments: void argument } { empty_class T15262mod3 { void foo() {} void bar() { int i = 1; i %= foo(); } } } {FAIL}
test illegal %= assignments: Object argumentTest Case: 15.26.2-mod-5Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-mod-4 { test illegal %= assignments: Object argument } { empty_main T15262mod4 { int i = 1; i %= new Object(); } } {FAIL}
test illegal %= assignments: String argumentTest Case: 15.26.2-mod-6Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-mod-5 { test illegal %= assignments: String argument } { empty_main T15262mod5 { int i = 1; i %= ""; } } {FAIL}
test illegal %= assignments: null argumentTest Case: 15.26.2-mod-7Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-mod-6 { test illegal %= assignments: null argument } { empty_main T15262mod6 { int i = 1; i %= null; } } {FAIL}
test illegal %= assignments: Object variableTest Case: 15.26.2-mod-8Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-mod-7 { test illegal %= assignments: Object variable } { empty_main T15262mod7 { Object o = new Object(); o %= 1; } } {FAIL}
test illegal %= assignments: String variableTest Case: 15.26.2-mod-9Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-mod-8 { test illegal %= assignments: String variable } { empty_main T15262mod8 { String s = ""; s %= 1; } } {FAIL}
test illegal %= assignments: null variableTest Case: 15.26.2-mod-10Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-mod-9 { test illegal %= assignments: null variable } { empty_main T15262mod9 { null %= 1; } } {FAIL}
test illegal %= assignments: boolean variableTest Case: 15.26.2-mod-11Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-mod-10 { test illegal %= assignments: boolean variable } { empty_main T15262mod10 { boolean b = true; b %= true; } } {FAIL}
test illegal %= assignments: non-variableTest Case: 15.26.2-mod-12Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-mod-11 { test illegal %= assignments: non-variable } { empty_main T15262mod11 { 1 %= 1; } } {FAIL}
test illegal %= assignments: parenthesized expressions can now be variablesTest Case: 15.26.2-mod-13Expected Result: OK
Regression Test:
tcltest::test 15.26.2-mod-12 { test illegal %= assignments: parenthesized expressions can now be variables } { ok_pass_or_warn [empty_main T15262mod12 { int i = 1; (i) %= 1; }] } {OK}
test widening %= assignmentsTest Case: 15.26.2-mod-14Expected Result: PASS
Regression Test:
tcltest::test 15.26.2-mod-13 { test widening %= assignments } { empty_main T15262mod13 { byte b = 1; short s = 1; char c = 1; int i = 1; long l = 1; float f = 1; double d = 1; s %= b; i %= b; i %= s; i %= c; l %= b; l %= s; l %= c; l %= i; f %= b; f %= s; f %= c; f %= i; f %= l; d %= b; d %= s; d %= c; d %= i; d %= l; d %= f; } } {PASS}
test narrowing %= assignmentsTest Case: 15.26.2-mod-zero-1Expected Result: PASS
Regression Test:
tcltest::test 15.26.2-mod-14 { test narrowing %= assignments } { empty_main T15262mod14 { byte b = 1; short s = 1; char c = 1; int i = 1; long l = 1; float f = 1; double d = 1; b %= s; b %= c; b %= i; b %= l; b %= f; b %= d; s %= c; s %= i; s %= l; s %= f; s %= d; c %= b; c %= s; c %= i; c %= l; c %= f; c %= d; i %= l; i %= f; i %= d; l %= f; l %= d; f %= d; } } {PASS}
test integer %= by integer 0 (warning recommended)Test Case: 15.26.2-mod-zero-2Expected Result: OK
Regression Test:
tcltest::test 15.26.2-mod-zero-1 { test integer %= by integer 0 (warning recommended) } { ok_pass_or_warn [empty_class T15262dz1 { int i = 1; void foo() { i %= 0; i %= 0L; } }] } {OK}
test integer %= by integer 0 (warning recommended)Test Case: 15.26.2-mod-zero-3Expected Result: OK
Regression Test:
tcltest::test 15.26.2-mod-zero-2 { test integer %= by integer 0 (warning recommended) } { ok_pass_or_warn [empty_class T15262dz2 { long l = 1; void foo() { l %= 0; l %= 0L; } }] } {OK}
test integer %= by floating 0 (no warning needed)Test Case: 15.26.2-mod-zero-4Expected Result: PASS
Regression Test:
tcltest::test 15.26.2-mod-zero-3 { test integer %= by floating 0 (no warning needed) } { empty_main T15262dz3 { int i = 1; long l = 1; i %= 0.0f; i %= 0.0d; l %= 0.0f; l %= 0.0d; } } {PASS}
test floating %= by integer 0 (no warning needed)Test Case: 15.26.2-mod-zero-5Expected Result: PASS
Regression Test:
tcltest::test 15.26.2-mod-zero-4 { test floating %= by integer 0 (no warning needed) } { empty_main T15262dz4 { float f = 1; double d = 1; f %= 0; f %= 0L; d %= 0; d %= 0L; } } {PASS}
test floating %= by floating 0 (no warning needed)Test Case: 15.26.2-add-1Expected Result: PASS
Regression Test:
tcltest::test 15.26.2-mod-zero-5 { test floating %= by floating 0 (no warning needed) } { empty_main T15262dz5 { float f = 1; double d = 1; f %= 0.0f; d %= 0.0d; } } {PASS}
test legal identity += assignmentsTest Case: 15.26.2-add-2Expected Result: PASS
Regression Test:
tcltest::test 15.26.2-add-1 { test legal identity += assignments } { empty_main T15262add1 { byte b = 1; b += 1; short s = 1; s += 1; char c = 1; c += 1; int i = 1; i += 1; long l = 1; l += 1; float f = 1; f += 1; double d = 1; d += 1; } } {PASS}
test illegal += assignments: boolean argumentTest Case: 15.26.2-add-3Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-add-2 { test illegal += assignments: boolean argument } { empty_main T15262add2 { int i = 1; i += false; } } {FAIL}
test illegal += assignments: void argumentTest Case: 15.26.2-add-4Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-add-3 { test illegal += assignments: void argument } { empty_class T15262add3 { void foo() {} void bar() { int i = 1; i += foo(); } } } {FAIL}
test illegal += assignments: Object argumentTest Case: 15.26.2-add-5Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-add-4 { test illegal += assignments: Object argument } { empty_main T15262add4 { int i = 1; i += new Object(); } } {FAIL}
test illegal += assignments: String argumentTest Case: 15.26.2-add-6Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-add-5 { test illegal += assignments: String argument } { empty_main T15262add5 { int i = 1; i += ""; } } {FAIL}
test illegal += assignments: null argumentTest Case: 15.26.2-add-7Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-add-6 { test illegal += assignments: null argument } { empty_main T15262add6 { int i = 1; i += null; } } {FAIL}
test illegal += assignments: Object variableTest Case: 15.26.2-add-8Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-add-7 { test illegal += assignments: Object variable } { empty_main T15262add7 { Object o = new Object(); o += 1; } } {FAIL}
special case: test legal += assignments: String variableTest Case: 15.26.2-add-9Expected Result: PASS
Regression Test:
tcltest::test 15.26.2-add-8 { special case: test legal += assignments: String variable } { empty_main T15262add8 { String s = ""; s += 1; } } {PASS}
test illegal += assignments: null variableTest Case: 15.26.2-add-10Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-add-9 { test illegal += assignments: null variable } { empty_main T15262add9 { null += 1; } } {FAIL}
test illegal += assignments: boolean variableTest Case: 15.26.2-add-11Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-add-10 { test illegal += assignments: boolean variable } { empty_main T15262add10 { boolean b = true; b += true; } } {FAIL}
test illegal += assignments: non-variableTest Case: 15.26.2-add-12Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-add-11 { test illegal += assignments: non-variable } { empty_main T15262add11 { 1 += 1; } } {FAIL}
test illegal += assignments: parenthesized expressions can now be variablesTest Case: 15.26.2-add-13Expected Result: OK
Regression Test:
tcltest::test 15.26.2-add-12 { test illegal += assignments: parenthesized expressions can now be variables } { ok_pass_or_warn [empty_main T15262add12 { int i = 1; (i) += 1; }] } {OK}
test widening += assignmentsTest Case: 15.26.2-add-14Expected Result: PASS
Regression Test:
tcltest::test 15.26.2-add-13 { test widening += assignments } { empty_main T15262add13 { byte b = 1; short s = 1; char c = 1; int i = 1; long l = 1; float f = 1; double d = 1; s += b; i += b; i += s; i += c; l += b; l += s; l += c; l += i; f += b; f += s; f += c; f += i; f += l; d += b; d += s; d += c; d += i; d += l; d += f; } } {PASS}
test narrowing += assignmentsTest Case: 15.26.2-sub-1Expected Result: PASS
Regression Test:
tcltest::test 15.26.2-add-14 { test narrowing += assignments } { empty_main T15262add14 { byte b = 1; short s = 1; char c = 1; int i = 1; long l = 1; float f = 1; double d = 1; b += s; b += c; b += i; b += l; b += f; b += d; s += c; s += i; s += l; s += f; s += d; c += b; c += s; c += i; c += l; c += f; c += d; i += l; i += f; i += d; l += f; l += d; f += d; } } {PASS}
test legal identity -= assignmentsTest Case: 15.26.2-sub-2Expected Result: PASS
Regression Test:
tcltest::test 15.26.2-sub-1 { test legal identity -= assignments } { empty_main T15262sub1 { byte b = 1; b -= 1; short s = 1; s -= 1; char c = 1; c -= 1; int i = 1; i -= 1; long l = 1; l -= 1; float f = 1; f -= 1; double d = 1; d -= 1; } } {PASS}
test illegal -= assignments: boolean argumentTest Case: 15.26.2-sub-3Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-sub-2 { test illegal -= assignments: boolean argument } { empty_main T15262sub2 { int i = 1; i -= false; } } {FAIL}
test illegal -= assignments: void argumentTest Case: 15.26.2-sub-4Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-sub-3 { test illegal -= assignments: void argument } { empty_class T15262sub3 { void foo() {} void bar() { int i = 1; i -= foo(); } } } {FAIL}
test illegal -= assignments: Object argumentTest Case: 15.26.2-sub-5Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-sub-4 { test illegal -= assignments: Object argument } { empty_main T15262sub4 { int i = 1; i -= new Object(); } } {FAIL}
test illegal -= assignments: String argumentTest Case: 15.26.2-sub-6Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-sub-5 { test illegal -= assignments: String argument } { empty_main T15262sub5 { int i = 1; i -= ""; } } {FAIL}
test illegal -= assignments: null argumentTest Case: 15.26.2-sub-7Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-sub-6 { test illegal -= assignments: null argument } { empty_main T15262sub6 { int i = 1; i -= null; } } {FAIL}
test illegal -= assignments: Object variableTest Case: 15.26.2-sub-8Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-sub-7 { test illegal -= assignments: Object variable } { empty_main T15262sub7 { Object o = new Object(); o -= 1; } } {FAIL}
test illegal -= assignments: String variableTest Case: 15.26.2-sub-9Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-sub-8 { test illegal -= assignments: String variable } { empty_main T15262sub8 { String s = ""; s -= 1; } } {FAIL}
test illegal -= assignments: null variableTest Case: 15.26.2-sub-10Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-sub-9 { test illegal -= assignments: null variable } { empty_main T15262sub9 { null -= 1; } } {FAIL}
test illegal -= assignments: boolean variableTest Case: 15.26.2-sub-11Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-sub-10 { test illegal -= assignments: boolean variable } { empty_main T15262sub10 { boolean b = true; b -= true; } } {FAIL}
test illegal -= assignments: non-variableTest Case: 15.26.2-sub-12Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-sub-11 { test illegal -= assignments: non-variable } { empty_main T15262sub11 { 1 -= 1; } } {FAIL}
test illegal -= assignments: parenthesized expressions can now be variablesTest Case: 15.26.2-sub-13Expected Result: OK
Regression Test:
tcltest::test 15.26.2-sub-12 { test illegal -= assignments: parenthesized expressions can now be variables } { ok_pass_or_warn [empty_main T15262sub12 { int i = 1; (i) -= 1; }] } {OK}
test widening -= assignmentsTest Case: 15.26.2-sub-14Expected Result: PASS
Regression Test:
tcltest::test 15.26.2-sub-13 { test widening -= assignments } { empty_main T15262sub13 { byte b = 1; short s = 1; char c = 1; int i = 1; long l = 1; float f = 1; double d = 1; s -= b; i -= b; i -= s; i -= c; l -= b; l -= s; l -= c; l -= i; f -= b; f -= s; f -= c; f -= i; f -= l; d -= b; d -= s; d -= c; d -= i; d -= l; d -= f; } } {PASS}
test narrowing -= assignmentsTest Case: 15.26.2-left-shift-1Expected Result: PASS
Regression Test:
tcltest::test 15.26.2-sub-14 { test narrowing -= assignments } { empty_main T15262sub14 { byte b = 1; short s = 1; char c = 1; int i = 1; long l = 1; float f = 1; double d = 1; b -= s; b -= c; b -= i; b -= l; b -= f; b -= d; s -= c; s -= i; s -= l; s -= f; s -= d; c -= b; c -= s; c -= i; c -= l; c -= f; c -= d; i -= l; i -= f; i -= d; l -= f; l -= d; f -= d; } } {PASS}
test legal identity <<= assignmentsTest Case: 15.26.2-left-shift-2Expected Result: PASS
Regression Test:
tcltest::test 15.26.2-left-shift-1 { test legal identity <<= assignments } { empty_main T15262ls1 { byte b = 1; b <<= 1; short s = 1; s <<= 1; char c = 1; c <<= 1; int i = 1; i <<= 1; long l = 1; l <<= 1; } } {PASS}
test illegal <<= assignments: boolean argumentTest Case: 15.26.2-left-shift-3Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-left-shift-2 { test illegal <<= assignments: boolean argument } { empty_main T15262ls2 { int i = 1; i <<= false; } } {FAIL}
test illegal <<= assignments: void argumentTest Case: 15.26.2-left-shift-4Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-left-shift-3 { test illegal <<= assignments: void argument } { empty_class T15262ls3 { void foo() {} void bar() { int i = 1; i <<= foo(); } } } {FAIL}
test illegal <<= assignments: Object argumentTest Case: 15.26.2-left-shift-5Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-left-shift-4 { test illegal <<= assignments: Object argument } { empty_main T15262ls4 { int i = 1; i <<= new Object(); } } {FAIL}
test illegal <<= assignments: String argumentTest Case: 15.26.2-left-shift-6Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-left-shift-5 { test illegal <<= assignments: String argument } { empty_main T15262ls5 { int i = 1; i <<= ""; } } {FAIL}
test illegal <<= assignments: null argumentTest Case: 15.26.2-left-shift-7Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-left-shift-6 { test illegal <<= assignments: null argument } { empty_main T15262ls6 { int i = 1; i <<= null; } } {FAIL}
test illegal <<= assignments: Object variableTest Case: 15.26.2-left-shift-8Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-left-shift-7 { test illegal <<= assignments: Object variable } { empty_main T15262ls7 { Object o = new Object(); o <<= 1; } } {FAIL}
test illegal <<= assignments: String variableTest Case: 15.26.2-left-shift-9Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-left-shift-8 { test illegal <<= assignments: String variable } { empty_main T15262ls8 { String s = ""; s <<= 1; } } {FAIL}
test illegal <<= assignments: null variableTest Case: 15.26.2-left-shift-10Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-left-shift-9 { test illegal <<= assignments: null variable } { empty_main T15262ls9 { null <<= 1; } } {FAIL}
test illegal <<= assignments: boolean variableTest Case: 15.26.2-left-shift-11Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-left-shift-10 { test illegal <<= assignments: boolean variable } { empty_main T15262ls10 { boolean b = true; b <<= true; } } {FAIL}
test illegal <<= assignments: non-variableTest Case: 15.26.2-left-shift-12Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-left-shift-11 { test illegal <<= assignments: non-variable } { empty_main T15262ls11 { 1 <<= 1; } } {FAIL}
test illegal <<= assignments: parenthesized expressions can now be variablesTest Case: 15.26.2-left-shift-13Expected Result: OK
Regression Test:
tcltest::test 15.26.2-left-shift-12 { test illegal <<= assignments: parenthesized expressions can now be variables } { ok_pass_or_warn [empty_main T15262ls12 { int i = 1; (i) <<= 1; }] } {OK}
test widening <<= assignmentsTest Case: 15.26.2-left-shift-14Expected Result: PASS
Regression Test:
tcltest::test 15.26.2-left-shift-13 { test widening <<= assignments } { empty_main T15262ls13 { byte b = 1; short s = 1; char c = 1; int i = 1; long l = 1; s <<= b; i <<= b; i <<= s; i <<= c; l <<= b; l <<= s; l <<= c; l <<= i; } } {PASS}
test narrowing <<= assignmentsTest Case: 15.26.2-left-shift-15Expected Result: PASS
Regression Test:
tcltest::test 15.26.2-left-shift-14 { test narrowing <<= assignments } { empty_main T15262ls14 { byte b = 1; short s = 1; char c = 1; int i = 1; long l = 1; b <<= s; b <<= c; b <<= i; b <<= l; s <<= c; s <<= i; s <<= l; c <<= b; c <<= s; c <<= i; c <<= l; i <<= l; } } {PASS}
test illegal <<= assignments: float argumentTest Case: 15.26.2-left-shift-16Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-left-shift-15 { test illegal <<= assignments: float argument } { empty_main T15262ls15 { int i = 1; i <<= 1.0f; } } {FAIL}
test illegal <<= assignments: double argumentTest Case: 15.26.2-left-shift-17Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-left-shift-16 { test illegal <<= assignments: double argument } { empty_main T15262ls16 { int i = 1; i <<= 1.0d; } } {FAIL}
test illegal <<= assignments: float variableTest Case: 15.26.2-left-shift-18Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-left-shift-17 { test illegal <<= assignments: float variable } { empty_main T15262ls17 { float f = 1; f <<= 1; } } {FAIL}
test illegal <<= assignments: double variableTest Case: 15.26.2-signed-right-shift-1Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-left-shift-18 { test illegal <<= assignments: double variable } { empty_main T15262ls18 { double d = 1; d <<= 1; } } {FAIL}
test legal identity >>= assignmentsTest Case: 15.26.2-signed-right-shift-2Expected Result: PASS
Regression Test:
tcltest::test 15.26.2-signed-right-shift-1 { test legal identity >>= assignments } { empty_main T15262srs1 { byte b = 1; b >>= 1; short s = 1; s >>= 1; char c = 1; c >>= 1; int i = 1; i >>= 1; long l = 1; l >>= 1; } } {PASS}
test illegal >>= assignments: boolean argumentTest Case: 15.26.2-signed-right-shift-3Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-signed-right-shift-2 { test illegal >>= assignments: boolean argument } { empty_main T15262srs2 { int i = 1; i >>= false; } } {FAIL}
test illegal >>= assignments: void argumentTest Case: 15.26.2-signed-right-shift-4Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-signed-right-shift-3 { test illegal >>= assignments: void argument } { empty_class T15262srs3 { void foo() {} void bar() { int i = 1; i >>= foo(); } } } {FAIL}
test illegal >>= assignments: Object argumentTest Case: 15.26.2-signed-right-shift-5Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-signed-right-shift-4 { test illegal >>= assignments: Object argument } { empty_main T15262srs4 { int i = 1; i >>= new Object(); } } {FAIL}
test illegal >>= assignments: String argumentTest Case: 15.26.2-signed-right-shift-6Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-signed-right-shift-5 { test illegal >>= assignments: String argument } { empty_main T15262srs5 { int i = 1; i >>= ""; } } {FAIL}
test illegal >>= assignments: null argumentTest Case: 15.26.2-signed-right-shift-7Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-signed-right-shift-6 { test illegal >>= assignments: null argument } { empty_main T15262srs6 { int i = 1; i >>= null; } } {FAIL}
test illegal >>= assignments: Object variableTest Case: 15.26.2-signed-right-shift-8Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-signed-right-shift-7 { test illegal >>= assignments: Object variable } { empty_main T15262srs7 { Object o = new Object(); o >>= 1; } } {FAIL}
test illegal >>= assignments: String variableTest Case: 15.26.2-signed-right-shift-9Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-signed-right-shift-8 { test illegal >>= assignments: String variable } { empty_main T15262srs8 { String s = ""; s >>= 1; } } {FAIL}
test illegal >>= assignments: null variableTest Case: 15.26.2-signed-right-shift-10Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-signed-right-shift-9 { test illegal >>= assignments: null variable } { empty_main T15262srs9 { null >>= 1; } } {FAIL}
test illegal >>= assignments: boolean variableTest Case: 15.26.2-signed-right-shift-11Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-signed-right-shift-10 { test illegal >>= assignments: boolean variable } { empty_main T15262srs10 { boolean b = true; b >>= true; } } {FAIL}
test illegal >>= assignments: non-variableTest Case: 15.26.2-signed-right-shift-12Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-signed-right-shift-11 { test illegal >>= assignments: non-variable } { empty_main T15262srs11 { 1 >>= 1; } } {FAIL}
test illegal >>= assignments: parenthesized expressions can now be variablesTest Case: 15.26.2-signed-right-shift-13Expected Result: OK
Regression Test:
tcltest::test 15.26.2-signed-right-shift-12 { test illegal >>= assignments: parenthesized expressions can now be variables } { ok_pass_or_warn [empty_main T15262srs12 { int i = 1; (i) >>= 1; }] } {OK}
test widening >>= assignmentsTest Case: 15.26.2-signed-right-shift-14Expected Result: PASS
Regression Test:
tcltest::test 15.26.2-signed-right-shift-13 { test widening >>= assignments } { empty_main T15262srs13 { byte b = 1; short s = 1; char c = 1; int i = 1; long l = 1; s >>= b; i >>= b; i >>= s; i >>= c; l >>= b; l >>= s; l >>= c; l >>= i; } } {PASS}
test narrowing >>= assignmentsTest Case: 15.26.2-signed-right-shift-15Expected Result: PASS
Regression Test:
tcltest::test 15.26.2-signed-right-shift-14 { test narrowing >>= assignments } { empty_main T15262srs14 { byte b = 1; short s = 1; char c = 1; int i = 1; long l = 1; b >>= s; b >>= c; b >>= i; b >>= l; s >>= c; s >>= i; s >>= l; c >>= b; c >>= s; c >>= i; c >>= l; i >>= l; } } {PASS}
test illegal >>= assignments: float argumentTest Case: 15.26.2-signed-right-shift-16Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-signed-right-shift-15 { test illegal >>= assignments: float argument } { empty_main T15262srs15 { int i = 1; i >>= 1.0f; } } {FAIL}
test illegal >>= assignments: double argumentTest Case: 15.26.2-signed-right-shift-17Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-signed-right-shift-16 { test illegal >>= assignments: double argument } { empty_main T15262srs16 { int i = 1; i >>= 1.0d; } } {FAIL}
test illegal >>= assignments: float variableTest Case: 15.26.2-signed-right-shift-18Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-signed-right-shift-17 { test illegal >>= assignments: float variable } { empty_main T15262srs17 { float f = 1; f >>= 1; } } {FAIL}
test illegal >>= assignments: double variableTest Case: 15.26.2-unsigned-right-shift-1Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-signed-right-shift-18 { test illegal >>= assignments: double variable } { empty_main T15262srs18 { double d = 1; d >>= 1; } } {FAIL}
test legal identity >>>= assignmentsTest Case: 15.26.2-unsigned-right-shift-2Expected Result: PASS
Regression Test:
tcltest::test 15.26.2-unsigned-right-shift-1 { test legal identity >>>= assignments } { empty_main T15262urs1 { byte b = 1; b >>>= 1; short s = 1; s >>>= 1; char c = 1; c >>>= 1; int i = 1; i >>>= 1; long l = 1; l >>>= 1; } } {PASS}
test illegal >>>= assignments: boolean argumentTest Case: 15.26.2-unsigned-right-shift-3Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-unsigned-right-shift-2 { test illegal >>>= assignments: boolean argument } { empty_main T15262urs2 { int i = 1; i >>>= false; } } {FAIL}
test illegal >>>= assignments: void argumentTest Case: 15.26.2-unsigned-right-shift-4Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-unsigned-right-shift-3 { test illegal >>>= assignments: void argument } { empty_class T15262urs3 { void foo() {} void bar() { int i = 1; i >>>= foo(); } } } {FAIL}
test illegal >>>= assignments: Object argumentTest Case: 15.26.2-unsigned-right-shift-5Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-unsigned-right-shift-4 { test illegal >>>= assignments: Object argument } { empty_main T15262urs4 { int i = 1; i >>>= new Object(); } } {FAIL}
test illegal >>>= assignments: String argumentTest Case: 15.26.2-unsigned-right-shift-6Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-unsigned-right-shift-5 { test illegal >>>= assignments: String argument } { empty_main T15262urs5 { int i = 1; i >>>= ""; } } {FAIL}
test illegal >>>= assignments: null argumentTest Case: 15.26.2-unsigned-right-shift-7Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-unsigned-right-shift-6 { test illegal >>>= assignments: null argument } { empty_main T15262urs6 { int i = 1; i >>>= null; } } {FAIL}
test illegal >>>= assignments: Object variableTest Case: 15.26.2-unsigned-right-shift-8Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-unsigned-right-shift-7 { test illegal >>>= assignments: Object variable } { empty_main T15262urs7 { Object o = new Object(); o >>>= 1; } } {FAIL}
test illegal >>>= assignments: String variableTest Case: 15.26.2-unsigned-right-shift-9Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-unsigned-right-shift-8 { test illegal >>>= assignments: String variable } { empty_main T15262urs8 { String s = ""; s >>>= 1; } } {FAIL}
test illegal >>>= assignments: null variableTest Case: 15.26.2-unsigned-right-shift-10Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-unsigned-right-shift-9 { test illegal >>>= assignments: null variable } { empty_main T15262urs9 { null >>>= 1; } } {FAIL}
test illegal >>>= assignments: boolean variableTest Case: 15.26.2-unsigned-right-shift-11Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-unsigned-right-shift-10 { test illegal >>>= assignments: boolean variable } { empty_main T15262urs10 { boolean b = true; b >>>= true; } } {FAIL}
test illegal >>>= assignments: non-variableTest Case: 15.26.2-unsigned-right-shift-12Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-unsigned-right-shift-11 { test illegal >>>= assignments: non-variable } { empty_main T15262urs11 { 1 >>>= 1; } } {FAIL}
test illegal >>>= assignments: parenthesized expressions can now be variablesTest Case: 15.26.2-unsigned-right-shift-13Expected Result: OK
Regression Test:
tcltest::test 15.26.2-unsigned-right-shift-12 { test illegal >>>= assignments: parenthesized expressions can now be variables } { ok_pass_or_warn [empty_main T15262urs12 { int i = 1; (i) >>>= 1; }] } {OK}
test widening >>>= assignmentsTest Case: 15.26.2-unsigned-right-shift-14Expected Result: PASS
Regression Test:
tcltest::test 15.26.2-unsigned-right-shift-13 { test widening >>>= assignments } { empty_main T15262urs13 { byte b = 1; short s = 1; char c = 1; int i = 1; long l = 1; s >>>= b; i >>>= b; i >>>= s; i >>>= c; l >>>= b; l >>>= s; l >>>= c; l >>>= i; } } {PASS}
test narrowing >>>= assignmentsTest Case: 15.26.2-unsigned-right-shift-15Expected Result: PASS
Regression Test:
tcltest::test 15.26.2-unsigned-right-shift-14 { test narrowing >>>= assignments } { empty_main T15262urs14 { byte b = 1; short s = 1; char c = 1; int i = 1; long l = 1; b >>>= s; b >>>= c; b >>>= i; b >>>= l; s >>>= c; s >>>= i; s >>>= l; c >>>= b; c >>>= s; c >>>= i; c >>>= l; i >>>= l; } } {PASS}
test illegal >>>= assignments: float argumentTest Case: 15.26.2-unsigned-right-shift-16Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-unsigned-right-shift-15 { test illegal >>>= assignments: float argument } { empty_main T15262urs15 { int i = 1; i >>>= 1.0f; } } {FAIL}
test illegal >>>= assignments: double argumentTest Case: 15.26.2-unsigned-right-shift-17Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-unsigned-right-shift-16 { test illegal >>>= assignments: double argument } { empty_main T15262urs16 { int i = 1; i >>>= 1.0d; } } {FAIL}
test illegal >>>= assignments: float variableTest Case: 15.26.2-unsigned-right-shift-18Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-unsigned-right-shift-17 { test illegal >>>= assignments: float variable } { empty_main T15262urs17 { float f = 1; f >>>= 1; } } {FAIL}
test illegal >>>= assignments: double variableTest Case: 15.26.2-and-1Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-unsigned-right-shift-18 { test illegal >>>= assignments: double variable } { empty_main T15262urs18 { double d = 1; d >>>= 1; } } {FAIL}
test legal identity &= assignmentsTest Case: 15.26.2-and-2Expected Result: PASS
Regression Test:
tcltest::test 15.26.2-and-1 { test legal identity &= assignments } { empty_main T15262and1 { boolean z = true; z &= true; byte b = 1; b &= 1; short s = 1; s &= 1; char c = 1; c &= 1; int i = 1; i &= 1; long l = 1; l &= 1; } } {PASS}
test illegal &= assignments: mix int and booleanTest Case: 15.26.2-and-3Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-and-2 { test illegal &= assignments: mix int and boolean } { empty_main T15262and2 { int i = 1; i &= false; } } {FAIL}
test illegal &= assignments: void argumentTest Case: 15.26.2-and-4Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-and-3 { test illegal &= assignments: void argument } { empty_class T15262and3 { void foo() {} void bar() { int i = 1; i &= foo(); } } } {FAIL}
test illegal &= assignments: Object argumentTest Case: 15.26.2-and-5Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-and-4 { test illegal &= assignments: Object argument } { empty_main T15262and4 { int i = 1; i &= new Object(); } } {FAIL}
test illegal &= assignments: String argumentTest Case: 15.26.2-and-6Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-and-5 { test illegal &= assignments: String argument } { empty_main T15262and5 { int i = 1; i &= ""; } } {FAIL}
test illegal &= assignments: null argumentTest Case: 15.26.2-and-7Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-and-6 { test illegal &= assignments: null argument } { empty_main T15262and6 { int i = 1; i &= null; } } {FAIL}
test illegal &= assignments: Object variableTest Case: 15.26.2-and-8Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-and-7 { test illegal &= assignments: Object variable } { empty_main T15262and7 { Object o = new Object(); o &= 1; } } {FAIL}
test illegal &= assignments: String variableTest Case: 15.26.2-and-9Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-and-8 { test illegal &= assignments: String variable } { empty_main T15262and8 { String s = ""; s &= 1; } } {FAIL}
test illegal &= assignments: null variableTest Case: 15.26.2-and-10Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-and-9 { test illegal &= assignments: null variable } { empty_main T15262and9 { null &= 1; } } {FAIL}
test illegal &= assignments: mix int and booleanTest Case: 15.26.2-and-11Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-and-10 { test illegal &= assignments: mix int and boolean } { empty_main T15262and10 { boolean b = true; b &= 1; } } {FAIL}
test illegal &= assignments: non-variableTest Case: 15.26.2-and-12Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-and-11 { test illegal &= assignments: non-variable } { empty_main T15262and11 { 1 &= 1; } } {FAIL}
test illegal &= assignments: parenthesized expressions can now be variablesTest Case: 15.26.2-and-13Expected Result: OK
Regression Test:
tcltest::test 15.26.2-and-12 { test illegal &= assignments: parenthesized expressions can now be variables } { ok_pass_or_warn [empty_main T15262and12 { int i = 1; (i) &= 1; }] } {OK}
test widening &= assignmentsTest Case: 15.26.2-and-14Expected Result: PASS
Regression Test:
tcltest::test 15.26.2-and-13 { test widening &= assignments } { empty_main T15262and13 { byte b = 1; short s = 1; char c = 1; int i = 1; long l = 1; s &= b; i &= b; i &= s; i &= c; l &= b; l &= s; l &= c; l &= i; } } {PASS}
test narrowing &= assignmentsTest Case: 15.26.2-and-15Expected Result: PASS
Regression Test:
tcltest::test 15.26.2-and-14 { test narrowing &= assignments } { empty_main T15262and14 { byte b = 1; short s = 1; char c = 1; int i = 1; long l = 1; b &= s; b &= c; b &= i; b &= l; s &= c; s &= i; s &= l; c &= b; c &= s; c &= i; c &= l; i &= l; } } {PASS}
test illegal &= assignments: float argumentTest Case: 15.26.2-and-16Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-and-15 { test illegal &= assignments: float argument } { empty_main T15262and15 { int i = 1; i &= 1.0f; } } {FAIL}
test illegal &= assignments: double argumentTest Case: 15.26.2-and-17Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-and-16 { test illegal &= assignments: double argument } { empty_main T15262and16 { int i = 1; i &= 1.0d; } } {FAIL}
test illegal &= assignments: float variableTest Case: 15.26.2-and-18Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-and-17 { test illegal &= assignments: float variable } { empty_main T15262and17 { float f = 1; f &= 1; } } {FAIL}
test illegal &= assignments: double variableTest Case: 15.26.2-xor-1Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-and-18 { test illegal &= assignments: double variable } { empty_main T15262and18 { double d = 1; d &= 1; } } {FAIL}
test legal identity ^= assignmentsTest Case: 15.26.2-xor-2Expected Result: PASS
Regression Test:
tcltest::test 15.26.2-xor-1 { test legal identity ^= assignments } { empty_main T15262xor1 { boolean z = true; z ^= true; byte b = 1; b ^= 1; short s = 1; s ^= 1; char c = 1; c ^= 1; int i = 1; i ^= 1; long l = 1; l ^= 1; } } {PASS}
test illegal ^= assignments: mix int and booleanTest Case: 15.26.2-xor-3Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-xor-2 { test illegal ^= assignments: mix int and boolean } { empty_main T15262xor2 { int i = 1; i ^= false; } } {FAIL}
test illegal ^= assignments: void argumentTest Case: 15.26.2-xor-4Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-xor-3 { test illegal ^= assignments: void argument } { empty_class T15262xor3 { void foo() {} void bar() { int i = 1; i ^= foo(); } } } {FAIL}
test illegal ^= assignments: Object argumentTest Case: 15.26.2-xor-5Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-xor-4 { test illegal ^= assignments: Object argument } { empty_main T15262xor4 { int i = 1; i ^= new Object(); } } {FAIL}
test illegal ^= assignments: String argumentTest Case: 15.26.2-xor-6Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-xor-5 { test illegal ^= assignments: String argument } { empty_main T15262xor5 { int i = 1; i ^= ""; } } {FAIL}
test illegal ^= assignments: null argumentTest Case: 15.26.2-xor-7Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-xor-6 { test illegal ^= assignments: null argument } { empty_main T15262xor6 { int i = 1; i ^= null; } } {FAIL}
test illegal ^= assignments: Object variableTest Case: 15.26.2-xor-8Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-xor-7 { test illegal ^= assignments: Object variable } { empty_main T15262xor7 { Object o = new Object(); o ^= 1; } } {FAIL}
test illegal ^= assignments: String variableTest Case: 15.26.2-xor-9Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-xor-8 { test illegal ^= assignments: String variable } { empty_main T15262xor8 { String s = ""; s ^= 1; } } {FAIL}
test illegal ^= assignments: null variableTest Case: 15.26.2-xor-10Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-xor-9 { test illegal ^= assignments: null variable } { empty_main T15262xor9 { null ^= 1; } } {FAIL}
test illegal ^= assignments: mix int and booleanTest Case: 15.26.2-xor-11Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-xor-10 { test illegal ^= assignments: mix int and boolean } { empty_main T15262xor10 { boolean b = true; b ^= 1; } } {FAIL}
test illegal ^= assignments: non-variableTest Case: 15.26.2-xor-12Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-xor-11 { test illegal ^= assignments: non-variable } { empty_main T15262xor11 { 1 ^= 1; } } {FAIL}
test illegal ^= assignments: parenthesized expressions can now be variablesTest Case: 15.26.2-xor-13Expected Result: OK
Regression Test:
tcltest::test 15.26.2-xor-12 { test illegal ^= assignments: parenthesized expressions can now be variables } { ok_pass_or_warn [empty_main T15262xor12 { int i = 1; (i) ^= 1; }] } {OK}
test widening ^= assignmentsTest Case: 15.26.2-xor-14Expected Result: PASS
Regression Test:
tcltest::test 15.26.2-xor-13 { test widening ^= assignments } { empty_main T15262xor13 { byte b = 1; short s = 1; char c = 1; int i = 1; long l = 1; s ^= b; i ^= b; i ^= s; i ^= c; l ^= b; l ^= s; l ^= c; l ^= i; } } {PASS}
test narrowing ^= assignmentsTest Case: 15.26.2-xor-15Expected Result: PASS
Regression Test:
tcltest::test 15.26.2-xor-14 { test narrowing ^= assignments } { empty_main T15262xor14 { byte b = 1; short s = 1; char c = 1; int i = 1; long l = 1; b ^= s; b ^= c; b ^= i; b ^= l; s ^= c; s ^= i; s ^= l; c ^= b; c ^= s; c ^= i; c ^= l; i ^= l; } } {PASS}
test illegal ^= assignments: float argumentTest Case: 15.26.2-xor-16Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-xor-15 { test illegal ^= assignments: float argument } { empty_main T15262xor15 { int i = 1; i ^= 1.0f; } } {FAIL}
test illegal ^= assignments: double argumentTest Case: 15.26.2-xor-17Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-xor-16 { test illegal ^= assignments: double argument } { empty_main T15262xor16 { int i = 1; i ^= 1.0d; } } {FAIL}
test illegal ^= assignments: float variableTest Case: 15.26.2-xor-18Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-xor-17 { test illegal ^= assignments: float variable } { empty_main T15262xor17 { float f = 1; f ^= 1; } } {FAIL}
test illegal ^= assignments: double variableTest Case: 15.26.2-or-1Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-xor-18 { test illegal ^= assignments: double variable } { empty_main T15262xor18 { double d = 1; d ^= 1; } } {FAIL}
test legal identity |= assignmentsTest Case: 15.26.2-or-2Expected Result: PASS
Regression Test:
tcltest::test 15.26.2-or-1 { test legal identity |= assignments } { empty_main T15262or1 { boolean z = true; z |= true; byte b = 1; b |= 1; short s = 1; s |= 1; char c = 1; c |= 1; int i = 1; i |= 1; long l = 1; l |= 1; } } {PASS}
test illegal |= assignments: mix int and booleanTest Case: 15.26.2-or-3Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-or-2 { test illegal |= assignments: mix int and boolean } { empty_main T15262or2 { int i = 1; i |= false; } } {FAIL}
test illegal |= assignments: void argumentTest Case: 15.26.2-or-4Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-or-3 { test illegal |= assignments: void argument } { empty_class T15262or3 { void foo() {} void bar() { int i = 1; i |= foo(); } } } {FAIL}
test illegal |= assignments: Object argumentTest Case: 15.26.2-or-5Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-or-4 { test illegal |= assignments: Object argument } { empty_main T15262or4 { int i = 1; i |= new Object(); } } {FAIL}
test illegal |= assignments: String argumentTest Case: 15.26.2-or-6Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-or-5 { test illegal |= assignments: String argument } { empty_main T15262or5 { int i = 1; i |= ""; } } {FAIL}
test illegal |= assignments: null argumentTest Case: 15.26.2-or-7Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-or-6 { test illegal |= assignments: null argument } { empty_main T15262or6 { int i = 1; i |= null; } } {FAIL}
test illegal |= assignments: Object variableTest Case: 15.26.2-or-8Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-or-7 { test illegal |= assignments: Object variable } { empty_main T15262or7 { Object o = new Object(); o |= 1; } } {FAIL}
test illegal |= assignments: String variableTest Case: 15.26.2-or-9Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-or-8 { test illegal |= assignments: String variable } { empty_main T15262or8 { String s = ""; s |= 1; } } {FAIL}
test illegal |= assignments: null variableTest Case: 15.26.2-or-10Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-or-9 { test illegal |= assignments: null variable } { empty_main T15262or9 { null |= 1; } } {FAIL}
test illegal |= assignments: mix int and booleanTest Case: 15.26.2-or-11Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-or-10 { test illegal |= assignments: mix int and boolean } { empty_main T15262or10 { boolean b = true; b |= 1; } } {FAIL}
test illegal |= assignments: non-variableTest Case: 15.26.2-or-12Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-or-11 { test illegal |= assignments: non-variable } { empty_main T15262or11 { 1 |= 1; } } {FAIL}
test illegal |= assignments: parenthesized expressions can now be variablesTest Case: 15.26.2-or-13Expected Result: OK
Regression Test:
tcltest::test 15.26.2-or-12 { test illegal |= assignments: parenthesized expressions can now be variables } { ok_pass_or_warn [empty_main T15262or12 { int i = 1; (i) |= 1; }] } {OK}
test widening |= assignmentsTest Case: 15.26.2-or-14Expected Result: PASS
Regression Test:
tcltest::test 15.26.2-or-13 { test widening |= assignments } { empty_main T15262or13 { byte b = 1; short s = 1; char c = 1; int i = 1; long l = 1; s |= b; i |= b; i |= s; i |= c; l |= b; l |= s; l |= c; l |= i; } } {PASS}
test narrowing |= assignmentsTest Case: 15.26.2-or-15Expected Result: PASS
Regression Test:
tcltest::test 15.26.2-or-14 { test narrowing |= assignments } { empty_main T15262or14 { byte b = 1; short s = 1; char c = 1; int i = 1; long l = 1; b |= s; b |= c; b |= i; b |= l; s |= c; s |= i; s |= l; c |= b; c |= s; c |= i; c |= l; i |= l; } } {PASS}
test illegal |= assignments: float argumentTest Case: 15.26.2-or-16Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-or-15 { test illegal |= assignments: float argument } { empty_main T15262or15 { int i = 1; i |= 1.0f; } } {FAIL}
test illegal |= assignments: double argumentTest Case: 15.26.2-or-17Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-or-16 { test illegal |= assignments: double argument } { empty_main T15262or16 { int i = 1; i |= 1.0d; } } {FAIL}
test illegal |= assignments: float variableTest Case: 15.26.2-or-18Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-or-17 { test illegal |= assignments: float variable } { empty_main T15262or17 { float f = 1; f |= 1; } } {FAIL}
test illegal |= assignments: double variableTest Case: 15.26.2-variable-1Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-or-18 { test illegal |= assignments: double variable } { empty_main T15262or18 { double d = 1; d |= 1; } } {FAIL}
the left-hand side must be a variableTest Case: 15.26.2-variable-2Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-variable-1 { the left-hand side must be a variable } { empty_main T15262var1 { int.class += "oops"; } } {FAIL}
the left-hand side must be a variableTest Case: 15.26.2-variable-3Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-variable-2 { the left-hand side must be a variable } { empty_main T15262var2 { (int.class) += "oops"; } } {FAIL}
the left-hand side must be a variableTest Case: 15.26.2-variable-4Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-variable-3 { the left-hand side must be a variable } { empty_main T15262var3 { this += "oops"; } } {FAIL}
the left-hand side must be a variableTest Case: 15.26.2-variable-5Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-variable-4 { the left-hand side must be a variable } { empty_main T15262var4 { (this) += "oops"; } } {FAIL}
the left-hand side must be a variableTest Case: 15.26.2-variable-6Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-variable-5 { the left-hand side must be a variable } { empty_main T15262var5 { new String() += "oops"; } } {FAIL}
the left-hand side must be a variableTest Case: 15.26.2-variable-7Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-variable-6 { the left-hand side must be a variable } { empty_main T15262var6 { (new String()) += "oops"; } } {FAIL}
the left-hand side must be a variableTest Case: 15.26.2-variable-8Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-variable-7 { the left-hand side must be a variable } { empty_main T15262var7 { java.lang.String += "oops"; } } {FAIL}
the left-hand side must be a variableTest Case: 15.26.2-variable-9Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-variable-8 { the left-hand side must be a variable } { empty_main T15262var8 { (java.lang.String) += "oops"; } } {FAIL}
the left-hand side must be a variableTest Case: 15.26.2-variable-10Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-variable-9 { the left-hand side must be a variable } { empty_class T15262var9 { void bar() {} void foo() { bar() += "oops"; } } } {FAIL}
the left-hand side must be a variableTest Case: 15.26.2-variable-11Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-variable-10 { the left-hand side must be a variable } { empty_class T15262var10 { void bar() {} void foo() { (bar()) += "oops"; } } } {FAIL}
the left-hand side must be a variableTest Case: 15.26.2-variable-12Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-variable-11 { the left-hand side must be a variable } { empty_class T15262var11 { String bar() { return ""; } void foo() { bar() += "oops"; } } } {FAIL}
the left-hand side must be a variableTest Case: 15.26.2-variable-13Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-variable-12 { the left-hand side must be a variable } { empty_class T15262var12 { String bar() { return ""; } void foo() { (bar()) += "oops"; } } } {FAIL}
the left-hand side must be a variableTest Case: 15.26.2-variable-14Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-variable-13 { the left-hand side must be a variable } { empty_main T15262var13 { int i = 1; i++ += 1; } } {FAIL}
the left-hand side must be a variableTest Case: 15.26.2-variable-15Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-variable-14 { the left-hand side must be a variable } { empty_main T15262var14 { int i = 1; (i++) += 1; } } {FAIL}
the left-hand side must be a variableTest Case: 15.26.2-variable-16Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-variable-15 { the left-hand side must be a variable } { empty_main T15262var15 { int i = 1; --i += 1; } } {FAIL}
the left-hand side must be a variableTest Case: 15.26.2-variable-17Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-variable-16 { the left-hand side must be a variable } { empty_main T15262var16 { intn i = 1; (--i) += 1; } } {FAIL}
the left-hand side must be a variableTest Case: 15.26.2-variable-18Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-variable-17 { the left-hand side must be a variable } { empty_main T15262var17 { "" instanceof String += "oops"; } } {FAIL}
the left-hand side must be a variableTest Case: 15.26.2-variable-19Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-variable-18 { the left-hand side must be a variable } { empty_main T15262var18 { ("" instanceof String) += "oops"; } } {FAIL}
the left-hand side must be a variableTest Case: 15.26.2-variable-20Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-variable-19 { the left-hand side must be a variable } { empty_main T15262var19 { int i = 1; i + i += 1; } } {FAIL}
the left-hand side must be a variableTest Case: 15.26.2-variable-21Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-variable-20 { the left-hand side must be a variable } { empty_main T15262var20 { int i = 1; (i + i) += 1; } } {FAIL}
the left-hand side must be a variableTest Case: 15.26.2-variable-22Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-variable-21 { the left-hand side must be a variable } { empty_main T15262var21 { int i = 1; (i += 1) += 1; } } {FAIL}
the left-hand side must be a variableTest Case: 15.26.2-variable-23Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-variable-22 { the left-hand side must be a variable } { empty_main T15262var22 { 1 += 1; } } {FAIL}
the left-hand side must be a variableTest Case: 15.26.2-variable-24Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-variable-23 { the left-hand side must be a variable } { empty_main T15262var23 { (1) += 1; } } {FAIL}
the left-hand side must be a variableTest Case: 15.26.2-variable-25Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-variable-24 { the left-hand side must be a variable } { empty_main T15262var24 { null += "oops"; } } {FAIL}
the left-hand side must be a variableTest Case: 15.26.2-variable-26Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-variable-25 { the left-hand side must be a variable } { empty_main T15262var25 { (null) += "oops"; } } {FAIL}
the left-hand side must be a variableTest Case: 15.26.2-variable-27Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-variable-26 { the left-hand side must be a variable } { empty_main T15262var26 { true += "oops"; } } {FAIL}
the left-hand side must be a variableTest Case: 15.26.2-variable-28Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-variable-27 { the left-hand side must be a variable } { empty_main T15262var27 { (true) += "oops"; } } {FAIL}
the left-hand side must be a variableTest Case: 15.26.2-variable-29Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-variable-28 { the left-hand side must be a variable } { empty_main T15262var28 { "" += "oops"; } } {FAIL}
the left-hand side must be a variableTest Case: 15.26.2-associative-1Expected Result: FAIL
Regression Test:
tcltest::test 15.26.2-variable-29 { the left-hand side must be a variable } { empty_main T15262var29 { ("") += "oops"; } } {FAIL}
assignment is right-associativeExpected Result: PASS
Regression Test:
tcltest::test 15.26.2-associative-1 { assignment is right-associative } { empty_main T15262assoc1 { int i = 1; i += i += 1; i += (i += 1); } } {PASS}
tests/jls/expressions/constant-expression
literals are constant expressionsTest Case: 15.28-primitive-2Expected Result: PASS
Regression Test:
tcltest::test 15.28-primitive-1 { literals are constant expressions } { switch_labels T1528p1 int {case 1: case '1':} } {PASS}
literals are constant expressionsTest Case: 15.28-primitive-3Expected Result: PASS
Regression Test:
tcltest::test 15.28-primitive-2 { literals are constant expressions } { constant_expression T1528p2 {1L == 1L} {1f == 1f} {1.0 == 1.0} {true} } {PASS}
casts can form constant expressionsTest Case: 15.28-primitive-4Expected Result: PASS
Regression Test:
tcltest::test 15.28-primitive-3 { casts can form constant expressions } { constant_expression T1528p3 {(boolean) true} {(int) 1L == (float) 1.0} {(char) 0x61 == 'a'} {(char) 97.0D == 'a'} {(double) 'a' == 97.0D} {(int) 97L == (int) 'a'} } {PASS}
Unary +, -, ~, ! form constant expressionsTest Case: 15.28-primitive-5Expected Result: PASS
Regression Test:
tcltest::test 15.28-primitive-4 { Unary +, -, ~, ! form constant expressions } { constant_expression T1528p4 {+2 == 2} {-0x80000000 == 0x80000000} {~0 == 0xffffffff} {!false} } {PASS}
++ and -- are not constant expressionsTest Case: 15.28-primitive-6Expected Result: FAIL
Regression Test:
tcltest::test 15.28-primitive-5 { ++ and -- are not constant expressions } { empty_class T1528p5 { void foo(int i) { switch (i) { case i++: } } } } {FAIL}
++ and -- are not constant expressionsTest Case: 15.28-primitive-7Expected Result: FAIL
Regression Test:
tcltest::test 15.28-primitive-6 { ++ and -- are not constant expressions } { empty_class T1528p6 { void foo(int i) { switch (i) { case i--: } } } } {FAIL}
*, /, and % form constant expressionsTest Case: 15.28-primitive-8Expected Result: PASS
Regression Test:
tcltest::test 15.28-primitive-7 { *, /, and % form constant expressions } { constant_expression T1528p7 {5 * 3 == 15} {5 / 3 == 1} {5 % 3 == 2} } {PASS}
+ and - form constant expressionsTest Case: 15.28-primitive-9Expected Result: PASS
Regression Test:
tcltest::test 15.28-primitive-8 { + and - form constant expressions } { constant_expression T1528p8 {1 + 2 == 3} {1 - 2 == -1} } {PASS}
<<, >>, and >>> form constant expressionsTest Case: 15.28-primitive-10Expected Result: PASS
Regression Test:
tcltest::test 15.28-primitive-9 { <<, >>, and >>> form constant expressions } { constant_expression T1528p9 {2 << 1 == 4} {2 >> 1 == 1} {-2 >>> 1 == 0x7fffffff} } {PASS}
<, <=, >, and >= form constant expressionsTest Case: 15.28-primitive-11Expected Result: PASS
Regression Test:
tcltest::test 15.28-primitive-10 { <, <=, >, and >= form constant expressions } { constant_expression T1528p10 {1 < 2} {2 <= 2} {2 > 1} {1 >= 1} } {PASS}
== and != form constant expressionsTest Case: 15.28-primitive-12Expected Result: PASS
Regression Test:
tcltest::test 15.28-primitive-11 { == and != form constant expressions } { constant_expression T1528p11 {1 == 1} {1 != 2} {true == true} {true != false} {'a' == 'a'} {'a' != 'b'} } {PASS}
bitwise &, ^, and | form constant expressionsTest Case: 15.28-primitive-13Expected Result: PASS
Regression Test:
tcltest::test 15.28-primitive-12 { bitwise &, ^, and | form constant expressions } { constant_expression T1528p12 {(0xaa & 0xa5) == 0xa0} {(0xaa ^ 0xa5) == 0x0f} {(0xaa | 0xa5) == 0xaf} } {PASS}
logical &, ^, and | form constant expressionsTest Case: 15.28-primitive-14Expected Result: PASS
Regression Test:
tcltest::test 15.28-primitive-13 { logical &, ^, and | form constant expressions } { constant_expression T1528p13 {true & true} {true ^ false} {false | true} } {PASS}
&& and || form constant expressionsTest Case: 15.28-primitive-15Expected Result: PASS
Regression Test:
tcltest::test 15.28-primitive-14 { && and || form constant expressions } { constant_expression T1528p14 {true && true} {true || false} } {PASS}
short-circuited portion of && or || must still be constant expressionsTest Case: 15.28-primitive-16Expected Result: FAIL
Regression Test:
tcltest::test 15.28-primitive-15 { short-circuited portion of && or || must still be constant expressions } { empty_main T1528p15 { boolean t = true, f = false; switch (args.length) { case 0: case ((false && t) ? 0 : 1): case ((true || f) ? 2 : 0): } } } {FAIL}
?: forms a constant expressionTest Case: 15.28-primitive-17Expected Result: PASS
Regression Test:
tcltest::test 15.28-primitive-16 { ?: forms a constant expression } { constant_expression T1528p16 {true ? true : false} } {PASS}
unused portion of ?: must still be a constant expressionTest Case: 15.28-simple-name-1Expected Result: FAIL
Regression Test:
tcltest::test 15.28-primitive-17 { unused portion of ?: must still be a constant expression } { empty_main T1528p17 { int i1 = 1, i2 = 2; switch (args.length) { case 0: case (true ? 1 : i1): case (false ? i2 : 2): } } } {FAIL}
a final variable initialized by a constant expression is a constant expressionTest Case: 15.28-simple-name-2Expected Result: PASS
Regression Test:
tcltest::test 15.28-simple-name-1 { a final variable initialized by a constant expression is a constant expression } { empty_class T1528sn1 { static final int i = 1; void foo (int j) { switch (j) { case i: } } } } {PASS}
a final variable initialized by a constant expression is a constant expressionTest Case: 15.28-simple-name-3Expected Result: PASS
Regression Test:
tcltest::test 15.28-simple-name-2 { a final variable initialized by a constant expression is a constant expression } { empty_class T1528sn2 { final int i = 1; void foo (int j) { switch (j) { case i: } } } } {PASS}
a final variable initialized by a constant expression is a constant expressionTest Case: 15.28-simple-name-4Expected Result: PASS
Regression Test:
tcltest::test 15.28-simple-name-3 { a final variable initialized by a constant expression is a constant expression } { empty_class T1528sn3 { void foo (int j) { final int i = 1; switch (j) { case i: } } } } {PASS}
a final variable initialized by a constant expression is a constant expressionTest Case: 15.28-simple-name-5Expected Result: PASS
Regression Test:
tcltest::test 15.28-simple-name-4 { a final variable initialized by a constant expression is a constant expression } { empty_class T1528sn4 { static final int i = 1 + 1; void foo (int j) { switch (j) { case i: } } } } {PASS}
a final variable initialized by a constant expression is a constant expressionTest Case: 15.28-simple-name-6Expected Result: PASS
Regression Test:
tcltest::test 15.28-simple-name-5 { a final variable initialized by a constant expression is a constant expression } { empty_class T1528sn5 { final int i = 1 - 1; void foo (int j) { switch (j) { case i: } } } } {PASS}
a final variable initialized by a constant expression is a constant expressionTest Case: 15.28-simple-name-7Expected Result: PASS
Regression Test:
tcltest::test 15.28-simple-name-6 { a final variable initialized by a constant expression is a constant expression } { empty_class T1528sn6 { void foo (int j) { final int i = true ? 1 : 0; switch (j) { case i: } } } } {PASS}
a final variable initialized by a final variable that is initialized by constant expression is a constant expressionTest Case: 15.28-simple-name-8Expected Result: PASS
Regression Test:
tcltest::test 15.28-simple-name-7 { a final variable initialized by a final variable that is initialized by constant expression is a constant expression } { empty_class T1528sn7 { static final int i1 = 1; static final int i2 = i1; void foo (int j) { switch (j) { case i2: } } } } {PASS}
a final variable initialized by a final variable that is initialized by constant expression is a constant expressionTest Case: 15.28-simple-name-9Expected Result: PASS
Regression Test:
tcltest::test 15.28-simple-name-8 { a final variable initialized by a final variable that is initialized by constant expression is a constant expression } { empty_class T1528sn8 { final int i1 = 2 / 1; final int i2 = i1; void foo (int j) { switch (j) { case i2: } } } } {PASS}
a final variable initialized by a final variable that is initialized by constant expression is a constant expressionTest Case: 15.28-nonconst-simple-name-1Expected Result: PASS
Regression Test:
tcltest::test 15.28-simple-name-9 { a final variable initialized by a final variable that is initialized by constant expression is a constant expression } { empty_class T1528sn9 { void foo (int j) { final int i1 = 2 * 2; final int i2 = i1; switch (j) { case i2: } } } } {PASS}
a non-final variable initialized by a constant expression is not a constant expressionTest Case: 15.28-nonconst-simple-name-2Expected Result: FAIL
Regression Test:
tcltest::test 15.28-nonconst-simple-name-1 { a non-final variable initialized by a constant expression is not a constant expression } { empty_class T1528nsn1 { int i = 1; void foo (int j) { switch (j) { case i: } } } } {FAIL}
a final variable initialized by a non-final variable is not a constant expressionTest Case: 15.28-nonconst-simple-name-3Expected Result: FAIL
Regression Test:
tcltest::test 15.28-nonconst-simple-name-2 { a final variable initialized by a non-final variable is not a constant expression } { empty_class T1528nsn2 { int i1 = 1; final int i2 = i1; void foo (int j) { switch (j) { case i2: } } } } {FAIL}
a final variable initialized by a non-constant expression is not a constant expressionTest Case: 15.28-nonconst-simple-name-4Expected Result: FAIL
Regression Test:
tcltest::test 15.28-nonconst-simple-name-3 { a final variable initialized by a non-constant expression is not a constant expression } { empty_class T1528nsn3 { int i1 = 0; final int i2 = i1++; void foo (int j) { switch (j) { case i2: } } } } {FAIL}
an argument variable with the final modifier is not a constant expressionTest Case: 15.28-nonconst-simple-name-5Expected Result: FAIL
Regression Test:
tcltest::test 15.28-nonconst-simple-name-4 { an argument variable with the final modifier is not a constant expression } { empty_class T1528nsn4 { void foo (final int i) { switch (i) { case i: } } } } {FAIL}
a final variable initialized by an argument variable with the final modifier is not a constant expressionTest Case: 15.28-nonconst-simple-name-6Expected Result: FAIL
Regression Test:
tcltest::test 15.28-nonconst-simple-name-5 { a final variable initialized by an argument variable with the final modifier is not a constant expression } { empty_class T1528nsn5 { void foo (final int i) { final int j = i; switch (i) { case j: } } } } {FAIL}
a final variable initialized by a function invocation is not a constant expressionTest Case: 15.28-nonconst-simple-name-7Expected Result: FAIL
Regression Test:
tcltest::test 15.28-nonconst-simple-name-6 { a final variable initialized by a function invocation is not a constant expression } { empty_class T1528nsn6 { void foo (int i) { final int j = Integer.parseInt("1"); switch (i) { case j: } } } } {FAIL}
a final variable initialized by a ternary conditional operator with a non-constant value is not a constant expressionTest Case: 15.28-uninitialized-simple-name-1Expected Result: FAIL
Regression Test:
tcltest::test 15.28-nonconst-simple-name-7 { a final variable initialized by a ternary conditional operator with a non-constant value is not a constant expression } { empty_class T1528nsn7 { void foo (int i) { final int j = true ? 1 : Integer.parseInt("1"); switch (i) { case j: } } } } {FAIL}
a final variable that does not have an initializer is not a constant expressionTest Case: 15.28-uninitialized-simple-name-2Expected Result: FAIL
Regression Test:
tcltest::test 15.28-uninitialized-simple-name-1 { a final variable that does not have an initializer is not a constant expression } { empty_class T1528usn1 { static final int i; static { i = 1; } void foo (int j) { switch (j) { case i: } } } } {FAIL}
a final variable that does not have an initializer is not a constant expressionTest Case: 15.28-uninitialized-simple-name-3Expected Result: FAIL
Regression Test:
tcltest::test 15.28-uninitialized-simple-name-2 { a final variable that does not have an initializer is not a constant expression } { empty_class T1528usn2 { static final int i; static { i = Integer.parseInt("1"); } void foo (int j) { switch (j) { case i: } } } } {FAIL}
a final variable that does not have an initializer is not a constant expressionTest Case: 15.28-uninitialized-simple-name-4Expected Result: FAIL
Regression Test:
tcltest::test 15.28-uninitialized-simple-name-3 { a final variable that does not have an initializer is not a constant expression } { empty_class T1528usn3 { void foo (int j) { final int i; i = 1; switch (j) { case i: } } } } {FAIL}
a final variable that does not have an initializer is not a constant expressionTest Case: 15.28-cast-simple-name-1Expected Result: FAIL
Regression Test:
tcltest::test 15.28-uninitialized-simple-name-4 { a final variable that does not have an initializer is not a constant expression } { empty_class T1528usn4 { void foo (int j) { final int i; i = Integer.parseInt("1"); switch (j) { case i: } } } } {FAIL}
a final variable initialized by a constant expression and then cast to a primitive is a constant expressionTest Case: 15.28-cast-simple-name-2Expected Result: PASS
Regression Test:
tcltest::test 15.28-cast-simple-name-1 { a final variable initialized by a constant expression and then cast to a primitive is a constant expression } { empty_class T1528csn1 { final long l1 = 1L; final long l2 = Long.MAX_VALUE; void foo (int j) { switch (j) { case (int) l1: case (int) l2: } } } } {PASS}
a final variable initialized by a constant expression and then cast to a primitive is a constant expressionTest Case: 15.28-cast-simple-name-3Expected Result: PASS
Regression Test:
tcltest::test 15.28-cast-simple-name-2 { a final variable initialized by a constant expression and then cast to a primitive is a constant expression } { empty_class T1528csn2 { final boolean t = true; void foo (int j) { switch (j) { case 0: case ((boolean) t ? 1 : 0): } } } } {PASS}
any number of casts can be applied to a constant expressionTest Case: 15.28-qualified-name-1Expected Result: PASS
Regression Test:
tcltest::test 15.28-cast-simple-name-3 { any number of casts can be applied to a constant expression } { empty_class T1528csn3 { final byte b = (byte) (float) 1.0D; final char c = (char) b; final short s = (short) c; final int i = (int) s; final long l = (long) i; void foo (int j) { switch (j) { case 0: case (((double) l == 1.0D) ? (int) l : 0): case 2: } } } } {PASS}
qualified references of final constant fields are constantTest Case: 15.28-qualified-name-2Expected Result: PASS
Regression Test:
tcltest::test 15.28-qualified-name-1 { qualified references of final constant fields are constant } { empty_class T1528qn1 { static final int i = 1; void foo(int j) { switch (j) { case T1528qn1.i: case Integer.MAX_VALUE: } } } } {PASS}
qualified references of final constant fields are constantTest Case: 15.28-qualified-name-3Expected Result: FAIL
Regression Test:
tcltest::test 15.28-qualified-name-2 { qualified references of final constant fields are constant } { empty_class T1528qn2 { static int i = 1; void foo(int j) { switch (j) { case T1528qn2.i: } } } } {FAIL}
qualified references of final constant fields are constantTest Case: 15.28-qualified-name-4Expected Result: FAIL
Regression Test:
tcltest::test 15.28-qualified-name-3 { qualified references of final constant fields are constant } { empty_class T1528qn3 { static int i = 1; static final int i1 = i; void foo(int j) { switch (j) { case T1528qn3.i1: } } } } {FAIL}
qualified references of final constant fields are constantTest Case: 15.28-qualified-name-5Expected Result: FAIL
Regression Test:
tcltest::test 15.28-qualified-name-4 { qualified references of final constant fields are constant } { empty_class T1528qn4 { static final int i; static {i = 1;} void foo(int j) { switch (j) { case T1528qn4.i: } } } } {FAIL}
qualified references of final constant fields must fit the form TypeName.IdentifierTest Case: 15.28-qualified-name-6Expected Result: FAIL
Regression Test:
tcltest::test 15.28-qualified-name-5 { qualified references of final constant fields must fit the form TypeName.Identifier } { empty_class T1528qn5 { static final T1528qn5 t = new T1528qn5(); final int i = 1; void foo(int j) { switch (j) { case T1528qn5.t.i: } } } } {FAIL}
qualified references of final constant fields must fit the form TypeName.IdentifierTest Case: 15.28-qualified-name-7Expected Result: FAIL
Regression Test:
tcltest::test 15.28-qualified-name-6 { qualified references of final constant fields must fit the form TypeName.Identifier } { empty_class T1528qn6 { static final T1528qn6 t = new T1528qn6(); final int i = 1; void foo(int j) { switch (j) { case t.i: } } } } {FAIL}
qualified references of final constant fields must fit the form TypeName.IdentifierTest Case: 15.28-qualified-name-8Expected Result: FAIL
Regression Test:
tcltest::test 15.28-qualified-name-7 { qualified references of final constant fields must fit the form TypeName.Identifier } { empty_class T1528qn7 { static final T1528qn7 t = new T1528qn7(); final int i = 1; void foo(int j) { switch (j) { case T1528qn7.t.i: } } } } {FAIL}
qualified references of final constant fields must fit the form TypeName.IdentifierTest Case: 15.28-qualified-name-9Expected Result: FAIL
Regression Test:
tcltest::test 15.28-qualified-name-8 { qualified references of final constant fields must fit the form TypeName.Identifier } { empty_class T1528qn8 { static final T1528qn8 t = new T1528qn8(); static final int i = 1; void foo(int j) { switch (j) { case t.i: } } } } {FAIL}
qualified references of final constant fields must fit the form TypeName.IdentifierTest Case: 15.28-qualified-name-10Expected Result: FAIL
Regression Test:
tcltest::test 15.28-qualified-name-9 { qualified references of final constant fields must fit the form TypeName.Identifier } { empty_class T1528qn9 { static final int i = 1; void foo(int j) { final T1528qn9 t = new T1528qn9(); switch (j) { case t.i: } } } } {FAIL}
qualified references of final constant fields must fit the form TypeName.IdentifierTest Case: 15.28-string-1Expected Result: FAIL
Regression Test:
tcltest::test 15.28-qualified-name-10 { qualified references of final constant fields must fit the form TypeName.Identifier } { empty_class T1528qn10 { final int i = 1; void foo(int j) { final T1528qn10 t = new T1528qn10(); switch (j) { case t.i: } } } } {FAIL}
literals are constant expressionsTest Case: 15.28-string-2Expected Result: PASS
Regression Test:
tcltest::test 15.28-string-1 { literals are constant expressions } { constant_expression T1528s1 {"" == ""} {"hello, world" == "hello, world"} } {PASS}
literals are constant expressionsTest Case: 15.28-string-3Expected Result: PASS
Regression Test:
tcltest::test 15.28-string-2 { literals are constant expressions } { constant_expression T1528s2 {"" + 1 == "1"} {"" + 1L == "1"} {"" + 1f == "1.0"} {"" + 1.0 == "1.0"} {"" + '1' == "1"} {"" + true == "true"} } {PASS}
casts to type String are constant expressionsTest Case: 15.28-string-4Expected Result: PASS
Regression Test:
tcltest::test 15.28-string-3 { casts to type String are constant expressions } { constant_expression T1528s3 {(String) "" == ""} } {PASS}
casts to primitive types are constant expressionsTest Case: 15.28-string-5Expected Result: PASS
Regression Test:
tcltest::test 15.28-string-4 { casts to primitive types are constant expressions } { constant_expression T1528s3 {"" + (boolean) true == "true"} {"" + (int) 1.5 == "1"} } {PASS}
Unary +, -, ~, ! form constant expressionsTest Case: 15.28-string-6Expected Result: PASS
Regression Test:
tcltest::test 15.28-string-5 { Unary +, -, ~, ! form constant expressions } { constant_expression T1528s5 {"" + +2 == "2"} {"" + -0x80000000 == "-2147483648"} {"" + ~0 == "-1"} {"" + !false == "true"} } {PASS}
*, /, and % form constant expressionsTest Case: 15.28-string-7Expected Result: PASS
Regression Test:
tcltest::test 15.28-string-6 { *, /, and % form constant expressions } { constant_expression T1528s6 {"" + 5 * 3 == "15"} {"" + 5 / 3 == "1"} {"" + 5 % 3 == "2"} } {PASS}
String + forms constant expressionsTest Case: 15.28-string-8Expected Result: PASS
Regression Test:
tcltest::test 15.28-string-7 { String + forms constant expressions } { constant_expression T1528s7 {"" + "test" + "ing" == "testing"} {"a" + "b" == "\u0061b"} {"" + ("1" + '2' + 3 +4L) == "1234"} } {PASS}
+ and - form constant expressionsTest Case: 15.28-string-9Expected Result: PASS
Regression Test:
tcltest::test 15.28-string-8 { + and - form constant expressions } { constant_expression T1528s8 {"" + (1 + 2) == "3"} {"" + (1 - 2) == "-1"} } {PASS}
<<, >>, and >>> form constant expressionsTest Case: 15.28-string-10Expected Result: PASS
Regression Test:
tcltest::test 15.28-string-9 { <<, >>, and >>> form constant expressions } { constant_expression T1528s9 {"" + (2 << 1) == "4"} {"" + (2 >> 1) == "1"} {"" + (-2 >>> 1) == "2147483647"} } {PASS}
<, <=, >, and >= form constant expressionsTest Case: 15.28-string-11Expected Result: PASS
Regression Test:
tcltest::test 15.28-string-10 { <, <=, >, and >= form constant expressions} { constant_expression T1528s10 {"" + (1 < 2) == "true"} {"" + (2 <= 2) == "true"} {"" + (2 > 1) == "true"} {"" + (1 >= 1) == "true"} } {PASS}
== and != form constant expressionsTest Case: 15.28-string-12Expected Result: PASS
Regression Test:
tcltest::test 15.28-string-11 { == and != form constant expressions } { constant_expression T1528s11 {"1" == "1"} {"1" != "2"} } {PASS}
bitwise &, ^, and | form constant expressionsTest Case: 15.28-string-13Expected Result: PASS
Regression Test:
tcltest::test 15.28-string-12 { bitwise &, ^, and | form constant expressions } { constant_expression T1528s12 {"" + (0xaa & 0xa5) == "160"} {"" + (0xaa ^ 0xa5) == "15"} {"" + (0xaa | 0xa5) == "175"} } {PASS}
logical &, ^, and | form constant expressionsTest Case: 15.28-string-14Expected Result: PASS
Regression Test:
tcltest::test 15.28-string-13 { logical &, ^, and | form constant expressions} { constant_expression T1528s13 {"" + (true & true) == "true"} {"" + (true ^ false) == "true"} {"" + (false | true) == "true"} } {PASS}
&& and || form constant expressionsTest Case: 15.28-string-15Expected Result: PASS
Regression Test:
tcltest::test 15.28-string-14 { && and || form constant expressions } { constant_expression T1528s14 {"" + (true && true) == "true"} {"" + (true || false) == "true"} } {PASS}
?: forms constant expressionsTest Case: 15.28-string-16Expected Result: PASS
Regression Test:
tcltest::test 15.28-string-15 { ?: forms constant expressions } { constant_expression T1528s15 {"" + (true ? 1 : 2) == "1"} } {PASS}
?: forms constant expressionsTest Case: 15.28-string-17Expected Result: PASS
Regression Test:
tcltest::test 15.28-string-16 { ?: forms constant expressions } { constant_expression T1528s16 {(true ? "1" : "") == "1"} } {PASS}
?: forms constant expressionsTest Case: 15.28-string-18Expected Result: PASS
Regression Test:
tcltest::test 15.28-string-17 { ?: forms constant expressions } { constant_expression T1528s17 {"" + (true ? "foo" : "bar") == "foo"} {"" + (false ? "foo" : "bar") == "bar"} } {PASS}
String concatenation form constantsTest Case: 15.28-string-19Expected Result: PASS
Regression Test:
tcltest::test 15.28-string-18 { String concatenation form constants } { empty_class T1528s18 { static final String a = "a"; static final String b = "b"; void foo(int i) { final String s = a + b; switch (i) { case 0: case ((s == "ab") ? 1 : 0): } } } } {PASS}
test various uses of a constant String expressionTest Case: 15.28-simple-namestr-1Expected Result: PASS
Regression Test:
tcltest::test 15.28-string-19 { test various uses of a constant String expression } { empty_class T1528s19 { void m() { ("1" + 2).toString(); ("1" + 2).valueOf(1); } } } {PASS}
a final variable initialized by a constant expression is a constant expressionTest Case: 15.28-simple-namestr-2Expected Result: PASS
Regression Test:
tcltest::test 15.28-simple-namestr-1 { a final variable initialized by a constant expression is a constant expression } { empty_class T1528sns1 { void foo (int j) { final String s = "1"; switch (j) { case 0: case ((s == "1") ? 1 : 0): } } } } {PASS}
a final variable initialized by a constant expression is a constant expressionTest Case: 15.28-simple-namestr-3Expected Result: PASS
Regression Test:
tcltest::test 15.28-simple-namestr-2 { a final variable initialized by a constant expression is a constant expression } { empty_class T1528sns2 { void foo (int j) { final String s = "1" + "2"; switch (j) { case 0: case ((s == "12") ? 1 : 0): } } } } {PASS}
a final variable initialized by a constant expression is a constant expressionTest Case: 15.28-simple-namestr-4Expected Result: PASS
Regression Test:
tcltest::test 15.28-simple-namestr-3 { a final variable initialized by a constant expression is a constant expression } { empty_class T1528sns3 { void foo (int j) { final String s = "1" + (int) 2.0D; switch (j) { case 0: case ((s == "12") ? 1 : 0): } } } } {PASS}
a final variable initialized by a final variable that is initialized by constant expression is a constant expressionTest Case: 15.28-simple-namestr-5Expected Result: PASS
Regression Test:
tcltest::test 15.28-simple-namestr-4 { a final variable initialized by a final variable that is initialized by constant expression is a constant expression } { empty_class T1528sns4 { void foo (int j) { final String s1 = "1"; final String s2 = s1; switch (j) { case 0: case ((s2 == "1") ? 1 : 0): } } } } {PASS}
test various uses of a constant StringTest Case: 15.28-nonconst-simple-namestr-1Expected Result: PASS
Regression Test:
tcltest::test 15.28-simple-namestr-5 { test various uses of a constant String } { compile [saveas T1528sn5a.java { class T1528sn5a { static final String s = "a"; } class T1528sn5b { void m() { class Local extends T1528sn5a { void m() { s.toString(); s.valueOf(1); } } } } }] } {PASS}
a non-final variable initialized by a constant expression is not a constant expressionTest Case: 15.28-nonconst-simple-namestr-2Expected Result: FAIL
Regression Test:
tcltest::test 15.28-nonconst-simple-namestr-1 { a non-final variable initialized by a constant expression is not a constant expression } { empty_class T1528nsns1 { String s = "1"; void foo (int j) { switch (j) { case 0: case ((s == "1") ? 1 : 0): } } } } {FAIL}
a final variable initialized by a non-final variable is not a constant expressionTest Case: 15.28-nonconst-simple-namestr-3Expected Result: FAIL
Regression Test:
tcltest::test 15.28-nonconst-simple-namestr-2 { a final variable initialized by a non-final variable is not a constant expression } { empty_class T1528nsns2 { String s1 = "1"; final String s2 = s1; void foo (int j) { switch (j) { case 0: case ((s2 == "1") ? 1 : 0): } } } } {FAIL}
a final variable initialized by a function invocation is not a constant expressionTest Case: 15.28-qualified-namestr-1Expected Result: FAIL
Regression Test:
tcltest::test 15.28-nonconst-simple-namestr-3 { a final variable initialized by a function invocation is not a constant expression } { empty_class T1528nsns3 { final String s = String.valueOf(0L); void foo (int j) { switch (j) { case 0: case ((s == "0") ? 1 : 0): } } } } {FAIL}
qualified references of final constant fields are constantTest Case: 15.28-qualified-namestr-2Expected Result: PASS
Regression Test:
tcltest::test 15.28-qualified-namestr-1 { qualified references of final constant fields are constant } { empty_class T1528qns1 { static final String s = "1"; void foo(int j) { switch (j) { case 0: case ((T1528qns1.s == "1") ? 1 : 0): } } } } {PASS}
qualified references of final constant fields are constantTest Case: 15.28-qualified-namestr-3Expected Result: FAIL
Regression Test:
tcltest::test 15.28-qualified-namestr-2 { qualified references of final constant fields are constant } { empty_class T1528qns2 { static String s = "1"; void foo(int j) { switch (j) { case 0: case ((T1528qns2.s == "1") ? 1 : 0): } } } } {FAIL}
qualified references of final constant fields are constantTest Case: 15.28-qualified-namestr-4Expected Result: FAIL
Regression Test:
tcltest::test 15.28-qualified-namestr-3 { qualified references of final constant fields are constant } { empty_class T1528qns3 { static String s = "1"; static final String s1 = s; void foo(int j) { switch (j) { case 0: case ((T1528qns3.s1 == "1") ? 1 : 0): } } } } {FAIL}
qualified references of final constant fields are constantTest Case: 15.28-qualified-namestr-5Expected Result: FAIL
Regression Test:
tcltest::test 15.28-qualified-namestr-4 { qualified references of final constant fields are constant } { empty_class T1528qns4 { static final String s; static {s = "1";} void foo(int j) { switch (j) { case 0: case ((T1528qns4.s == "1") ? 1 : 0): } } } } {FAIL}
qualified references of final constant must fit the form TypeName.IdentifierTest Case: 15.28-qualified-namestr-6Expected Result: FAIL
Regression Test:
tcltest::test 15.28-qualified-namestr-5 { qualified references of final constant must fit the form TypeName.Identifier } { empty_class T1528qns5 { static final T1528qns5 t = new T1528qns5(); final String s = "1"; void foo(int j) { switch (j) { case 0: case ((T1528qns5.t.s == "1") ? 1 : 0): } } } } {FAIL}
qualified references of final constant must fit the form TypeName.IdentifierTest Case: 15.28-qualified-namestr-7Expected Result: FAIL
Regression Test:
tcltest::test 15.28-qualified-namestr-6 { qualified references of final constant must fit the form TypeName.Identifier } { empty_class T1528qns6 { static final T1528qns6 t = new T1528qns6(); final String s = "1"; void foo(int j) { switch (j) { case 0: case ((t.s == "1") ? 1 : 0): } } } } {FAIL}
qualified references of final constant must fit the form TypeName.IdentifierTest Case: 15.28-qualified-namestr-8Expected Result: FAIL
Regression Test:
tcltest::test 15.28-qualified-namestr-7 { qualified references of final constant must fit the form TypeName.Identifier } { empty_class T1528qns7 { static final T1528qns7 t = new T1528qns7(); static final String s = "1"; void foo(int j) { switch (j) { case 0: case ((t.s == "1") ? 1 : 0): } } } } {FAIL}
qualified references of final constant must fit the form TypeName.IdentifierTest Case: 15.28-qualified-namestr-9Expected Result: FAIL
Regression Test:
tcltest::test 15.28-qualified-namestr-8 { qualified references of final constant must fit the form TypeName.Identifier } { empty_class T1528qns8 { static final T1528qns8 t = new T1528qns8(); static final String s = "1"; void foo(int j) { switch (j) { case 0: case ((t.s == "1") ? 1 : 0): } } } } {FAIL}
qualified references of final constant must fit the form TypeName.IdentifierTest Case: 15.28-qualified-namestr-10Expected Result: FAIL
Regression Test:
tcltest::test 15.28-qualified-namestr-9 { qualified references of final constant must fit the form TypeName.Identifier } { empty_class T1528qns9 { static final String s = "1"; void foo(int j) { final T1528qns9 t = new T1528qns9(); switch (j) { case 0: case ((t.s == "1") ? 1 : 0): } } } } {FAIL}
qualified references of final constant must fit the form TypeName.IdentifierTest Case: 15.28-notstring-1Expected Result: FAIL
Regression Test:
tcltest::test 15.28-qualified-namestr-10 { qualified references of final constant must fit the form TypeName.Identifier } { empty_class T1528qns10 { final String s = "1"; void foo(int j) { final T1528qns10 t = new T1528qns10(); switch (j) { case 0: case ((t.s == "1") ? 1 : 0): } } } } {FAIL}
casting a String to anything other than string makes is not a constant expression, casting back to String does not reverse the processTest Case: 15.28-notstring-2Expected Result: FAIL
Regression Test:
tcltest::test 15.28-notstring-1 { casting a String to anything other than string makes is not a constant expression, casting back to String does not reverse the process } { constant_expression T1528nots1 {(String) (Object) "" == ""} } {FAIL}
anything other than type String is not a constant expressionTest Case: 15.28-notstring-3Expected Result: FAIL
Regression Test:
tcltest::test 15.28-notstring-2 { anything other than type String is not a constant expression } { empty_class T1528nots2 { final Object o = "1"; void foo (int j) { switch (j) { case 0: case ((o == "1") ? 1 : 0): } } } } {FAIL}
anything other than type String is not a constant expression, casting to String does not helpTest Case: 15.28-notstring-4Expected Result: FAIL
Regression Test:
tcltest::test 15.28-notstring-3 { anything other than type String is not a constant expression, casting to String does not help } { empty_class T1528nots3 { final Object o = "1"; void foo (int j) { switch (j) { case 0: case (((String) o == "1") ? 1 : 0): } } } } {FAIL}
anything other than type String is not a constant expressionTest Case: 15.28-null-1Expected Result: FAIL
Regression Test:
tcltest::test 15.28-notstring-4 { anything other than type String is not a constant expression } { constant_expression T1528nots4 {"" + ((Object) "") == ""} } {FAIL}
The null literal is NOT a compile-time constantTest Case: 15.28-null-2Expected Result: FAIL
Regression Test:
tcltest::test 15.28-null-1 { The null literal is NOT a compile-time constant } { constant_expression T1528null1 {null == null} } {FAIL}
The null literal is NOT a compile-time constantTest Case: 15.28-null-3Expected Result: FAIL
Regression Test:
tcltest::test 15.28-null-2 { The null literal is NOT a compile-time constant } { constant_expression T1528null2 {null != ""} } {FAIL}
The null literal is NOT a compile-time constantTest Case: 15.28-null-4Expected Result: FAIL
Regression Test:
tcltest::test 15.28-null-3 { The null literal is NOT a compile-time constant } { constant_expression T1528null3 {"" + null == "null"} } {FAIL}
The null literal is NOT a compile-time constantTest Case: 15.28-null-5Expected Result: FAIL
Regression Test:
tcltest::test 15.28-null-4 { The null literal is NOT a compile-time constant } { constant_expression T1528null4 {(String)null + (String)null == "nullnull"} } {FAIL}
The null literal is NOT a compile-time constantTest Case: 15.28-null-6Expected Result: FAIL
Regression Test:
tcltest::test 15.28-null-5 { The null literal is NOT a compile-time constant } { empty_class T1528null5 { static final String s = null; void foo(int i) { switch (i) { case 0: case (("" != s) ? 1 : 0): } } } } {FAIL}
The null literal is NOT a compile-time constantTest Case: 15.28-null-7Expected Result: FAIL
Regression Test:
tcltest::test 15.28-null-6 { The null literal is NOT a compile-time constant } { empty_class T1528null6 { void foo(int i) { final String s = null; switch (i) { case 0: case (("" != s) ? 1 : 0): } } } } {FAIL}
The null literal is NOT a compile-time constantTest Case: 15.28-example-1Expected Result: FAIL
Regression Test:
tcltest::test 15.28-null-7 { The null literal is NOT a compile-time constant } { constant_expression T1528null7 {"" + (true ? null : null) == "null"} } {FAIL}
Example constantsTest Case: 15.28-example-2Expected Result: PASS
Regression Test:
tcltest::test 15.28-example-1 { Example constants } { constant_expression T1528e1 {true} {(short)(1*2*3*4*5*6) == 720} {Integer.MAX_VALUE / 2 == 0x3fffffff} {2.0 * Math.PI == 6.283185307179586} } {PASS}
Example constantTest Case: 15.28-instanceof-1Expected Result: PASS
Regression Test:
tcltest::test 15.28-example-2 { Example constant } { constant_expression T1528e2 {"The integer " + Long.MAX_VALUE + " is mighty big." == "The integer 9223372036854775807 is mighty big."} } {PASS}
The expression argument of instanceof may be constantTest Case: 15.28-instanceof-2Expected Result: FAIL
Regression Test:
tcltest::test 15.28-instanceof-1 { The expression argument of instanceof may be constant } { constant_expression T1528i1 {null instanceof Object} } {FAIL}
instanceof does not form a constant expressionTest Case: 15.28-instanceof-3Expected Result: FAIL
Regression Test:
tcltest::test 15.28-instanceof-2 { instanceof does not form a constant expression } { constant_expression T1528i2 {"" instanceof String} } {FAIL}
instanceof does not form a constant expressionTest Case: 15.28-instanceof-4Expected Result: FAIL
Regression Test:
tcltest::test 15.28-instanceof-3 { instanceof does not form a constant expression } { constant_expression T1528i3 {"" + (null instanceof Object) == "false"} } {FAIL}
instanceof does not form a constant expressionTest Case: 15.28-instanceof-5Expected Result: FAIL
Regression Test:
tcltest::test 15.28-instanceof-4 { instanceof does not form a constant expression } { constant_expression T1528i4 {"" + ("" instanceof String) == "true"} } {FAIL}
use of a constant with instanceofTest Case: 15.28-div0-1Expected Result: PASS
Regression Test:
tcltest::test 15.28-instanceof-5 { use of a constant with instanceof } { compile [saveas T1528i5a.java { class T1528i5a { static final String s = "a"; } class T1528i5b { void m() { class Local extends T1528i5a { void m() { boolean b = s instanceof String; } } } } }] } {PASS}
divide by zero is not a compile time constant because it completes abruptlyTest Case: 15.28-div0-2Expected Result: FAIL
Regression Test:
tcltest::test 15.28-div0-1 { divide by zero is not a compile time constant because it completes abruptly } { constant_expression T1528div01 {"" + (5/0) == "0"} } {FAIL}
divide by zero is not a compile time constant because it completes abruptlyTest Case: 15.28-div0-3Expected Result: FAIL
Regression Test:
tcltest::test 15.28-div0-2 { divide by zero is not a compile time constant because it completes abruptly } { constant_expression T1528div02 {"" + (0%0) == "0"} } {FAIL}
divide by zero is not a compile time constant because it completes abruptlyTest Case: 15.28-paren-1Expected Result: FAIL
Regression Test:
tcltest::test 15.28-div0-3 { divide by zero is not a compile time constant because it completes abruptly } { constant_expression T1528div03 {"" + (8/(1-1)) == "0"} } {FAIL}
A parenthesized constant expression is constantExpected Result: PASS
Regression Test:
tcltest::test 15.28-paren-1 { A parenthesized constant expression is constant } { constant_expression T1528paren1 { ((((1)+2)+3)+4 == 10) } } {PASS}
tests/jls/definite-assignment
A blank final field may only be assigned by simple nameTest Case: 16-static-2Expected Result: FAIL
Regression Test:
tcltest::test 16-static-1 { A blank final field may only be assigned by simple name } { empty_class T16s1 { static final int i; static { T16s1.i = 1; } } } {FAIL}
A blank final field may only be assigned by simple nameTest Case: 16-static-3Expected Result: FAIL
Regression Test:
tcltest::test 16-static-2 { A blank final field may only be assigned by simple name } { empty_class T16s2 { static final int i; static { new T16s2().i = 1; } } } {FAIL}
A blank final field may only be assigned by simple nameTest Case: 16-instance-1Expected Result: PASS
Regression Test:
tcltest::test 16-static-3 { A blank final field may only be assigned by simple name } { empty_class T16s3 { static final int i; static { i = 1; } } } {PASS}
A blank final field may only be assigned by simple name or this.nameTest Case: 16-instance-2Expected Result: FAIL
Regression Test:
tcltest::test 16-instance-1 { A blank final field may only be assigned by simple name or this.name } { empty_class T16i1 { final int i; { new T16i1().i = 1; } } } {FAIL}
A blank final field may only be assigned by simple name or this.nameTest Case: 16-instance-3Expected Result: FAIL
Regression Test:
tcltest::test 16-instance-2 { A blank final field may only be assigned by simple name or this.name } { empty_class T16i2 { final T16i2 t, x; { (true ? x = new T16i2() : null).t = null; } } } {FAIL}
A blank final field may only be assigned by simple name or this.nameTest Case: 16-instance-4Expected Result: PASS
Regression Test:
tcltest::test 16-instance-3 { A blank final field may only be assigned by simple name or this.name } { empty_class T16i3 { final int i; { i = 1; } } } {PASS}
A blank final field may only be assigned by simple name or this.nameTest Case: 16-instance-5Expected Result: PASS
Regression Test:
tcltest::test 16-instance-4 { A blank final field may only be assigned by simple name or this.name } { empty_class T16i4 { final int i; { this.i = 1; } } } {PASS}
A blank final field may only be assigned by simple name or this.nameTest Case: 16-instance-6Expected Result: FAIL
Regression Test:
tcltest::test 16-instance-5 { A blank final field may only be assigned by simple name or this.name } { empty_class T16i5 { final int i; { T16i5.this.i = 1; } } } {FAIL}
A blank final field may only be assigned by simple name or this.nameTest Case: 16-instance-7Expected Result: FAIL
Regression Test:
tcltest::test 16-instance-6 { A blank final field may only be assigned by simple name or this.name } { empty_class T16i6 { final int i; { (this).i = 1; } } } {FAIL}
A blank final field may only be assigned by simple name or this.nameExpected Result: FAIL
Regression Test:
tcltest::test 16-instance-7 { A blank final field may only be assigned by simple name or this.name } { empty_class T16i7 { final int i; { (T16i7.this).i = 1; } } } {FAIL}
tests/jls/definite-assignment/expressions/boolean-conditional-and
V is DA after a && b when true iff V is DA after b when trueTest Case: 16.1.2-definite-assignment-fail-2Expected Result: FAIL
Regression Test:
tcltest::test 16.1.2-definite-assignment-fail-1 { V is DA after a && b when true iff V is DA after b when true } { empty_main T1612daf1 { boolean x, y = true; if (y && y) y = x; } } {FAIL}
V is DA after a && b when false iff V is DA after a when false and V is DA after b when falseTest Case: 16.1.2-definite-assignment-fail-3Expected Result: FAIL
Regression Test:
tcltest::test 16.1.2-definite-assignment-fail-2 { V is DA after a && b when false iff V is DA after a when false and V is DA after b when false } { empty_main T1612daf2 { boolean x, y = true; if (y && true); // DA after b, but not after a else y = x; } } {FAIL}
V is DA after a && b when false iff V is DA after a when false and V is DA after b when falseTest Case: 16.1.2-definite-assignment-fail-4Expected Result: FAIL
Regression Test:
tcltest::test 16.1.2-definite-assignment-fail-3 { V is DA after a && b when false iff V is DA after a when false and V is DA after b when false } { empty_main T1612daf3 { boolean x, y = true; if (true && y); // DA after a, but not after b else y = x; } } {FAIL}
V is DA before a iff V is DA before a && bTest Case: 16.1.2-definite-assignment-fail-5Expected Result: FAIL
Regression Test:
tcltest::test 16.1.2-definite-assignment-fail-4 { V is DA before a iff V is DA before a && b } { empty_main T1612daf4 { boolean x; boolean y = x && true; } } {FAIL}
V is DA before b iff V is DA after a when trueTest Case: 16.1.2-definite-assignment-fail-6Expected Result: FAIL
Regression Test:
tcltest::test 16.1.2-definite-assignment-fail-5 { V is DA before b iff V is DA after a when true } { empty_main T1612daf5 { boolean x, y = true; y = y && x; } } {FAIL}
V is DA after a && b iff V is DA after a && b when true and when falseTest Case: 16.1.2-definite-assignment-fail-7Expected Result: FAIL
Regression Test:
tcltest::test 16.1.2-definite-assignment-fail-6 { V is DA after a && b iff V is DA after a && b when true and when false } { empty_main T1612daf6 { boolean x, y = true; y = y && (x = true) // DA after a && b when true, but not when false y = x; } } {FAIL}
V is DA after a && b iff V is DA after a && b when true and when falseTest Case: 16.1.2-definite-assignment-pass-1Expected Result: FAIL
Regression Test:
tcltest::test 16.1.2-definite-assignment-fail-7 { V is DA after a && b iff V is DA after a && b when true and when false } { empty_main T1612daf7 { boolean x, y = true; y = true && (true ? true : y) // DA after a && b when false, // but not when true y = x; } } {FAIL}
V is DA after a && b when true iff V is DA after b when trueTest Case: 16.1.2-definite-assignment-pass-2Expected Result: PASS
Regression Test:
tcltest::test 16.1.2-definite-assignment-pass-1 { V is DA after a && b when true iff V is DA after b when true } { empty_main T1612dap1 { boolean x, y = true; if (y && false) y = x; } } {PASS}
V is DA after a && b when true iff V is DA after b when trueTest Case: 16.1.2-definite-assignment-pass-3Expected Result: PASS
Regression Test:
tcltest::test 16.1.2-definite-assignment-pass-2 { V is DA after a && b when true iff V is DA after b when true } { empty_main T1612dap2 { boolean x, y = true; if (false && y) y = x; } } {PASS}
V is DA after a && b when false iff V is DA after a when false and V is DA after b when falseTest Case: 16.1.2-definite-assignment-pass-4Expected Result: PASS
Regression Test:
tcltest::test 16.1.2-definite-assignment-pass-3 { V is DA after a && b when false iff V is DA after a when false and V is DA after b when false } { empty_main T1612dap3 { boolean x, y = true; if (true && (true ? true : y)); else y = x; } } {PASS}
V is DA before a iff V is DA before a && bTest Case: 16.1.2-definite-assignment-pass-5Expected Result: PASS
Regression Test:
tcltest::test 16.1.2-definite-assignment-pass-4 { V is DA before a iff V is DA before a && b } { empty_main T1612dap4 { boolean x = false; boolean y = x && true; } } {PASS}
V is DA before b iff V is DA after a when trueTest Case: 16.1.2-definite-assignment-pass-6Expected Result: PASS
Regression Test:
tcltest::test 16.1.2-definite-assignment-pass-5 { V is DA before b iff V is DA after a when true } { empty_main T1612dap5 { boolean x; boolean y = false && x; } } {PASS}
V is DA after a && b iff V is DA after a && b when true and when falseTest Case: 16.1.2-definite-unassignment-fail-1Expected Result: PASS
Regression Test:
tcltest::test 16.1.2-definite-assignment-pass-6 { V is DA after a && b iff V is DA after a && b when true and when false } { empty_main T1612dap6 { boolean x, y = true; y = (x = true) && y; y = x; } } {PASS}
V is DU after a && b when true iff V is DU after b when trueTest Case: 16.1.2-definite-unassignment-fail-2Expected Result: FAIL
Regression Test:
tcltest::test 16.1.2-definite-unassignment-fail-1 { V is DU after a && b when true iff V is DU after b when true } { empty_main T1612duf1 { final boolean x; boolean y = x = true; if (y && true) x = y; } } {FAIL}
V is DU after a && b when false iff V is DU after a when false and V is DU after b when falseTest Case: 16.1.2-definite-unassignment-fail-3Expected Result: FAIL
Regression Test:
tcltest::test 16.1.2-definite-unassignment-fail-2 { V is DU after a && b when false iff V is DU after a when false and V is DU after b when false } { empty_main T1612duf2 { final boolean x; boolean y = true; if ((x = true) && true); // DU after b, but not after a else x = y; } } {FAIL}
V is DU after a && b when false iff V is DU after a when false and V is DU after b when falseTest Case: 16.1.2-definite-unassignment-fail-4Expected Result: FAIL
Regression Test:
tcltest::test 16.1.2-definite-unassignment-fail-3 { V is DU after a && b when false iff V is DU after a when false and V is DU after b when false } { empty_main T1612duf3 { final boolean x, y; if (true && (x = false)); // DU after a, but not after b else x = y; } } {FAIL}
V is DU before a iff V is DU before a && bTest Case: 16.1.2-definite-unassignment-fail-5Expected Result: FAIL
Regression Test:
tcltest::test 16.1.2-definite-unassignment-fail-4 { V is DU before a iff V is DU before a && b } { empty_main T1612duf4 { final boolean x; x = true; boolean y = (x = true) && true; } } {FAIL}
V is DU before b iff V is DU after a when trueTest Case: 16.1.2-definite-unassignment-fail-6Expected Result: FAIL
Regression Test:
tcltest::test 16.1.2-definite-unassignment-fail-5 { V is DU before b iff V is DU after a when true } { empty_main T1612duf5 { final boolean x; boolean y = (x = false) && (x = true); } } {FAIL}
V is DU after a && b iff V is DU after a && b when true and when falseTest Case: 16.1.2-definite-unassignment-fail-7Expected Result: FAIL
Regression Test:
tcltest::test 16.1.2-definite-unassignment-fail-6 { V is DU after a && b iff V is DU after a && b when true and when false } { empty_main T1612duf6 { final boolean x; boolean y = false && ((x = true) || true); // DU after a && b when false, but not when true x = y; } } {FAIL}
V is DU after a && b iff V is DU after a && b when true and when falseTest Case: 16.1.2-definite-unassignment-pass-1Expected Result: FAIL
Regression Test:
tcltest::test 16.1.2-definite-unassignment-fail-7 { V is DU after a && b iff V is DU after a && b when true and when false } { empty_main T1612duf7 { final boolean x; boolean y = (x = true) && false; // DU after a && b when true, but not when false x = y; } } {FAIL}
V is DU after a && b when true iff V is DU after b when trueTest Case: 16.1.2-definite-unassignment-pass-2Expected Result: PASS
Regression Test:
tcltest::test 16.1.2-definite-unassignment-pass-1 { V is DU after a && b when true iff V is DU after b when true } { empty_main T1612dup1 { final boolean x; if ((x = true) && false) x = true; } } {PASS}
V is DU after a && b when false iff V is DU after a when false and V is DU after b when falseTest Case: 16.1.2-definite-unassignment-pass-3Expected Result: PASS
Regression Test:
tcltest::test 16.1.2-definite-unassignment-pass-2 { V is DU after a && b when false iff V is DU after a when false and V is DU after b when false } { empty_main T1612dup2 { final boolean x; if (true && ((x = false) || true)); else x = true; } } {PASS}
V is DU before a iff V is DU before a && bTest Case: 16.1.2-definite-unassignment-pass-4Expected Result: PASS
Regression Test:
tcltest::test 16.1.2-definite-unassignment-pass-3 { V is DU before a iff V is DU before a && b } { empty_main T1612dup3 { final boolean x; boolean y = (x = true) && true; } } {PASS}
V is DU before b iff V is DU after a when trueTest Case: 16.1.2-definite-unassignment-pass-5Expected Result: PASS
Regression Test:
tcltest::test 16.1.2-definite-unassignment-pass-4 { V is DU before b iff V is DU after a when true } { empty_main T1612dup4 { final boolean x; x = true; boolean y = false && (x = false); } } {PASS}
V is DU after a && b iff V is DU after a && b when true and when falseExpected Result: PASS
Regression Test:
tcltest::test 16.1.2-definite-unassignment-pass-5 { V is DU after a && b iff V is DU after a && b when true and when false } { empty_main T1612dup5 { final boolean x; boolean y = false; y = true && y; x = y; } } {PASS}
tests/jls/definite-assignment/expressions/boolean-conditional-or
V is DA after a || b when false iff V is DA after b when falseTest Case: 16.1.3-definite-assignment-fail-2Expected Result: FAIL
Regression Test:
tcltest::test 16.1.3-definite-assignment-fail-1 { V is DA after a || b when false iff V is DA after b when false } { empty_main T1613daf1 { boolean x, y = false; if (y || y); else y = x; } } {FAIL}
V is DA after a || b when true iff V is DA after a when true and V is DA after b when trueTest Case: 16.1.3-definite-assignment-fail-3Expected Result: FAIL
Regression Test:
tcltest::test 16.1.3-definite-assignment-fail-2 { V is DA after a || b when true iff V is DA after a when true and V is DA after b when true } { empty_main T1613daf2 { boolean x, y = false; if (y || false) // DA after b, but not after a y = x; } } {FAIL}
V is DA after a || b when true iff V is DA after a when true and V is DA after b when trueTest Case: 16.1.3-definite-assignment-fail-4Expected Result: FAIL
Regression Test:
tcltest::test 16.1.3-definite-assignment-fail-3 { V is DA after a || b when true iff V is DA after a when true and V is DA after b when true } { empty_main T1613daf3 { boolean x, y = false; if (false || y) // DA after a, but not after b y = x; } } {FAIL}
V is DA before a iff V is DA before a || bTest Case: 16.1.3-definite-assignment-fail-5Expected Result: FAIL
Regression Test:
tcltest::test 16.1.3-definite-assignment-fail-4 { V is DA before a iff V is DA before a || b } { empty_main T1613daf4 { boolean x; boolean y = x || false; } } {FAIL}
V is DA before b iff V is DA after a when falseTest Case: 16.1.3-definite-assignment-fail-6Expected Result: FAIL
Regression Test:
tcltest::test 16.1.3-definite-assignment-fail-5 { V is DA before b iff V is DA after a when false } { empty_main T1613daf5 { boolean x, y = false; y = y || x; } } {FAIL}
V is DA after a || b iff V is DA after a || b when true and when falseTest Case: 16.1.3-definite-assignment-fail-7Expected Result: FAIL
Regression Test:
tcltest::test 16.1.3-definite-assignment-fail-6 { V is DA after a || b iff V is DA after a || b when true and when false } { empty_main T1613daf6 { boolean x, y = false; y = y || (x = false) // DA after a || b when false, but not when true y = x; } } {FAIL}
V is DA after a || b iff V is DA after a || b when true and when falseTest Case: 16.1.3-definite-assignment-pass-1Expected Result: FAIL
Regression Test:
tcltest::test 16.1.3-definite-assignment-fail-7 { V is DA after a || b iff V is DA after a || b when true and when false } { empty_main T1613daf7 { boolean x, y = true; y = false || (false ? y : false) // DA after a || b when true, // but not when false y = x; } } {FAIL}
V is DA after a || b when false iff V is DA after b when falseTest Case: 16.1.3-definite-assignment-pass-2Expected Result: PASS
Regression Test:
tcltest::test 16.1.3-definite-assignment-pass-1 { V is DA after a || b when false iff V is DA after b when false } { empty_main T1613dap1 { boolean x, y = false; if (y || true); else y = x; } } {PASS}
V is DA after a || b when false iff V is DA after b when falseTest Case: 16.1.3-definite-assignment-pass-3Expected Result: PASS
Regression Test:
tcltest::test 16.1.3-definite-assignment-pass-2 { V is DA after a || b when false iff V is DA after b when false } { empty_main T1613dap2 { boolean x, y = false; if (true || y); else y = x; } } {PASS}
V is DA after a || b when true iff V is DA after a when true and V is DA after b when trueTest Case: 16.1.3-definite-assignment-pass-4Expected Result: PASS
Regression Test:
tcltest::test 16.1.3-definite-assignment-pass-3 { V is DA after a || b when true iff V is DA after a when true and V is DA after b when true } { empty_main T1613dap3 { boolean x, y = false; if (false || (false ? y : false)) y = x; } } {PASS}
V is DA before a iff V is DA before a || bTest Case: 16.1.3-definite-assignment-pass-5Expected Result: PASS
Regression Test:
tcltest::test 16.1.3-definite-assignment-pass-4 { V is DA before a iff V is DA before a || b } { empty_main T1613dap4 { boolean x = true; boolean y = x || false; } } {PASS}
V is DA before b iff V is DA after a when falseTest Case: 16.1.3-definite-assignment-pass-6Expected Result: PASS
Regression Test:
tcltest::test 16.1.3-definite-assignment-pass-5 { V is DA before b iff V is DA after a when false } { empty_main T1613dap5 { boolean x; boolean y = true || x; } } {PASS}
V is DA after a || b iff V is DA after a || b when true and when falseTest Case: 16.1.3-definite-unassignment-fail-1Expected Result: PASS
Regression Test:
tcltest::test 16.1.3-definite-assignment-pass-6 { V is DA after a || b iff V is DA after a || b when true and when false } { empty_main T1613dap6 { boolean x, y = false; y = (x = false) || y; y = x; } } {PASS}
V is DU after a || b when false iff V is DU after b when falseTest Case: 16.1.3-definite-unassignment-fail-2Expected Result: FAIL
Regression Test:
tcltest::test 16.1.3-definite-unassignment-fail-1 { V is DU after a || b when false iff V is DU after b when false } { empty_main T1613duf1 { final boolean x; boolean y = x = false; if (y || false); else x = y; } } {FAIL}
V is DU after a || b when true iff V is DU after a when true and V is DU after b when trueTest Case: 16.1.3-definite-unassignment-fail-3Expected Result: FAIL
Regression Test:
tcltest::test 16.1.3-definite-unassignment-fail-2 { V is DU after a || b when true iff V is DU after a when true and V is DU after b when true } { empty_main T1613duf2 { final boolean x; boolean y = false; if ((x = false) || false) // DU after b, but not after a x = y; } } {FAIL}
V is DU after a || b when true iff V is DU after a when true and V is DU after b when trueTest Case: 16.1.3-definite-unassignment-fail-4Expected Result: FAIL
Regression Test:
tcltest::test 16.1.3-definite-unassignment-fail-3 { V is DU after a || b when true iff V is DU after a when true and V is DU after b when true } { empty_main T1613duf3 { final boolean x, y; if (false || (x = true)) // DU after a, but not after b x = y; } } {FAIL}
V is DU before a iff V is DU before a || bTest Case: 16.1.3-definite-unassignment-fail-5Expected Result: FAIL
Regression Test:
tcltest::test 16.1.3-definite-unassignment-fail-4 { V is DU before a iff V is DU before a || b } { empty_main T1613duf4 { final boolean x; x = false; boolean y = (x = false) || false; } } {FAIL}
V is DU before b iff V is DU after a when falseTest Case: 16.1.3-definite-unassignment-fail-6Expected Result: FAIL
Regression Test:
tcltest::test 16.1.3-definite-unassignment-fail-5 { V is DU before b iff V is DU after a when false } { empty_main T1613duf5 { final boolean x; boolean y = (x = true) || (x = false); } } {FAIL}
V is DU after a || b iff V is DU after a || b when true and when falseTest Case: 16.1.3-definite-unassignment-fail-7Expected Result: FAIL
Regression Test:
tcltest::test 16.1.3-definite-unassignment-fail-6 { V is DU after a || b iff V is DU after a || b when true and when false } { empty_main T1613duf6 { final boolean x; boolean y = true || ((x = false) && false); // DU after a || b when true, but not when false x = y; } } {FAIL}
V is DU after a || b iff V is DU after a || b when true and when falseTest Case: 16.1.3-definite-unassignment-pass-1Expected Result: FAIL
Regression Test:
tcltest::test 16.1.3-definite-unassignment-fail-7 { V is DU after a || b iff V is DU after a || b when true and when false } { empty_main T1613duf7 { final boolean x; boolean y = (x = false) || true; // DU after a || b when false, but not when true x = y; } } {FAIL}
V is DU after a || b when false iff V is DU after b when falseTest Case: 16.1.3-definite-unassignment-pass-2Expected Result: PASS
Regression Test:
tcltest::test 16.1.3-definite-unassignment-pass-1 { V is DU after a || b when false iff V is DU after b when false } { empty_main T1613dup1 { final boolean x; if ((x = false) || true); else x = false; } } {PASS}
V is DU after a || b when true iff V is DU after a when true and V is DU after b when trueTest Case: 16.1.3-definite-unassignment-pass-3Expected Result: PASS
Regression Test:
tcltest::test 16.1.3-definite-unassignment-pass-2 { V is DU after a || b when true iff V is DU after a when true and V is DU after b when true } { empty_main T1613dup2 { final boolean x; if (false || ((x = true) && false)) x = true; } } {PASS}
V is DU before a iff V is DU before a || bTest Case: 16.1.3-definite-unassignment-pass-4Expected Result: PASS
Regression Test:
tcltest::test 16.1.3-definite-unassignment-pass-3 { V is DU before a iff V is DU before a || b } { empty_main T1613dup3 { final boolean x; boolean y = (x = false) || false; } } {PASS}
V is DU before b iff V is DU after a when falseTest Case: 16.1.3-definite-unassignment-pass-5Expected Result: PASS
Regression Test:
tcltest::test 16.1.3-definite-unassignment-pass-4 { V is DU before b iff V is DU after a when false } { empty_main T1613dup4 { final boolean x; x = false; boolean y = true || (x = true); } } {PASS}
V is DU after a || b iff V is DU after a || b when true and when falseExpected Result: PASS
Regression Test:
tcltest::test 16.1.3-definite-unassignment-pass-5 { V is DU after a || b iff V is DU after a || b when true and when false } { empty_main T1613dup5 { final boolean x; boolean y = true; y = false || y; x = y; } } {PASS}
tests/jls/definite-assignment/expressions/boolean-conditional-operator
V is DA before a iff V is DA before boolean a?b:cTest Case: 16.1.5-definite-assignment-fail-2Expected Result: FAIL
Regression Test:
tcltest::test 16.1.5-definite-assignment-fail-1 { V is DA before a iff V is DA before boolean a?b:c } { empty_main T1615daf1 { boolean x; if (x ? true : false); } } {FAIL}
V is DA before b iff V is DA after a when trueTest Case: 16.1.5-definite-assignment-fail-3Expected Result: FAIL
Regression Test:
tcltest::test 16.1.5-definite-assignment-fail-2 { V is DA before b iff V is DA after a when true } { empty_main T1615daf2 { boolean a = true, x; if (a ? x : false); } } {FAIL}
V is DA before b iff V is DA after a when trueTest Case: 16.1.5-definite-assignment-fail-4Expected Result: FAIL
Regression Test:
tcltest::test 16.1.5-definite-assignment-fail-3 { V is DA before b iff V is DA after a when true } { empty_main T1615daf3 { boolean x; if (true ? x : false); } } {FAIL}
V is DA before c iff V is DA after a when falseTest Case: 16.1.5-definite-assignment-fail-5Expected Result: FAIL
Regression Test:
tcltest::test 16.1.5-definite-assignment-fail-4 { V is DA before c iff V is DA after a when false } { empty_main T1615daf4 { boolean a = true, x; if (a ? true : x); } } {FAIL}
V is DA before c iff V is DA after a when falseTest Case: 16.1.5-definite-assignment-fail-6Expected Result: FAIL
Regression Test:
tcltest::test 16.1.5-definite-assignment-fail-5 { V is DA before c iff V is DA after a when false } { empty_main T1615daf5 { boolean x; if (false ? true : x); } } {FAIL}
V is DA after boolean a?b:c when true iff V is DA after b when true and V is DA after c when trueTest Case: 16.1.5-definite-assignment-fail-7Expected Result: FAIL
Regression Test:
tcltest::test 16.1.5-definite-assignment-fail-6 { V is DA after boolean a?b:c when true iff V is DA after b when true and V is DA after c when true } { empty_main T1615daf6 { boolean a = true, x; if (a ? true : true) a = x; } } {FAIL}
V is DA after boolean a?b:c when true iff V is DA after b when true and V is DA after c when trueTest Case: 16.1.5-definite-assignment-fail-8Expected Result: FAIL
Regression Test:
tcltest::test 16.1.5-definite-assignment-fail-7 { V is DA after boolean a?b:c when true iff V is DA after b when true and V is DA after c when true } { empty_main T1615daf7 { boolean a = true, x; if (a ? x = true : true) a = x; } } {FAIL}
V is DA after boolean a?b:c when true iff V is DA after b when true and V is DA after c when trueTest Case: 16.1.5-definite-assignment-fail-9Expected Result: FAIL
Regression Test:
tcltest::test 16.1.5-definite-assignment-fail-8 { V is DA after boolean a?b:c when true iff V is DA after b when true and V is DA after c when true } { empty_main T1615daf8 { boolean a = false, x; if (a ? true : (x = true)) a = x; } } {FAIL}
V is DA after boolean a?b:c when false iff V is DA after b when false and V is DA after c when falseTest Case: 16.1.5-definite-assignment-fail-10Expected Result: FAIL
Regression Test:
tcltest::test 16.1.5-definite-assignment-fail-9 { V is DA after boolean a?b:c when false iff V is DA after b when false and V is DA after c when false } { empty_main T1615daf9 { boolean a = true, x; if (a ? false : false); else a = x; } } {FAIL}
V is DA after boolean a?b:c when false iff V is DA after b when false and V is DA after c when falseTest Case: 16.1.5-definite-assignment-fail-11Expected Result: FAIL
Regression Test:
tcltest::test 16.1.5-definite-assignment-fail-10 { V is DA after boolean a?b:c when false iff V is DA after b when false and V is DA after c when false } { empty_main T1615daf10 { boolean a = true, x; if (a ? x = false : false); else a = x; } } {FAIL}
V is DA after boolean a?b:c when false iff V is DA after b when false and V is DA after c when falseTest Case: 16.1.5-definite-assignment-fail-12Expected Result: FAIL
Regression Test:
tcltest::test 16.1.5-definite-assignment-fail-11 { V is DA after boolean a?b:c when false iff V is DA after b when false and V is DA after c when false } { empty_main T1615daf11 { boolean a = false, x; if (a ? false : (x = false)); else a = x; } } {FAIL}
V is DA after boolean a?b:c iff V is DA after boolean a?b:c when true and V is DA after boolean a?b:c when falseTest Case: 16.1.5-definite-assignment-fail-13Expected Result: FAIL
Regression Test:
tcltest::test 16.1.5-definite-assignment-fail-12 { V is DA after boolean a?b:c iff V is DA after boolean a?b:c when true and V is DA after boolean a?b:c when false } { empty_main T1615daf12 { boolean a = true, x; if (a ? true : true); a = x; } } {FAIL}
V is DA after boolean a?b:c iff V is DA after boolean a?b:c when true and V is DA after boolean a?b:c when falseTest Case: 16.1.5-definite-assignment-fail-14Expected Result: FAIL
Regression Test:
tcltest::test 16.1.5-definite-assignment-fail-13 { V is DA after boolean a?b:c iff V is DA after boolean a?b:c when true and V is DA after boolean a?b:c when false } { empty_main T1615daf13 { boolean a = true, x; if (a ? x = true : true); a = x; } } {FAIL}
V is DA after boolean a?b:c iff V is DA after boolean a?b:c when true and V is DA after boolean a?b:c when falseTest Case: 16.1.5-definite-assignment-pass-1Expected Result: FAIL
Regression Test:
tcltest::test 16.1.5-definite-assignment-fail-14 { V is DA after boolean a?b:c iff V is DA after boolean a?b:c when true and V is DA after boolean a?b:c when false } { empty_main T1615daf14 { boolean a = false, x; if (a ? true : (x = true)); a = x; } } {FAIL}
V is DA before a iff V is DA before boolean a?b:cTest Case: 16.1.5-definite-assignment-pass-2Expected Result: PASS
Regression Test:
tcltest::test 16.1.5-definite-assignment-pass-1 { V is DA before a iff V is DA before boolean a?b:c } { empty_main T1615dap1 { boolean x = true; if (x ? true : false); } } {PASS}
V is DA before b iff V is DA after a when trueTest Case: 16.1.5-definite-assignment-pass-3Expected Result: PASS
Regression Test:
tcltest::test 16.1.5-definite-assignment-pass-2 { V is DA before b iff V is DA after a when true } { empty_main T1615dap2 { boolean a = true, x = true; if (a ? x : false); } } {PASS}
V is DA before b iff V is DA after a when trueTest Case: 16.1.5-definite-assignment-pass-4Expected Result: PASS
Regression Test:
tcltest::test 16.1.5-definite-assignment-pass-3 { V is DA before b iff V is DA after a when true } { empty_main T1615dap3 { boolean x = true; if (true ? x : false); } } {PASS}
V is DA before b iff V is DA after a when trueTest Case: 16.1.5-definite-assignment-pass-5Expected Result: PASS
Regression Test:
tcltest::test 16.1.5-definite-assignment-pass-4 { V is DA before b iff V is DA after a when true } { empty_main T1615dap4 { boolean x; if (false ? x : false); } } {PASS}
V is DA before b iff V is DA after a when trueTest Case: 16.1.5-definite-assignment-pass-6Expected Result: PASS
Regression Test:
tcltest::test 16.1.5-definite-assignment-pass-5 { V is DA before b iff V is DA after a when true } { empty_main T1615dap5 { boolean x; if ((x = true) ? x : false); } } {PASS}
V is DA before c iff V is DA after a when falseTest Case: 16.1.5-definite-assignment-pass-7Expected Result: PASS
Regression Test:
tcltest::test 16.1.5-definite-assignment-pass-6 { V is DA before c iff V is DA after a when false } { empty_main T1615dap6 { boolean a = true, x = true; if (a ? true : x); } } {PASS}
V is DA before c iff V is DA after a when falseTest Case: 16.1.5-definite-assignment-pass-8Expected Result: PASS
Regression Test:
tcltest::test 16.1.5-definite-assignment-pass-7 { V is DA before c iff V is DA after a when false } { empty_main T1615dap7 { boolean x = true; if (false ? true : x); } } {PASS}
V is DA before c iff V is DA after a when falseTest Case: 16.1.5-definite-assignment-pass-9Expected Result: PASS
Regression Test:
tcltest::test 16.1.5-definite-assignment-pass-8 { V is DA before c iff V is DA after a when false } { empty_main T1615dap8 { boolean x; if (true ? true : x); } } {PASS}
V is DA before c iff V is DA after a when falseTest Case: 16.1.5-definite-assignment-pass-10Expected Result: PASS
Regression Test:
tcltest::test 16.1.5-definite-assignment-pass-9 { V is DA before c iff V is DA after a when false } { empty_main T1615dap9 { boolean x; if ((x = false) ? true : x); } } {PASS}
V is DA after boolean a?b:c when true iff V is DA after b when true and V is DA after c when trueTest Case: 16.1.5-definite-assignment-pass-11Expected Result: PASS
Regression Test:
tcltest::test 16.1.5-definite-assignment-pass-10 { V is DA after boolean a?b:c when true iff V is DA after b when true and V is DA after c when true } { empty_main T1615dap10 { boolean a = true, x = true; if (a ? true : true) a = x; } } {PASS}
V is DA after boolean a?b:c when true iff V is DA after b when true and V is DA after c when trueTest Case: 16.1.5-definite-assignment-pass-12Expected Result: PASS
Regression Test:
tcltest::test 16.1.5-definite-assignment-pass-11 { V is DA after boolean a?b:c when true iff V is DA after b when true and V is DA after c when true } { empty_main T1615dap11 { boolean a = true, x; if (a ? false : (x = true)) a = x; } } {PASS}
V is DA after boolean a?b:c when true iff V is DA after b when true and V is DA after c when trueTest Case: 16.1.5-definite-assignment-pass-13Expected Result: PASS
Regression Test:
tcltest::test 16.1.5-definite-assignment-pass-12 { V is DA after boolean a?b:c when true iff V is DA after b when true and V is DA after c when true } { empty_main T1615dap12 { boolean a, x; if (true ? false : (x = true)) a = x; } } {PASS}
V is DA after boolean a?b:c when true iff V is DA after b when true and V is DA after c when trueTest Case: 16.1.5-definite-assignment-pass-14Expected Result: PASS
Regression Test:
tcltest::test 16.1.5-definite-assignment-pass-13 { V is DA after boolean a?b:c when true iff V is DA after b when true and V is DA after c when true } { empty_main T1615dap13 { boolean a = false, x; if (a ? x = true : false) a = x; } } {PASS}
V is DA after boolean a?b:c when true iff V is DA after b when true and V is DA after c when trueTest Case: 16.1.5-definite-assignment-pass-15Expected Result: PASS
Regression Test:
tcltest::test 16.1.5-definite-assignment-pass-14 { V is DA after boolean a?b:c when true iff V is DA after b when true and V is DA after c when true } { empty_main T1615dap14 { boolean a, x; if (false ? x = true : false) a = x; } } {PASS}
V is DA after boolean a?b:c when true iff V is DA after b when true and V is DA after c when trueTest Case: 16.1.5-definite-assignment-pass-16Expected Result: PASS
Regression Test:
tcltest::test 16.1.5-definite-assignment-pass-15 { V is DA after boolean a?b:c when true iff V is DA after b when true and V is DA after c when true } { empty_main T1615dap15 { boolean a = true, x; if (a ? x = true : (x = true)) a = x; } } {PASS}
V is DA after boolean a?b:c when true iff V is DA after b when true and V is DA after c when trueTest Case: 16.1.5-definite-assignment-pass-17Expected Result: PASS
Regression Test:
tcltest::test 16.1.5-definite-assignment-pass-16 { V is DA after boolean a?b:c when true iff V is DA after b when true and V is DA after c when true } { empty_main T1615dap16 { boolean a, x; if (true ? x = true : (x = true)) a = x; } } {PASS}
V is DA after boolean a?b:c when true iff V is DA after b when true and V is DA after c when trueTest Case: 16.1.5-definite-assignment-pass-18Expected Result: PASS
Regression Test:
tcltest::test 16.1.5-definite-assignment-pass-17 { V is DA after boolean a?b:c when true iff V is DA after b when true and V is DA after c when true } { empty_main T1615dap17 { boolean a = true, x; if (false ? x = true : (x = true)) a = x; } } {PASS}
V is DA after boolean a?b:c when true iff V is DA after b when true and V is DA after c when trueTest Case: 16.1.5-definite-assignment-pass-19Expected Result: PASS
Regression Test:
tcltest::test 16.1.5-definite-assignment-pass-18 { V is DA after boolean a?b:c when true iff V is DA after b when true and V is DA after c when true } { empty_main T1615dap18 { boolean a, x; if (true ? x = true : true) a = x; } } {PASS}
V is DA after boolean a?b:c when true iff V is DA after b when true and V is DA after c when trueTest Case: 16.1.5-definite-assignment-pass-20Expected Result: PASS
Regression Test:
tcltest::test 16.1.5-definite-assignment-pass-19 { V is DA after boolean a?b:c when true iff V is DA after b when true and V is DA after c when true } { empty_main T1615dap19 { boolean a, x; if (false ? true : (x = true)) a = x; } } {PASS}
V is DA after boolean a?b:c when true iff V is DA after b when true and V is DA after c when trueTest Case: 16.1.5-definite-assignment-pass-21Expected Result: PASS
Regression Test:
tcltest::test 16.1.5-definite-assignment-pass-20 { V is DA after boolean a?b:c when true iff V is DA after b when true and V is DA after c when true } { empty_main T1615dap20 { boolean a, x; if ((x = true) ? true : true) a = x; } } {PASS}
V is DA after boolean a?b:c when false iff V is DA after b when false and V is DA after c when falseTest Case: 16.1.5-definite-assignment-pass-22Expected Result: PASS
Regression Test:
tcltest::test 16.1.5-definite-assignment-pass-21 { V is DA after boolean a?b:c when false iff V is DA after b when false and V is DA after c when false } { empty_main T1615dap21 { boolean a = true, x = true; if (a ? false : false); else a = x; } } {PASS}
V is DA after boolean a?b:c when false iff V is DA after b when false and V is DA after c when falseTest Case: 16.1.5-definite-assignment-pass-23Expected Result: PASS
Regression Test:
tcltest::test 16.1.5-definite-assignment-pass-22 { V is DA after boolean a?b:c when false iff V is DA after b when false and V is DA after c when false } { empty_main T1615dap22 { boolean a = true, x; if (a ? true : (x = false)); else a = x; } } {PASS}
V is DA after boolean a?b:c when false iff V is DA after b when false and V is DA after c when falseTest Case: 16.1.5-definite-assignment-pass-24Expected Result: PASS
Regression Test:
tcltest::test 16.1.5-definite-assignment-pass-23 { V is DA after boolean a?b:c when false iff V is DA after b when false and V is DA after c when false } { empty_main T1615dap23 { boolean a, x; if (true ? true : (x = false)); else a = x; } } {PASS}
V is DA after boolean a?b:c when false iff V is DA after b when false and V is DA after c when falseTest Case: 16.1.5-definite-assignment-pass-25Expected Result: PASS
Regression Test:
tcltest::test 16.1.5-definite-assignment-pass-24 { V is DA after boolean a?b:c when false iff V is DA after b when false and V is DA after c when false } { empty_main T1615dap24 { boolean a = false, x; if (a ? x = false : true); else a = x; } } {PASS}
V is DA after boolean a?b:c when false iff V is DA after b when false and V is DA after c when falseTest Case: 16.1.5-definite-assignment-pass-26Expected Result: PASS
Regression Test:
tcltest::test 16.1.5-definite-assignment-pass-25 { V is DA after boolean a?b:c when false iff V is DA after b when false and V is DA after c when false } { empty_main T1615dap25 { boolean a, x; if (false ? x = false : true); else a = x; } } {PASS}
V is DA after boolean a?b:c when false iff V is DA after b when false and V is DA after c when falseTest Case: 16.1.5-definite-assignment-pass-27Expected Result: PASS
Regression Test:
tcltest::test 16.1.5-definite-assignment-pass-26 { V is DA after boolean a?b:c when false iff V is DA after b when false and V is DA after c when false } { empty_main T1615dap26 { boolean a = true, x; if (a ? x = false : (x = false)); else a = x; } } {PASS}
V is DA after boolean a?b:c when false iff V is DA after b when false and V is DA after c when falseTest Case: 16.1.5-definite-assignment-pass-28Expected Result: PASS
Regression Test:
tcltest::test 16.1.5-definite-assignment-pass-27 { V is DA after boolean a?b:c when false iff V is DA after b when false and V is DA after c when false } { empty_main T1615dap27 { boolean a, x; if (true ? x = false : (x = false)); else a = x; } } {PASS}
V is DA after boolean a?b:c when false iff V is DA after b when false and V is DA after c when falseTest Case: 16.1.5-definite-assignment-pass-29Expected Result: PASS
Regression Test:
tcltest::test 16.1.5-definite-assignment-pass-28 { V is DA after boolean a?b:c when false iff V is DA after b when false and V is DA after c when false } { empty_main T1615dap28 { boolean a = true, x; if (false ? x = false : (x = false)); else a = x; } } {PASS}
V is DA after boolean a?b:c when false iff V is DA after b when false and V is DA after c when falseTest Case: 16.1.5-definite-assignment-pass-30Expected Result: PASS
Regression Test:
tcltest::test 16.1.5-definite-assignment-pass-29 { V is DA after boolean a?b:c when false iff V is DA after b when false and V is DA after c when false } { empty_main T1615dap29 { boolean a, x; if (true ? x = false : false); else a = x; } } {PASS}
V is DA after boolean a?b:c when false iff V is DA after b when false and V is DA after c when falseTest Case: 16.1.5-definite-assignment-pass-31Expected Result: PASS
Regression Test:
tcltest::test 16.1.5-definite-assignment-pass-30 { V is DA after boolean a?b:c when false iff V is DA after b when false and V is DA after c when false } { empty_main T1615dap30 { boolean a, x; if (false ? false : (x = false)); else a = x; } } {PASS}
V is DA after boolean a?b:c when false iff V is DA after b when false and V is DA after c when falseTest Case: 16.1.5-definite-assignment-pass-32Expected Result: PASS
Regression Test:
tcltest::test 16.1.5-definite-assignment-pass-31 { V is DA after boolean a?b:c when false iff V is DA after b when false and V is DA after c when false } { empty_main T1615dap31 { boolean a, x; if ((x = false) ? false : false); else a = x; } } {PASS}
V is DA after boolean a?b:c iff V is DA after boolean a?b:c when true and V is DA after boolean a?b:c when falseTest Case: 16.1.5-definite-assignment-pass-33Expected Result: PASS
Regression Test:
tcltest::test 16.1.5-definite-assignment-pass-32 { V is DA after boolean a?b:c iff V is DA after boolean a?b:c when true and V is DA after boolean a?b:c when false } { empty_main T1615dap32 { boolean a = true, x = true; if (a ? true : true); a = x; } } {PASS}
V is DA after boolean a?b:c iff V is DA after boolean a?b:c when true and V is DA after boolean a?b:c when falseTest Case: 16.1.5-definite-assignment-pass-34Expected Result: PASS
Regression Test:
tcltest::test 16.1.5-definite-assignment-pass-33 { V is DA after boolean a?b:c iff V is DA after boolean a?b:c when true and V is DA after boolean a?b:c when false } { empty_main T1615dap33 { boolean a, x; if ((x = true) ? true : true); a = x; } } {PASS}
V is DA after boolean a?b:c iff V is DA after boolean a?b:c when true and V is DA after boolean a?b:c when falseTest Case: 16.1.5-definite-assignment-pass-35Expected Result: PASS
Regression Test:
tcltest::test 16.1.5-definite-assignment-pass-34 { V is DA after boolean a?b:c iff V is DA after boolean a?b:c when true and V is DA after boolean a?b:c when false } { empty_main T1615dap34 { boolean a = true, x; if (a ? x = true : (x = true)); a = x; } } {PASS}
V is DA after boolean a?b:c iff V is DA after boolean a?b:c when true and V is DA after boolean a?b:c when falseTest Case: 16.1.5-definite-assignment-pass-36Expected Result: PASS
Regression Test:
tcltest::test 16.1.5-definite-assignment-pass-35 { V is DA after boolean a?b:c iff V is DA after boolean a?b:c when true and V is DA after boolean a?b:c when false } { empty_main T1615dap35 { boolean a, x; if (true ? x = true : false); a = x; } } {PASS}
V is DA after boolean a?b:c iff V is DA after boolean a?b:c when true and V is DA after boolean a?b:c when falseTest Case: 16.1.5-definite-unassignment-fail-1Expected Result: PASS
Regression Test:
tcltest::test 16.1.5-definite-assignment-pass-36 { V is DA after boolean a?b:c iff V is DA after boolean a?b:c when true and V is DA after boolean a?b:c when false } { empty_main T1615dap36 { boolean a, x; if (false ? true : (x = true)); a = x; } } {PASS}
V is DU before a iff V is DU before boolean a?b:cTest Case: 16.1.5-definite-unassignment-fail-2Expected Result: FAIL
Regression Test:
tcltest::test 16.1.5-definite-unassignment-fail-1 { V is DU before a iff V is DU before boolean a?b:c } { empty_main T1615duf1 { final boolean x; x = true; if ((x = true) ? true : false); } } {FAIL}
V is DU before b iff V is DU after a when trueTest Case: 16.1.5-definite-unassignment-fail-3Expected Result: FAIL
Regression Test:
tcltest::test 16.1.5-definite-unassignment-fail-2 { V is DU before b iff V is DU after a when true } { empty_main T1615duf2 { final boolean x; boolean a = x = true; if (a ? x = true : false); } } {FAIL}
V is DU before b iff V is DU after a when trueTest Case: 16.1.5-definite-unassignment-fail-4Expected Result: FAIL
Regression Test:
tcltest::test 16.1.5-definite-unassignment-fail-3 { V is DU before b iff V is DU after a when true } { empty_main T1615duf3 { final boolean x; x = true; if (true ? x = true : false); } } {FAIL}
V is DU before b iff V is DU after a when trueTest Case: 16.1.5-definite-unassignment-fail-5Expected Result: FAIL
Regression Test:
tcltest::test 16.1.5-definite-unassignment-fail-4 { V is DU before b iff V is DU after a when true } { empty_main T1615duf4 { final boolean x; if ((x = false) ? x = true : false); } } {FAIL}
V is DU before c iff V is DU after a when falseTest Case: 16.1.5-definite-unassignment-fail-6Expected Result: FAIL
Regression Test:
tcltest::test 16.1.5-definite-unassignment-fail-5 { V is DU before c iff V is DU after a when false } { empty_main T1615duf5 { final boolean x; boolean a = x = true; if (a ? true : (x = true)); } } {FAIL}
V is DU before c iff V is DU after a when falseTest Case: 16.1.5-definite-unassignment-fail-7Expected Result: FAIL
Regression Test:
tcltest::test 16.1.5-definite-unassignment-fail-6 { V is DU before c iff V is DU after a when false } { empty_main T1615duf6 { final boolean x; x = true; if (false ? true : (x = true)); } } {FAIL}
V is DU before c iff V is DU after a when falseTest Case: 16.1.5-definite-unassignment-pass-1Expected Result: FAIL
Regression Test:
tcltest::test 16.1.5-definite-unassignment-fail-7 { V is DU before c iff V is DU after a when false } { empty_main T1615duf7 { final boolean x; if ((x = true) ? true : (x = true)); } } {FAIL}
V is DU before a iff V is DU before boolean a?b:cTest Case: 16.1.5-definite-unassignment-pass-2Expected Result: PASS
Regression Test:
tcltest::test 16.1.5-definite-unassignment-pass-1 { V is DU before a iff V is DU before boolean a?b:c } { empty_main T1615dup1 { final boolean x; if ((x = true) ? true : false); } } {PASS}
V is DU before b iff V is DU after a when trueTest Case: 16.1.5-definite-unassignment-pass-3Expected Result: PASS
Regression Test:
tcltest::test 16.1.5-definite-unassignment-pass-2 { V is DU before b iff V is DU after a when true } { empty_main T1615dup2 { final boolean x; boolean a = true; if (a ? x = true : false); } } {PASS}
V is DU before b iff V is DU after a when trueTest Case: 16.1.5-definite-unassignment-pass-4Expected Result: PASS
Regression Test:
tcltest::test 16.1.5-definite-unassignment-pass-3 { V is DU before b iff V is DU after a when true } { empty_main T1615dup3 { final boolean x; if (true ? x = true : false); } } {PASS}
V is DU before b iff V is DU after a when trueTest Case: 16.1.5-definite-unassignment-pass-5Expected Result: PASS
Regression Test:
tcltest::test 16.1.5-definite-unassignment-pass-4 { V is DU before b iff V is DU after a when true } { empty_main T1615dup4 { final boolean x; x = true; if (false ? x = true : false); } } {PASS}
V is DU before c iff V is DU after a when falseTest Case: 16.1.5-definite-unassignment-pass-6Expected Result: PASS
Regression Test:
tcltest::test 16.1.5-definite-unassignment-pass-5 { V is DU before c iff V is DU after a when false } { empty_main T1615dup5 { final boolean x; boolean a = true; if (a ? true : (x = true)); } } {PASS}
V is DU before c iff V is DU after a when falseTest Case: 16.1.5-definite-unassignment-pass-7Expected Result: PASS
Regression Test:
tcltest::test 16.1.5-definite-unassignment-pass-6 { V is DU before c iff V is DU after a when false } { empty_main T1615dup6 { final boolean x; if (false ? true : (x = true)); } } {PASS}
V is DU before c iff V is DU after a when falseTest Case: 16.1.5-not-assignable-1Expected Result: PASS
Regression Test:
tcltest::test 16.1.5-definite-unassignment-pass-7 { V is DU before c iff V is DU after a when false } { empty_main T1615dup7 { final boolean x; x = true; if (true ? true : (x = true)); } } {PASS}
DU only applies to blank finals; initialized fields cannot be assignedTest Case: 16.1.5-not-assignable-2Expected Result: FAIL
Regression Test:
tcltest::test 16.1.5-not-assignable-1 { DU only applies to blank finals; initialized fields cannot be assigned } { empty_main T1615na1 { final boolean x = true; // constant if (true ? true : (x = true)); } } {FAIL}
DU only applies to blank finals; initialized fields cannot be assignedTest Case: 16.1.5-not-assignable-3Expected Result: FAIL
Regression Test:
tcltest::test 16.1.5-not-assignable-2 { DU only applies to blank finals; initialized fields cannot be assigned } { empty_main T1615na2 { final boolean x = true; // constant if (false ? x = true : false); } } {FAIL}
DU only applies to blank finals; initialized fields cannot be assignedTest Case: 16.1.5-not-assignable-4Expected Result: FAIL
Regression Test:
tcltest::test 16.1.5-not-assignable-3 { DU only applies to blank finals; initialized fields cannot be assigned } { empty_main T1615na3 { final boolean x = Boolean.TRUE.booleanValue(); // non-constant if (true ? true : (x = true)); } } {FAIL}
DU only applies to blank finals; initialized fields cannot be assignedTest Case: 16.1.5-not-assignable-5Expected Result: FAIL
Regression Test:
tcltest::test 16.1.5-not-assignable-4 { DU only applies to blank finals; initialized fields cannot be assigned } { empty_main T1615na4 { final boolean x = Boolean.TRUE.booleanValue(); // non-constant if (false ? x = true : false); } } {FAIL}
DU only applies to blank finals; initialized fields cannot be assignedTest Case: 16.1.5-not-assignable-6Expected Result: FAIL
Regression Test:
tcltest::test 16.1.5-not-assignable-5 { DU only applies to blank finals; initialized fields cannot be assigned } { empty_class T1615na5 { void foo(final boolean x) { if (true ? true : (x = true)); } } } {FAIL}
DU only applies to blank finals; initialized fields cannot be assignedTest Case: 16.1.5-not-assignable-7Expected Result: FAIL
Regression Test:
tcltest::test 16.1.5-not-assignable-6 { DU only applies to blank finals; initialized fields cannot be assigned } { empty_class T1615na6 { void foo(final boolean x) { if (false ? x = true : false); } } } {FAIL}
DU only applies to blank finals; initialized fields cannot be assignedTest Case: 16.1.5-not-assignable-8Expected Result: FAIL
Regression Test:
tcltest::test 16.1.5-not-assignable-7 { DU only applies to blank finals; initialized fields cannot be assigned } { empty_main T1615na7 { try { throw new Exception(); } catch (final Exception x) { if (true ? true : ((x = null) == null)); } } } {FAIL}
DU only applies to blank finals; initialized fields cannot be assignedTest Case: 16.1.5-not-assignable-9Expected Result: FAIL
Regression Test:
tcltest::test 16.1.5-not-assignable-8 { DU only applies to blank finals; initialized fields cannot be assigned } { empty_main T1615na8 { try { throw new Exception(); } catch (final Exception x) { if (false ? (x = null) == null : false); } } } {FAIL}
Blank final fields cannot be assigned outside constructor/initializer.Test Case: 16.1.5-not-assignable-10Expected Result: FAIL
Regression Test:
tcltest::test 16.1.5-not-assignable-9 { Blank final fields cannot be assigned outside constructor/initializer. } { empty_class T1615na9 { static final boolean x; static { x = true; } void foo() { if (true ? true : (x = true)); } } } {FAIL}
Blank final fields cannot be assigned outside constructor/initializer.Test Case: 16.1.5-not-assignable-11Expected Result: FAIL
Regression Test:
tcltest::test 16.1.5-not-assignable-10 { Blank final fields cannot be assigned outside constructor/initializer. } { empty_class T1615na10 { static final boolean x; static { x = true; } void foo() { if (false ? x = true : true); } } } {FAIL}
Blank final fields cannot be assigned outside constructor/initializer.Test Case: 16.1.5-not-assignable-12Expected Result: FAIL
Regression Test:
tcltest::test 16.1.5-not-assignable-11 { Blank final fields cannot be assigned outside constructor/initializer. } { empty_class T1615na11 { final boolean x; { x = true; } void foo() { if (true ? true : (x = true)); } } } {FAIL}
Blank final fields cannot be assigned outside constructor/initializer.Expected Result: FAIL
Regression Test:
tcltest::test 16.1.5-not-assignable-12 { Blank final fields cannot be assigned outside constructor/initializer. } { empty_class T1615na12 { final boolean x; { x = true; } void foo() { if (false ? x = true : true); } } } {FAIL}
tests/jls/definite-assignment/expressions/assignment-expressions
final variables cannot be assigned with compound assignmentTest Case: 16.1.7-compound-assign-2Expected Result: FAIL
Regression Test:
tcltest::test 16.1.7-compound-assign-1 { final variables cannot be assigned with compound assignment } { empty_main T1617ca1 { final int i; i += 1; } } {FAIL}
final variables cannot be assigned with compound assignmentTest Case: 16.1.7-compound-assign-3Expected Result: FAIL
Regression Test:
tcltest::test 16.1.7-compound-assign-2 { final variables cannot be assigned with compound assignment } { empty_main T1617ca2 { final int i; i += 1L; } } {FAIL}
final variables cannot be assigned with compound assignmentTest Case: 16.1.7-compound-assign-4Expected Result: FAIL
Regression Test:
tcltest::test 16.1.7-compound-assign-3 { final variables cannot be assigned with compound assignment } { empty_main T1617ca3 { final String s = ""; s += ""; } } {FAIL}
final variables cannot be assigned with compound assignmentTest Case: 16.1.7-simple-definite-assignment-fail-1Expected Result: FAIL
Regression Test:
tcltest::test 16.1.7-compound-assign-4 { final variables cannot be assigned with compound assignment } { empty_main T1617ca4 { final String s = ""; s += 1; } } {FAIL}
V is DA after a=b iff either a is V or V is DA after bTest Case: 16.1.7-simple-definite-assignment-fail-2Expected Result: FAIL
Regression Test:
tcltest::test 16.1.7-simple-definite-assignment-fail-1 { V is DA after a=b iff either a is V or V is DA after b } { empty_main T1617sdaf1 { int i, x; i = 1; x++; } } {FAIL}
V is DA after a=b iff either a is V or V is DA after bTest Case: 16.1.7-simple-definite-assignment-fail-3Expected Result: FAIL
Regression Test:
tcltest::test 16.1.7-simple-definite-assignment-fail-2 { V is DA after a=b iff either a is V or V is DA after b } { empty_main T1617sdaf2 { int i, x; boolean b = true; i = (b ? x = 1 : 1); x++; } } {FAIL}
V is DA before the subexpressions of a iff V is DA before a=bTest Case: 16.1.7-simple-definite-assignment-fail-4Expected Result: FAIL
Regression Test:
tcltest::test 16.1.7-simple-definite-assignment-fail-3 { V is DA before the subexpressions of a iff V is DA before a=b } { empty_main T1617sdaf3 { int ia[] = {0}, i, x; ia[i = x]++; } } {FAIL}
V is DA before the subexpressions of a iff V is DA before a=bTest Case: 16.1.7-simple-definite-assignment-fail-5Expected Result: FAIL
Regression Test:
tcltest::test 16.1.7-simple-definite-assignment-fail-4 { V is DA before the subexpressions of a iff V is DA before a=b } { empty_class T1617sdaf4 { T1617sdaf4 t; void foo() { T1617sdaf4 x; x.t = new T1617sdaf4(); } } } {FAIL}
V is DA before b iff V is DA after the subexpressions of a in a=bTest Case: 16.1.7-simple-definite-assignment-fail-6Expected Result: FAIL
Regression Test:
tcltest::test 16.1.7-simple-definite-assignment-fail-5 { V is DA before b iff V is DA after the subexpressions of a in a=b } { empty_main T1617sdaf5 { int i, x; i = x; } } {FAIL}
V is DA before b iff V is DA after the subexpressions of a in a=bTest Case: 16.1.7-simple-definite-assignment-fail-7Expected Result: FAIL
Regression Test:
tcltest::test 16.1.7-simple-definite-assignment-fail-6 { V is DA before b iff V is DA after the subexpressions of a in a=b } { empty_main T1617sdaf6 { int ia[] = {0}, x; boolean b = true; ia[b ? x = 0 : 0] = x; } } {FAIL}
V is DA before b iff V is DA after the subexpressions of a in a=bTest Case: 16.1.7-simple-definite-assignment-fail-8Expected Result: FAIL
Regression Test:
tcltest::test 16.1.7-simple-definite-assignment-fail-7 { V is DA before b iff V is DA after the subexpressions of a in a=b } { empty_class T1617sdaf7 { T1617sdaf7 t; void foo() { T1617sdaf7 x; boolean b = true; (b ? x = new T1617sdaf7() : null).t = x; } } } {FAIL}
V is DA after boolean a=b when true iff V is DA after a=bTest Case: 16.1.7-simple-definite-assignment-fail-9Expected Result: FAIL
Regression Test:
tcltest::test 16.1.7-simple-definite-assignment-fail-8 { V is DA after boolean a=b when true iff V is DA after a=b } { empty_main T1617sdaf8 { boolean b; int x; if (b = false) x++; } } {FAIL}
V is DA after boolean a=b when false iff V is DA after a=bTest Case: 16.1.7-compound-definite-assignment-fail-1Expected Result: FAIL
Regression Test:
tcltest::test 16.1.7-simple-definite-assignment-fail-9 { V is DA after boolean a=b when false iff V is DA after a=b } { empty_main T1617sdaf9 { boolean b; int x; if (b = true); else x++; } } {FAIL}
V is DA after aTest Case: 16.1.7-compound-definite-assignment-fail-2=b iff either a is V or V is DA after b Expected Result: FAIL
Regression Test:
tcltest::test 16.1.7-compound-definite-assignment-fail-1 { V is DA after a=b iff either a is V or V is DA after b } { empty_main T1617cdaf1 { int i = 0, x; i += 1; x++; } } {FAIL}
V is DA after aTest Case: 16.1.7-compound-definite-assignment-fail-3=b iff either a is V or V is DA after b Expected Result: FAIL
Regression Test:
tcltest::test 16.1.7-compound-definite-assignment-fail-2 { V is DA after a=b iff either a is V or V is DA after b } { empty_main T1617cdaf2 { int i = 0, x; boolean b = true; i += (b ? x = 1 : 1); x++; } } {FAIL}
V is DA before the subexpressions of a iff V is DA before aTest Case: 16.1.7-compound-definite-assignment-fail-4=b Expected Result: FAIL
Regression Test:
tcltest::test 16.1.7-compound-definite-assignment-fail-3 { V is DA before the subexpressions of a iff V is DA before a=b } { empty_main T1617cdaf3 { int ia[] = {0}, i = 0, x; ia[i += x]++; } } {FAIL}
V is DA before the subexpressions of a iff V is DA before aTest Case: 16.1.7-compound-definite-assignment-fail-5=b Expected Result: FAIL
Regression Test:
tcltest::test 16.1.7-compound-definite-assignment-fail-4 { V is DA before the subexpressions of a iff V is DA before a=b } { empty_class T1617cdaf4 { String s; void foo() { T1617cdaf4 x; x.s += x = new T1617cdaf4(); } } } {FAIL}
V is DA before b iff V is DA after the subexpressions of a in aTest Case: 16.1.7-compound-definite-assignment-fail-6=b Expected Result: FAIL
Regression Test:
tcltest::test 16.1.7-compound-definite-assignment-fail-5 { V is DA before b iff V is DA after the subexpressions of a in a=b } { empty_main T1617cdaf5 { int i = 0, x; i += x; } } {FAIL}
V is DA before b iff V is DA after the subexpressions of a in aTest Case: 16.1.7-compound-definite-assignment-fail-7=b Expected Result: FAIL
Regression Test:
tcltest::test 16.1.7-compound-definite-assignment-fail-6 { V is DA before b iff V is DA after the subexpressions of a in a=b } { empty_main T1617cdaf6 { int ia[] = {0}, x; boolean b = true; ia[b ? x = 0 : 0] += x; } } {FAIL}
V is DA before b iff V is DA after the subexpressions of a in aTest Case: 16.1.7-compound-definite-assignment-fail-8=b Expected Result: FAIL
Regression Test:
tcltest::test 16.1.7-compound-definite-assignment-fail-7 { V is DA before b iff V is DA after the subexpressions of a in a=b } { empty_class T1617cdaf7 { String s; void foo() { T1617cdaf7 x; boolean b = true; (b ? x = new T1617cdaf7() : null).s += x; } } } {FAIL}
V is DA after boolean aTest Case: 16.1.7-compound-definite-assignment-fail-9=b when true iff V is DA after a =b Expected Result: FAIL
Regression Test:
tcltest::test 16.1.7-compound-definite-assignment-fail-8 { V is DA after boolean a=b when true iff V is DA after a =b } { empty_main T1617cdaf8 { boolean b = false; int x; if (b &= false) x++; } } {FAIL}
V is DA after boolean aTest Case: 16.1.7-compound-definite-assignment-fail-10=b when false iff V is DA after a =b Expected Result: FAIL
Regression Test:
tcltest::test 16.1.7-compound-definite-assignment-fail-9 { V is DA after boolean a=b when false iff V is DA after a =b } { empty_main T1617cdaf9 { boolean b = true; int x; if (b |= true); else x++; } } {FAIL}
V must be DA before a if V is a in aTest Case: 16.1.7-compound-definite-assignment-fail-11=b Expected Result: FAIL
Regression Test:
tcltest::test 16.1.7-compound-definite-assignment-fail-10 { V must be DA before a if V is a in a=b } { empty_main T1617cdaf10 { int x; x += 0; } } {FAIL}
V must be DA before a if V is a in aTest Case: 16.1.7-simple-definite-assignment-pass-1=b Expected Result: FAIL
Regression Test:
tcltest::test 16.1.7-compound-definite-assignment-fail-11 { V must be DA before a if V is a in a=b } { empty_main T1617cdaf11 { int x; x += x = 0; } } {FAIL}
V is DA after a=b iff either a is V or V is DA after bTest Case: 16.1.7-simple-definite-assignment-pass-2Expected Result: PASS
Regression Test:
tcltest::test 16.1.7-simple-definite-assignment-pass-1 { V is DA after a=b iff either a is V or V is DA after b } { empty_main T1617sdap1 { int x; x = 1; x++; } } {PASS}
V is DA after a=b iff either a is V or V is DA after bTest Case: 16.1.7-simple-definite-assignment-pass-3Expected Result: PASS
Regression Test:
tcltest::test 16.1.7-simple-definite-assignment-pass-2 { V is DA after a=b iff either a is V or V is DA after b } { empty_main T1617sdap2 { int i, x; i = x = 1; x++; } } {PASS}
V is DA before the subexpressions of a iff V is DA before a=bTest Case: 16.1.7-simple-definite-assignment-pass-4Expected Result: PASS
Regression Test:
tcltest::test 16.1.7-simple-definite-assignment-pass-3 { V is DA before the subexpressions of a iff V is DA before a=b } { empty_main T1617sdap3 { int ia[] = {0}, i, x = 0; ia[i = x]++; } } {PASS}
V is DA before the subexpressions of a iff V is DA before a=bTest Case: 16.1.7-simple-definite-assignment-pass-5Expected Result: PASS
Regression Test:
tcltest::test 16.1.7-simple-definite-assignment-pass-4 { V is DA before the subexpressions of a iff V is DA before a=b } { empty_class T1617sdap4 { T1617sdap4 t; void foo() { T1617sdap4 x = null; x.t = x; } } } {PASS}
V is DA before b iff V is DA after the subexpressions of a in a=bTest Case: 16.1.7-simple-definite-assignment-pass-6Expected Result: PASS
Regression Test:
tcltest::test 16.1.7-simple-definite-assignment-pass-5 { V is DA before b iff V is DA after the subexpressions of a in a=b } { empty_main T1617sdap5 { int i, x = 0; i = x; } } {PASS}
V is DA before b iff V is DA after the subexpressions of a in a=bTest Case: 16.1.7-simple-definite-assignment-pass-7Expected Result: PASS
Regression Test:
tcltest::test 16.1.7-simple-definite-assignment-pass-6 { V is DA before b iff V is DA after the subexpressions of a in a=b } { empty_main T1617sdap6 { int ia[] = {0}, x; ia[true ? x = 0 : 0] = x; } } {PASS}
V is DA before b iff V is DA after the subexpressions of a in a=bTest Case: 16.1.7-simple-definite-assignment-pass-8Expected Result: PASS
Regression Test:
tcltest::test 16.1.7-simple-definite-assignment-pass-7 { V is DA before b iff V is DA after the subexpressions of a in a=b } { empty_class T1617sdap7 { T1617sdap7 t; void foo() { T1617sdap7 x; (true ? x = new T1617sdap7() : null).t = x; } } } {PASS}
V is DA after boolean a=b when true iff V is DA after a=bTest Case: 16.1.7-simple-definite-assignment-pass-9Expected Result: PASS
Regression Test:
tcltest::test 16.1.7-simple-definite-assignment-pass-8 { V is DA after boolean a=b when true iff V is DA after a=b } { empty_main T1617sdap8 { boolean b; int x; if ((b = false) && false) x++; } } {PASS}
V is DA after boolean a=b when false iff V is DA after a=bTest Case: 16.1.7-compound-definite-assignment-pass-1Expected Result: PASS
Regression Test:
tcltest::test 16.1.7-simple-definite-assignment-pass-9 { V is DA after boolean a=b when false iff V is DA after a=b } { empty_main T1617sdap9 { boolean b; int x; if ((b = true) || true); else x++; } } {PASS}
V is DA after aTest Case: 16.1.7-compound-definite-assignment-pass-2=b iff either a is V or V is DA after b Expected Result: PASS
Regression Test:
tcltest::test 16.1.7-compound-definite-assignment-pass-1 { V is DA after a=b iff either a is V or V is DA after b } { empty_main T1617cdap1 { int x = 0; x += 1; x++; } } {PASS}
V is DA after aTest Case: 16.1.7-compound-definite-assignment-pass-3=b iff either a is V or V is DA after b Expected Result: PASS
Regression Test:
tcltest::test 16.1.7-compound-definite-assignment-pass-2 { V is DA after a=b iff either a is V or V is DA after b } { empty_main T1617cdap2 { int i = 0, x; i += x = 1; x++; } } {PASS}
V is DA before the subexpressions of a iff V is DA before aTest Case: 16.1.7-compound-definite-assignment-pass-4=b Expected Result: PASS
Regression Test:
tcltest::test 16.1.7-compound-definite-assignment-pass-3 { V is DA before the subexpressions of a iff V is DA before a=b } { empty_main T1617cdap3 { int ia[] = {0}, i = 0, x = 0; ia[i += x]++; } } {PASS}
V is DA before the subexpressions of a iff V is DA before aTest Case: 16.1.7-compound-definite-assignment-pass-5=b Expected Result: PASS
Regression Test:
tcltest::test 16.1.7-compound-definite-assignment-pass-4 { V is DA before the subexpressions of a iff V is DA before a=b } { empty_class T1617cdap4 { String s; void foo() { T1617cdap4 x = null; x.s += x; } } } {PASS}
V is DA before b iff V is DA after the subexpressions of a in aTest Case: 16.1.7-compound-definite-assignment-pass-6=b Expected Result: PASS
Regression Test:
tcltest::test 16.1.7-compound-definite-assignment-pass-5 { V is DA before b iff V is DA after the subexpressions of a in a=b } { empty_main T1617cdap5 { int i = 0, x = 0; i += x; } } {PASS}
V is DA before b iff V is DA after the subexpressions of a in aTest Case: 16.1.7-compound-definite-assignment-pass-7=b Expected Result: PASS
Regression Test:
tcltest::test 16.1.7-compound-definite-assignment-pass-6 { V is DA before b iff V is DA after the subexpressions of a in a=b } { empty_main T1617cdap6 { int ia[] = {0}, x; ia[true ? x = 0 : 0] += x; } } {PASS}
V is DA before b iff V is DA after the subexpressions of a in aTest Case: 16.1.7-compound-definite-assignment-pass-8=b Expected Result: PASS
Regression Test:
tcltest::test 16.1.7-compound-definite-assignment-pass-7 { V is DA before b iff V is DA after the subexpressions of a in a=b } { empty_class T1617cdap7 { String s; void foo() { T1617cdap7 x; (true ? x = new T1617cdap7() : null).s += x; } } } {PASS}
V is DA after boolean aTest Case: 16.1.7-compound-definite-assignment-pass-9=b when true iff V is DA after a =b Expected Result: PASS
Regression Test:
tcltest::test 16.1.7-compound-definite-assignment-pass-8 { V is DA after boolean a=b when true iff V is DA after a =b } { empty_main T1617cdap8 { boolean b = false; int x; if ((b &= false) && false) x++; } } {PASS}
V is DA after boolean aTest Case: 16.1.7-compound-definite-assignment-pass-10=b when false iff V is DA after a =b Expected Result: PASS
Regression Test:
tcltest::test 16.1.7-compound-definite-assignment-pass-9 { V is DA after boolean a=b when false iff V is DA after a =b } { empty_main T1617cdap9 { boolean b = true; int x; if ((b |= true) || true); else x++; } } {PASS}
V must be DA before a if V is a in aTest Case: 16.1.7-simple-definite-unassignment-fail-1=b Expected Result: PASS
Regression Test:
tcltest::test 16.1.7-compound-definite-assignment-pass-10 { V must be DA before a if V is a in a=b } { empty_main T1617cdap10 { int x = 0; x += 0; } } {PASS}
V is DU after a=b iff both a is not V and V is DU after bTest Case: 16.1.7-simple-definite-unassignment-fail-2Expected Result: FAIL
Regression Test:
tcltest::test 16.1.7-simple-definite-unassignment-fail-1 { V is DU after a=b iff both a is not V and V is DU after b } { empty_main T1617sduf1 { if (false) { final int x; x = 1; x = 1; } } } {FAIL}
V is DU after a=b iff both a is not V and V is DU after bTest Case: 16.1.7-simple-definite-unassignment-fail-3Expected Result: FAIL
Regression Test:
tcltest::test 16.1.7-simple-definite-unassignment-fail-2 { V is DU after a=b iff both a is not V and V is DU after b } { empty_main T1617sduf2 { final int x; int i; i = x = 1; x = 1; } } {FAIL}
V is DU before the subexpressions of a iff V is DU before a=bTest Case: 16.1.7-simple-definite-unassignment-fail-4Expected Result: FAIL
Regression Test:
tcltest::test 16.1.7-simple-definite-unassignment-fail-3 { V is DU before the subexpressions of a iff V is DU before a=b } { empty_main T1617sduf3 { final int x; int ia[] = {0}, i = x = 0; ia[x = i]++; } } {FAIL}
V is DU before the subexpressions of a iff V is DU before a=bTest Case: 16.1.7-simple-definite-unassignment-fail-5Expected Result: FAIL
Regression Test:
tcltest::test 16.1.7-simple-definite-unassignment-fail-4 { V is DU before the subexpressions of a iff V is DU before a=b } { empty_class T1617sduf4 { final T1617sduf4 x; int i; { x = null; (x = new T1617sduf4()).i++; } } } {FAIL}
V is DU before b iff V is DU after the subexpressions of a in a=bTest Case: 16.1.7-simple-definite-unassignment-fail-6Expected Result: FAIL
Regression Test:
tcltest::test 16.1.7-simple-definite-unassignment-fail-5 { V is DU before b iff V is DU after the subexpressions of a in a=b } { empty_main T1617sduf5 { final int x; int i = x = 0; i = x = 1; } } {FAIL}
V is DU before b iff V is DU after the subexpressions of a in a=bTest Case: 16.1.7-simple-definite-unassignment-fail-7Expected Result: FAIL
Regression Test:
tcltest::test 16.1.7-simple-definite-unassignment-fail-6 { V is DU before b iff V is DU after the subexpressions of a in a=b } { empty_main T1617sduf6 { final int x; int ia[] = {0}; boolean b = false; ia[b ? x = 0 : 0] = x = 0; } } {FAIL}
V is DU before b iff V is DU after the subexpressions of a in a=bTest Case: 16.1.7-simple-definite-unassignment-fail-8Expected Result: FAIL
Regression Test:
tcltest::test 16.1.7-simple-definite-unassignment-fail-7 { V is DU before b iff V is DU after the subexpressions of a in a=b } { empty_class T1617sduf7 { final T1617sduf7 x; T1617sduf7 t; { boolean b = false; (b ? x = new T1617sduf7() : null).t = x = null; } } } {FAIL}
V is DU after boolean a=b when true iff V is DU after a=bTest Case: 16.1.7-simple-definite-unassignment-fail-9Expected Result: FAIL
Regression Test:
tcltest::test 16.1.7-simple-definite-unassignment-fail-8 { V is DU after boolean a=b when true iff V is DU after a=b } { empty_main T1617sduf8 { boolean b; final int x; if (b = false) x++; } } {FAIL}
V is DU after boolean a=b when false iff V is DU after a=bTest Case: 16.1.7-simple-definite-unassignment-fail-10Expected Result: FAIL
Regression Test:
tcltest::test 16.1.7-simple-definite-unassignment-fail-9 { V is DU after boolean a=b when false iff V is DU after a=b } { empty_main T1617sduf9 { boolean b; final int x; if (b = true); else x++; } } {FAIL}
V must be DU after b if V is a blank final and V is a in a=bTest Case: 16.1.7-compound-definite-unassignment-fail-1Expected Result: FAIL
Regression Test:
tcltest::test 16.1.7-simple-definite-unassignment-fail-10 { V must be DU after b if V is a blank final and V is a in a=b } { empty_main T1617sduf10 { final int x; x = x = 10; } } {FAIL}
V is DU after aTest Case: 16.1.7-compound-definite-unassignment-fail-2=b iff both a is not V and V is DU after b Expected Result: FAIL
Regression Test:
tcltest::test 16.1.7-compound-definite-unassignment-fail-1 { V is DU after a=b iff both a is not V and V is DU after b } { empty_main T1617cduf1 { final int x; if (false) { x += 1; x = 1; } } } {FAIL}
V is DU after aTest Case: 16.1.7-compound-definite-unassignment-fail-3=b iff both a is not V and V is DU after b Expected Result: FAIL
Regression Test:
tcltest::test 16.1.7-compound-definite-unassignment-fail-2 { V is DU after a=b iff both a is not V and V is DU after b } { empty_main T1617cduf2 { final int x; int i; i += x = 1; x = 1; } } {FAIL}
V is DU before the subexpressions of a iff V is DU before aTest Case: 16.1.7-compound-definite-unassignment-fail-4=b Expected Result: FAIL
Regression Test:
tcltest::test 16.1.7-compound-definite-unassignment-fail-3 { V is DU before the subexpressions of a iff V is DU before a=b } { empty_main T1617cduf3 { final int x; int ia[] = {0}, i = x = 0; ia[x = i] += 1; } } {FAIL}
V is DU before the subexpressions of a iff V is DU before aTest Case: 16.1.7-compound-definite-unassignment-fail-5=b Expected Result: FAIL
Regression Test:
tcltest::test 16.1.7-compound-definite-unassignment-fail-4 { V is DU before the subexpressions of a iff V is DU before a=b } { empty_class T1617cduf4 { final T1617cduf4 x; String s; { x = null; (x = new T1617cduf4()).s += ""; } } } {FAIL}
V is DU before b iff V is DU after the subexpressions of a in aTest Case: 16.1.7-compound-definite-unassignment-fail-6=b Expected Result: FAIL
Regression Test:
tcltest::test 16.1.7-compound-definite-unassignment-fail-5 { V is DU before b iff V is DU after the subexpressions of a in a=b } { empty_main T1617cduf5 { final int x; int i = x = 0; i += x = 1; } } {FAIL}
V is DU before b iff V is DU after the subexpressions of a in aTest Case: 16.1.7-compound-definite-unassignment-fail-7=b Expected Result: FAIL
Regression Test:
tcltest::test 16.1.7-compound-definite-unassignment-fail-6 { V is DU before b iff V is DU after the subexpressions of a in a=b } { empty_main T1617cduf6 { final int x; int ia[] = {0}; ia[false ? x = 0 : 0] += x = 0; } } {FAIL}
V is DU before b iff V is DU after the subexpressions of a in aTest Case: 16.1.7-compound-definite-unassignment-fail-8=b Expected Result: FAIL
Regression Test:
tcltest::test 16.1.7-compound-definite-unassignment-fail-7 { V is DU before b iff V is DU after the subexpressions of a in a=b } { empty_class T1617cduf7 { final T1617cduf7 x; String s; { (false ? x = new T1617cduf7() : null).s += x = null; } } } {FAIL}
V is DU after boolean aTest Case: 16.1.7-compound-definite-unassignment-fail-9=b when true iff V is DU after a =b Expected Result: FAIL
Regression Test:
tcltest::test 16.1.7-compound-definite-unassignment-fail-8 { V is DU after boolean a=b when true iff V is DU after a =b } { empty_main T1617cduf8 { boolean b = false; final int x; x = 0; if (b &= false) x = 1; } } {FAIL}
V is DU after boolean aTest Case: 16.1.7-compound-definite-unassignment-fail-10=b when false iff V is DU after a =b Expected Result: FAIL
Regression Test:
tcltest::test 16.1.7-compound-definite-unassignment-fail-9 { V is DU after boolean a=b when false iff V is DU after a =b } { empty_main T1617cduf9 { boolean b = true; final int x; x = 0; if (b |= true); else x = 1; } } {FAIL}
V must be DU after b if V is a blank final and V is a in aTest Case: 16.1.7-simple-definite-unassignment-pass-1=b Expected Result: FAIL
Regression Test:
tcltest::test 16.1.7-compound-definite-unassignment-fail-10 { V must be DU after b if V is a blank final and V is a in a=b } { empty_main T1617cduf10 { final int x; x += x = 10; } } {FAIL}
a blank final V must be DU before a=b if V is aTest Case: 16.1.7-simple-definite-unassignment-pass-2Expected Result: PASS
Regression Test:
tcltest::test 16.1.7-simple-definite-unassignment-pass-1 { a blank final V must be DU before a=b if V is a } { empty_main T1617sdup1 { final int x; x = 1; if (false) { x = 1; } } } {PASS}
V is DU after a=b iff both a is not V and V is DU after bTest Case: 16.1.7-simple-definite-unassignment-pass-3Expected Result: PASS
Regression Test:
tcltest::test 16.1.7-simple-definite-unassignment-pass-2 { V is DU after a=b iff both a is not V and V is DU after b } { empty_main T1617sdup2 { final int x; int i; i = 1; x = 1; } } {PASS}
V is DU before the subexpressions of a iff V is DU before a=bTest Case: 16.1.7-simple-definite-unassignment-pass-4Expected Result: PASS
Regression Test:
tcltest::test 16.1.7-simple-definite-unassignment-pass-3 { V is DU before the subexpressions of a iff V is DU before a=b } { empty_main T1617sdup3 { final int x; int ia[] = {0}, i = 0; ia[x = i]++; } } {PASS}
V is DU before the subexpressions of a iff V is DU before a=bTest Case: 16.1.7-simple-definite-unassignment-pass-5Expected Result: PASS
Regression Test:
tcltest::test 16.1.7-simple-definite-unassignment-pass-4 { V is DU before the subexpressions of a iff V is DU before a=b } { empty_class T1617sdup4 { final T1617sdup4 x; int i; { (x = new T1617sdup4()).i++; } } } {PASS}
V is DU before b iff V is DU after the subexpressions of a in a=bTest Case: 16.1.7-simple-definite-unassignment-pass-6Expected Result: PASS
Regression Test:
tcltest::test 16.1.7-simple-definite-unassignment-pass-5 { V is DU before b iff V is DU after the subexpressions of a in a=b } { empty_main T1617sdup5 { final int x; int i = 0; i = x = 1; } } {PASS}
V is DU after boolean a=b when true iff V is DU after a=bTest Case: 16.1.7-simple-definite-unassignment-pass-7Expected Result: PASS
Regression Test:
tcltest::test 16.1.7-simple-definite-unassignment-pass-6 { V is DU after boolean a=b when true iff V is DU after a=b } { empty_main T1617sdup6 { boolean b; final int x; x = 0; if ((b = false) && false) x = 1; } } {PASS}
V is DU after boolean a=b when false iff V is DU after a=bTest Case: 16.1.7-simple-definite-unassignment-pass-8Expected Result: PASS
Regression Test:
tcltest::test 16.1.7-simple-definite-unassignment-pass-7 { V is DU after boolean a=b when false iff V is DU after a=b } { empty_main T1617sdup7 { boolean b; final int x; x = 0; if ((b = true) || true); else x = 1; } } {PASS}
V must be DU after b if V is a blank final and V is a in a=bTest Case: 16.1.7-compound-definite-unassignment-pass-1Expected Result: PASS
Regression Test:
tcltest::test 16.1.7-simple-definite-unassignment-pass-8 { V must be DU after b if V is a blank final and V is a in a=b } { empty_main T1617sdup8 { final int x; int i; x = i = 10; } } {PASS}
a blank final V must be DU before aTest Case: 16.1.7-compound-definite-unassignment-pass-2=b if V is a Expected Result: PASS
Regression Test:
tcltest::test 16.1.7-compound-definite-unassignment-pass-1 { a blank final V must be DU before a=b if V is a } { empty_main T1617cdup1 { final int x; if (false) { x += 1; } } } {PASS}
V is DU after aTest Case: 16.1.7-compound-definite-unassignment-pass-3=b iff both a is not V and V is DU after b Expected Result: PASS
Regression Test:
tcltest::test 16.1.7-compound-definite-unassignment-pass-2 { V is DU after a=b iff both a is not V and V is DU after b } { empty_main T1617cdup2 { final int x; int i = 0; i += 1; x = 1; } } {PASS}
V is DU before the subexpressions of a iff V is DU before aTest Case: 16.1.7-compound-definite-unassignment-pass-4=b Expected Result: PASS
Regression Test:
tcltest::test 16.1.7-compound-definite-unassignment-pass-3 { V is DU before the subexpressions of a iff V is DU before a=b } { empty_main T1617cdup3 { final int x; int ia[] = {0}, i = 0; ia[x = i] += 1; } } {PASS}
V is DU before the subexpressions of a iff V is DU before aTest Case: 16.1.7-compound-definite-unassignment-pass-5=b Expected Result: PASS
Regression Test:
tcltest::test 16.1.7-compound-definite-unassignment-pass-4 { V is DU before the subexpressions of a iff V is DU before a=b } { empty_class T1617cdup4 { final T1617cdup4 x; int i; { (x = new T1617cdup4()).i += 1; } } } {PASS}
V is DU before b iff V is DU after the subexpressions of a in aTest Case: 16.1.7-compound-definite-unassignment-pass-6=b Expected Result: PASS
Regression Test:
tcltest::test 16.1.7-compound-definite-unassignment-pass-5 { V is DU before b iff V is DU after the subexpressions of a in a=b } { empty_main T1617cdup5 { final int x; int i = 0; i += x = 1; } } {PASS}
V is DU after boolean aTest Case: 16.1.7-compound-definite-unassignment-pass-7=b when true iff V is DU after a =b Expected Result: PASS
Regression Test:
tcltest::test 16.1.7-compound-definite-unassignment-pass-6 { V is DU after boolean a=b when true iff V is DU after a =b } { empty_main T1617cdup6 { boolean b = false; final int x; x = 0; if ((b &= false) && false) x = 1; } } {PASS}
V is DU after boolean aTest Case: 16.1.7-compound-definite-unassignment-pass-8=b when false iff V is DU after a =b Expected Result: PASS
Regression Test:
tcltest::test 16.1.7-compound-definite-unassignment-pass-7 { V is DU after boolean a=b when false iff V is DU after a =b } { empty_main T1617cdup7 { boolean b = true; final int x; x = 0; if ((b |= true) || true); else x = 1; } } {PASS}
V must be DU after b if V is a blank final and V is a in a=b Expected Result: PASS
Regression Test:
tcltest::test 16.1.7-compound-definite-unassignment-pass-8 { V must be DU after b if V is a blank final and V is a in a=b } { empty_main T1617cdup8 { final int x; int i = 0; x = i += 1; } } {PASS}
tests/jls/definite-assignment/expressions/operators-increment-and-decrement
++ and -- cannot be applied to final variablesTest Case: 16.1.8-definite-unassign-fail-2Expected Result: FAIL
Regression Test:
tcltest::test 16.1.8-definite-unassign-fail-1 { ++ and -- cannot be applied to final variables } { empty_main T1618duf1 { final int i; if (false) i++; } } {FAIL}
++ and -- cannot be applied to final variablesTest Case: 16.1.8-definite-unassign-fail-3Expected Result: FAIL
Regression Test:
tcltest::test 16.1.8-definite-unassign-fail-2 { ++ and -- cannot be applied to final variables } { empty_main T1618duf2 { final int i; if (false) i--; } } {FAIL}
++ and -- cannot be applied to final variablesTest Case: 16.1.8-definite-unassign-fail-4Expected Result: FAIL
Regression Test:
tcltest::test 16.1.8-definite-unassign-fail-3 { ++ and -- cannot be applied to final variables } { empty_main T1618duf3 { final int i; if (false) ++i; } } {FAIL}
++ and -- cannot be applied to final variablesTest Case: 16.1.8-definite-unassign-fail-5Expected Result: FAIL
Regression Test:
tcltest::test 16.1.8-definite-unassign-fail-4 { ++ and -- cannot be applied to final variables } { empty_main T1618duf4 { final int i; if (false) --i; } } {FAIL}
v is DU after a++ iff v is DU after aTest Case: 16.1.8-definite-unassign-fail-6Expected Result: FAIL
Regression Test:
tcltest::test 16.1.8-definite-unassign-fail-5 { v is DU after a++ iff v is DU after a } { empty_main T1618duf5 { final int i; int[] j = {0}; j[i = 0]++; i = 2; } } {FAIL}
v is DU after a++ iff v is DU after aTest Case: 16.1.8-definite-unassign-fail-7Expected Result: FAIL
Regression Test:
tcltest::test 16.1.8-definite-unassign-fail-6 { v is DU after a++ iff v is DU after a } { empty_main T1618duf6 { final int i; int[] j = {0}; j[i = 0]--; i = 2; } } {FAIL}
v is DU after a++ iff v is DU after aTest Case: 16.1.8-definite-unassign-fail-8Expected Result: FAIL
Regression Test:
tcltest::test 16.1.8-definite-unassign-fail-7 { v is DU after a++ iff v is DU after a } { empty_main T1618duf7 { final int i; int[] j = {0}; ++j[i = 0]; i = 2; } } {FAIL}
v is DU after a++ iff v is DU after aTest Case: 16.1.8-definite-unassign-fail-9Expected Result: FAIL
Regression Test:
tcltest::test 16.1.8-definite-unassign-fail-8 { v is DU after a++ iff v is DU after a } { empty_main T1618duf8 { final int i; int[] j = {0}; --j[i = 0]; i = 2; } } {FAIL}
v is DU after a++ iff v is DU after aTest Case: 16.1.8-definite-unassign-fail-10Expected Result: FAIL
Regression Test:
tcltest::test 16.1.8-definite-unassign-fail-9 { v is DU after a++ iff v is DU after a } { empty_main T1618duf9 { final int[] j; (j = new int[] {0})[0]++; j = null; } } {FAIL}
v is DU after a++ iff v is DU after aTest Case: 16.1.8-definite-unassign-fail-11Expected Result: FAIL
Regression Test:
tcltest::test 16.1.8-definite-unassign-fail-10 { v is DU after a++ iff v is DU after a } { empty_main T1618duf10 { final int[] j; (j = new int[] {0})[0]--; j = null; } } {FAIL}
v is DU after a++ iff v is DU after aTest Case: 16.1.8-definite-unassign-fail-12Expected Result: FAIL
Regression Test:
tcltest::test 16.1.8-definite-unassign-fail-11 { v is DU after a++ iff v is DU after a } { empty_main T1618duf11 { final int[] j; ++(j = new int[] {0})[0]; j = null; } } {FAIL}
v is DU after a++ iff v is DU after aTest Case: 16.1.8-definite-assign-pass-1Expected Result: FAIL
Regression Test:
tcltest::test 16.1.8-definite-unassign-fail-12 { v is DU after a++ iff v is DU after a } { empty_main T1618duf12 { final int[] j; --(j = new int[] {0})[0]; j = null; } } {FAIL}
v is DA after a++ iff a is v or v is DA after aTest Case: 16.1.8-definite-assign-pass-2Expected Result: PASS
Regression Test:
tcltest::test 16.1.8-definite-assign-pass-1 { v is DA after a++ iff a is v or v is DA after a } { empty_main T1618dap1 { int i; if (false) { i++; int j = i; } } } {PASS}
v is DA after a++ iff a is v or v is DA after aTest Case: 16.1.8-definite-assign-pass-3Expected Result: PASS
Regression Test:
tcltest::test 16.1.8-definite-assign-pass-2 { v is DA after a++ iff a is v or v is DA after a } { empty_main T1618dap2 { int i; if (false) { i--; int j = i; } } } {PASS}
v is DA after a++ iff a is v or v is DA after aTest Case: 16.1.8-definite-assign-pass-4Expected Result: PASS
Regression Test:
tcltest::test 16.1.8-definite-assign-pass-3 { v is DA after a++ iff a is v or v is DA after a } { empty_main T1618dap3 { int i; if (false) { ++i; int j = i; } } } {PASS}
v is DA after a++ iff a is v or v is DA after aTest Case: 16.1.8-definite-assign-pass-5Expected Result: PASS
Regression Test:
tcltest::test 16.1.8-definite-assign-pass-4 { v is DA after a++ iff a is v or v is DA after a } { empty_main T1618dap4 { int i; if (false) { --i; int j = i; } } } {PASS}
v is DA after a++ iff a is v or v is DA after aTest Case: 16.1.8-definite-assign-pass-6Expected Result: PASS
Regression Test:
tcltest::test 16.1.8-definite-assign-pass-5 { v is DA after a++ iff a is v or v is DA after a } { empty_main T1618dap5 { int i, j[] = {0}; j[i = 0]++; int k = i; } } {PASS}
v is DA after a++ iff a is v or v is DA after aTest Case: 16.1.8-definite-assign-pass-7Expected Result: PASS
Regression Test:
tcltest::test 16.1.8-definite-assign-pass-6 { v is DA after a++ iff a is v or v is DA after a } { empty_main T1618dap6 { int i, j[] = {0}; j[i = 0]--; int k = i; } } {PASS}
v is DA after a++ iff a is v or v is DA after aTest Case: 16.1.8-definite-assign-pass-8Expected Result: PASS
Regression Test:
tcltest::test 16.1.8-definite-assign-pass-7 { v is DA after a++ iff a is v or v is DA after a } { empty_main T1618dap7 { int i, j[] = {0}; ++j[i = 0]; int k = i; } } {PASS}
v is DA after a++ iff a is v or v is DA after aTest Case: 16.1.8-definite-assign-pass-9Expected Result: PASS
Regression Test:
tcltest::test 16.1.8-definite-assign-pass-8 { v is DA after a++ iff a is v or v is DA after a } { empty_main T1618dap8 { int i, j[] = {0}; --j[i = 0]; int k = i; } } {PASS}
v is DA after a++ iff a is v or v is DA after aTest Case: 16.1.8-definite-assign-pass-10Expected Result: PASS
Regression Test:
tcltest::test 16.1.8-definite-assign-pass-9 { v is DA after a++ iff a is v or v is DA after a } { empty_main T1618dap9 { int[] j; (j = new int[] {0})[0]++; Object o = j; } } {PASS}
v is DA after a++ iff a is v or v is DA after aTest Case: 16.1.8-definite-assign-pass-11Expected Result: PASS
Regression Test:
tcltest::test 16.1.8-definite-assign-pass-10 { v is DA after a++ iff a is v or v is DA after a } { empty_main T1618dap10 { int[] j; (j = new int[] {0})[0]--; Object o = j; } } {PASS}
v is DA after a++ iff a is v or v is DA after aTest Case: 16.1.8-definite-assign-pass-12Expected Result: PASS
Regression Test:
tcltest::test 16.1.8-definite-assign-pass-11 { v is DA after a++ iff a is v or v is DA after a } { empty_main T1618dap11 { int[] j; ++(j = new int[] {0})[0]; Object o = j; } } {PASS}
v is DA after a++ iff a is v or v is DA after aTest Case: 16.1.8-definite-assign-fail-1Expected Result: PASS
Regression Test:
tcltest::test 16.1.8-definite-assign-pass-12 { v is DA after a++ iff a is v or v is DA after a } { empty_main T1618dap12 { int[] j; --(j = new int[] {0})[0]; Object o = j; } } {PASS}
v is DA before a iff v is DA before a++Test Case: 16.1.8-definite-assign-fail-2Expected Result: FAIL
Regression Test:
tcltest::test 16.1.8-definite-assign-fail-1 { v is DA before a iff v is DA before a++ } { empty_main T1618daf1 { int i; i++; } } {FAIL}
v is DA before a iff v is DA before a++Test Case: 16.1.8-definite-assign-fail-3Expected Result: FAIL
Regression Test:
tcltest::test 16.1.8-definite-assign-fail-2 { v is DA before a iff v is DA before a++ } { empty_main T1618daf2 { int i; i--; } } {FAIL}
v is DA before a iff v is DA before a++Test Case: 16.1.8-definite-assign-fail-4Expected Result: FAIL
Regression Test:
tcltest::test 16.1.8-definite-assign-fail-3 { v is DA before a iff v is DA before a++ } { empty_main T1618daf3 { int i; ++i; } } {FAIL}
v is DA before a iff v is DA before a++Test Case: 16.1.8-definite-assign-fail-5Expected Result: FAIL
Regression Test:
tcltest::test 16.1.8-definite-assign-fail-4 { v is DA before a iff v is DA before a++ } { empty_main T1618daf4 { int i; --i; } } {FAIL}
v is DA before a iff v is DA before a++Test Case: 16.1.8-definite-assign-fail-6Expected Result: FAIL
Regression Test:
tcltest::test 16.1.8-definite-assign-fail-5 { v is DA before a iff v is DA before a++ } { empty_main T1618daf5 { int i; (new int[] {0})[i]++; } } {FAIL}
v is DA before a iff v is DA before a++Test Case: 16.1.8-definite-assign-fail-7Expected Result: FAIL
Regression Test:
tcltest::test 16.1.8-definite-assign-fail-6 { v is DA before a iff v is DA before a++ } { empty_main T1618daf6 { int i; (new int[] {0})[i]--; } } {FAIL}
v is DA before a iff v is DA before a++Test Case: 16.1.8-definite-assign-fail-8Expected Result: FAIL
Regression Test:
tcltest::test 16.1.8-definite-assign-fail-7 { v is DA before a iff v is DA before a++ } { empty_main T1618daf7 { int i; ++(new int[] {0})[i]; } } {FAIL}
v is DA before a iff v is DA before a++Test Case: 16.1.8-definite-assign-fail-9Expected Result: FAIL
Regression Test:
tcltest::test 16.1.8-definite-assign-fail-8 { v is DA before a iff v is DA before a++ } { empty_main T1618daf8 { int i; --(new int[] {0})[i]; } } {FAIL}
v is DA before a iff v is DA before a++Test Case: 16.1.8-definite-assign-fail-10Expected Result: FAIL
Regression Test:
tcltest::test 16.1.8-definite-assign-fail-9 { v is DA before a iff v is DA before a++ } { empty_main T1618daf9 { int[] i; i[0]++; } } {FAIL}
v is DA before a iff v is DA before a++Test Case: 16.1.8-definite-assign-fail-11Expected Result: FAIL
Regression Test:
tcltest::test 16.1.8-definite-assign-fail-10 { v is DA before a iff v is DA before a++ } { empty_main T1618daf10 { int[] i; i[0]--; } } {FAIL}
v is DA before a iff v is DA before a++Test Case: 16.1.8-definite-assign-fail-12Expected Result: FAIL
Regression Test:
tcltest::test 16.1.8-definite-assign-fail-11 { v is DA before a iff v is DA before a++ } { empty_main T1618daf11 { int[] i; ++i[0]; } } {FAIL}
v is DA before a iff v is DA before a++Expected Result: FAIL
Regression Test:
tcltest::test 16.1.8-definite-assign-fail-12 { v is DA before a iff v is DA before a++ } { empty_main T1618daf12 { int[] i; --i[0]; } } {FAIL}
tests/jls/definite-assignment/statements/local-class-declaration-statements
The JLS is missing a rule. Although 16.2.2 claims v is DA before the initializer in Local since it is DA before the declaration of Local, this is not true for a local class in a switch statement, if an instance is created where v is not DAExpected Result: FAIL
Regression Test:
tcltest::test 16.2.3-switch-1 { The JLS is missing a rule. Although 16.2.2 claims v is DA before the initializer in Local since it is DA before the declaration of Local, this is not true for a local class in a switch statement, if an instance is created where v is not DA } { empty_class T1623s1 { void m(int i) { switch (i) { case 0: final int j; j = 1; class Local { int k = j; } break; case 1: // Javac 1.4 compiles this, and causes a VerifyError int k = new Local().k; } } } } {FAIL}
tests/jls/definite-assignment/statements/labeled-statements
V is DU after L:S iff V is DU after S and before all breaks in S that exit LTest Case: 16.2.5-definite-unassign-pass-2Expected Result: PASS
Regression Test:
tcltest::test 16.2.5-definite-unassign-pass-1 { V is DU after L:S iff V is DU after S and before all breaks in S that exit L } { empty_main T1625dup1 { final int i; l: { if (true) break l; try { i = 1; break l; // cannot exit l } finally { return; } } i = 2; } } {PASS}
V is DU after L:S iff V is DU after S and before all breaks in S that exit LTest Case: 16.2.5-definite-unassign-pass-3Expected Result: PASS
Regression Test:
tcltest::test 16.2.5-definite-unassign-pass-2 { V is DU after L:S iff V is DU after S and before all breaks in S that exit L } { empty_main T1625dup2 { final int i; l: { if (false) break l; try { i = 1; break l; // cannot exit l } finally { return; } } i = 2; } } {PASS}
V is DU after L:S iff V is DU after S and before all breaks in S that exit LTest Case: 16.2.5-definite-unassign-pass-4Expected Result: PASS
Regression Test:
tcltest::test 16.2.5-definite-unassign-pass-3 { V is DU after L:S iff V is DU after S and before all breaks in S that exit L } { empty_main T1625dup3 { final int i; boolean b = true; l: { if (b) break l; try { i = 1; break l; // cannot exit l } finally { return; } } i = 2; } } {PASS}
V is DU after L:S iff V is DU after S and before all breaks in S that exit LTest Case: 16.2.5-definite-unassign-fail-1Expected Result: PASS
Regression Test:
tcltest::test 16.2.5-definite-unassign-pass-4 { V is DU after L:S iff V is DU after S and before all breaks in S that exit L } { empty_main T1625dup4 { final int i; l: {} i = 1; } } {PASS}
V is DU after L:S iff V is DU after S and before all breaks in S that exit LTest Case: 16.2.5-definite-assign-pass-1Expected Result: FAIL
Regression Test:
tcltest::test 16.2.5-definite-unassign-fail-1 { V is DU after L:S iff V is DU after S and before all breaks in S that exit L } { empty_main T1625duf1 { final int i; l: { i = 1; break l; } i = 2; } } {FAIL}
V is DA after L:S iff V is DA after S and before all breaks in S that exit LTest Case: 16.2.5-definite-assign-pass-2Expected Result: PASS
Regression Test:
tcltest::test 16.2.5-definite-assign-pass-1 { V is DA after L:S iff V is DA after S and before all breaks in S that exit L } { empty_main T1625dap1 { int i; l: i = 1; i++; } } {PASS}
V is DA after L:S iff V is DA after S and before all breaks in S that exit LTest Case: 16.2.5-definite-assign-pass-3Expected Result: PASS
Regression Test:
tcltest::test 16.2.5-definite-assign-pass-2 { V is DA after L:S iff V is DA after S and before all breaks in S that exit L } { empty_main T1625dap2 { int i; l: { i = 1; } i++; } } {PASS}
V is DA after L:S iff V is DA after S and before all breaks in S that exit LTest Case: 16.2.5-definite-assign-pass-4Expected Result: PASS
Regression Test:
tcltest::test 16.2.5-definite-assign-pass-3 { V is DA after L:S iff V is DA after S and before all breaks in S that exit L } { empty_main T1625dap3 { int i; l: { i = 1; break l; } i++; } } {PASS}
V is DA after L:S iff V is DA after S and before all breaks in S that exit LTest Case: 16.2.5-definite-assign-fail-1Expected Result: PASS
Regression Test:
tcltest::test 16.2.5-definite-assign-pass-4 { V is DA after L:S iff V is DA after S and before all breaks in S that exit L } { empty_main T1625dap4 { int i; l: { if (false) break l; return; } i++; } } {PASS}
V is DA after L:S iff V is DA after S and before all breaks in S that exit LTest Case: 16.2.5-definite-assign-fail-2Expected Result: FAIL
Regression Test:
tcltest::test 16.2.5-definite-assign-fail-1 { V is DA after L:S iff V is DA after S and before all breaks in S that exit L } { empty_main T1625daf1 { int i; l: break l; i++; } } {FAIL}
V is DA after L:S iff V is DA after S and before all breaks in S that exit LExpected Result: FAIL
Regression Test:
tcltest::test 16.2.5-definite-assign-fail-2 { V is DA after L:S iff V is DA after S and before all breaks in S that exit L } { empty_main T1625daf2 { int i; boolean b = true; l: { if (b) break l; i = 1; } i++; } } {FAIL}
tests/jls/definite-assignment/statements/if-statements
A blank final initialized inside an if (true) block is definitely assigned.Test Case: 16.2.7-final-2Expected Result: PASS
Regression Test:
tcltest::test 16.2.7-final-1 { A blank final initialized inside an if (true) block is definitely assigned. } { compile [saveas T1627f1.java { public class T1627f1 { final int val; T1627f1() { if (true) { val = 1; } } } }] } {PASS}
A blank final initialized inside an if (false) block is not definitely assigned.Test Case: 16.2.7-final-3Expected Result: FAIL
Regression Test:
tcltest::test 16.2.7-final-2 { A blank final initialized inside an if (false) block is not definitely assigned. } { compile [saveas T1627f2.java { public class T1627f2 { final int val; T1627f2() { if (false) { val = 0; } } } }] } {FAIL}
A final variable must be definitely unassigned if it is to be assigned inside an if (true) block.Test Case: 16.2.7-final-4Expected Result: FAIL
Regression Test:
tcltest::test 16.2.7-final-3 { A final variable must be definitely unassigned if it is to be assigned inside an if (true) block. } { compile [saveas T1627f3.java { public class T1627f3 { final int val = 0; T1627f3() { if (true) { val = 1; } } } }] } {FAIL}
A final variable must be definitely unassigned if it is to be assigned inside an if (false) block.Test Case: 16.2.7-final-5Expected Result: FAIL
Regression Test:
tcltest::test 16.2.7-final-4 { A final variable must be definitely unassigned if it is to be assigned inside an if (false) block. } { compile [saveas T1627f4.java { public class T1627f4 { final int val = 0; T1627f4() { if (false) { val = 1; } } } }] } {FAIL}
A final variable must be definitely unassigned when an assignment to it occurs. A blank final assigned inside an if (true) block is definitely assigned, so a second assignment fails.Test Case: 16.2.7-final-6Expected Result: FAIL
Regression Test:
tcltest::test 16.2.7-final-5 { A final variable must be definitely unassigned when an assignment to it occurs. A blank final assigned inside an if (true) block is definitely assigned, so a second assignment fails. } { compile [saveas T1627f5.java { public class T1627f5 { final int val; T1627f5() { if (true) { val = 1; } val = 0; } } }] } {FAIL}
A final variable must be definitely unassigned when an assignment to it occurs. A blank final assigned inside an if (false) block is not definitely assigned but it is also not definitely unassigned.Test Case: 16.2.7-scope-1Expected Result: FAIL
Regression Test:
tcltest::test 16.2.7-final-6 { A final variable must be definitely unassigned when an assignment to it occurs. A blank final assigned inside an if (false) block is not definitely assigned but it is also not definitely unassigned. } { compile [saveas T1627f6.java { public class T1627f6 { final int val; T1627f6() { if (false) { val = 1; } val = 0; } } }] } {FAIL}
A final variable in one scope should not effect a final variable in the enclosing scopeTest Case: 16.2.7-scope-2Expected Result: PASS
Regression Test:
tcltest::test 16.2.7-scope-1 { A final variable in one scope should not effect a final variable in the enclosing scope } { empty_main T1627s1 { if (true) { final int i = 1; } final int j; j = 2; } } {PASS}
A final variable in one scope should not effect a final variable in the enclosing scopeExpected Result: PASS
Regression Test:
tcltest::test 16.2.7-scope-2 { A final variable in one scope should not effect a final variable in the enclosing scope } { empty_main T1627s2 { if (true) { final int i = 1; } final int i; i = 2; } } {PASS}
tests/jls/definite-assignment/statements/switch-statements
A blank final may be assigned in different block statement groups, provided it not assigned twice. Even with a non-constant initializer, the variable declaration is treated as a blank finalTest Case: 16.2.8-final-2Expected Result: PASS
Regression Test:
tcltest::test 16.2.8-final-1 { A blank final may be assigned in different block statement groups, provided it not assigned twice. Even with a non-constant initializer, the variable declaration is treated as a blank final } { switch_labels T1628f1 int { case 0: final int j = "".length(); break; case 1: j = 1; } } {PASS}
A blank final may be assigned in different block statement groups, provided it not assigned twiceTest Case: 16.2.8-final-3Expected Result: PASS
Regression Test:
tcltest::test 16.2.8-final-2 { A blank final may be assigned in different block statement groups, provided it not assigned twice } { switch_labels T1628f2 int { case 0: final int b; b = 0; break; case 1: b = 1; } } {PASS}
A blank final may be assigned in different block statement groups, provided it not assigned twice. However, a variable initialized with a constant is inlined, and is not a blank final.Test Case: 16.2.8-final-4Expected Result: FAIL
Regression Test:
tcltest::test 16.2.8-final-3 { A blank final may be assigned in different block statement groups, provided it not assigned twice. However, a variable initialized with a constant is inlined, and is not a blank final. } { switch_labels T1628f3 int { case 0: final byte b = 0; break; case 1: b = 1; } } {FAIL}
A blank final may not be referenced unless it is definitely assigned. However, a variable initialized with a constant is inlined, and is not a blank final.Test Case: 16.2.8-final-5Expected Result: PASS
Regression Test:
tcltest::test 16.2.8-final-4 { A blank final may not be referenced unless it is definitely assigned. However, a variable initialized with a constant is inlined, and is not a blank final. } { switch_labels T1628f4 int { case 0: final byte b = 0; break; case 1: byte c = b; } } {PASS}
A final variable declared with a constant initializer qualifies as a constant, and may be used as a labelTest Case: 16.2.8-final-6Expected Result: PASS
Regression Test:
tcltest::test 16.2.8-final-5 { A final variable declared with a constant initializer qualifies as a constant, and may be used as a label } { switch_labels T1628f5 int { case 0: final byte b = 1; case b: } } {PASS}
A final variable declared with a constant initializer qualifies as a constant, and may be used as a label, but only after its declarationTest Case: 16.2.8-unassigned-1Expected Result: FAIL
Regression Test:
tcltest::test 16.2.8-final-6 { A final variable declared with a constant initializer qualifies as a constant, and may be used as a label, but only after its declaration } { switch_labels T1628f6 int { case b: break; case 0: final byte b = 1; } } {FAIL}
A variable must have been assigned in each switch block if it is going to be accessedTest Case: 16.2.8-unassigned-2Expected Result: FAIL
Regression Test:
tcltest::test 16.2.8-unassigned-1 { A variable must have been assigned in each switch block if it is going to be accessed } { switch_labels T1628u1 int { case 0: byte b = 0; break; default: b++; } } {FAIL}
A variable that is not definitely assigned before entering the switch must be definitely assigned in each switch block if it is to be definitely assigned after the switch blockTest Case: 16.2.8-unassigned-3Expected Result: PASS
Regression Test:
tcltest::test 16.2.8-unassigned-2 { A variable that is not definitely assigned before entering the switch must be definitely assigned in each switch block if it is to be definitely assigned after the switch block } { compile [saveas T1628u2.java { class T1628u2 { void foo(int i) { int j; switch (i) { case 0: j = 0; break; case 1: j = 1; break; default: j = 2; break; } j++; } } }] } {PASS}
A variable that is not definitely assigned before entering the switch must be definitely assigned in each switch block if it is to be definitely assigned after the switch blockTest Case: 16.2.8-unassigned-4Expected Result: FAIL
Regression Test:
tcltest::test 16.2.8-unassigned-3 { A variable that is not definitely assigned before entering the switch must be definitely assigned in each switch block if it is to be definitely assigned after the switch block } { compile [saveas T1628u3.java { class T1628u3 { void foo(int i) { int j; switch (i) { case 0: j = 0; break; case 1: break; default: j = 2; break; } j++; } } }] } {FAIL}
A variable that is not definitely assigned before entering the switch must be definitely assigned in each switch block (including the default block) if it is to be definitely assigned after the switch blockTest Case: 16.2.8-unassigned-5Expected Result: FAIL
Regression Test:
tcltest::test 16.2.8-unassigned-4 { A variable that is not definitely assigned before entering the switch must be definitely assigned in each switch block (including the default block) if it is to be definitely assigned after the switch block } { compile [saveas T1628u4.java { class T1628u4 { void foo(int i) { int j; switch (i) { case 0: j = 0; break; case 1: j = 0; break; } j++; } } }] } {FAIL}
Switch blocks that fall through to default: that definitely assigns a variable ensures that the variable is definitely assigned after the switchTest Case: 16.2.8-unassigned-6Expected Result: PASS
Regression Test:
tcltest::test 16.2.8-unassigned-5 { Switch blocks that fall through to default: that definitely assigns a variable ensures that the variable is definitely assigned after the switch } { compile [saveas T1628u5.java { class T1628u5 { void foo(int i) { int j; switch (i) { case 0: case 1: default: j = 0; } j++; } } }] } {PASS}
A variable within a switch statement must be assigned before use within any swith blockTest Case: 16.2.8-unassigned-7Expected Result: FAIL
Regression Test:
tcltest::test 16.2.8-unassigned-6 { A variable within a switch statement must be assigned before use within any swith block } { switch_labels T1628u6 int { case 0: byte b = 1; break; case 1: byte c = b; } } {FAIL}
A variable declared in a switch statement may not be referenced before its declaration, even if the declaration will be skippedTest Case: 16.2.8-unassigned-8Expected Result: FAIL
Regression Test:
tcltest::test 16.2.8-unassigned-7 { A variable declared in a switch statement may not be referenced before its declaration, even if the declaration will be skipped } { switch_labels T1628u7 int { case 0: byte c = b; break; case 1: byte b = 0; } } {FAIL}
v is DU if it is DU before breaks which exit the switchExpected Result: PASS
Regression Test:
tcltest::test 16.2.8-unassigned-8 { v is DU if it is DU before breaks which exit the switch } { empty_main T1628u8 { int i = 1; final int j; switch (i) { case 0: try { j = 1; break; // doesn't exit switch } finally { return; } } j = 2; } } {PASS}
tests/jls/definite-assignment/statements/while-statements
v is DU after the while if it is DU before every break which exits the whileTest Case: 16.2.9-definite-unassign-pass-2Expected Result: PASS
Regression Test:
tcltest::test 16.2.9-definite-unassign-pass-1 { v is DU after the while if it is DU before every break which exits the while } { empty_main T1629dup1 { final int i; boolean b = true; while (true) { if (b) break; try { i = 1; break; // doesn't exit while } finally { return; } } i = 2; } } {PASS}
v is DU before the condition if it is DU before every continue which exits the statementTest Case: 16.2.9-definite-unassign-pass-3Expected Result: PASS
Regression Test:
tcltest::test 16.2.9-definite-unassign-pass-2 { v is DU before the condition if it is DU before every continue which exits the statement } { empty_main T1629dup2 { final int i; while (true) { try { i = 2; continue; // doesn't continue loop } finally { return; } } } } {PASS}
v may be reachably assigned in loop only once unless loop can't repeatTest Case: 16.2.9-definite-unassign-pass-4Expected Result: PASS
Regression Test:
tcltest::test 16.2.9-definite-unassign-pass-3 { v may be reachably assigned in loop only once unless loop can't repeat } { empty_main T1629dup3 { final int i; while (true) if (false) i = 1; // the fact that i is not DU before the loop doesn't matter } } {PASS}
v may be reachably assigned in loop only once unless loop can't repeatTest Case: 16.2.9-definite-unassign-pass-5Expected Result: PASS
Regression Test:
tcltest::test 16.2.9-definite-unassign-pass-4 { v may be reachably assigned in loop only once unless loop can't repeat } { empty_main T1629dup4 { final int i; while (true) { i = 1; break; } } } {PASS}
v may be reachably assigned in loop only once unless loop can't repeatTest Case: 16.2.9-definite-unassign-pass-6Expected Result: PASS
Regression Test:
tcltest::test 16.2.9-definite-unassign-pass-5 { v may be reachably assigned in loop only once unless loop can't repeat } { empty_main T1629dup5 { final boolean b; while ((b = true) && false); } } {PASS}
v may be reachably assigned in loop only once unless loop can't repeatTest Case: 16.2.9-definite-unassign-pass-7Expected Result: PASS
Regression Test:
tcltest::test 16.2.9-definite-unassign-pass-6 { v may be reachably assigned in loop only once unless loop can't repeat } { empty_main T1629dup6 { final boolean b; while (b = true) break; } } {PASS}
v may be reachably assigned in loop only once unless loop can't repeatTest Case: 16.2.9-definite-unassign-pass-8Expected Result: PASS
Regression Test:
tcltest::test 16.2.9-definite-unassign-pass-7 { v may be reachably assigned in loop only once unless loop can't repeat } { empty_main T1629dup7 { final int i; boolean b = true; while (b && false) i = 1; } } {PASS}
v is DU after while(e)S; iff v is DU after e when false and v is DU before every exiting breakTest Case: 16.2.9-definite-unassign-pass-9Expected Result: PASS
Regression Test:
tcltest::test 16.2.9-definite-unassign-pass-8 { v is DU after while(e)S; iff v is DU after e when false and v is DU before every exiting break } { empty_main T1629dup8 { final boolean b; b = true; while (b || true); b = false; } } {PASS}
variables declared in a loop may be assigned in the loopTest Case: 16.2.9-definite-unassign-pass-10Expected Result: PASS
Regression Test:
tcltest::test 16.2.9-definite-unassign-pass-9 { variables declared in a loop may be assigned in the loop } { empty_main T1629dup9 { while (true) { final int i; i = 1; continue; } } } {PASS}
variables declared in a loop may be assigned in the loopTest Case: 16.2.9-definite-unassign-fail-1Expected Result: PASS
Regression Test:
tcltest::test 16.2.9-definite-unassign-pass-10 { variables declared in a loop may be assigned in the loop } { empty_main T1629dup10 { while (true) { final int i; i = 1; } } } {PASS}
v may be reachably assigned in loop only once unless loop can't repeatTest Case: 16.2.9-definite-unassign-fail-2Expected Result: FAIL
Regression Test:
tcltest::test 16.2.9-definite-unassign-fail-1 { v may be reachably assigned in loop only once unless loop can't repeat } { empty_main T1629duf1 { final int i; while (true) i = 1; } } {FAIL}
v may be reachably assigned in loop only once unless loop can't repeatTest Case: 16.2.9-definite-unassign-fail-3Expected Result: FAIL
Regression Test:
tcltest::test 16.2.9-definite-unassign-fail-2 { v may be reachably assigned in loop only once unless loop can't repeat } { empty_main T1629duf2 { final int i; while (true) { i = 1; continue; } } } {FAIL}
v may be reachably assigned in loop only once unless loop can't repeatTest Case: 16.2.9-definite-unassign-fail-4Expected Result: FAIL
Regression Test:
tcltest::test 16.2.9-definite-unassign-fail-3 { v may be reachably assigned in loop only once unless loop can't repeat } { empty_main T1629duf3 { final boolean b; while (b = false); } } {FAIL}
v may be reachably assigned in loop only once unless loop can't repeatTest Case: 16.2.9-definite-unassign-fail-5Expected Result: FAIL
Regression Test:
tcltest::test 16.2.9-definite-unassign-fail-4 { v may be reachably assigned in loop only once unless loop can't repeat } { empty_main T1629duf4 { final boolean b; while (b = false) continue; } } {FAIL}
v is DU after while(e)S; iff v is DU after e when false and v is DU before every exiting breakTest Case: 16.2.9-definite-unassign-fail-6Expected Result: FAIL
Regression Test:
tcltest::test 16.2.9-definite-unassign-fail-5 { v is DU after while(e)S; iff v is DU after e when false and v is DU before every exiting break } { empty_main T1629duf5 { final int i; while (true) { if (false) i = 1; break; } i = 1; } } {FAIL}
v is DU after while(e)S; iff v is DU after e when false and v is DU before every exiting breakTest Case: 16.2.9-definite-unassign-fail-7Expected Result: FAIL
Regression Test:
tcltest::test 16.2.9-definite-unassign-fail-6 { v is DU after while(e)S; iff v is DU after e when false and v is DU before every exiting break } { empty_main T1629duf6 { final int i; boolean b = true; while (b && false) if (false) i = 1; i = 1; } } {FAIL}
v is DU after while(e)S; iff v is DU after e when false and v is DU before every exiting breakTest Case: 16.2.9-definite-unassign-fail-8Expected Result: FAIL
Regression Test:
tcltest::test 16.2.9-definite-unassign-fail-7 { v is DU after while(e)S; iff v is DU after e when false and v is DU before every exiting break } { empty_main T1629duf7 { final int i; while (true) if (true) break; else i = 1; i = 1; } } {FAIL}
v is DU before S iff V is DU after e when trueTest Case: 16.2.9-definite-assign-pass-1Expected Result: FAIL
Regression Test:
tcltest::test 16.2.9-definite-unassign-fail-8 { v is DU before S iff V is DU after e when true } { empty_main T1629duf8 { final int i; i = 1; while (true) i = 2; } } {FAIL}
v is DA after while(e)S; iff v is DA after e when false and v is DA before every exiting breakTest Case: 16.2.9-definite-assign-pass-2Expected Result: PASS
Regression Test:
tcltest::test 16.2.9-definite-assign-pass-1 { v is DA after while(e)S; iff v is DA after e when false and v is DA before every exiting break } { empty_main T1629dap1 { int i; boolean b = true; while (b || true); int j = i; } } {PASS}
v is DA after while(e)S; iff v is DA after e when false and v is DA before every exiting breakTest Case: 16.2.9-definite-assign-pass-3Expected Result: PASS
Regression Test:
tcltest::test 16.2.9-definite-assign-pass-2 { v is DA after while(e)S; iff v is DA after e when false and v is DA before every exiting break } { empty_main T1629dap2 { int i; while (true) try { break; // not an exiting break; } finally { i = 1; break; } int j = i; } } {PASS}
v is DA after while(e)S; iff v is DA after e when false and v is DA before every exiting breakTest Case: 16.2.9-definite-assign-fail-1Expected Result: PASS
Regression Test:
tcltest::test 16.2.9-definite-assign-pass-3 { v is DA after while(e)S; iff v is DA after e when false and v is DA before every exiting break } { empty_main T1629dap3 { boolean b; while (b = false); boolean x = b; } } {PASS}
v is DA after while(e)S; iff v is DA after e when false and v is DA before every exiting breakTest Case: 16.2.9-definite-assign-fail-2Expected Result: FAIL
Regression Test:
tcltest::test 16.2.9-definite-assign-fail-1 { v is DA after while(e)S; iff v is DA after e when false and v is DA before every exiting break } { empty_main T1629daf1 { int i; boolean b = false; while (b = !b) i = 1; int j = i; } } {FAIL}
v is DA after while(e)S; iff v is DA after e when false and v is DA before every exiting breakTest Case: 16.2.9-definite-assign-fail-3Expected Result: FAIL
Regression Test:
tcltest::test 16.2.9-definite-assign-fail-2 { v is DA after while(e)S; iff v is DA after e when false and v is DA before every exiting break } { empty_main T1629daf2 { int i; while (true) break; int j = i; } } {FAIL}
v is DA after while(e)S; iff v is DA after e when false and v is DA before every exiting breakExpected Result: FAIL
Regression Test:
tcltest::test 16.2.9-definite-assign-fail-3 { v is DA after while(e)S; iff v is DA after e when false and v is DA before every exiting break } { empty_main T1629daf3 { int i; boolean b; while (b = true) if (false) break; int j = i; } } {FAIL}
tests/jls/definite-assignment/statements/do-statements
v is DU after the do if it is DU before every break which exits the doTest Case: 16.2.10-definite-unassign-pass-2Expected Result: PASS
Regression Test:
tcltest::test 16.2.10-definite-unassign-pass-1 { v is DU after the do if it is DU before every break which exits the do } { empty_main T16210dup1 { final int i; boolean b = true; do { if (b) break; try { i = 1; break; // doesn't exit do } finally { return; } } while (true); i = 2; } } {PASS}
v is DU before the condition if it is DU before every continue which exits the statementTest Case: 16.2.10-definite-unassign-pass-3Expected Result: PASS
Regression Test:
tcltest::test 16.2.10-definite-unassign-pass-2 { v is DU before the condition if it is DU before every continue which exits the statement } { empty_main T16210dup2 { final int i; do { try { i = 2; continue; // doesn't continue loop } finally { return; } } while (true); } } {PASS}
v may be reachably assigned in loop only once unless loop can't repeatTest Case: 16.2.10-definite-unassign-pass-4Expected Result: PASS
Regression Test:
tcltest::test 16.2.10-definite-unassign-pass-3 { v may be reachably assigned in loop only once unless loop can't repeat } { empty_main T16210dup3 { final int i; do if (false) i = 1; // assignment not reachable while (true); // the fact that i is not DU before the loop doesn't matter } } {PASS}
v may be reachably assigned in loop only once unless loop can't repeatTest Case: 16.2.10-definite-unassign-pass-5Expected Result: PASS
Regression Test:
tcltest::test 16.2.10-definite-unassign-pass-4 { v may be reachably assigned in loop only once unless loop can't repeat } { empty_main T16210dup4 { final int i; do i = 1; while (false); } } {PASS}
v may be reachably assigned in loop only once unless loop can't repeatTest Case: 16.2.10-definite-unassign-pass-6Expected Result: PASS
Regression Test:
tcltest::test 16.2.10-definite-unassign-pass-5 { v may be reachably assigned in loop only once unless loop can't repeat } { empty_main T16210dup5 { final int i; do { i = 1; break; } while (true); } } {PASS}
v may be reachably assigned in loop only once unless loop can't repeatTest Case: 16.2.10-definite-unassign-pass-7Expected Result: PASS
Regression Test:
tcltest::test 16.2.10-definite-unassign-pass-6 { v may be reachably assigned in loop only once unless loop can't repeat } { empty_main T16210dup6 { final boolean b; do; while ((b = true) && false); } } {PASS}
v may be reachably assigned in loop only once unless loop can't repeatTest Case: 16.2.10-definite-unassign-pass-8Expected Result: PASS
Regression Test:
tcltest::test 16.2.10-definite-unassign-pass-7 { v may be reachably assigned in loop only once unless loop can't repeat } { empty_main T16210dup7 { final boolean b; do continue; while ((b = true) && false); } } {PASS}
v may be reachably assigned in loop only once unless loop can't repeatTest Case: 16.2.10-definite-unassign-pass-9Expected Result: PASS
Regression Test:
tcltest::test 16.2.10-definite-unassign-pass-8 { v may be reachably assigned in loop only once unless loop can't repeat } { empty_main T16210dup8 { final int i; boolean b = true; do i = 1; while (b && false); } } {PASS}
v is DU after do S while(e); iff v is DU after e when false and v is DU before every exiting breakTest Case: 16.2.10-definite-unassign-pass-10Expected Result: PASS
Regression Test:
tcltest::test 16.2.10-definite-unassign-pass-9 { v is DU after do S while(e); iff v is DU after e when false and v is DU before every exiting break } { empty_main T16210dup9 { final boolean b; b = true; do; while (b || true); b = false; } } {PASS}
variables declared in a loop may be assigned in the loopTest Case: 16.2.10-definite-unassign-pass-11Expected Result: PASS
Regression Test:
tcltest::test 16.2.10-definite-unassign-pass-10 { variables declared in a loop may be assigned in the loop } { empty_main T16210dup10 { do { final int i; i = 1; continue; } while (true); } } {PASS}
variables declared in a loop may be assigned in the loopTest Case: 16.2.10-definite-unassign-fail-1Expected Result: PASS
Regression Test:
tcltest::test 16.2.10-definite-unassign-pass-11 { variables declared in a loop may be assigned in the loop } { empty_main T16210dup11 { do { final int i; i = 1; } while (true); } } {PASS}
v may be reachably assigned in loop only once unless loop can't repeatTest Case: 16.2.10-definite-unassign-fail-2Expected Result: FAIL
Regression Test:
tcltest::test 16.2.10-definite-unassign-fail-1 { v may be reachably assigned in loop only once unless loop can't repeat } { empty_main T16210duf1 { final int i; do i = 1; while (true); } } {FAIL}
v may be reachably assigned in loop only once unless loop can't repeatTest Case: 16.2.10-definite-unassign-fail-3Expected Result: FAIL
Regression Test:
tcltest::test 16.2.10-definite-unassign-fail-2 { v may be reachably assigned in loop only once unless loop can't repeat } { empty_main T16210duf2 { final int i; do { i = 1; continue } while (true); } } {FAIL}
v may be reachably assigned in loop only once unless loop can't repeatTest Case: 16.2.10-definite-unassign-fail-4Expected Result: FAIL
Regression Test:
tcltest::test 16.2.10-definite-unassign-fail-3 { v may be reachably assigned in loop only once unless loop can't repeat } { empty_main T16210duf3 { final boolean b; do; while (b = false); } } {FAIL}
v may be reachably assigned in loop only once unless loop can't repeatTest Case: 16.2.10-definite-unassign-fail-5Expected Result: FAIL
Regression Test:
tcltest::test 16.2.10-definite-unassign-fail-4 { v may be reachably assigned in loop only once unless loop can't repeat } { empty_main T16210duf4 { final boolean b; do continue; while (b = false); } } {FAIL}
v is DU after do S while(e); iff v is DU after e when false and v is DU before every exiting breakTest Case: 16.2.10-definite-unassign-fail-6Expected Result: FAIL
Regression Test:
tcltest::test 16.2.10-definite-unassign-fail-5 { v is DU after do S while(e); iff v is DU after e when false and v is DU before every exiting break } { empty_main T16210duf5 { final boolean b; do break; while ((b = true) && false); b = true; } } {FAIL}
v is DU after do S while(e); iff v is DU after e when false and v is DU before every exiting breakTest Case: 16.2.10-definite-unassign-fail-7Expected Result: FAIL
Regression Test:
tcltest::test 16.2.10-definite-unassign-fail-6 { v is DU after do S while(e); iff v is DU after e when false and v is DU before every exiting break } { empty_main T16210duf6 { final int i; do { if (false) i = 1; break; } while (true); i = 1; } } {FAIL}
v is DU after do S while(e); iff v is DU after e when false and v is DU before every exiting breakTest Case: 16.2.10-definite-unassign-fail-8Expected Result: FAIL
Regression Test:
tcltest::test 16.2.10-definite-unassign-fail-7 { v is DU after do S while(e); iff v is DU after e when false and v is DU before every exiting break } { empty_main T16210duf7 { final int i; boolean b = true; do if (false) i = 1; while (b && false); i = 1; } } {FAIL}
v is DU after do S while(e); iff v is DU after e when false and v is DU before every exiting breakTest Case: 16.2.10-definite-unassign-fail-9Expected Result: FAIL
Regression Test:
tcltest::test 16.2.10-definite-unassign-fail-8 { v is DU after do S while(e); iff v is DU after e when false and v is DU before every exiting break } { empty_main T16210duf8 { final int i; do if (true) break; else i = 1; while (false); i = 1; } } {FAIL}
v is DU after do S while(e); iff v is DU after e when false and v is DU before every exiting breakTest Case: 16.2.10-definite-unassign-fail-10Expected Result: FAIL
Regression Test:
tcltest::test 16.2.10-definite-unassign-fail-9 { v is DU after do S while(e); iff v is DU after e when false and v is DU before every exiting break } { empty_main T16210duf9 { final int i; do if (true) break; else i = 1; while (true); i = 1; } } {FAIL}
V is DU before S iff V is DU before do S while(e); and V is DU after e when trueTest Case: 16.2.10-definite-unassign-fail-11Expected Result: FAIL
Regression Test:
tcltest::test 16.2.10-definite-unassign-fail-10 { V is DU before S iff V is DU before do S while(e); and V is DU after e when true } { empty_main T16210duf10 { final int i; i = 1; do i = 2; while (true); } } {FAIL}
V is DU before S iff V is DU before do S while(e); and V is DU after e when trueTest Case: 16.2.10-definite-assign-pass-1Expected Result: FAIL
Regression Test:
tcltest::test 16.2.10-definite-unassign-fail-11 { V is DU before S iff V is DU before do S while(e); and V is DU after e when true } { empty_main T16210duf11 { final int i; i = 1; do i = 2; while (false); } } {FAIL}
v is DA after do S while(e); iff v is DA after e when false and v is DA before every exiting breakTest Case: 16.2.10-definite-assign-pass-2Expected Result: PASS
Regression Test:
tcltest::test 16.2.10-definite-assign-pass-1 { v is DA after do S while(e); iff v is DA after e when false and v is DA before every exiting break } { empty_main T16210dap1 { int i; boolean b = true; do; while (b || true); int j = i; } } {PASS}
v is DA after do S while(e); iff v is DA after e when false and v is DA before every exiting breakTest Case: 16.2.10-definite-assign-pass-3Expected Result: PASS
Regression Test:
tcltest::test 16.2.10-definite-assign-pass-2 { v is DA after do S while(e); iff v is DA after e when false and v is DA before every exiting break } { empty_main T16210dap2 { int i; do try { break; // not an exiting break; } finally { i = 1; break; } while (true); int j = i; } } {PASS}
v is DA after do S while(e); iff v is DA after e when false and v is DA before every exiting breakTest Case: 16.2.10-definite-assign-pass-4Expected Result: PASS
Regression Test:
tcltest::test 16.2.10-definite-assign-pass-3 { v is DA after do S while(e); iff v is DA after e when false and v is DA before every exiting break } { empty_main T16210dap3 { boolean b; do; while (b = false); boolean x = b; } } {PASS}
v is DA after do S while(e); iff v is DA after e when false and v is DA before every exiting breakTest Case: 16.2.10-definite-assign-pass-5Expected Result: PASS
Regression Test:
tcltest::test 16.2.10-definite-assign-pass-4 { v is DA after do S while(e); iff v is DA after e when false and v is DA before every exiting break } { empty_main T16210dap4 { int i; do i = 1; while (false); int j = i; } } {PASS}
v is DA after do S while(e); iff v is DA after e when false and v is DA before every exiting breakTest Case: 16.2.10-definite-assign-fail-1Expected Result: PASS
Regression Test:
tcltest::test 16.2.10-definite-assign-pass-5 { v is DA after do S while(e); iff v is DA after e when false and v is DA before every exiting break } { empty_main T16210dap5 { int i; do if (false) break; while (true); int j = i; } } {PASS}
v is DA after do S while(e); iff v is DA after e when false and v is DA before every exiting breakTest Case: 16.2.10-definite-assign-fail-2Expected Result: FAIL
Regression Test:
tcltest::test 16.2.10-definite-assign-fail-1 { v is DA after do S while(e); iff v is DA after e when false and v is DA before every exiting break } { empty_main T16210daf1 { int i; do break; while (true); int j = i; } } {FAIL}
v is DA after do S while(e); iff v is DA after e when false and v is DA before every exiting breakExpected Result: FAIL
Regression Test:
tcltest::test 16.2.10-definite-assign-fail-2 { v is DA after do S while(e); iff v is DA after e when false and v is DA before every exiting break } { empty_main T16210daf2 { int i; boolean b; do if (false) break; while (b = true); int j = i; } } {FAIL}
tests/jls/definite-assignment/statements/for-statements
v is DU after the for if it is DU before every break which exits the forTest Case: 16.2.11-definite-unassign-pass-2Expected Result: PASS
Regression Test:
tcltest::test 16.2.11-definite-unassign-pass-1 { v is DU after the for if it is DU before every break which exits the for } { empty_main T16211dup1 { final int i; boolean b = true; for ( ; ; ) { if (b) break; try { i = 1; break; // doesn't exit for } finally { return; } } i = 2; } } {PASS}
v is DU before the condition if it is DU before every continue which exits the statementTest Case: 16.2.11-definite-unassign-pass-3Expected Result: PASS
Regression Test:
tcltest::test 16.2.11-definite-unassign-pass-2 { v is DU before the condition if it is DU before every continue which exits the statement } { empty_main T16211dup2 { final int i; for ( ; ; ) { try { i = 2; continue; // doesn't continue loop } finally { return; } } } } {PASS}
v may be reachably assigned in loop only once unless loop can't repeatTest Case: 16.2.11-definite-unassign-pass-4Expected Result: PASS
Regression Test:
tcltest::test 16.2.11-definite-unassign-pass-3 { v may be reachably assigned in loop only once unless loop can't repeat } { empty_main T16211dup3 { final int i; for ( ; ; ) if (false) i = 1; // assignment not reachable // the fact that i is not DU before the loop doesn't matter } } {PASS}
v may be reachably assigned in loop only once unless loop can't repeatTest Case: 16.2.11-definite-unassign-pass-5Expected Result: PASS
Regression Test:
tcltest::test 16.2.11-definite-unassign-pass-4 { v may be reachably assigned in loop only once unless loop can't repeat } { empty_main T16211dup4 { for (final int i; ; ) { i = 1; break; } } } {PASS}
v may be reachably assigned in loop only once unless loop can't repeatTest Case: 16.2.11-definite-unassign-pass-6Expected Result: PASS
Regression Test:
tcltest::test 16.2.11-definite-unassign-pass-5 { v may be reachably assigned in loop only once unless loop can't repeat } { empty_main T16211dup5 { for (final boolean b; (b = true) && false; ); } } {PASS}
v may be reachably assigned in loop only once unless loop can't repeatTest Case: 16.2.11-definite-unassign-pass-7Expected Result: PASS
Regression Test:
tcltest::test 16.2.11-definite-unassign-pass-6 { v may be reachably assigned in loop only once unless loop can't repeat } { empty_main T16211dup6 { for (final boolean b; b = true; ) break; } } {PASS}
v may be reachably assigned in loop only once unless loop can't repeatTest Case: 16.2.11-definite-unassign-pass-8Expected Result: PASS
Regression Test:
tcltest::test 16.2.11-definite-unassign-pass-7 { v may be reachably assigned in loop only once unless loop can't repeat } { empty_main T16211dup7 { for (final boolean b; true; b = true) break; } } {PASS}
v may be reachably assigned in loop only once unless loop can't repeatTest Case: 16.2.11-definite-unassign-pass-9Expected Result: PASS
Regression Test:
tcltest::test 16.2.11-definite-unassign-pass-8 { v may be reachably assigned in loop only once unless loop can't repeat } { empty_main T16211dup8 { boolean b = true; for (final int i; b && false; ) i = 1; } } {PASS}
v is DU after a for statement iff v is DU after the (possibly implicit) condition when false and v is DU before every exiting breakTest Case: 16.2.11-definite-unassign-pass-10Expected Result: PASS
Regression Test:
tcltest::test 16.2.11-definite-unassign-pass-9 { v is DU after a for statement iff v is DU after the (possibly implicit) condition when false and v is DU before every exiting break } { empty_main T16211dup9 { final boolean b; for (b = true; b || true; ); b = false; } } {PASS}
variables declared in a loop may be assigned in the loopTest Case: 16.2.11-definite-unassign-pass-11Expected Result: PASS
Regression Test:
tcltest::test 16.2.11-definite-unassign-pass-10 { variables declared in a loop may be assigned in the loop } { empty_main T16211dup10 { for ( ; ; ) { final int i; i = 1; continue; } } } {PASS}
variables declared in a loop may be assigned in the loopTest Case: 16.2.11-definite-unassign-fail-1Expected Result: PASS
Regression Test:
tcltest::test 16.2.11-definite-unassign-pass-11 { variables declared in a loop may be assigned in the loop } { empty_main T16211dup11 { for ( ; ; ) { final int i; i = 1; } } } {PASS}
v may be reachably assigned in loop only once unless loop can't repeatTest Case: 16.2.11-definite-unassign-fail-2Expected Result: FAIL
Regression Test:
tcltest::test 16.2.11-definite-unassign-fail-1 { v may be reachably assigned in loop only once unless loop can't repeat } { empty_main T16211duf1 { for (final int i; ; ) i = 1; } } {FAIL}
v may be reachably assigned in loop only once unless loop can't repeatTest Case: 16.2.11-definite-unassign-fail-3Expected Result: FAIL
Regression Test:
tcltest::test 16.2.11-definite-unassign-fail-2 { v may be reachably assigned in loop only once unless loop can't repeat } { empty_main T16211duf2 { for (final int i; ; ) { i = 1; continue; } } } {FAIL}
v may be reachably assigned in loop only once unless loop can't repeatTest Case: 16.2.11-definite-unassign-fail-4Expected Result: FAIL
Regression Test:
tcltest::test 16.2.11-definite-unassign-fail-3 { v may be reachably assigned in loop only once unless loop can't repeat } { empty_main T16211duf3 { for (final boolean b; b = false; ); } } {FAIL}
v may be reachably assigned in loop only once unless loop can't repeatTest Case: 16.2.11-definite-unassign-fail-5Expected Result: FAIL
Regression Test:
tcltest::test 16.2.11-definite-unassign-fail-4 { v may be reachably assigned in loop only once unless loop can't repeat } { empty_main T16211duf4 { for (final boolean b; b = false; ) continue; } } {FAIL}
v may be reachably assigned in loop only once unless loop can't repeatTest Case: 16.2.11-definite-unassign-fail-6Expected Result: FAIL
Regression Test:
tcltest::test 16.2.11-definite-unassign-fail-5 { v may be reachably assigned in loop only once unless loop can't repeat } { empty_main T16211duf5 { for (final boolean b; ; b = false); } } {FAIL}
v may be reachably assigned in loop only once unless loop can't repeatTest Case: 16.2.11-definite-unassign-fail-7Expected Result: FAIL
Regression Test:
tcltest::test 16.2.11-definite-unassign-fail-6 { v may be reachably assigned in loop only once unless loop can't repeat } { empty_main T16211duf6 { for (final boolean b; ; b = false) continue; } } {FAIL}
v is DU after a for statement iff v is DU after the (possibly implicit) condition when false and v is DU before every exiting breakTest Case: 16.2.11-definite-unassign-fail-8Expected Result: FAIL
Regression Test:
tcltest::test 16.2.11-definite-unassign-fail-7 { v is DU after a for statement iff v is DU after the (possibly implicit) condition when false and v is DU before every exiting break } { empty_main T16211duf7 { final int i; for ( ; ; ) { if (false) i = 1; break; } i = 1; } } {FAIL}
v is DU after a for statement iff v is DU after the (possibly implicit) condition when false and v is DU before every exiting breakTest Case: 16.2.11-definite-unassign-fail-9Expected Result: FAIL
Regression Test:
tcltest::test 16.2.11-definite-unassign-fail-8 { v is DU after a for statement iff v is DU after the (possibly implicit) condition when false and v is DU before every exiting break } { empty_main T16211duf8 { final int i; for (boolean b = true; b && false; ) if (false) i = 1; i = 1; } } {FAIL}
v is DU after a for statement iff v is DU after the (possibly implicit) condition when false and v is DU before every exiting breakTest Case: 16.2.11-definite-unassign-fail-10Expected Result: FAIL
Regression Test:
tcltest::test 16.2.11-definite-unassign-fail-9 { v is DU after a for statement iff v is DU after the (possibly implicit) condition when false and v is DU before every exiting break } { empty_main T16211duf9 { final int i; for ( ; ; ) if (true) break; else i = 1; i = 1; } } {FAIL}
v is DU after a for statement iff v is DU after the (possibly implicit) condition when false and v is DU before every exiting breakTest Case: 16.2.11-definite-unassign-fail-11Expected Result: FAIL
Regression Test:
tcltest::test 16.2.11-definite-unassign-fail-10 { v is DU after a for statement iff v is DU after the (possibly implicit) condition when false and v is DU before every exiting break } { empty_main T16211duf10 { final int i; for ( ; false; i = 1); i = 1; } } {FAIL}
v is DU after a for statement iff v is DU after the (possibly implicit) condition when false and v is DU before every exiting breakTest Case: 16.2.11-definite-unassign-fail-12Expected Result: FAIL
Regression Test:
tcltest::test 16.2.11-definite-unassign-fail-11 { v is DU after a for statement iff v is DU after the (possibly implicit) condition when false and v is DU before every exiting break } { empty_main T16211duf11 { final int i; for ( ; ; i = 1) break; i = 1; } } {FAIL}
v is DU before S iff V is DU after the (possibly implicit) condition when trueTest Case: 16.2.11-definite-assign-pass-1Expected Result: FAIL
Regression Test:
tcltest::test 16.2.11-definite-unassign-fail-12 { v is DU before S iff V is DU after the (possibly implicit) condition when true } { empty_main T16211duf12 { for (final int i, j = i = 1; ; ) i = 2; } } {FAIL}
v is DA after a for statement iff v is DA after the (possibly implicit) condition when false and v is DA before every exiting breakTest Case: 16.2.11-definite-assign-pass-2Expected Result: PASS
Regression Test:
tcltest::test 16.2.11-definite-assign-pass-1 { v is DA after a for statement iff v is DA after the (possibly implicit) condition when false and v is DA before every exiting break } { empty_main T16211dap1 { int i; for (boolean b = true; b || true; ); int j = i; } } {PASS}
v is DA after a for statement iff v is DA after the (possibly implicit) condition when false and v is DA before every exiting breakTest Case: 16.2.11-definite-assign-pass-3Expected Result: PASS
Regression Test:
tcltest::test 16.2.11-definite-assign-pass-2 { v is DA after a for statement iff v is DA after the (possibly implicit) condition when false and v is DA before every exiting break } { empty_main T16211dap2 { int i; for ( ; ; ) try { break; // not an exiting break; } finally { i = 1; break; } int j = i; } } {PASS}
v is DA after a for statement iff v is DA after the (possibly implicit) condition when false and v is DA before every exiting breakTest Case: 16.2.11-definite-assign-fail-1Expected Result: PASS
Regression Test:
tcltest::test 16.2.11-definite-assign-pass-3 { v is DA after a for statement iff v is DA after the (possibly implicit) condition when false and v is DA before every exiting break } { empty_main T16211dap3 { boolean b; for ( ; b = false; ); boolean x = b; } } {PASS}
v is DA after a for statement iff v is DA after the (possibly implicit) condition when false and v is DA before every exiting breakTest Case: 16.2.11-definite-assign-fail-2Expected Result: FAIL
Regression Test:
tcltest::test 16.2.11-definite-assign-fail-1 { v is DA after a for statement iff v is DA after the (possibly implicit) condition when false and v is DA before every exiting break } { empty_main T16211daf1 { int i; for (boolean b = false; b = !b; ) i = 1; int j = i; } } {FAIL}
v is DA after a for statement iff v is DA after the (possibly implicit) condition when false and v is DA before every exiting breakTest Case: 16.2.11-definite-assign-fail-3Expected Result: FAIL
Regression Test:
tcltest::test 16.2.11-definite-assign-fail-2 { v is DA after a for statement iff v is DA after the (possibly implicit) condition when false and v is DA before every exiting break } { empty_main T16211daf2 { int i; for ( ; ; ) break; int j = i; } } {FAIL}
v is DA after a for statement iff v is DA after the (possibly implicit) condition when false and v is DA before every exiting breakTest Case: 16.2.11-definite-assign-fail-4Expected Result: FAIL
Regression Test:
tcltest::test 16.2.11-definite-assign-fail-3 { v is DA after a for statement iff v is DA after the (possibly implicit) condition when false and v is DA before every exiting break } { empty_main T16211daf3 { int i; for (boolean b; b = true; ) if (false) break; int j = i; } } {FAIL}
v is DA after a for statement iff v is DA after the (possibly implicit) condition when false and v is DA before every exiting breakExpected Result: FAIL
Regression Test:
tcltest::test 16.2.11-definite-assign-fail-4 { v is DA after a for statement iff v is DA after the (possibly implicit) condition when false and v is DA before every exiting break } { empty_main T16211daf4 { int i; for ( ; ; i = 1) break; int j = i; } } {FAIL}
tests/jls/definite-assignment/statements/try-statements
v is DU before a catch block iff it is DU before the try block and the try block has no reachable assignments to vTest Case: 16.2.14-definite-unassign-fail-2Expected Result: FAIL
Regression Test:
tcltest::test 16.2.14-definite-unassign-fail-1 { v is DU before a catch block iff it is DU before the try block and the try block has no reachable assignments to v } { empty_main T16214duf1 { final int i; int count = 0; while (true) { try { i = count++; count /= 0; // throws ArithmeticException while (true); } catch (Exception e) { // i not DU, since try block had reachable assignment } // i multiply assigned in loop } } } {FAIL}
v is DU before a finally block iff it is DU before the try block and the try block and all catch blocks have no reachable assignments to vTest Case: 16.2.14-definite-unassign-fail-3Expected Result: FAIL
Regression Test:
tcltest::test 16.2.14-definite-unassign-fail-2 { v is DU before a finally block iff it is DU before the try block and the try block and all catch blocks have no reachable assignments to v } { empty_main T16214duf2 { final int i; int count = 0; while (true) { try { i = count++; count /= 0; // throws ArithmeticException while (true); } finally { // i not DU, since try block had reachable assignment continue; // discards exception } // i multiply assigned in loop } } } {FAIL}
v is DU before a finally block iff it is DU before the try block and the try block and all catch blocks have no reachable assignments to vTest Case: 16.2.14-definite-unassign-fail-4Expected Result: FAIL
Regression Test:
tcltest::test 16.2.14-definite-unassign-fail-3 { v is DU before a finally block iff it is DU before the try block and the try block and all catch blocks have no reachable assignments to v } { empty_main T16214duf3 { final int i; int count = 0; while (true) { try { i = count++; count /= 0; // throws ArithmeticException while (true); } catch (Exception e) { } finally { // i not DU, since try block had reachable assignment } // i multiply assigned in loop } } } {FAIL}
v is DU before a finally block iff it is DU before the try block and the try block and all catch blocks have no reachable assignments to vTest Case: 16.2.14-definite-unassign-fail-5Expected Result: FAIL
Regression Test:
tcltest::test 16.2.14-definite-unassign-fail-4 { v is DU before a finally block iff it is DU before the try block and the try block and all catch blocks have no reachable assignments to v } { empty_main T16214duf4 { final int i; int count = 0; while (true) { try { throw new Exception(); } catch (Exception e) { i = count++; count /= 0; // throws ArithmeticException while (true); } finally { // i not DU, since catch block had reachable assignment continue; // discards exception } // i multiply assigned in loop } } } {FAIL}
v is DU before a catch block iff it is DU before the try block and the try block has no reachable assignments to vTest Case: 16.2.14-definite-unassign-fail-6Expected Result: FAIL
Regression Test:
tcltest::test 16.2.14-definite-unassign-fail-5 { v is DU before a catch block iff it is DU before the try block and the try block has no reachable assignments to v } { empty_class T16214duf5 { static final int i; static void m() { throw new RuntimeException(); } static { try { i = 1; m(); while (true); } catch (RuntimeException e) { i = 2; } } } } {FAIL}
v is DU before a finally block iff it is DU before the try block and the try block and all catch blocks have no reachable assignments to vTest Case: 16.2.14-definite-unassign-fail-7Expected Result: FAIL
Regression Test:
tcltest::test 16.2.14-definite-unassign-fail-6 { v is DU before a finally block iff it is DU before the try block and the try block and all catch blocks have no reachable assignments to v } { empty_class T16214duf6 { static final int i; static void m() { throw new RuntimeException(); } static { l: try { i = 1; m(); while (true); } finally { i = 2; break l; } } } } {FAIL}
v is DU before a finally block iff it is DU before the try block and the try block and all catch blocks have no reachable assignments to vTest Case: 16.2.14-definite-unassign-fail-8Expected Result: FAIL
Regression Test:
tcltest::test 16.2.14-definite-unassign-fail-7 { v is DU before a finally block iff it is DU before the try block and the try block and all catch blocks have no reachable assignments to v } { empty_class T16214duf7 { static final int i; static void m() { throw new RuntimeException(); } static { try { i = 1; m(); while (true); } catch (RuntimeException e) { } finally { i = 2; } } } } {FAIL}
v is DU before a finally block iff it is DU before the try block and the try block and all catch blocks have no reachable assignments to vTest Case: 16.2.14-definite-unassign-fail-9Expected Result: FAIL
Regression Test:
tcltest::test 16.2.14-definite-unassign-fail-8 { v is DU before a finally block iff it is DU before the try block and the try block and all catch blocks have no reachable assignments to v } { empty_class T16214duf8 { static final int i; static void m() { throw new RuntimeException(); } static { l: try { m(); } catch (RuntimeException e) { i = 1; m(); while (true); } finally { i = 2; break l; } } } } {FAIL}
the DA/DU status before a break is dependent on a finally that completes normallyTest Case: 16.2.14-definite-unassign-fail-10Expected Result: FAIL
Regression Test:
tcltest::test 16.2.14-definite-unassign-fail-9 { the DA/DU status before a break is dependent on a finally that completes normally } { empty_main T16214duf9 { final int i; while (true) { l: { try { if (true) break l; // intervening finally assigns i } finally { i = 1; } return; } // i multiply assigned in loop } } } {FAIL}
the DA/DU status before a break is dependent on a finally that completes normallyTest Case: 16.2.14-definite-unassign-fail-11Expected Result: FAIL
Regression Test:
tcltest::test 16.2.14-definite-unassign-fail-10 { the DA/DU status before a break is dependent on a finally that completes normally } { empty_main T16214duf10 { final int i; for ( ; ; ) { l: { try { if (true) break l; // intervening finally assigns i } finally { i = 1; } return; } // i multiply assigned in loop } } } {FAIL}
the DA/DU status before a break is dependent on a finally that completes normallyTest Case: 16.2.14-definite-unassign-fail-12Expected Result: FAIL
Regression Test:
tcltest::test 16.2.14-definite-unassign-fail-11 { the DA/DU status before a break is dependent on a finally that completes normally } { empty_main T16214duf11 { final int i; do l: { try { if (true) break l; // intervening finally assigns i } finally { i = 1; } return; } // i multiply assigned in loop while (true); } } {FAIL}
the DA/DU status before a break is dependent on a finally that completes normallyTest Case: 16.2.14-definite-unassign-fail-13Expected Result: FAIL
Regression Test:
tcltest::test 16.2.14-definite-unassign-fail-12 { the DA/DU status before a break is dependent on a finally that completes normally } { empty_main T16214duf12 { final int i; int j = 1; switch (j) { case 0: try { if (true) break; // intervening finally assigns i } finally { i = 1; } return; } i = 2; // i multiply assigned } } {FAIL}
the DA/DU status before a break is dependent on a finally that completes normallyTest Case: 16.2.14-definite-unassign-fail-14Expected Result: FAIL
Regression Test:
tcltest::test 16.2.14-definite-unassign-fail-13 { the DA/DU status before a break is dependent on a finally that completes normally } { empty_main T16214duf13 { final int i; l: { try { if (true) break l; // intervening finally assigns i } finally { i = 1; } return; } i = 2; // i multiply assigned } } {FAIL}
the DA/DU status before a continue is dependent on a finally that completes normallyTest Case: 16.2.14-definite-unassign-fail-15Expected Result: FAIL
Regression Test:
tcltest::test 16.2.14-definite-unassign-fail-14 { the DA/DU status before a continue is dependent on a finally that completes normally } { empty_main T16214duf14 { final int i; while (true) { try { if (true) continue; // intervening finally assigns i } finally { i = 1; } return; // i multiply assigned in loop } } } {FAIL}
the DA/DU status before a continue is dependent on a finally that completes normallyTest Case: 16.2.14-definite-unassign-fail-16Expected Result: FAIL
Regression Test:
tcltest::test 16.2.14-definite-unassign-fail-15 { the DA/DU status before a continue is dependent on a finally that completes normally } { empty_main T16214duf15 { final int i; for ( ; ; ) { try { if (true) continue; // intervening finally assigns i } finally { i = 1; } return; // i multiply assigned in loop } } } {FAIL}
the DA/DU status before a continue is dependent on a finally that completes normallyExpected Result: FAIL
Regression Test:
tcltest::test 16.2.14-definite-unassign-fail-16 { the DA/DU status before a continue is dependent on a finally that completes normally } { empty_main T16214duf16 { final int i; do { try { if (true) continue; // intervening finally assigns i } finally { i = 1; } return; // i multiply assigned in loop } while (true); } } {FAIL}
tests/jls/definite-assignment/anonymous-classes
V is DA before an anonymous class iff V is DA after the class instance creation expressionTest Case: 16.5-anonymous-2Expected Result: FAIL
Regression Test:
tcltest::test 16.5-anonymous-1 { V is DA before an anonymous class iff V is DA after the class instance creation expression } { empty_main T165a1 { final int v; new Object() { int i = v; }; } } {FAIL}
V is DA before an anonymous class iff V is DA after the class instance creation expressionTest Case: 16.5-anonymous-3Expected Result: PASS
Regression Test:
tcltest::test 16.5-anonymous-2 { V is DA before an anonymous class iff V is DA after the class instance creation expression } { empty_main T165a2 { final int v; v = 1; new Object() { int i = v; }; } } {PASS}
V is DA before an anonymous class iff V is DA after the class instance creation expressionExpected Result: PASS
Regression Test:
tcltest::test 16.5-anonymous-3 { V is DA before an anonymous class iff V is DA after the class instance creation expression } { empty_class T165a3 { T165a3(int j) {} void foo() { final int v; new T165a3(v = 1) { int i = v; }; } } } {PASS}
tests/jls/definite-assignment/constructors-and-instance-initializers
A blank final instance variable is DA after alternate constructor invocationTest Case: 16.8-constructor-2Expected Result: FAIL
Regression Test:
tcltest::test 16.8-constructor-1 { A blank final instance variable is DA after alternate constructor invocation } { empty_class T168c1 { final int i; T168c1() { this(1); i = 1; } T168c1(int i) { i = 1; } } } {FAIL}
A blank final instance variable is DA after alternate constructor invocationTest Case: 16.8-constructor-3Expected Result: PASS
Regression Test:
tcltest::test 16.8-constructor-2 { A blank final instance variable is DA after alternate constructor invocation } { empty_class T168c2 { final int i; T168c2() { this(1); } T168c2(int j) { i = 1; } } } {PASS}
A blank final instance variable is DA after superconstructor if it is DA after initializersTest Case: 16.8-constructor-4Expected Result: PASS
Regression Test:
tcltest::test 16.8-constructor-3 { A blank final instance variable is DA after superconstructor if it is DA after initializers } { empty_class T168c3 { final int i; static {} Object o = new Object(); T168c3() { i = 1; } } } {PASS}
A blank final instance variable is DA after superconstructor if it is DA after initializersTest Case: 16.8-constructor-5Expected Result: FAIL
Regression Test:
tcltest::test 16.8-constructor-4 { A blank final instance variable is DA after superconstructor if it is DA after initializers } { empty_class T168c4 { final int i; Object o = new Integer(i = 1); T168c4() { i = 1; } } } {FAIL}
A blank final instance variable is DA after superconstructor if it is DA after initializersTest Case: 16.8-constructor-6Expected Result: FAIL
Regression Test:
tcltest::test 16.8-constructor-5 { A blank final instance variable is DA after superconstructor if it is DA after initializers } { empty_class T168c5 { final int i; Object o = new Object(); { i = 1; } T168c5() { i = 1; } } } {FAIL}
A blank final must be DU before assignment in an instance initializerTest Case: 16.8-constructor-7Expected Result: FAIL
Regression Test:
tcltest::test 16.8-constructor-6 { A blank final must be DU before assignment in an instance initializer } { empty_class T168c6 { final int i; { if (false) i = 1; } int j = i = 1; } } {FAIL}
A blank final must be DU before assignment in an instance initializerTest Case: 16.8-constructor-8Expected Result: FAIL
Regression Test:
tcltest::test 16.8-constructor-7 { A blank final must be DU before assignment in an instance initializer } { empty_class T168c7 { final int i; { if (false) i = 1; } { i = 1; } } } {FAIL}
A blank final must be DU before assignment in a constructorTest Case: 16.8-constructor-9Expected Result: FAIL
Regression Test:
tcltest::test 16.8-constructor-8 { A blank final must be DU before assignment in a constructor } { empty_class T168c8 { final int i; { if (false) i = 1; } T168c8() { i = 1; } } } {FAIL}
A blank final must be DA after every constructorTest Case: 16.8-parameter-1Expected Result: FAIL
Regression Test:
tcltest::test 16.8-constructor-9 { A blank final must be DA after every constructor } { empty_class T168c9 { final int i; { if (false) i = 1; } T168c9() { if (false) i = 1; } } } {FAIL}
Final parameters may not be assigned in a constructorTest Case: 16.8-parameter-2Expected Result: FAIL
Regression Test:
tcltest::test 16.8-parameter-1 { Final parameters may not be assigned in a constructor } { empty_class T168p1 { class Super { Super(int i) {} } class Sub extends Super { Sub(final int i) { super(i = 1); } } } } {FAIL}
Final parameters may not be assigned in a constructorTest Case: 16.8-parameter-3Expected Result: FAIL
Regression Test:
tcltest::test 16.8-parameter-2 { Final parameters may not be assigned in a constructor } { empty_class T168p2 { T168p2(int i) {} T168p2(final short s) { this((int) (s = 1)); } } } {FAIL}
Final parameters may not be assigned in a constructorExpected Result: FAIL
Regression Test:
tcltest::test 16.8-parameter-3 { Final parameters may not be assigned in a constructor } { empty_class T168p3 { class Super {} class Sub extends Super { Sub(final boolean b) { ((b = true) ? new T168p3() : null).super(); } } } } {FAIL}
tests/jls/blocks-and-statements/try-statement
checked exceptions must be caught or declaredTest Case: 14.19.exception-2Expected Result: FAIL
Regression Test:
tcltest::test 14.19.exception-1 { checked exceptions must be caught or declared } { empty_class T1419e1 { void m() { try { throw new Exception(); } catch (RuntimeException e) { } } } } {FAIL}
checked exceptions must be caught or declaredTest Case: 14.19.exception-3Expected Result: PASS
Regression Test:
tcltest::test 14.19.exception-2 { checked exceptions must be caught or declared } { empty_class T1419e2 { void m() throws Exception { try { throw new Exception(); } catch (RuntimeException e) { } } } } {PASS}
checked exceptions must be caught or declaredTest Case: 14.19.exception-4Expected Result: FAIL
Regression Test:
tcltest::test 14.19.exception-3 { checked exceptions must be caught or declared } { empty_class T1419e3 { void m() { try { throw new Exception(); } finally { } } } } {FAIL}
checked exceptions must be caught or declaredTest Case: 14.19.exception-5Expected Result: PASS
Regression Test:
tcltest::test 14.19.exception-4 { checked exceptions must be caught or declared } { empty_class T1419e4 { void m() throws Exception { try { throw new Exception(); } finally { } } } } {PASS}
checked exceptions must be caught or declaredTest Case: 14.19.exception-6Expected Result: PASS
Regression Test:
tcltest::test 14.19.exception-5 { checked exceptions must be caught or declared } { empty_class T1419e5 { void m() { try { throw new Exception(); } catch (Exception e) { } } } } {PASS}
checked exceptions must be caught or declaredTest Case: 14.19.exception-7Expected Result: PASS
Regression Test:
tcltest::test 14.19.exception-6 { checked exceptions must be caught or declared } { empty_class T1419e6 { void m() { try { throw new Exception(); } catch (Exception e) { } finally { } } } } {PASS}
checked exceptions must be caught or declaredTest Case: 14.19.exception-8Expected Result: FAIL
Regression Test:
tcltest::test 14.19.exception-7 { checked exceptions must be caught or declared } { empty_class T1419e7 { void m() { try { throw new Exception(); } catch (Exception e) { throw e; } } } } {FAIL}
checked exceptions must be caught or declaredTest Case: 14.19.exception-9Expected Result: PASS
Regression Test:
tcltest::test 14.19.exception-8 { checked exceptions must be caught or declared } { empty_class T1419e8 { void m() throws Exception { try { throw new Exception(); } catch (Exception e) { throw e; } } } } {PASS}
checked exceptions must be caught or declaredTest Case: 14.19.exception-10Expected Result: FAIL
Regression Test:
tcltest::test 14.19.exception-9 { checked exceptions must be caught or declared } { empty_class T1419e9 { void m() { try { throw new Exception(); } catch (Exception e) { throw e; } finally { } } } } {FAIL}
checked exceptions must be caught or declaredTest Case: 14.19.exception-11Expected Result: PASS
Regression Test:
tcltest::test 14.19.exception-10 { checked exceptions must be caught or declared } { empty_class T1419e10 { void m() throws Exception { try { throw new Exception(); } catch (Exception e) { throw e; } finally { } } } } {PASS}
checked exceptions must be caught or declaredTest Case: 14.19.exception-12Expected Result: FAIL
Regression Test:
tcltest::test 14.19.exception-11 { checked exceptions must be caught or declared } { empty_class T1419e11 { void m() { try { } finally { throw new Exception(); } } } } {FAIL}
checked exceptions must be caught or declaredTest Case: 14.19.exception-13Expected Result: PASS
Regression Test:
tcltest::test 14.19.exception-12 { checked exceptions must be caught or declared } { empty_class T1419e12 { void m() throws Exception { try { } finally { throw new Exception(); } } } } {PASS}
checked exceptions must be caught or declaredTest Case: 14.19.exception-14Expected Result: PASS
Regression Test:
tcltest::test 14.19.exception-13 { checked exceptions must be caught or declared } { empty_class T1419e13 { void m() { try { throw new Exception(); } finally { return; } } } } {PASS}
checked exceptions must be caught or declaredTest Case: 14.19.exception-15Expected Result: PASS
Regression Test:
tcltest::test 14.19.exception-14 { checked exceptions must be caught or declared } { empty_class T1419e14 { void m() { a: try { throw new Exception(); } finally { break a; } } } } {PASS}
checked exceptions must be caught or declaredTest Case: 14.19.exception-16Expected Result: PASS
Regression Test:
tcltest::test 14.19.exception-15 { checked exceptions must be caught or declared } { empty_class T1419e15 { void m() { a: do try { throw new Exception(); } finally { continue a; } while (false); } } } {PASS}
checked exceptions must be caught or declaredTest Case: 14.19.exception-17Expected Result: PASS
Regression Test:
tcltest::test 14.19.exception-16 { checked exceptions must be caught or declared } { empty_class T1419e16 { void m() { try { try { throw new Exception(); } finally { throw new RuntimeException(); } } catch (RuntimeException e) { } } } } {PASS}
checked exceptions must be caught or declaredTest Case: 14.19.exception-18Expected Result: PASS
Regression Test:
tcltest::test 14.19.exception-17 { checked exceptions must be caught or declared } { empty_class T1419e17 { void m() { try { throw new Exception(); } catch (Exception e) { } finally { return; } } } } {PASS}
checked exceptions must be caught or declaredTest Case: 14.19.exception-19Expected Result: PASS
Regression Test:
tcltest::test 14.19.exception-18 { checked exceptions must be caught or declared } { empty_class T1419e18 { void m() { a: try { throw new Exception(); } catch (Exception e) { } finally { break a; } } } } {PASS}
checked exceptions must be caught or declaredTest Case: 14.19.exception-20Expected Result: PASS
Regression Test:
tcltest::test 14.19.exception-19 { checked exceptions must be caught or declared } { empty_class T1419e19 { void m() { a: do try { throw new Exception(); } catch (Exception e) { } finally { continue a; } while (false); } } } {PASS}
checked exceptions must be caught or declaredTest Case: 14.19.exception-21Expected Result: PASS
Regression Test:
tcltest::test 14.19.exception-20 { checked exceptions must be caught or declared } { empty_class T1419e20 { void m() { try { try { throw new Exception(); } catch (Exception e) { } finally { throw new RuntimeException(); } } catch (RuntimeException e) { } } } } {PASS}
checked exceptions must be caught or declaredTest Case: 14.19.exception-22Expected Result: PASS
Regression Test:
tcltest::test 14.19.exception-21 { checked exceptions must be caught or declared } { empty_class T1419e21 { void m() { try { throw new Exception(); } catch (Exception e) { throw e; } finally { return; } } } } {PASS}
checked exceptions must be caught or declaredTest Case: 14.19.exception-23Expected Result: PASS
Regression Test:
tcltest::test 14.19.exception-22 { checked exceptions must be caught or declared } { empty_class T1419e22 { void m() { a: try { throw new Exception(); } catch (Exception e) { throw e; } finally { break a; } } } } {PASS}
checked exceptions must be caught or declaredTest Case: 14.19.exception-24Expected Result: PASS
Regression Test:
tcltest::test 14.19.exception-23 { checked exceptions must be caught or declared } { empty_class T1419e23 { void m() { a: do try { throw new Exception(); } catch (Exception e) { throw e; } finally { continue a; } while (false); } } } {PASS}
checked exceptions must be caught or declaredExpected Result: PASS
Regression Test:
tcltest::test 14.19.exception-24 { checked exceptions must be caught or declared } { empty_class T1419e24 { void m() { try { try { throw new Exception(); } catch (Exception e) { throw e; } finally { throw new RuntimeException(); } } catch (RuntimeException e) { } } } } {PASS}
tests/runtime/jls/lexical-structure/literals/integer-literals
Detect if endianness is wrongExpected Result: OK
Regression Test:
tcltest::test 3.10.1-runtime-endianness-1 { Detect if endianness is wrong } { compile_and_run [saveas T3101re1.java { class T3101re1 { public static void main(String[] args) { long l1 = 0x1111111122222222L; long l2 = 0x2222222211111111L; if (l1 < l2) { System.out.print("OK"); } else { System.out.print("Wrong endianness"); } } } }] } {OK}
tests/runtime/jls/lexical-structure/literals/floating-point-literals
Detect if endianness is backwardExpected Result: OK
Regression Test:
tcltest::test 3.10.2-runtime-endianness-1 { Detect if endianness is backward } { compile_and_run [saveas T3102re1.java { class T3102re1 { public static void main(String[] args) { double d1 = Double.longBitsToDouble(0x3ff8000000000000L); double d2 = Double.longBitsToDouble(0x000000003ff80000L); // compare d1 and d2, to make sure endianness of longs // was not wrong, either if (d1 == 1.5 && d1 > d2) { System.out.print("OK"); } else if (d2 == 1.5 || d1 < d2) { System.out.print("Wrong endianness"); } else { System.out.print("Unexpected result"); } } } }] } {OK}
tests/runtime/jls/lexical-structure/literals/character-literals
Ensure that characters are correctly coalesced into strings, even when the compiler can apply optimizations on constant values.Expected Result: OK O1
Regression Test:
tcltest::test 3.10.4-runtime-coalescense-1 { Ensure that characters are correctly coalesced into strings, even when the compiler can apply optimizations on constant values. } { compile_and_run [saveas T3104rc1.java { class T3104rc1 { public static void main(String [] args) { String s = " "; System.out.print(s + 'O' + "K"); System.out.print(s + 'O' + 1); } } }] } { OK O1}
tests/runtime/jls/lexical-structure/literals/string-literals
Compile-time constant string expressions, and String.intern(), are == String objectsExpected Result: true true true true false true
Regression Test:
tcltest::test 3.10.5-runtime-1 { Compile-time constant string expressions, and String.intern(), are == String objects } { saveas testPackage/T3105r1.java { package testPackage; class T3105r1 { public static void main(String[] args) { String hello = "Hello", lo = "lo"; System.out.print((hello == "Hello") + " "); System.out.print((Other1.hello == hello) + " "); System.out.print((other.Other.hello == hello) + " "); System.out.print((hello == ("Hel"+"lo")) + " "); System.out.print((hello == ("Hel"+lo)) + " "); System.out.print(hello == ("Hel"+lo).intern()); } } class Other1 { static String hello = "Hello"; } } saveas other/Other.java { package other; public class Other { public static String hello = "Hello"; } } compile_and_run other/Other.java testPackage/T3105r1.java } {true true true true false true}
tests/runtime/jvms/class-file-format/limitations
Check that all the jvms tests that should compile actually produce valid class filesExpected Result: 4:OK 6:OK
Regression Test:
tcltest::test 4.10-jvms-runtime-1 { Check that all the jvms tests that should compile actually produce valid class files } { # First, compile 4.10-jvms-4 set buff "" set interfaces 7 set over 10000 for {set j 0} {$j < $interfaces} {incr j} { append buff "interface T410jvms4_${j} \{\n" for {set i 0} {$i < $over} {incr i} { append buff "\tint v${j}_${i} = 1;\n" } append buff "\}\n" } append buff "public class T410jvms4 implements T410jvms4_0" for {set j 1} {$j < $interfaces} {incr j} { append buff ",\n\tT410jvms4_${j}" } append buff " \{\n\t\tint v = 1;\n\}\n" compile [saveas T410jvms4.java $buff] # Next, compile 4.10-jvms-6 set buff "" set interfaces 7 set over 10000 for {set j 0} {$j < $interfaces} {incr j} { append buff "interface T410jvms6_${j} \{\n" for {set i 0} {$i < $over} {incr i} { append buff "\tint m${j}_${i}();\n" } append buff "\}\n" } append buff "public abstract class T410jvms6 implements T410jvms6_0" for {set j 1} {$j < $interfaces} {incr j} { append buff ",\n\tT410jvms6_${j}" } append buff " \{\n\t\tvoid m() \{\}\n\}\n" compile [saveas T410jvms6.java $buff] # Now, check that those tests passed compile_and_run [saveas T410jr1.java { class T410jr1 { public static void main(String[] args) { try { // Exploit fact that Class.forName causes class initialization, // which runs the verifier to see if the class compiled successfully Class.forName("T410jvms4"); Class.forName("T410jvms4_0"); Class.forName("T410jvms4_1"); Class.forName("T410jvms4_2"); Class.forName("T410jvms4_3"); Class.forName("T410jvms4_4"); Class.forName("T410jvms4_5"); Class.forName("T410jvms4_6"); System.out.print("4:OK "); } catch (ClassNotFoundException e) { System.out.print("4:inconclusive "); } catch (Error e) { System.out.print("4:failed(" + e + ") "); } try { // Thanks to a nice infinite loop bug in java 1.4.1, do not test this class. // Class.forName("T410jvms6"); Class.forName("T410jvms6_0"); Class.forName("T410jvms6_1"); Class.forName("T410jvms6_2"); Class.forName("T410jvms6_3"); Class.forName("T410jvms6_4"); Class.forName("T410jvms6_5"); Class.forName("T410jvms6_6"); System.out.print("6:OK "); } catch (ClassNotFoundException e) { System.out.print("6:inconclusive "); } catch (Error e) { System.out.print("6:failed(" + e + ") "); } } } }] } {4:OK 6:OK }
tests/runtime/jls/classes/constructor-declarations/constructor-access
Private constructors are accessible from within the body of the top level class that encloses the constructorExpected Result: OK
Regression Test:
tcltest::test 6.6.1-runtime-privateconstructor-1 { Private constructors are accessible from within the body of the top level class that encloses the constructor } { saveas T661rpc1.java { public class T661rpc1 { class T661rpc1_innersuper { private T661rpc1_innersuper() { } } class T661rpc1_inner extends T661rpc1_innersuper { T661rpc1_inner() { super(); } } public static void main(String[] args) { new T661rpc1().new T661rpc1_inner(); System.out.print("OK"); } } } compile_and_run T661rpc1.java } {OK}
tests/runtime/jls/classes/class-declaration/inner-classes-and-enclosing-instances
Stress test of accessing a final local variable through 2 layers of nested local/anonymous classesExpected Result: 1
Regression Test:
tcltest::test 8.1.2-runtime-1 { Stress test of accessing a final local variable through 2 layers of nested local/anonymous classes } { compile_and_run [saveas T812r1.java { class T812r1 { public static void main(String[] args) { new T812r1().foo(1); } void foo(final int i) { class Local { Local() {} Local(int i) { this(); } int foo() { return new Local(0) { int j = i; }.j; } } System.out.print(new Local().foo()); } } }] } {1}
tests/runtime/jls/classes/field-declarations
Test access to an accessible, but non-inherited, private fieldExpected Result: 1 2 null
Regression Test:
tcltest::test 8.3-runtime-1 { Test access to an accessible, but non-inherited, private field } { compile_and_run [saveas T83r1.java { class T83r1 { static int init; public int i = ++init; class One extends T83r1 { private Object i; // does not inherit T83r1.i, but does hide it } class Two extends One { // does not inherit either i Two() { T83r1.this.super(); } int j = i; // enclosing access int k = ((T83r1) this).i; // access of hidden field Object l = super.i; // access of private field } public static void main(String[] args) { Two t = new T83r1().new Two(); System.out.print(t.j + " " + t.k + " " + t.l); } } }] } {1 2 null}
tests/runtime/jls/classes/method-declarations/inheritance-overriding-and-hiding
Abstract classes no longer need Miranda methods (generated place-holders in classes which inherit an abstract method from an interface without overriding it)Expected Result: OK
Regression Test:
tcltest::test 8.4.6-runtime-miranda-1 { Abstract classes no longer need Miranda methods (generated place-holders in classes which inherit an abstract method from an interface without overriding it) } { compile_and_run [saveas T846rm1c.java { interface T846rm1a { void m(); } abstract class T846rm1b implements T846rm1a {} abstract class T846rm1c extends T846rm1b implements T846rm1a { public static void main(String[] args) { boolean ok = true; try { T846rm1a.class.getDeclaredMethod("m", null); } catch (Exception e) { System.out.println("missing m() in class a"); ok = false; } try { T846rm1b.class.getDeclaredMethod("m", null); System.out.println("bogus Miranda m() in class b"); ok = false; } catch (Exception e) { } try { T846rm1c.class.getDeclaredMethod("m", null); System.out.println("bogus Miranda m() in class c"); ok = false; } catch (Exception e) { } if (ok) System.out.print("OK"); } } }] } {OK}
tests/runtime/jls/classes/method-declarations/inheritance-overriding-and-hiding
It is possible to have access to multiple methods, when one is not inherited across package boundaries. The VM is required to bypass polymorphism from classes that cannot access the specified methodExpected Result: 1 2
Regression Test:
tcltest::test 8.4.6.4-multiple-runtime-1 { It is possible to have access to multiple methods, when one is not inherited across package boundaries. The VM is required to bypass polymorphism from classes that cannot access the specified method } { compile_and_run [saveas p2/T8464mr1b.java { package p2; public class T8464mr1b extends p1.T8464mr1a { public int m() { return 2; } } }] [saveas p1/T8464mr1a.java { package p1; public class T8464mr1a { int m() { return 1; } public static void main(String[] args) { T8464mr1c c = new T8464mr1c(); T8464mr1a a = c; System.out.print(a.m() + " " + c.m()); } } class T8464mr1c extends p2.T8464mr1b { // inherits b.m(), but it does not override a.m() } }] } {1 2}
tests/runtime/jls/classes/constructor-declarations/constructor-modifiers
no modifier for inner class constructorTest Case: 8.8.3-runtime-inner-2Expected Result: OK
Regression Test:
tcltest::test 8.8.3-runtime-inner-1 { no modifier for inner class constructor } { compile_and_run [saveas T883ri1.java { class T883ri1 { class Inner { Inner() {} } public static void main(String[] args) { new T883ri1().new Inner(); System.out.print("OK"); } } }] } {OK}
modifier for inner class constructorTest Case: 8.8.3-runtime-inner-3Expected Result: OK
Regression Test:
tcltest::test 8.8.3-runtime-inner-2 { modifier for inner class constructor } { compile_and_run [saveas T883ri2.java { class T883ri2 { class Inner { public Inner() {} } public static void main(String[] args) { new T883ri2().new Inner(); System.out.print("OK"); } } }] } {OK}
modifier for inner class constructorTest Case: 8.8.3-runtime-inner-4Expected Result: OK
Regression Test:
tcltest::test 8.8.3-runtime-inner-3 { modifier for inner class constructor } { compile_and_run [saveas T883ri3.java { class T883ri3 { class Inner { protected Inner() {} } public static void main(String[] args) { new T883ri3().new Inner(); System.out.print("OK"); } } }] } {OK}
modifier for inner class constructorExpected Result: OK
Regression Test:
tcltest::test 8.8.3-runtime-inner-4 { modifier for inner class constructor } { compile_and_run [saveas T883ri4.java { class T883ri4 { class Inner { private Inner() {} } public static void main(String[] args) { new T883ri4().new Inner(); System.out.print("OK"); } } }] } {OK}
tests/runtime/jls/classes/constructor-declarations/constructor-body
invoke ctor of inner classTest Case: 8.8.5-runtime-inner-2Expected Result: OK
Regression Test:
tcltest::test 8.8.5-runtime-inner-1 { invoke ctor of inner class } { compile_and_run [saveas T885ri1.java { class T885ri1 { class Inner { Inner() {} } public static void main(String[] args) { new T885ri1().new Inner(); System.out.print("OK"); } } }] } {OK}
invoke ctor of inner classTest Case: 8.8.5-runtime-inner-3Expected Result: OK
Regression Test:
tcltest::test 8.8.5-runtime-inner-2 { invoke ctor of inner class } { compile_and_run [saveas T885ri2.java { class T885ri2 { class Inner { Inner(int i) {} } public static void main(String[] args) { new T885ri2().new Inner(1); System.out.print("OK"); } } }] } {OK}
invoke ctor of inner classTest Case: 8.8.5-runtime-inner-4Expected Result: OK
Regression Test:
tcltest::test 8.8.5-runtime-inner-3 { invoke ctor of inner class } { compile_and_run [saveas T885ri3.java { class T885ri3 { class Inner { Inner() {} Inner(int i) {} } public static void main(String[] args) { new T885ri3().new Inner(1); System.out.print("OK"); } } }] } {OK}
invoke ctor of inner classExpected Result: OK
Regression Test:
tcltest::test 8.8.5-runtime-inner-4 { invoke ctor of inner class } { compile_and_run [saveas T885ri4.java { class T885ri4 { class Inner { Inner() {} Inner(int i) { this(); } } public static void main(String[] args) { new T885ri4().new Inner(1); System.out.print("OK"); } } }] } {OK}
tests/runtime/jls/classes/constructor-declarations/default-constructor
If a class contains no constructor declarations, then a default constructor that takes no parameters and invokes the superclass constructor with no arguments is providedTest Case: 8.8.7-runtime-default-2Expected Result: super main
Regression Test:
tcltest::test 8.8.7-runtime-default-1 { If a class contains no constructor declarations, then a default constructor that takes no parameters and invokes the superclass constructor with no arguments is provided } { saveas T887rd1.java { class T887rd1_super { T887rd1_super() { System.out.print("super "); } } public class T887rd1 extends T887rd1_super { public static void main(String[] argv) { new T887rd1(); System.out.print("main"); } } } compile_and_run T887rd1.java } {super main}
If a class contains no constructor declarations, then a default constructor that takes no parameters and invokes the superclass constructor with no arguments is providedTest Case: 8.8.7-runtime-default-3Expected Result: super super main
Regression Test:
tcltest::test 8.8.7-runtime-default-2 { If a class contains no constructor declarations, then a default constructor that takes no parameters and invokes the superclass constructor with no arguments is provided } { saveas T887rd2.java { class T887rd2_super { T887rd2_super() { System.out.print("super "); } } public class T887rd2 extends T887rd2_super { public static void main(String[] argv) { new T887rd2().toString(); (new T887rd2()).toString(); System.out.print("main"); } } } compile_and_run T887rd2.java } {super super main}
If a class contains no constructor declarations, then a default constructor that takes no parameters and invokes the superclass constructor with no arguments is providedTest Case: 8.8.7-runtime-accessible-default-1Expected Result: super + super main
Regression Test:
tcltest::test 8.8.7-runtime-default-3 { If a class contains no constructor declarations, then a default constructor that takes no parameters and invokes the superclass constructor with no arguments is provided } { saveas T887rd3.java { class T887rd3_super { T887rd3_super() { System.out.print("super "); } } public class T887rd3 { private static class Inner extends T887rd3_super {} public static void main(String[] argv) { new Inner().toString(); System.out.print("+ "); (new Inner()).toString(); System.out.print("main"); } } } compile_and_run T887rd3.java } {super + super main}
The private superconstructor is accessible by default constructors contained in the same classExpected Result: super super super super super super main
Regression Test:
tcltest::test 8.8.7-runtime-accessible-default-1 { The private superconstructor is accessible by default constructors contained in the same class } { saveas T887rad1.java { class T887rad1 { private T887rad1() { System.out.print("super "); } static class Static extends T887rad1 {} class Inner extends T887rad1 {} void foo() { class InnerLocal extends T887rad1 {} new InnerLocal(); new T887rad1() {}; } static void bar() { class StaticLocal extends T887rad1 {} new StaticLocal(); new T887rad1() {}; } public static void main(String[] args) { T887rad1 t = new Static(); t.new Inner(); t.foo(); bar(); System.out.print("main"); } } } compile_and_run T887rad1.java } {super super super super super super main}
tests/runtime/jls/execution/initialization-of-classes-and-interfaces/when-initialization-occurs
Class initialization does not occur from instance field access, or from constant variable access, even when the access is not a constant expressionTest Case: 12.4.1-runtime-2Expected Result: 1 2 3 4
Regression Test:
tcltest::test 12.4.1-runtime-1 { Class initialization does not occur from instance field access, or from constant variable access, even when the access is not a constant expression } { compile_and_run [saveas T1241r1b.java { class T1241r1a { final int i = 1; static final int j = 1; static { System.out.print("3 "); } } class T1241r1b { public static void main(String[] args) { T1241r1a a = null; System.out.print(a.j + " "); try { System.out.print(a.i); } catch (Exception e) { System.out.print("2 "); a = new T1241r1a(); System.out.print(a.i + 3); } } } }] } {1 2 3 4}
Class literals may not cause class initialization. Note that this is debatable, as it is not specified in the JLS, but Sun bug 4419673, as clarified by Neal Gafter in jacks bug 3109, is arguing that the JLS is correct as stands.Test Case: 12.4.1-runtime-3Expected Result: OK
Regression Test:
tcltest::test 12.4.1-runtime-2 { Class literals may not cause class initialization. Note that this is debatable, as it is not specified in the JLS, but Sun bug 4419673, as clarified by Neal Gafter in jacks bug 3109, is arguing that the JLS is correct as stands. } { compile_and_run [saveas T1241r2b.java { class T1241r2a { static { System.out.print(" oops "); } } class T1241r2b { public static void main(String[] args) { System.out.print('O'); T1241r2a.class.toString(); System.out.print('K'); } } }] } {OK}
Class literals may not cause class initialization. Note that this is debatable, as it is not specified in the JLS, but Sun bug 4419673, as clarified by Neal Gafter in jacks bug 3109, is arguing that the JLS is correct as stands.Test Case: 12.4.1-runtime-4Expected Result: OK
Regression Test:
tcltest::test 12.4.1-runtime-3 { Class literals may not cause class initialization. Note that this is debatable, as it is not specified in the JLS, but Sun bug 4419673, as clarified by Neal Gafter in jacks bug 3109, is arguing that the JLS is correct as stands. } { compile_and_run [saveas T1241r3b.java { class T1241r3a { static { System.out.print(" oops "); } static class Inner { static Class c = Inner.class; } } class T1241r3b { public static void main(String[] args) { System.out.print('O'); T1241r3a.Inner.c = null; System.out.print('K'); T1241r3a.Inner.c = T1241r3a.class; } } }] } {OK}
Class literals may not cause class initialization. Note that this is debatable, as it is not specified in the JLS, but Sun bug 4419673, as clarified by Neal Gafter in jacks bug 3109, is arguing that the JLS is correct as stands.Expected Result: OK
Regression Test:
tcltest::test 12.4.1-runtime-4 { Class literals may not cause class initialization. Note that this is debatable, as it is not specified in the JLS, but Sun bug 4419673, as clarified by Neal Gafter in jacks bug 3109, is arguing that the JLS is correct as stands. } { compile_and_run [saveas T1241r4b.java { interface T1241r4a { int i = new Object() { { System.out.print(" oops "); } int i = 1; }.i; class Inner { static Class c = Inner.class; } } class T1241r4b { public static void main(String[] args) { System.out.print('O'); T1241r4a.Inner.c = null; System.out.print('K'); T1241r4a.Inner.c = T1241r4a.class; } } }] } {OK}
tests/runtime/jls/execution/initialization-of-classes-and-interfaces/detailed-initialization-procedure
A compiler must emit an initializer of a non-constant class variable, even if the initializer is known to be the default value of the variableExpected Result: 0 null
Regression Test:
tcltest::test 12.4.2-runtime-1 { A compiler must emit an initializer of a non-constant class variable, even if the initializer is known to be the default value of the variable } { compile_and_run [saveas T1242r3b.java { class T1242r3a { static { T1242r3b.i = 1; T1242r3b.s = "oops"; } } class T1242r3b extends T1242r3a { static int i = 0; static String s = null; public static void main(String[] args) { System.out.print(i + " " + s); } } }] } {0 null}
tests/runtime/jls/execution/creation-of-new-class-instances
Variable initializers are executed after the explicit or implicit superclass constructor, but before all other statements of the constructorTest Case: 12.5-runtime-2Expected Result: A 1 1
Regression Test:
tcltest::test 12.5-runtime-1 { Variable initializers are executed after the explicit or implicit superclass constructor, but before all other statements of the constructor } { compile_and_run [saveas T125r1.java { class Super { Super(int x) { method(x); } void method(int x) { } } class T125r1 extends Super { private int i1 = 1; private Integer i2 = new Integer(1); void method(int x) { i1 = x; i2 = new Integer(x); System.out.print("A "); } T125r1() { super(2); // superclass calls method() } public static void main(String[] args) { T125r1 t = new T125r1(); System.out.print(t.i1 + " " + t.i2); } } }] } {A 1 1}
Example in JLSTest Case: 12.5-runtime-3Expected Result: 03
Regression Test:
tcltest::test 12.5-runtime-2 { Example in JLS } { compile_and_run [saveas T125r2.java { class Super { Super() { printThree(); } void printThree() { System.out.println("three"); } } class T125r2 extends Super { int three = (int)Math.PI; // That is, 3 public static void main(String[] args) { T125r2 t = new T125r2(); t.printThree(); } void printThree() { System.out.print(three); } } }] } {03}
A compiler must emit an initializer of a non-constant instance variable, even if the initializer is known to be the default value of the variableExpected Result: 0 null
Regression Test:
tcltest::test 12.5-runtime-3 { A compiler must emit an initializer of a non-constant instance variable, even if the initializer is known to be the default value of the variable } { compile_and_run [saveas T125r3b.java { class T125r3a { T125r3a() { m(); } void m() {} } class T125r3b extends T125r3a { int i = 0; String s = null; void m() { i = 1; s = "oops"; } public static void main(String[] args) { T125r3b t = new T125r3b(); System.out.print(t.i + " " + t.s); } } }] } {0 null}
tests/runtime/jls/binary-compatibility/form-of-binary
A constant variable must never appear to have it's initial value, even when accessed in a non-constant expressionTest Case: 13.1-runtime-constant-2Expected Result: 1
Regression Test:
tcltest::test 13.1-runtime-constant-1 { A constant variable must never appear to have it's initial value, even when accessed in a non-constant expression } { compile_and_run [saveas T131c1.java { class T131c1 { int m(T131c1 t) { return t.i; } int j = m(this); final int i = 1; public static void main(String[] args) { System.out.print(new T131c1().j); } } }] } {1}
A constant variable must never appear to have it's initial value, even when accessed in a non-constant expressionTest Case: 13.1-runtime-constant-3Expected Result: 1
Regression Test:
tcltest::test 13.1-runtime-constant-2 { A constant variable must never appear to have it's initial value, even when accessed in a non-constant expression } { compile_and_run [saveas T131c2.java { class T131c2 { static int m(T131c2 t) { return t.i; } static int j = m(new T131c2()); static final int i = 1; public static void main(String[] args) { System.out.print(j); } } }] } {1}
A constant variable must be inlined without reference to the original class; hence, it can be deleted from the original class and the code still worksTest Case: 13.1-runtime-field-1Expected Result: 3
Regression Test:
tcltest::test 13.1-runtime-constant-3 { A constant variable must be inlined without reference to the original class; hence, it can be deleted from the original class and the code still works } { compile [saveas T131rc3a.java { class T131rc3a { static final int i = 1; final int j = 2; } class T131rc3b { static void m(T131rc3a t) { System.out.print(t.i + t.j); } } }] compile_and_run -classpath . [saveas T131rc3a.java { class T131rc3a { public static void main(String[] args) { T131rc3b.m(new T131rc3a()); } // Notice that i and j no longer exist } }] } {3}
A field reference must include the (implicit) qualifier of the expression it was inExpected Result: 4 3 4 3
Regression Test:
tcltest::test 13.1-runtime-field-1 { A field reference must include the (implicit) qualifier of the expression it was in } { compile [saveas T131rc3a.java { class T131rf1a { static int i = "a".length(); } interface T131rf1b { int j = "ab".length(); } class T131rf1c extends T131rf1a implements T131rf1b { static void m() { System.out.print(i + " " + j + " " + T131rf1c.i + " " + T131rf1c.j); } } }] compile_and_run -classpath . [saveas T131rf1a.java { class T131rf1a { public static void main(String[] args) { T131rf1c.m(); } // Notice that i and j have swapped locations and values in supertypes of c static int j = "abc".length(); } interface T131rf1b { int i = "abcd".length(); } }] } {4 3 4 3}
tests/runtime/jls/blocks-and-statements
Generic test of large goto_w (can occur in for, if, while, do, switch, try, break, and continue)Test Case: 14-runtime-jump-2Expected Result: OK
Regression Test:
tcltest::test 14-runtime-jump-1 { Generic test of large goto_w (can occur in for, if, while, do, switch, try, break, and continue) } { 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] } {OK}
Generic test of large goto_w (can occur in for, if, while, do, switch, try, break, and continue)Expected Result: OK
Regression Test:
tcltest::test 14-runtime-jump-2 { Generic test of large goto_w (can occur in for, if, while, do, switch, try, break, and continue) } { set class_data " class T14rj2 \{ public static void main(String\[\] args) \{ int i = 1; int j = 0; Object o = null; while (o == null) \{ if (++j == 2) o = \"\";\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 T14rj2.java $class_data] } {OK}
tests/runtime/jls/blocks-and-statements/local-class-declarations
local classes are never implicitly static, even in a static contextTest Case: 14.3-1-runtime-2Expected Result: false false
Regression Test:
tcltest::test 14.3-1-runtime-1 { local classes are never implicitly static, even in a static context } { compile_and_run [saveas T1431r1.java { import java.lang.reflect.Modifier; class T1431r1 { public static void main(String[] args) { class Local {} Local l = new Local(); System.out.print(Modifier.isStatic(l.getClass().getModifiers())); System.out.print(' '); new T1431r1().foo(); } void foo() { class Local1 {} Local1 l = new Local1(); System.out.print(Modifier.isStatic(l.getClass().getModifiers())); } } }] } {false false}
local class names must not flatten to the same name as an anonymous classExpected Result: true true
Regression Test:
tcltest::test 14.3-1-runtime-2 { local class names must not flatten to the same name as an anonymous class } { compile_and_run [saveas T1431r2.java { class T1431r2 { boolean x1, x2; T1431r2() { class Local { { x1 = true; } } new Local(); new Object() { class Local { { x2 = true; } } }.new Local(); } public static void main(String[] args) { T1431r2 t = new T1431r2(); System.out.print(t.x1 + " " + t.x2); } } }] } {true true}
tests/runtime/jls/blocks-and-statements/local-class-declarations
test use of shadowed local variables in local classExpected Result: true
Regression Test:
tcltest::test 14.3.1-runtime-3 { test use of shadowed local variables in local class } { compile_and_run [saveas T1431r3.java { class T1431r3 { static class Super { Object shared; Super(Object o) { shared = o; } } public static void main(String[] args) { final Object o = new Object(); class Local extends Super { Local() { super(o); } } Local a = new Local(); Local b = new Local(); System.out.print(a.shared == o && b.shared == o); } } }] } {true}
tests/runtime/jls/blocks-and-statements/if-statement/if-then-statement
Tests that compiler does not over-optimize, as reported in jikes bug 2982Test Case: 14.9.1-runtime-2Expected Result: OK
Regression Test:
tcltest::test 14.9.1-runtime-1 { Tests that compiler does not over-optimize, as reported in jikes bug 2982 } { compile_and_run [saveas T1491r1.java { import java.util.*; class T1491r1 { static Set s = new HashSet(); public static void main(String[] args) { if (null == s) System.out.print("oops"); System.out.print(null == s ? "oops" : "OK"); } } }] } {OK}
Tests that compiler does not over-optimize, as reported in jikes bug 2895Expected Result: OK
Regression Test:
tcltest::test 14.9.1-runtime-2 { Tests that compiler does not over-optimize, as reported in jikes bug 2895 } { compile_and_run [saveas T1491r2.java { class T1491r2 { public static void main(String [] args) { foo(); System.out.print("OK"); } static void foo() { boolean a = false; if (a); else if (false); } } }] } {OK}
tests/runtime/jls/blocks-and-statements/if-statement/if-then-else-statement
Test optimization of if-then-else statementsExpected Result: 12345678
Regression Test:
tcltest::test 14.9.2-runtime-1 { Test optimization of if-then-else statements } { compile_and_run [saveas T1492r1.java { class T1492r1 { public static void main(String[] args) { if (true) { System.out.print(1); } else { System.out.print('a'); } if (true) { } else { System.out.print('b'); } if (true) { System.out.print(2); } else { } if (false) { System.out.print('c'); } else { System.out.print(3); } if (false) { System.out.print('d'); } else { } if (false) { } else { System.out.print(4); } boolean b = true; if (b) { System.out.print(5); } else { System.out.print('e'); } if (b) { } else { System.out.print('f'); } if (b) { System.out.print(6); } else { } b = false; if (b) { System.out.print('g'); } else { System.out.print(7); } if (b) { System.out.print('h'); } else { } if (b) { } else { System.out.print(8); } } } }] } {12345678}
tests/runtime/jls/blocks-and-statements/switch-statement
runtime switch test for values between 0x7ffffff0 and 0x7fffffffTest Case: 14.10-runtime-verifier-2Expected Result: OK
Regression Test:
tcltest::test 14.10-runtime-verifier-1 { runtime switch test for values between 0x7ffffff0 and 0x7fffffff } { compile_and_run [saveas T1410v1.java { class T1410v1 { public static void main(String [] args) { // prevent compiler optimization of switch by using args.length switch (args.length + 0x7ffffff2) { case 0x7ffffff0: case 0x7ffffff1: case 0x7ffffff2: case 0x7ffffff3: System.out.print("OK"); break; default: System.out.print("NOT_OK"); } } } }] } {OK}
runtime switch test exposes bug in javac when variable declaration occurs in dead codeTest Case: 14.10-runtime-fallthrough-1Expected Result: 2 [Ljava.lang.String;
Regression Test:
tcltest::test 14.10-runtime-verifier-2 { runtime switch test exposes bug in javac when variable declaration occurs in dead code } { compile_and_run [saveas T1410v2.java { class T1410v2 { public static void main(String[] args) { switch (args.length) { case 1: if (true) break; int i = 1; case 0: i = 2; System.out.print(i + " "); } System.out.print(args.getClass().getName()); } } }] } {2 [Ljava.lang.String;}
runtime test for fallthrough of casesTest Case: 14.10-runtime-fallthrough-2Expected Result: many too many one too many
Regression Test:
tcltest::test 14.10-runtime-fallthrough-1 { runtime test for fallthrough of cases } { compile_and_run [saveas T1410f1.java { class T1410f1 { static void howMany(int k) { switch (k) { case 1: System.out.print("one "); case 2: System.out.print("too "); case 3: System.out.println("many"); } } public static void main(String[] args) { howMany(3); howMany(2); howMany(1); } } }] } {many too many one too many }
runtime test for break stopping fallthroughTest Case: 14.10-runtime-break-1Expected Result: one two many
Regression Test:
tcltest::test 14.10-runtime-fallthrough-2 { runtime test for break stopping fallthrough } { compile_and_run [saveas T1410f2.java { class T1410f2 { static void howMany(int k) { switch (k) { case 1: System.out.println("one"); break; // exit the switch case 2: System.out.println("two"); break; // exit the switch case 3: System.out.println("many"); break; // not needed, but good style } } public static void main(String[] args) { howMany(1); howMany(2); howMany(3); } } }] } {one two many }
test optimization of switch statement, jikes bug 3113Test Case: 14.10-runtime-break-2Expected Result: OK
Regression Test:
tcltest::test 14.10-runtime-break-1 { test optimization of switch statement, jikes bug 3113 } { compile_and_run [saveas T1410b1.java { class T1410b1 { public static void main(String[] args) { label: switch (args.length) { case 0: break label; } System.out.print("OK"); } } }] } {OK}
test optimization of switch statement, jikes bug 3212Expected Result: OK
Regression Test:
tcltest::test 14.10-runtime-break-2 { test optimization of switch statement, jikes bug 3212 } { compile_and_run -g [saveas T1410b2.java { class T1410b2 { public static void main(String[] args) { System.out.print("OK"); switch (args.length) { case 1: int i = 1; break; } } } }] } {OK}
tests/runtime/jls/blocks-and-statements/while-statement
Test optimization of loops, from jikes bug 3084Expected Result: a 10
Regression Test:
tcltest::test 14.11-runtime-1 { Test optimization of loops, from jikes bug 3084 } { compile_and_run [saveas T1411r1.java { class T1411r1 { public static void main(String[] args) { int i = 0; while (i < 10) { try { i++; if (i == 5) throw new Exception(); } catch (Exception ex) { System.out.print("a "); continue; } } System.out.print(i); } } }] } {a 10}
tests/runtime/jls/blocks-and-statements/do-statement
Test optimization of do-while loopsExpected Result: 2
Regression Test:
tcltest::test 14.12-runtime-1 { Test optimization of do-while loops } { compile_and_run [saveas T1412r1.java { class T1412r1 { static int i = -2; public static void main(String[] args) { do test(); while (false); System.out.print(i); } static boolean test() { try { do { if (i++ == 0) return true; } while (true); } finally { i++; } } } }] } {2}
tests/runtime/jls/blocks-and-statements/for-statement
Test optimization of for loopsExpected Result: 111105
Regression Test:
tcltest::test 14.13-runtime-1 { Test optimization of for loops } { compile_and_run [saveas T1413r1.java { class T1413r1 { public static void main(String[] args) { int i = 0; for ( ; i < 100000; i += 12345) if (i < 100000) continue; System.out.print(i); } } }] } {111105}
tests/runtime/jls/blocks-and-statements/break-statement
test of wide jump in breakExpected Result: OK
Regression Test:
tcltest::test 14.14-runtime-jump-1 { test of wide jump in break } { set class_data " class T1414rj1 \{ public static void main(String\[\] args) \{ int i = 1; do \{ if (i == 1) break;\n" set count 0 while {$count < 3500} { append class_data "\t i = 366 * i % 534;\n" incr count } append class_data "\t\} while (false); if (i == 1) System.out.print(\"OK\"); else System.out.print(\"FAIL\"); \} \}\n" compile_and_run [saveas T1414rj1.java $class_data] } {OK}
tests/runtime/jls/blocks-and-statements/synchronized-statement
Test compilation of synchronizedExpected Result: OK
Regression Test:
tcltest::test 14.18-runtime-1 { Test compilation of synchronized } { compile_and_run [saveas T1418r1.java { class T1418r1 { public static void main(String[] args) { m(); } static void m() { synchronized ("") { int i = 1; } synchronized ("") { System.out.print("OK"); } } } }] } {OK}
tests/runtime/jls/blocks-and-statements/try-statement/try-catch
Test evaluation of try-catch blocks, with synchronized statementTest Case: 14.19.1-runtime-2Expected Result: OK
Regression Test:
tcltest::test 14.19.1-runtime-1 { Test evaluation of try-catch blocks, with synchronized statement } { compile_and_run [saveas T14191r1.java { class T14191r1 { public static void main(String[] o) { synchronized (o) { try { throw new Error(); } catch (Error e) { System.out.print("OK"); return; } } } } }] } {OK}
Test evaluation of try-catch blocks, with synchronized statementTest Case: 14.19.1-runtime-3Expected Result: OK
Regression Test:
tcltest::test 14.19.1-runtime-2 { Test evaluation of try-catch blocks, with synchronized statement } { compile_and_run [saveas T14191r2.java { class T14191r2 { public static void main(final String[] args) { RuntimeException e = new RuntimeException(); try { foo(e); System.out.print("exception not thrown"); } catch (Exception ex) { System.out.print(ex == e ? "OK" : "wrong exception thrown"); } } static int foo(RuntimeException o) { synchronized (o) { try { return bar(); } catch (RuntimeException e) { throw o; } } } static int bar() { throw new RuntimeException(); } } }] } {OK}
Evaluation of empty try-block is legal, even though it is a no-opExpected Result: 123
Regression Test:
tcltest::test 14.19.1-runtime-3 { Evaluation of empty try-block is legal, even though it is a no-op } { compile_and_run [saveas T14191r3.java { class T14191r3 { public static void main(String[] args) { System.out.print(1); try { } catch (Error e) { } System.out.print(2); try { } catch (Error e) { } System.out.print(3); } } }] } {123}
tests/runtime/jls/blocks-and-statements/try-statement/try-catch-finally
runtime try catch finally test with synchronize statementTest Case: 14.19.2-runtime-jump-1Expected Result: OK
Regression Test:
tcltest::test 14.19.2-runtime-try-1 { runtime try catch finally test with synchronize statement } { compile_and_run [saveas T14192rt1.java { class T14192rt1 { public static void main(String [] args) { Object o = new Object(); try { synchronized (o) { System.out.print("O"); return; } } finally { try { raise(); } catch (Exception e) { System.out.print("K"); } } } public static void raise() throws Exception { throw new Exception(); } } }] } {OK}
test of jsr_wTest Case: 14.19.2-runtime-2Expected Result: OK
Regression Test:
tcltest::test 14.19.2-runtime-jump-1 { test of jsr_w } { set class_data " class T14192rj1 \{ public static void main(String\[\] args) \{ int i = 1; try \{ if (i == 0) throw new Exception(); return; \} catch (Exception e) \{\n" set count 0 while {$count < 3500} { append class_data "\t i = 366 * i % 534;\n" incr count } append class_data "\t\} finally \{ if (i == 1) System.out.print(\"OK\"); else System.out.print(\"FAIL\"); \} \} \}\n" compile_and_run [saveas T14192rj1.java $class_data] } {OK}
Test evaluation of try-finally blocks, with synchronized statementExpected Result: 1 2
Regression Test:
tcltest::test 14.19.2-runtime-2 { Test evaluation of try-finally blocks, with synchronized statement } { compile_and_run [saveas T14192r2.java { class T14192r2 { public static void main(final String[] args) { try { foo(args); System.out.print("exception not thrown"); } catch (Exception e) { System.out.print("2"); } } static int foo(Object o) { synchronized (o) { try { return bar(); } finally { System.out.print("1 "); } } } static int bar() { throw new RuntimeException(); } } }] } {1 2}
tests/runtime/jls/expressions/primary-expressions/qualified-this
Qualified this refers to the lexically enclosing instanceExpected Result: value value
Regression Test:
tcltest::test 15.8.4-runtime-1 { Qualified this refers to the lexically enclosing instance } { compile_and_run [saveas T1584r1.java { class T1584r1 { String member; T1584r1(String value) { member = value; } T1584r1() { } class Inner extends T1584r1 { Inner() { this.member = T1584r1.this.member; // refers to two distinct fields } } public static void main(String[] args) { T1584r1 t = new T1584r1("value"); System.out.print(t.member + " "); System.out.print(t.new Inner().member); } } }] } {value value}
tests/runtime/jls/expressions/class-instance-creation
Check the number of times a constructor is called from a class instance creation expressionExpected Result: ctor -> ctor
Regression Test:
tcltest::test 15.9-runtime-numcalls-1 { Check the number of times a constructor is called from a class instance creation expression } { compile_and_run [saveas T159rn1.java { class T159rn1 { private static class Inner { public Inner() { System.err.print("ctor"); } private void foo() {} } public static void main(String[] args) { new Inner().foo(); // broken in Jikes 1.11 System.err.print(" -> "); (new Inner()).foo(); // okay } } }] } {ctor -> ctor}
tests/runtime/jls/expressions/class-instance-creation/run-time-evaluation
A null qualifier must throw a NullPointerException before anything else happensTest Case: 15.9.4-runtime-creation-2Expected Result: OK
Regression Test:
tcltest::test 15.9.4-runtime-creation-1 { A null qualifier must throw a NullPointerException before anything else happens } { compile_and_run [saveas T1594rc1.java { class T1594rc1 { class Inner { Inner(int i) {} } public static void main(String[] args) { int j = 1; T1594rc1 t = null; try { t.new Inner(j = 2); } catch (NullPointerException npe) { if (j == 2) System.out.println("NullPointer must precede argument evaluation"); else System.out.print("OK"); return; } System.out.println("Qualified instance creation must throw NullPointerException"); } } }] } {OK}
OutOfMemoryError precedes argument evaluation - example in 15.9.6Test Case: 15.9.4-runtime-creation-3Expected Result: false
Regression Test:
tcltest::test 15.9.4-runtime-creation-2 { OutOfMemoryError precedes argument evaluation - example in 15.9.6 } { compile_and_run [saveas T1594rc2.java { class List { int value; List next; static List head = new List(0); List(int n) { value = n; next = head; head = this; } } class T1594rc2 { public static void main(String[] args) { int id = 0, oldid = 0; try { for (;;) { ++id; new List(oldid = id); } } catch (OutOfMemoryError e) { List.head = null; // try to reclaim memory System.out.print(oldid==id); } } } }] } {false}
Check that all (non-constant) fields have default value, arguments are processed left to right, and instance initializer is called only after superconstructorTest Case: 15.9.4-runtime-creation-4Expected Result: OK
Regression Test:
tcltest::test 15.9.4-runtime-creation-3 { Check that all (non-constant) fields have default value, arguments are processed left to right, and instance initializer is called only after superconstructor } { compile_and_run [saveas T1594rc3.java { class T1594rc3 { int i = getInt(); // will not be called T1594rc3(int a, int b, int c) {} static int getInt() { System.out.print("Oops "); return 1; } { System.out.print("Bad "); } // will not be called static int choke() { throw new RuntimeException(); } public static void main(String[] args) { int a = 0, b = 0, c = 0; try { new T1594rc3(a = 1, b = choke(), c = 1); } catch (RuntimeException re) { if (a == 1 && b == 0 && c == 0) System.out.print("OK"); else System.out.print("Out of order"); return; } System.out.println("Should not get here"); } } }] } {OK}
Instance initializers are called in textual order after superconstructorTest Case: 15.9.4-runtime-creation-5Expected Result: 1 2 3 4 5
Regression Test:
tcltest::test 15.9.4-runtime-creation-4 { Instance initializers are called in textual order after superconstructor } { compile_and_run [saveas T1594rc4.java { class Super { Super() { System.out.print("2 "); } { System.out.print("1 "); } } class T1594rc4 extends Super { { System.out.print("3 "); } T1594rc4() { System.out.print("5"); } public static void main(String[] args) { new T1594rc4(); } { System.out.print("4 "); } } }] } {1 2 3 4 5}
A null qualifier must throw a NullPointerException before anything else happensExpected Result: 1 1
Regression Test:
tcltest::test 15.9.4-runtime-creation-5 { A null qualifier must throw a NullPointerException before anything else happens } { compile_and_run [saveas T1594rc5.java { class T1594rc5 { class Inner { Inner(int i) {} } public static void main(String[] args) { int i = 1; try { T1594rc5 t = null; t.new Inner(i++) {}; } catch (NullPointerException e) { System.out.print(i + " "); } try { ((T1594rc5) null).new Inner(i++) {}; } catch (NullPointerException e) { System.out.print(i); } } } }] } {1 1}
tests/runtime/jls/expressions/field-access-expressions/using-a-primary
The Primary qualifier of a static field reference must be evaluated, then discardedTest Case: 15.11.1-runtime-static-2Expected Result: a a a c a d a
Regression Test:
tcltest::test 15.11.1-runtime-static-1 { The Primary qualifier of a static field reference must be evaluated, then discarded } { compile_and_run [saveas T15111rs1.java { class T15111rs1 { static T15111rs1 a() { System.out.print("a "); return t; } static int i = 0; static T15111rs1 t = new T15111rs1(); T15111rs1() {} T15111rs1(char c) { System.out.print("c "); } public String toString() { System.out.print("d "); return null; } public static void main(String[] args) { a().i++; // method invocation a().t.i++; // field access (t.a()).i++; // parenthesized expression new T15111rs1('c').i++; // instance creation ((T15111rs1)a()).i++; // safe cast ("" + t).CASE_INSENSITIVE_ORDER.toString(); // string conversion (t = null).i++; // assignment if (t != null) System.out.print("Oops "); (t == null ? a() : a()).i++; // conditional if (i != 7) System.out.print("Oops "); i = 0; T15111rs1[] ta = {t}; ta[i++].i++; // array access if (i != 2) System.out.print("Oops "); } } }] } {a a a c a d a }
The Primary qualifier of a static field reference may complete abruptly, before anything elseTest Case: 15.11.1-runtime-static-3Expected Result: 1 2 3 4 5
Regression Test:
tcltest::test 15.11.1-runtime-static-2 { The Primary qualifier of a static field reference may complete abruptly, before anything else } { compile_and_run [saveas T15111rs2.java { class T15111rs2 { static int i = 0; static T15111rs2 a() { throw new RuntimeException(); } static T15111rs2 t = null; T15111rs2 t1 = null; T15111rs2() {} T15111rs2(int i) { throw new IllegalArgumentException(); } public String toString() { int i = 0; i /= i; // throw ArithmeticException, rather than return return null; } public static void main(String[] args) { try { t.t1.i++; // instance field access } catch (NullPointerException e) { System.out.print("1 "); } T15111rs2[] ta = {}; try { ta[0].i++; // array access } catch (ArrayIndexOutOfBoundsException e) { System.out.print("2 "); } try { a().i++; // method call } catch (RuntimeException e) { System.out.print("3 "); } Object o = ""; try { ((T15111rs2)o).i++; // unsafe cast } catch (ClassCastException e) { System.out.print("4 "); } try { new T15111rs2(1).i++; // constructor } catch (IllegalArgumentException e) { System.out.print("5"); } if (i != 0) System.out.print("Oops "); } } }] } {1 2 3 4 5}
The Primary qualifier of a static field reference may complete abruptly, before anything else. This test only works against JDK 1.2 or higherExpected Result: OK
Regression Test:
tcltest::test 15.11.1-runtime-static-3 { The Primary qualifier of a static field reference may complete abruptly, before anything else. This test only works against JDK 1.2 or higher } { compile_and_run [saveas T15111rs3.java { class T15111rs3 { public String toString() { throw new IllegalArgumentException(); } public static void main(String[] args) { try { // string conversion will fail java.util.Comparator c = ("foo" + new T15111rs3()).CASE_INSENSITIVE_ORDER; System.out.print("Oops "); } catch (IllegalArgumentException e) { System.out.print("OK"); } } } }] } {OK}
tests/runtime/jls/expressions/field-access-expressions/accessing-superclass-members-using-super
Accessor methods are sometimes required to get at protected fields inherited in enclosing classTest Case: 15.11.2-runtime-2Expected Result: 1 2 3 3
Regression Test:
tcltest::test 15.11.2-runtime-1 { Accessor methods are sometimes required to get at protected fields inherited in enclosing class } { saveas p1/T15112r1a.java { package p1; public class T15112r1a { public T15112r1a(String s) { b = s; } protected static String a = "1"; protected String b; } } compile_and_run -classpath . [saveas T15112r1b.java { import p1.T15112r1a; class T15112r1b extends T15112r1a { T15112r1b(String s) { super(s); } String a = "4"; String b = "5"; class Inner extends T15112r1a { String a = "6"; String b = "7"; Inner(String s) { super(s); } void m() { System.out.print(T15112r1b.super.a + " " + T15112r1b.super.b); System.out.print(" " + Inner.super.b + " " + super.b); } } public static void main(String[] args) { new T15112r1b("2").new Inner("3").m(); } } }] } {1 2 3 3}
Accessor methods are sometimes required to write to protected fields inherited in enclosing classExpected Result: 2 4 6 7
Regression Test:
tcltest::test 15.11.2-runtime-2 { Accessor methods are sometimes required to write to protected fields inherited in enclosing class } { saveas p1/T15112r2a.java { package p1; public class T15112r2a { public T15112r2a(int i) { b = i; } protected static int a = 1; protected int b; } } compile_and_run -classpath . [saveas T15112r2b.java { import p1.T15112r2a; class T15112r2b extends T15112r2a { T15112r2b(int i) { super(i); } int a = 8; int b = 9; class Inner extends T15112r2a { int a = 10; int b = 11; Inner(int i) { super(i); } void m() { System.out.print(++T15112r2b.super.a + " " + ++T15112r2b.super.b); System.out.print(" " + ++Inner.super.b + " " + ++super.b); } } public static void main(String[] args) { new T15112r2b(3).new Inner(5).m(); } } }] } {2 4 6 7}
tests/runtime/jls/expressions/method-invocation-expressions/chosen-method-appropriate
The invocation mode of a non-static, non-private method is virtualTest Case: 15.12.3-runtime-mode-2Expected Result: 3 3
Regression Test:
tcltest::test 15.12.3-runtime-mode-1 { The invocation mode of a non-static, non-private method is virtual } { saveas p1/T15123rm1_1.java { package p1; public class T15123rm1_1 { protected void foo() { // this is overridden in T15123rm1_3 System.out.print("1"); } } } saveas p2/T15123rm1_2.java { package p2; import p1.*; public class T15123rm1_2 extends T15123rm1_1 { protected void call() { foo(); // must be virtual call System.out.print(' '); new Object() { { foo(); } // must be virtual call of enclosing instance }; } } } saveas p3/T15123rm1_3.java { package p3; import p2.*; public class T15123rm1_3 extends T15123rm1_2 { public static void main(String[] args) { new T15123rm1_3().call(); } protected void foo() { // will be called virtually System.out.print("3"); } } } compile_and_run -classpath . p1/T15123rm1_1.java p2/T15123rm1_2.java p3/T15123rm1_3.java } {3 3}
The invocation mode of a static method is staticTest Case: 15.12.3-runtime-mode-3Expected Result: 1
Regression Test:
tcltest::test 15.12.3-runtime-mode-2 { The invocation mode of a static method is static } { compile_and_run [saveas T15123rm2.java { class T15123rm2 { static class One { private static void m() { System.out.print(1); } } static class Two extends One { static void m() { System.out.print(2); } } public static void main(String[] args) { One o = new Two(); o.m(); // invokes One.m(), even though it is an instance of Two } } }] } {1}
The invocation mode of a private method is privateTest Case: 15.12.3-runtime-mode-4Expected Result: 1
Regression Test:
tcltest::test 15.12.3-runtime-mode-3 { The invocation mode of a private method is private } { compile_and_run [saveas T15123rm3.java { class T15123rm3 { static class One { private void m() { System.out.print(1); } } static class Two extends One { void m() { System.out.print(2); } } public static void main(String[] args) { One o = new Two(); o.m(); // invokes One.m(), even though this is an instance of Two } } }] } {1}
The invocation mode of an instance method called with super is superTest Case: 15.12.3-runtime-mode-5Expected Result: c a c a
Regression Test:
tcltest::test 15.12.3-runtime-mode-4 { The invocation mode of an instance method called with super is super } { compile_and_run [saveas p1/T15123rm4a.java { package p1; public class T15123rm4a { protected void m() { System.out.print("a "); } } }] [saveas T15123rm4c.java { class T15123rm4b extends p1.T15123rm4a { public void foo() { m(); super.m(); new Object() { { m(); T15123rm4b.super.m(); } }; } protected void m() { System.out.print("b "); } } class T15123rm4c extends T15123rm4b { public void m() { System.out.print("c "); } public static void main(String[] args) { new T15123rm4d(); } } class T15123rm4d extends T15123rm4c { public void foo() {} T15123rm4d() { new Object() { { T15123rm4d.super.foo(); } }; } } }] } {c a c a }
The invocation mode of a method called on an interface is interfaceTest Case: 15.12.3-runtime-mode-6Expected Result: 1 1
Regression Test:
tcltest::test 15.12.3-runtime-mode-5 { The invocation mode of a method called on an interface is interface } { compile_and_run [saveas T15123rm5.java { class T15123rm5 { interface I { void m(); } static abstract class One implements I {} static class Two extends One { public void m() { System.out.print(1); } } public static void main(String[] args) { One o = new Two(); I i = o; o.m(); // virtual System.out.print(' '); i.m(); // interface } } }] } {1 1}
The invocation mode of a non-static, non-private method is virtualExpected Result: 4 4 4 4
Regression Test:
tcltest::test 15.12.3-runtime-mode-6 { The invocation mode of a non-static, non-private method is virtual } { compile_and_run [saveas p1/T15123rm6a.java { package p1; public class T15123rm6a { protected void m() { System.out.print(1); } } }] [saveas p1/T15123rm6c.java { package p1; public class T15123rm6c extends p2.T15123rm6b {} }] [saveas p2/T15123rm6b.java { package p2; public class T15123rm6b extends p1.T15123rm6a { public static void main(String[] args) { final T15123rm6d d = new T15123rm6d(); final p1.T15123rm6c c = d; c.m(); System.out.print(' '); d.m(); System.out.print(' '); new Object() { { c.m(); System.out.print(' '); d.m(); } }; } } class T15123rm6d extends p1.T15123rm6c { protected void m() { System.out.print(4); } } }] } {4 4 4 4}
tests/runtime/jls/expressions/method-invocation-expressions/runtime-evaluation/compute-target-reference
The Primary qualifier of a static method invocation must be evaluated, then discardedTest Case: 15.12.4.1-runtime-static-2Expected Result: a b a b a b c b a b d b a b b
Regression Test:
tcltest::test 15.12.4.1-runtime-static-1 { The Primary qualifier of a static method invocation must be evaluated, then discarded } { compile_and_run [saveas T151241rs1.java { class T151241rs1 { static T151241rs1 a() { System.out.print("a "); return t; } static void b() { System.out.print("b "); } static T151241rs1 t = new T151241rs1(); T151241rs1() {} T151241rs1(char c) { System.out.print("c "); } public String toString() { System.out.print("d "); return null; } public static void main(String[] args) { a().b(); // method invocation a().t.b(); // field access (t.a()).b(); // parenthesized expression new T151241rs1('c').b(); // instance creation ((T151241rs1)a()).b(); // safe cast ("" + t).valueOf(1); // string conversion (t = null).b(); // assignment if (t != null) System.out.print("Oops "); (t == null ? a() : a()).b(); // conditional T151241rs1[] ta = {t}; int i = 0; ta[i++].b(); // array access if (i != 1) System.out.print("Oops "); } } }] } {a b a b a b c b a b d b a b b }
The Primary qualifier of a static method invocation may complete abruptly, before anything elseTest Case: 15.12.4.1-runtime-static-3Expected Result: 1 2 3 4 5 6
Regression Test:
tcltest::test 15.12.4.1-runtime-static-2 { The Primary qualifier of a static method invocation may complete abruptly, before anything else } { compile_and_run [saveas T151241rs2.java { class T151241rs2 { static int i = 0; static T151241rs2 a() { throw new RuntimeException(); } static void b(int i) { System.out.print("Oops "); } static T151241rs2 t = null; T151241rs2 t1 = null; T151241rs2() {} T151241rs2(int i) { throw new IllegalArgumentException(); } public String toString() { int i = 0; i /= i; // throw ArithmeticException, rather than return return null; } public static void main(String[] args) { try { t.t1.b(i++); // instance field access } catch (NullPointerException e) { System.out.print("1 "); } T151241rs2[] ta = {}; try { ta[0].b(i++); // array access } catch (ArrayIndexOutOfBoundsException e) { System.out.print("2 "); } try { a().b(i++); // method call } catch (RuntimeException e) { System.out.print("3 "); } Object o = ""; try { ((T151241rs2)o).b(i++); // unsafe cast } catch (ClassCastException e) { System.out.print("4 "); } try { ("" + new T151241rs2()).valueOf(1); // abrupt binary expression System.out.print("Oops "); } catch (ArithmeticException e) { System.out.print("5 "); } try { new T151241rs2(1).b(i++); // constructor } catch (IllegalArgumentException e) { System.out.print("6"); } if (i != 0) System.out.print("Oops "); } } }] } {1 2 3 4 5 6}
The Primary qualifier of a static method is discardedTest Case: 15.12.4.1-runtime-super-1Expected Result: OK
Regression Test:
tcltest::test 15.12.4.1-runtime-static-3 { The Primary qualifier of a static method is discarded } { compile_and_run [saveas T151241rs3.java { class T151241rs3 { public static void main(String[] args) { try { Class c = T151241rs3.class.forName("T151241rs3"); System.out.print((c == T151241rs3.class ? "OK" : "oops")); } catch (Exception e) { System.out.print("Unexpected: " + e); } } } }] } {OK}
Accessor methods are sometimes required to get at protected methods inherited in enclosing classTest Case: 15.12.4.1-runtime-super-2Expected Result: 1 2 5 5
Regression Test:
tcltest::test 15.12.4.1-runtime-super-1 { Accessor methods are sometimes required to get at protected methods inherited in enclosing class } { saveas p1/T151241rsuper1a.java { package p1; public class T151241rsuper1a { public String a() { return null; } protected String i() { return a(); } protected static String s() { return "2"; } } } compile_and_run -classpath . [saveas T151241rsuper1b.java { import p1.T151241rsuper1a; class T151241rsuper1b extends T151241rsuper1a { public String a() { return "1"; } protected String i() { return "3"; } protected static String s() { return "4"; } class Inner extends T151241rsuper1a { public String a() { return "5"; } protected String i() { return "6"; } void m() { System.out.print(T151241rsuper1b.super.i() + " "); System.out.print(T151241rsuper1b.super.s() + " "); System.out.print(Inner.super.i() + " " + super.i()); } } public static void main(String[] args) { new T151241rsuper1b().new Inner().m(); } } }] } {1 2 5 5}
Accessor methods are required to get at enclosing instance methods invoked via classname.superExpected Result: 1i 2i 3i 4i 1s 2s 3s 4s
Regression Test:
tcltest::test 15.12.4.1-runtime-super-2 { Accessor methods are required to get at enclosing instance methods invoked via classname.super } { compile_and_run [saveas T151241rsuper2.java { class T151241rsuper2 { abstract class Super { private void a() { System.out.print(1 + e()); } void b() { System.out.print(2 + e()); } protected void c() { System.out.print(3 + e()); } public void d() { System.out.print(4 + e()); } abstract String e(); } class Sub extends Super { private void a() { System.out.println(5); } void b() { System.out.println(6); } protected void c() { System.out.println(7); } public void d() { System.out.println(8); } String e() { return "s "; } class Inner extends Super { private void a() { System.out.println(9); } void b() { System.out.println(10); } protected void c() { System.out.println(11); } public void d() { System.out.println(12); } String e() { return "i "; } void m() { super.a(); super.b(); super.c(); super.d(); Sub.super.a(); Sub.super.b(); Sub.super.c(); Sub.super.d(); } } } public static void main(String[] args) { new T151241rsuper2().new Sub().new Inner().m(); } } }] } {1i 2i 3i 4i 1s 2s 3s 4s }
tests/runtime/jls/expressions/array-access-expressions/examples
JLS exampleTest Case: 15.13.2-runtime-example-2Expected Result: 14
Regression Test:
tcltest::test 15.13.2-runtime-example-1 { JLS example } { compile_and_run [saveas T15132re1.java { class T15132re1 { public static void main(String[] args) { int[] a = { 11, 12, 13, 14 }; int[] b = { 0, 1, 2, 3 }; System.out.print(a[(a=b)[3]]); } } }] } {14}
JLS exampleTest Case: 15.13.2-runtime-example-3Expected Result: 1
Regression Test:
tcltest::test 15.13.2-runtime-example-2 { JLS example } { compile_and_run [saveas T15132re2.java { class T15132re2 { public static void main(String[] args) { int index = 1; try { skedaddle()[index = 2]++; } catch (Exception e) { System.out.print(index); } } static int[] skedaddle() throws Exception { throw new Exception("Ciao"); } } }] } {1}
JLS exampleTest Case: 15.13.2-runtime-example-4Expected Result: 2
Regression Test:
tcltest::test 15.13.2-runtime-example-3 { JLS example } { compile_and_run [saveas T15132re3.java { class T15132re3 { public static void main(String[] args) { int index = 1; try { nada()[index = 2]++; } catch (Exception e) { System.out.print(index); } } static int[] nada() { return null; } } }] } {2}
JLS exampleExpected Result: OK
Regression Test:
tcltest::test 15.13.2-runtime-example-4 { JLS example } { compile_and_run [saveas T15132re4.java { class T15132re4 { public static void main(String[] args) { int[] a = null; try { int i = a[vamoose()]; System.out.print(i); } catch (NullPointerException e) { } catch (Exception e) { System.out.print("OK"); } } static int vamoose() throws Exception { throw new Exception("Twenty-three skidoo!"); } } }] } {OK}
tests/runtime/jls/expressions/postfix-expressions
Postfix ops have higher precedence than prefixTest Case: 15.14-runtime-2Expected Result: true true true
Regression Test:
tcltest::test 15.14-runtime-1 { Postfix ops have higher precedence than prefix } { compile_and_run [saveas T15141.java { class T15141 { public static void main(String[] args) { int a = 1, b = 1; System.out.print((-a++ == -1) + " "); System.out.print((-(b++) == -1) + " "); System.out.print(a == b); } } }] } {true true true}
Postfix ops have higher precedence than prefixTest Case: 15.14-runtime-3Expected Result: true true true
Regression Test:
tcltest::test 15.14-runtime-2 { Postfix ops have higher precedence than prefix } { compile_and_run [saveas T15142.java { class T15142 { public static void main(String[] args) { int a = 2, b = 2; System.out.print((-a-- == -2) + " "); System.out.print((-(b--) == -2) + " "); System.out.print(a == b); } } }] } {true true true}
Test postfix operationTest Case: 15.14-runtime-4Expected Result: 127 127 127 127 -128 -128 -128 -128
Regression Test:
tcltest::test 15.14-runtime-3 { Test postfix operation } { compile_and_run [saveas T1514r3.java { class T1514r3 { static byte s = 127; // static field byte i = 127; // instance field public static void main(String[] args) { new T1514r3(); } T1514r3() { byte[] a = {127}; // array access byte l = 127; // local variable System.out.print(s++ + " " + i++ + " " + a[0]++ + " " + l++); System.out.print(" " + s + " " + i + " " + a[0] + " " + l); } } }] } {127 127 127 127 -128 -128 -128 -128}
Test postfix operationExpected Result: -128 -128 -128 -128 127 127 127 127
Regression Test:
tcltest::test 15.14-runtime-4 { Test postfix operation } { compile_and_run [saveas T1514r4.java { class T1514r4 { static byte s = -128; // static field byte i = -128; // instance field public static void main(String[] args) { new T1514r4(); } T1514r4() { byte[] a = {-128}; // array access byte l = -128; // local variable System.out.print(s-- + " " + i-- + " " + a[0]-- + " " + l--); System.out.print(" " + s + " " + i + " " + a[0] + " " + l); } } }] } {-128 -128 -128 -128 127 127 127 127}
tests/runtime/jls/expressions/unary-operators
Prefix ops have higher precedence than multiplicativeTest Case: 15.15-runtime-2Expected Result: true true true
Regression Test:
tcltest::test 15.15-runtime-1 { Prefix ops have higher precedence than multiplicative } { compile_and_run [saveas T15151.java { class T15151 { public static void main(String[] args) { int a = 1, b = 1; System.out.print((++a*a == 4) + " "); System.out.print(((++b)*b == 4) + " "); System.out.print(a == b); } } }] } {true true true}
Prefix ops have higher precedence than multiplicativeTest Case: 15.15-runtime-3Expected Result: true true true
Regression Test:
tcltest::test 15.15-runtime-2 { Prefix ops have higher precedence than multiplicative } { compile_and_run [saveas T15152.java { class T15152 { public static void main(String[] args) { int a = 3, b = 3; System.out.print((--a*a == 4) + " "); System.out.print(((--b)*b == 4) + " "); System.out.print(a == b); } } }] } {true true true}
Test prefix operationTest Case: 15.15-runtime-4Expected Result: -128 -128 -128 -128 -128 -128 -128 -128
Regression Test:
tcltest::test 15.15-runtime-3 { Test prefix operation } { compile_and_run [saveas T1515r3.java { class T1515r3 { static byte s = 127; // static field byte i = 127; // instance field public static void main(String[] args) { new T1515r3(); } T1515r3() { byte[] a = {127}; // array access byte l = 127; // local variable System.out.print(++s + " " + ++i + " " + ++a[0] + " " + ++l); System.out.print(" " + s + " " + i + " " + a[0] + " " + l); } } }] } {-128 -128 -128 -128 -128 -128 -128 -128}
Test prefix operationExpected Result: 127 127 127 127 127 127 127 127
Regression Test:
tcltest::test 15.15-runtime-4 { Test prefix operation } { compile_and_run [saveas T1515r4.java { class T1515r4 { static byte s = -128; // static field byte i = -128; // instance field public static void main(String[] args) { new T1515r4(); } T1515r4() { byte[] a = {-128}; // array access byte l = -128; // local variable System.out.print(--s + " " + --i + " " + --a[0] + " " + --l); System.out.print(" " + s + " " + i + " " + a[0] + " " + l); } } }] } {127 127 127 127 127 127 127 127}
tests/runtime/jls/expressions/additive-operators/string-conversion
"" + char[] should behave the same as char[].toString()Test Case: 15.18.1.1-runtime-2Expected Result: OK
Regression Test:
tcltest::test 15.18.1.1-runtime-1 { "" + char[] should behave the same as char[].toString() } { compile_and_run [saveas T151811r1.java { class T151811r1 { public static void main(String args[]) { char[] c = {'w','r','o','n','g'}; String s = "" + c; if (s.equals(c.toString())) System.out.print("OK"); else System.out.print("WRONG"); } } }] } {OK}
"" + char[] should behave the same as char[].toString()Test Case: 15.18.1.1-runtime-3Expected Result: OK
Regression Test:
tcltest::test 15.18.1.1-runtime-2 { "" + char[] should behave the same as char[].toString() } { compile_and_run [saveas T151811r2.java { class T151811r2 { public static void main(String args[]) { char[] c = null; try { String s = "" + c; if (s.equals("null")) System.out.print("OK"); else System.out.print("WRONG string"); } catch (NullPointerException e) { System.out.print("WRONG method"); } } } }] } {OK}
"" + (int)charExpected Result: 10
Regression Test:
tcltest::test 15.18.1.1-runtime-3 { "" + (int)char } { compile_and_run [saveas T151811r3.java { class T151811r3 { public static void main(String[] args) { char c = 10; System.out.print("" + (int) c); } } }] } {10}
tests/runtime/jls/expressions/relational-operators/type-comparison-operator-instanceof
Test side-effects of compile-time known comparisonsTest Case: 15.20-2-runtime-2Expected Result: OK true false
Regression Test:
tcltest::test 15.20-2-runtime-1 { Test side-effects of compile-time known comparisons } { compile_and_run [saveas T15202r1.java { class T15202r1 { static int m(char c) { System.out.print(c); return 1; } public static void main(String[] args) { boolean b = new int[] { m('O') } instanceof Cloneable; b &= "" + m('K') instanceof String; System.out.print(" " + b); b = ((m(' ') > 0) ? null : null) instanceof Object; System.out.print(b); } } }] } {OK true false}
Test side-effects of compile-time known comparisonsExpected Result: OK
Regression Test:
tcltest::test 15.20-2-runtime-2 { Test side-effects of compile-time known comparisons } { compile_and_run [saveas T15202r2.java { class T15202r2 { static int m() { return -1; } public static void main(String[] args) { try { System.out.print(new int[m()] instanceof int[]); } catch (NegativeArraySizeException e) { System.out.print("OK"); } } } }] } {OK}
tests/runtime/jls/expressions/equality-operators/reference-equality
Test (non)equalityTest Case: 15.21.3-runtime-2Expected Result: false true true false
Regression Test:
tcltest::test 15.21.3-runtime-1 { Test (non)equality } { compile_and_run [saveas T15213r1.java { class T15213r1 { public boolean equals(Object o) { return this == o; } boolean not(Object o) { return this != o; } public static void main(String[] args) { T15213r1 t = new T15213r1(); System.out.print(t.equals("") + " " + t.not("") + " "); System.out.print(t.equals(t) + " " + t.not(t)); } } }] } {false true true false}
Strings are == only if they are same reference, and not because they have same contentsExpected Result: false
Regression Test:
tcltest::test 15.21.3-runtime-2 { Strings are == only if they are same reference, and not because they have same contents } { compile_and_run [saveas T15213r2.java { class T15213r2 { public static void main(String[] args) { System.out.print(new String("") == ""); } } }] } {false}
tests/runtime/jls/expressions/conditional-operator
Test optimization in ?:Test Case: 15.25-runtime-2Expected Result: null true
Regression Test:
tcltest::test 15.25-runtime-1 { Test optimization in ?: } { compile_and_run [saveas T1525r1.java { class T1525r1 { public static void main(String[] args) { boolean b = false; System.out.print(((b = true) ? null : null) + " " + b); } } }] } {null true}
Test optimization in ?:Test Case: 15.25-runtime-3Expected Result: 1 true
Regression Test:
tcltest::test 15.25-runtime-2 { Test optimization in ?: } { compile_and_run [saveas T1525r2.java { class T1525r2 { public static void main(String[] args) { boolean b = false; System.out.print(((b = true) ? 1 : 1) + " " + b); } } }] } {1 true}
Test optimization in ?:Test Case: 15.25-runtime-4Expected Result: a true
Regression Test:
tcltest::test 15.25-runtime-3 { Test optimization in ?: } { compile_and_run [saveas T1525r3.java { class T1525r3 { public static void main(String[] args) { boolean b = false; System.out.print(((b = true) ? "a" : "a") + " " + b); } } }] } {a true}
Test optimization in ?:Test Case: 15.25-runtime-5Expected Result: 0.0 false
Regression Test:
tcltest::test 15.25-runtime-4 { Test optimization in ?: } { compile_and_run [saveas T1525r4.java { class T1525r4 { public static void main(String[] args) { boolean b = true; System.out.print(((b = false) ? -0. : 0) + " " + b); } } }] } {0.0 false}
Test optimization in ?:Test Case: 15.25-runtime-6Expected Result: true
Regression Test:
tcltest::test 15.25-runtime-5 { Test optimization in ?: } { compile_and_run [saveas T1525r5.java { class T1525r5 { public static void main(String[] args) { boolean b = false; if ((b = true) ? true : true) System.out.print(b); } } }] } {true}
Test side effects in ?:Test Case: 15.25-runtime-7Expected Result: b1a2
Regression Test:
tcltest::test 15.25-runtime-6 { Test side effects in ?: } { compile_and_run [saveas T1525r6.java { class T1525r6 { static boolean a() { System.out.print('a'); return false; } static boolean b() { System.out.print('b'); return false; } public static void main(String[] args) { boolean b = false; if (true | (b ? a() : b())) System.out.print(1); b = true; if (false & (b ? a() : b())) { b = false; } else System.out.print(2); } } }] } {b1a2}
Test boolean ?:Test Case: 15.25-runtime-8Expected Result: OK
Regression Test:
tcltest::test 15.25-runtime-7 { Test boolean ?: } { compile_and_run [saveas T1525r7.java { class T1525r7 { public static void main(String[] args) { boolean b, r = args.length > 0; if ((r && (b = r)) ? r : r && (b = r)) r = b; System.out.print("OK"); } } }] } {OK}
Test optimization in ?:Expected Result: false
Regression Test:
tcltest::test 15.25-runtime-8 { Test optimization in ?: } { compile_and_run [saveas T1525r8.java { class T1525r8 { public static void main(String[] args) { boolean b; boolean x = (args.length > 0 || (b = false)) ? true : b; System.out.print(x); } } }] } {false}
tests/runtime/jls/expressions/assignment-operators/simple-assignment-operator
Sun bug 4368664: with multi-dimensioned local variables initialized to null, the verifier needs to know that an array assignment is still legalExpected Result: OK
Regression Test:
tcltest::test 15.26.1-runtime-1 { Sun bug 4368664: with multi-dimensioned local variables initialized to null, the verifier needs to know that an array assignment is still legal } { compile_and_run [saveas T15261r1.java { class T15261r1 { public static void main(String[] args) { try { // prior to JDK 1.5, the compiler must insert a checkcast when // assigning null to an array type int[][] i = null; i[0] = new int[0]; } catch (NullPointerException e) { System.out.print('O'); } try { int[][] i; i = null; i[0] = new int[0]; } catch (NullPointerException e) { System.out.print('K'); } } } }] } {OK}
tests/runtime/jls/expressions/assignment-operators/compound-assignment-operators
String += char[] should do same as s += char[].toString()Test Case: 15.26.2-runtime-2Expected Result: OK
Regression Test:
tcltest::test 15.26.2-runtime-1 { String += char[] should do same as s += char[].toString() } { compile_and_run [saveas T15262r1.java { class T15262r1 { public static void main(String args[]) { String s = ""; char[] c = {'w','r','o','n','g'}; s += c; if (s.equals(c.toString())) System.out.print("OK"); else System.out.print("WRONG"); } } }] } {OK}
String += char[] should do same as s += char[].toString()Expected Result: OK
Regression Test:
tcltest::test 15.26.2-runtime-2 { String += char[] should do same as s += char[].toString() } { compile_and_run [saveas T15262r2.java { class T15262r2 { public static void main(String args[]) { String s = ""; char[] c = null; try { s += c; if (s.equals("null")) System.out.print("OK"); else System.out.print("WRONG string"); } catch (NullPointerException e) { System.out.print("WRONG method"); } } } }] } {OK}
tests/runtime/jls/expressions/constant-expression
Constant string expressions must be compiled inline, including method returnsTest Case: 15.28-runtime-constant-2Expected Result: true
Regression Test:
tcltest::test 15.28-runtime-constant-1 { Constant string expressions must be compiled inline, including method returns } { compile_and_run [saveas T1528rc1.java { class T1528rc1 { static String blah() { return "foo" + "bar"; } public static void main(String[] args) { System.out.print("foobar" == blah()); } } }] } {true}
Constant string expressions must be compiled inline, including method call qualifiersTest Case: 15.28-runtime-constant-3Expected Result: true
Regression Test:
tcltest::test 15.28-runtime-constant-2 { Constant string expressions must be compiled inline, including method call qualifiers } { compile_and_run [saveas T1528rc2.java { class T1528rc2 { public static void main(String[] args) { System.out.print("foobar" == ("foo" + "bar").toString()); } } }] } {true}
Constant string expressions must be compiled inline, including synchronized monitorsTest Case: 15.28-runtime-constant-4Expected Result: 1 2 3 4
Regression Test:
tcltest::test 15.28-runtime-constant-3 { Constant string expressions must be compiled inline, including synchronized monitors } { compile_and_run [saveas T1528rc3.java { class T1528rc3 extends Thread { private static int i = 0; public static void main(String[] args) { synchronized ("foo" + "bar") { // did we sync on the same object? If the compiler correctly // inlined the String expression, and the JVM correctly // does mutual exclusion, then we have already locked // "foobar", stopping the second thread in its tracks. System.out.print("1 "); new T1528rc3().start(); // build new thread try { sleep(500); // give second thread a chance } catch (InterruptedException e) { } if (i == 2) System.out.println(" Constant not inlined; wrong object locked "); else if (i == 0) System.out.println(" Indeterminate - thread never ran "); else if (i == 1) System.out.print("3 "); else System.out.println(" Unexpected result "); } } public void run() { System.out.print("2 "); i = 1; synchronized ("foobar") { i = 2; } System.out.print("4"); } } }] } {1 2 3 4}
Test of the ldc_w bytecode instruction, caused when there are more than 255 entries in the constant pool. In particular, this exposed a buggy constant in one version of jikes which used sipush for a non-shortTest Case: 15.28-runtime-constant-5Expected Result: 30989800
Regression Test:
tcltest::test 15.28-runtime-constant-4 { Test of the ldc_w bytecode instruction, caused when there are more than 255 entries in the constant pool. In particular, this exposed a buggy constant in one version of jikes which used sipush for a non-short } { set class_data " class T1528rc4 \{ public static void main(String\[\] args) \{ int i = 0;\n" set count 0 while {$count < 400} { append class_data "\ti += 100$count;\n" incr count } append class_data "\tSystem.out.print(i); \} \}\n" compile_and_run [saveas T1528rc4.java $class_data] } {30989800}
Division by integer 0 is not a constant, but must evaulate at runtime to an exceptionExpected Result: OK OK
Regression Test:
tcltest::test 15.28-runtime-constant-5 { Division by integer 0 is not a constant, but must evaulate at runtime to an exception } { set result [ok_pass_or_warn [empty_class T1528rc5a { final int i = 1 / 0; final int j = 1 % 0; final long k = 1L / 0; final long l = 1L % 0; int m = i; }]] delete T1528rc5a.java list $result [compile_and_run -classpath . [saveas T1528rc5b.java { class T1528rc5b { public static void main(String[] args) { try { new T1528rc5a(); } catch (ArithmeticException e) { System.out.print("OK"); } } } }]] } {OK OK}
tests/runtime/jls/definite-assignment/anonymous-classes
Test access of definitely assigned local variable in an anonymous classTest Case: 16.5-runtime-2Expected Result: 1
Regression Test:
tcltest::test 16.5-runtime-1 { Test access of definitely assigned local variable in an anonymous class } { compile_and_run [saveas T165r1.java { class T165r1 { T165r1(int j) {} public static void main(String[] args) { final int i; new T165r1(i = 1) { { System.out.print(i); } }; } } }] } {1}
Test access of definitely assigned local variable in an anonymous classTest Case: 16.5-runtime-3Expected Result: 2
Regression Test:
tcltest::test 16.5-runtime-2 { Test access of definitely assigned local variable in an anonymous class } { compile_and_run [saveas T165r2.java { class T165r2 { public static void main(String[] args) { final int i; i = 1; class Local { int j = i; } new Local() { int i = j + 1; { System.out.print(i); } }; } } }] } {2}
Test access of definitely assigned local variable in an anonymous classTest Case: 16.5-runtime-4Expected Result: a b1 c d1 e1
Regression Test:
tcltest::test 16.5-runtime-3 { Test access of definitely assigned local variable in an anonymous class } { compile_and_run [saveas T165r3.java { class T165r3 { public static void main(String[] args) { new T165r3(1); } T165r3(final int i) { class L { L() { System.out.print("a "); } L(int j) { this(new L() { { System.out.print("b" + i + ' '); } }); System.out.print("d" + i + ' '); } L(Object o) { System.out.print("c "); } } new L(i) { { System.out.print("e" + i); } }; } } }] } {a b1 c d1 e1}
Test access of definitely assigned local variable in an anonymous classTest Case: 16.5-runtime-5Expected Result: a b c d1 e1
Regression Test:
tcltest::test 16.5-runtime-4 { Test access of definitely assigned local variable in an anonymous class } { compile_and_run [saveas T165r4.java { class T165r4 { public static void main(String[] args) { new T165r4(1); } T165r4(final int i) { class L { private L() { System.out.print("a "); } private L(int j) { this(new L() { { System.out.print("b "); } }); System.out.print("d" + i + ' '); } private L(Object o) { System.out.print("c "); } } new L(i) { { System.out.print("e" + i); } }; } } }] } {a b c d1 e1}
Test access of definitely assigned local variable in an anonymous classExpected Result: 1
Regression Test:
tcltest::test 16.5-runtime-5 { Test access of definitely assigned local variable in an anonymous class } { compile_and_run [saveas T165r5.java { class T165r5 { public static void main(String[] args) { final int i; i = 1; class A { class B { class C { { new A() { { System.out.print(i); } }; } } } } new A(){}.new B(){}.new C(){}; } } }] } {1}
tests/runtime/non-jls/assert
Asserts must be enabled before class is initializedTest Case: non-jls-jsr41.3-runtime-2Expected Result: true false
Regression Test:
tcltest::test non-jls-jsr41.3-runtime-1 { Asserts must be enabled before class is initialized } { compile_and_run [saveas T413r1.java { class T413r1 { public static void main(String args[]) { T413r1.class.getClassLoader().setDefaultAssertionStatus(false); Baz.testAsserts(); // Will execute after Baz is initialized. } } class Bar { static { Baz.testAsserts(); // Will execute before Baz is initialized! } } class Baz extends Bar { static void testAsserts(){ boolean enabled = false; assert enabled = true; System.out.print(enabled + " "); } } }] } {true false }
Asserts do not cause class initializationExpected Result: AOK
Regression Test:
tcltest::test non-jls-jsr41.3-runtime-2 { Asserts do not cause class initialization } { compile_and_run [saveas T413r2b.java { class T413r2a { static { System.out.print(" oops "); } static class Inner { static { System.out.print('O'); } static void m() { boolean b = true; assert b; } } } class T413r2b { public static void main(String[] args) { System.out.print('A'); T413r2a.Inner.m(); System.out.print('K'); } } }] } {AOK}
tests/non-jls/assert/syntax
the one-argument form of assertTest Case: non-jls-jsr41.2-syntax-2Expected Result: PASS
Regression Test:
tcltest::test non-jls-jsr41.2-syntax-1 { the one-argument form of assert } { empty_main T412s1 { assert false; } } {PASS}
the one-argument form of assert must have a boolean conditionTest Case: non-jls-jsr41.2-syntax-3Expected Result: FAIL
Regression Test:
tcltest::test non-jls-jsr41.2-syntax-2 { the one-argument form of assert must have a boolean condition } { empty_main T412s2 { assert 1; } } {FAIL}
the one-argument form of assert must have a boolean conditionTest Case: non-jls-jsr41.2-syntax-4Expected Result: FAIL
Regression Test:
tcltest::test non-jls-jsr41.2-syntax-3 { the one-argument form of assert must have a boolean condition } { empty_main T412s3 { assert null; } } {FAIL}
the one-argument form of assert must have a boolean conditionTest Case: non-jls-jsr41.2-syntax-5Expected Result: FAIL
Regression Test:
tcltest::test non-jls-jsr41.2-syntax-4 { the one-argument form of assert must have a boolean condition } { empty_main T412s4 { assert new Object(); } } {FAIL}
the one-argument form of assert must have a boolean conditionTest Case: non-jls-jsr41.2-syntax-6Expected Result: FAIL
Regression Test:
tcltest::test non-jls-jsr41.2-syntax-5 { the one-argument form of assert must have a boolean condition } { empty_main T412s5 { assert System.out.println(); } } {FAIL}
the two-argument form of assertTest Case: non-jls-jsr41.2-syntax-7Expected Result: PASS
Regression Test:
tcltest::test non-jls-jsr41.2-syntax-6 { the two-argument form of assert } { empty_main T412s6 { assert false : "Bad code!"; } } {PASS}
in the two-argument form of assert, the first argument must be booleanTest Case: non-jls-jsr41.2-syntax-8Expected Result: FAIL
Regression Test:
tcltest::test non-jls-jsr41.2-syntax-7 { in the two-argument form of assert, the first argument must be boolean } { empty_main T412s7 { assert 1 : "Bad code!"; } } {FAIL}
in the two-argument form of assert, the first argument must be booleanTest Case: non-jls-jsr41.2-syntax-9Expected Result: FAIL
Regression Test:
tcltest::test non-jls-jsr41.2-syntax-8 { in the two-argument form of assert, the first argument must be boolean } { empty_main T412s8 { assert null : "Bad code!"; } } {FAIL}
in the two-argument form of assert, the first argument must be booleanTest Case: non-jls-jsr41.2-syntax-10Expected Result: FAIL
Regression Test:
tcltest::test non-jls-jsr41.2-syntax-9 { in the two-argument form of assert, the first argument must be boolean } { empty_main T412s9 { assert new Object() : "Bad code!"; } } {FAIL}
in the two-argument form of assert, the first argument must be booleanTest Case: non-jls-jsr41.2-syntax-11Expected Result: FAIL
Regression Test:
tcltest::test non-jls-jsr41.2-syntax-10 { in the two-argument form of assert, the first argument must be boolean } { empty_main T412s10 { assert System.out.println() : "Bad code!"; } } {FAIL}
in the two-argument form of assert, the second argument may be anything but voidTest Case: non-jls-jsr41.2-syntax-12Expected Result: PASS
Regression Test:
tcltest::test non-jls-jsr41.2-syntax-11 { in the two-argument form of assert, the second argument may be anything but void } { empty_main T412s11 { assert false : null; } } {PASS}
in the two-argument form of assert, the second argument may be anything but voidTest Case: non-jls-jsr41.2-syntax-13Expected Result: PASS
Regression Test:
tcltest::test non-jls-jsr41.2-syntax-12 { in the two-argument form of assert, the second argument may be anything but void } { empty_main T412s12 { assert false : new Object(); } } {PASS}
in the two-argument form of assert, the second argument may be anything but voidTest Case: non-jls-jsr41.2-syntax-14Expected Result: PASS
Regression Test:
tcltest::test non-jls-jsr41.2-syntax-13 { in the two-argument form of assert, the second argument may be anything but void } { empty_main T412s13 { assert false : "String"; } } {PASS}
in the two-argument form of assert, the second argument may be anything but voidTest Case: non-jls-jsr41.2-syntax-15Expected Result: PASS
Regression Test:
tcltest::test non-jls-jsr41.2-syntax-14 { in the two-argument form of assert, the second argument may be anything but void } { empty_main T412s14 { assert false : true; } } {PASS}
in the two-argument form of assert, the second argument may be anything but voidTest Case: non-jls-jsr41.2-syntax-16Expected Result: PASS
Regression Test:
tcltest::test non-jls-jsr41.2-syntax-15 { in the two-argument form of assert, the second argument may be anything but void } { empty_main T412s15 { assert false : (byte) 1; } } {PASS}
in the two-argument form of assert, the second argument may be anything but voidTest Case: non-jls-jsr41.2-syntax-17Expected Result: PASS
Regression Test:
tcltest::test non-jls-jsr41.2-syntax-16 { in the two-argument form of assert, the second argument may be anything but void } { empty_main T412s16 { assert false : (short) 1; } } {PASS}
in the two-argument form of assert, the second argument may be anything but voidTest Case: non-jls-jsr41.2-syntax-18Expected Result: PASS
Regression Test:
tcltest::test non-jls-jsr41.2-syntax-17 { in the two-argument form of assert, the second argument may be anything but void } { empty_main T412s17 { assert false : '1'; } } {PASS}
in the two-argument form of assert, the second argument may be anything but voidTest Case: non-jls-jsr41.2-syntax-19Expected Result: PASS
Regression Test:
tcltest::test non-jls-jsr41.2-syntax-18 { in the two-argument form of assert, the second argument may be anything but void } { empty_main T412s18 { assert false : 1; } } {PASS}
in the two-argument form of assert, the second argument may be anything but voidTest Case: non-jls-jsr41.2-syntax-20Expected Result: PASS
Regression Test:
tcltest::test non-jls-jsr41.2-syntax-19 { in the two-argument form of assert, the second argument may be anything but void } { empty_main T412s19 { assert false : 1L; } } {PASS}
in the two-argument form of assert, the second argument may be anything but voidTest Case: non-jls-jsr41.2-syntax-21Expected Result: PASS
Regression Test:
tcltest::test non-jls-jsr41.2-syntax-20 { in the two-argument form of assert, the second argument may be anything but void } { empty_main T412s20 { assert false : 1f; } } {PASS}
in the two-argument form of assert, the second argument may be anything but voidTest Case: non-jls-jsr41.2-syntax-22Expected Result: PASS
Regression Test:
tcltest::test non-jls-jsr41.2-syntax-21 { in the two-argument form of assert, the second argument may be anything but void } { empty_main T412s21 { assert false : 1.0; } } {PASS}
in the two-argument form of assert, the second argument may be anything but voidTest Case: non-jls-jsr41.2-nesting-1Expected Result: FAIL
Regression Test:
tcltest::test non-jls-jsr41.2-syntax-22 { in the two-argument form of assert, the second argument may be anything but void } { empty_main T412s22 { assert false : System.out.println(); } } {FAIL}
The assert statement has no trailing substatement. This tests that a source-to-source translation doesn't mismatch the implicit if statement of the assert with the trailing else statements, provided definite assignment works correctly.Test Case: non-jls-jsr41.2-nesting-2Expected Result: PASS
Regression Test:
tcltest::test non-jls-jsr41.2-nesting-1 { The assert statement has no trailing substatement. This tests that a source-to-source translation doesn't mismatch the implicit if statement of the assert with the trailing else statements, provided definite assignment works correctly. } { empty_main T412n1 { final int i; i = 1; if (true) assert false; else i = 1; // definite assignment allows this in provably dead branch } } {PASS}
The four legal uses of : nested in one statementTest Case: non-jls-jsr41.2-nesting-3Expected Result: PASS
Regression Test:
tcltest::test non-jls-jsr41.2-nesting-2 { The four legal uses of : nested in one statement } { empty_main T412n2 { int i = 1; switch (i) { case 1: label: assert i==1 ? true : false : i==1 ? "yes" : "no"; } } } {PASS}
The arguments of assert may be any expressionTest Case: non-jls-jsr41.2-nesting-4Expected Result: PASS
Regression Test:
tcltest::test non-jls-jsr41.2-nesting-3 { The arguments of assert may be any expression } { empty_main T412n3 { boolean b = true; int i; assert b &= false ^ (1L * 4 >>> 3 < 17.5) || "" != null : i = 1; } } {PASS}
The arguments of assert may be any expression (see Sun bug 4446137 for this example)Test Case: non-jls-jsr41.2-clash-1Expected Result: PASS
Regression Test:
tcltest::test non-jls-jsr41.2-nesting-4 { The arguments of assert may be any expression (see Sun bug 4446137 for this example) } { empty_main T412n4 { int i = 1; assert (i & 1) == 0; assert ((i & 1) == 0); assert 0 == (i & 1); } } {PASS}
The synthetic name used by the compiler should not clash with user names (if only the JLS would give compilers a reserved namespace...)Expected Result: OK
Regression Test:
tcltest::test non-jls-jsr41.2-clash-1 { The synthetic name used by the compiler should not clash with user names (if only the JLS would give compilers a reserved namespace...) } { ok_pass_or_warn [empty_class T412c1 { int $assertionsDisabled = 1; void foo() { assert false : $assertionsDisabled + 1; } }] } {OK}
tests/non-jls/assert/definite-assignment
V is DA before Expression1 iff V is DA before the assertTest Case: non-jls-jsr41.4-definite-assignment-fail-2Expected Result: FAIL
Regression Test:
tcltest::test non-jls-jsr41.4-definite-assignment-fail-1 { V is DA before Expression1 iff V is DA before the assert } { empty_main T414daf1 { boolean b; assert b; } } {FAIL}
V is DA before Expression2 iff V is DA after Expression1 when falseTest Case: non-jls-jsr41.4-definite-assignment-fail-3Expected Result: FAIL
Regression Test:
tcltest::test non-jls-jsr41.4-definite-assignment-fail-2 { V is DA before Expression2 iff V is DA after Expression1 when false } { empty_main T414daf2 { boolean b, b1 = false; assert b1 : b; } } {FAIL}
V is DA before Expression2 iff V is DA after Expression1 when falseTest Case: non-jls-jsr41.4-definite-assignment-fail-4Expected Result: FAIL
Regression Test:
tcltest::test non-jls-jsr41.4-definite-assignment-fail-3 { V is DA before Expression2 iff V is DA after Expression1 when false } { empty_main T414daf3 { boolean b; assert false : b; } } {FAIL}
V is DA after the assert iff V is DA before the assertTest Case: non-jls-jsr41.4-definite-assignment-fail-5Expected Result: FAIL
Regression Test:
tcltest::test non-jls-jsr41.4-definite-assignment-fail-4 { V is DA after the assert iff V is DA before the assert } { empty_main T414daf4 { boolean b, b1 = true; assert b1; b1 = b; } } {FAIL}
V is DA after the assert iff V is DA before the assertTest Case: non-jls-jsr41.4-definite-assignment-fail-6Expected Result: FAIL
Regression Test:
tcltest::test non-jls-jsr41.4-definite-assignment-fail-5 { V is DA after the assert iff V is DA before the assert } { empty_main T414daf5 { boolean b, b1 = true; assert b1 : ""; b1 = b; } } {FAIL}
V is DA after the assert iff V is DA before the assertTest Case: non-jls-jsr41.4-definite-assignment-fail-7Expected Result: FAIL
Regression Test:
tcltest::test non-jls-jsr41.4-definite-assignment-fail-6 { V is DA after the assert iff V is DA before the assert } { empty_main T414daf6 { boolean b, b1; assert true : ""; b1 = b; } } {FAIL}
V is DA after the assert iff V is DA before the assertTest Case: non-jls-jsr41.4-definite-assignment-fail-8Expected Result: FAIL
Regression Test:
tcltest::test non-jls-jsr41.4-definite-assignment-fail-7 { V is DA after the assert iff V is DA before the assert } { empty_main T414daf7 { boolean b, b1; assert false : ""; b1 = b; } } {FAIL}
V is DA after the assert iff V is DA before the assertTest Case: non-jls-jsr41.4-definite-assignment-fail-9Expected Result: FAIL
Regression Test:
tcltest::test non-jls-jsr41.4-definite-assignment-fail-8 { V is DA after the assert iff V is DA before the assert } { empty_main T414daf8 { boolean b, b1 = true; assert b = b1; b1 = b; } } {FAIL}
V is DA after the assert iff V is DA before the assertTest Case: non-jls-jsr41.4-definite-assignment-fail-10Expected Result: FAIL
Regression Test:
tcltest::test non-jls-jsr41.4-definite-assignment-fail-9 { V is DA after the assert iff V is DA before the assert } { empty_main T414daf9 { boolean b, b1; assert b = true; b1 = b; } } {FAIL}
V is DA after the assert iff V is DA before the assertTest Case: non-jls-jsr41.4-definite-assignment-fail-11Expected Result: FAIL
Regression Test:
tcltest::test non-jls-jsr41.4-definite-assignment-fail-10 { V is DA after the assert iff V is DA before the assert } { empty_main T414daf10 { boolean b, b1; assert b = false; b1 = b; } } {FAIL}
V is DA after the assert iff V is DA before the assertTest Case: non-jls-jsr41.4-definite-assignment-fail-12Expected Result: FAIL
Regression Test:
tcltest::test non-jls-jsr41.4-definite-assignment-fail-11 { V is DA after the assert iff V is DA before the assert } { empty_main T414daf11 { boolean b, b1 = true; assert b1 : b = b1; b1 = b; } } {FAIL}
V is DA after the assert iff V is DA before the assertTest Case: non-jls-jsr41.4-definite-assignment-fail-13Expected Result: FAIL
Regression Test:
tcltest::test non-jls-jsr41.4-definite-assignment-fail-12 { V is DA after the assert iff V is DA before the assert } { empty_main T414daf12 { boolean b, b1; assert true : b = true; b1 = b; } } {FAIL}
V is DA after the assert iff V is DA before the assertTest Case: non-jls-jsr41.4-definite-assignment-pass-1Expected Result: FAIL
Regression Test:
tcltest::test non-jls-jsr41.4-definite-assignment-fail-13 { V is DA after the assert iff V is DA before the assert } { empty_main T414daf13 { boolean b, b1; assert false : b = false; b1 = b; } } {FAIL}
V is DA before Expression1 iff V is DA before the assertTest Case: non-jls-jsr41.4-definite-assignment-pass-2Expected Result: PASS
Regression Test:
tcltest::test non-jls-jsr41.4-definite-assignment-pass-1 { V is DA before Expression1 iff V is DA before the assert } { empty_main T414dap1 { boolean b = true; assert b; } } {PASS}
V is DA before Expression2 iff V is DA after Expression1 when falseTest Case: non-jls-jsr41.4-definite-assignment-pass-3Expected Result: PASS
Regression Test:
tcltest::test non-jls-jsr41.4-definite-assignment-pass-2 { V is DA before Expression2 iff V is DA after Expression1 when false } { empty_main T414dap2 { boolean b; assert true : b; } } {PASS}
V is DA before Expression2 iff V is DA after Expression1 when falseTest Case: non-jls-jsr41.4-definite-assignment-pass-4Expected Result: PASS
Regression Test:
tcltest::test non-jls-jsr41.4-definite-assignment-pass-3 { V is DA before Expression2 iff V is DA after Expression1 when false } { empty_main T414dap3 { boolean b = true, b1 = true; assert b1 : b; } } {PASS}
V is DA before Expression2 iff V is DA after Expression1 when falseTest Case: non-jls-jsr41.4-definite-assignment-pass-5Expected Result: PASS
Regression Test:
tcltest::test non-jls-jsr41.4-definite-assignment-pass-4 { V is DA before Expression2 iff V is DA after Expression1 when false } { empty_main T414dap4 { boolean b = true; assert true : b; } } {PASS}
V is DA before Expression2 iff V is DA after Expression1 when falseTest Case: non-jls-jsr41.4-definite-assignment-pass-6Expected Result: PASS
Regression Test:
tcltest::test non-jls-jsr41.4-definite-assignment-pass-5 { V is DA before Expression2 iff V is DA after Expression1 when false } { empty_main T414dap5 { boolean b = true; assert false : b; } } {PASS}
V is DA before Expression2 iff V is DA after Expression1 when falseTest Case: non-jls-jsr41.4-definite-assignment-pass-7Expected Result: PASS
Regression Test:
tcltest::test non-jls-jsr41.4-definite-assignment-pass-6 { V is DA before Expression2 iff V is DA after Expression1 when false } { empty_main T414dap6 { boolean b, b1 = true; assert b = b1 : b; } } {PASS}
V is DA before Expression2 iff V is DA after Expression1 when falseTest Case: non-jls-jsr41.4-definite-assignment-pass-8Expected Result: PASS
Regression Test:
tcltest::test non-jls-jsr41.4-definite-assignment-pass-7 { V is DA before Expression2 iff V is DA after Expression1 when false } { empty_main T414dap7 { boolean b; assert b = true : b; } } {PASS}
V is DA before Expression2 iff V is DA after Expression1 when falseTest Case: non-jls-jsr41.4-definite-assignment-pass-9Expected Result: PASS
Regression Test:
tcltest::test non-jls-jsr41.4-definite-assignment-pass-8 { V is DA before Expression2 iff V is DA after Expression1 when false } { empty_main T414dap8 { boolean b; assert b = false : b; } } {PASS}
V is DA after the assert iff V is DA before the assertTest Case: non-jls-jsr41.4-definite-assignment-pass-10Expected Result: PASS
Regression Test:
tcltest::test non-jls-jsr41.4-definite-assignment-pass-9 { V is DA after the assert iff V is DA before the assert } { empty_main T414dap9 { boolean b = true, b1 = true; assert b1; b1 = b; } } {PASS}
V is DA after the assert iff V is DA before the assertTest Case: non-jls-jsr41.4-definite-assignment-pass-11Expected Result: PASS
Regression Test:
tcltest::test non-jls-jsr41.4-definite-assignment-pass-10 { V is DA after the assert iff V is DA before the assert } { empty_main T414dap10 { boolean b = true, b1 = true; assert b1 : ""; b1 = b; } } {PASS}
V is DA after the assert iff V is DA before the assertTest Case: non-jls-jsr41.4-definite-assignment-pass-12Expected Result: PASS
Regression Test:
tcltest::test non-jls-jsr41.4-definite-assignment-pass-11 { V is DA after the assert iff V is DA before the assert } { empty_main T414dap11 { boolean b = true, b1; assert true : ""; b1 = b; } } {PASS}
V is DA after the assert iff V is DA before the assertTest Case: non-jls-jsr41.4-definite-unassignment-fail-1Expected Result: PASS
Regression Test:
tcltest::test non-jls-jsr41.4-definite-assignment-pass-12 { V is DA after the assert iff V is DA before the assert } { empty_main T414dap12 { boolean b = true, b1; assert false : ""; b1 = b; } } {PASS}
V is DU before Expression1 iff V is DU before the assertTest Case: non-jls-jsr41.4-definite-unassignment-fail-2Expected Result: FAIL
Regression Test:
tcltest::test non-jls-jsr41.4-definite-unassignment-fail-1 { V is DU before Expression1 iff V is DU before the assert } { empty_main T414duf1 { final boolean b; b = true; assert b = true; } } {FAIL}
V is DU before Expression2 iff V is DU after Expression1 when falseTest Case: non-jls-jsr41.4-definite-unassignment-fail-3Expected Result: FAIL
Regression Test:
tcltest::test non-jls-jsr41.4-definite-unassignment-fail-2 { V is DU before Expression2 iff V is DU after Expression1 when false } { empty_main T414duf2 { final boolean b; boolean b1 = b = true; assert b1 : b = true; } } {FAIL}
V is DU before Expression2 iff V is DU after Expression1 when falseTest Case: non-jls-jsr41.4-definite-unassignment-fail-4Expected Result: FAIL
Regression Test:
tcltest::test non-jls-jsr41.4-definite-unassignment-fail-3 { V is DU before Expression2 iff V is DU after Expression1 when false } { empty_main T414duf3 { final boolean b; b = true; assert false : b = true; } } {FAIL}
V is DU before Expression2 iff V is DU after Expression1 when falseTest Case: non-jls-jsr41.4-definite-unassignment-fail-5Expected Result: FAIL
Regression Test:
tcltest::test non-jls-jsr41.4-definite-unassignment-fail-4 { V is DU before Expression2 iff V is DU after Expression1 when false } { empty_main T414duf4 { final boolean b; boolean b1 = true; assert b = b1 : b = true; } } {FAIL}
V is DU before Expression2 iff V is DU after Expression1 when falseTest Case: non-jls-jsr41.4-definite-unassignment-fail-6Expected Result: FAIL
Regression Test:
tcltest::test non-jls-jsr41.4-definite-unassignment-fail-5 { V is DU before Expression2 iff V is DU after Expression1 when false } { empty_main T414duf5 { final boolean b; assert b = true : b = true; } } {FAIL}
V is DU before Expression2 iff V is DU after Expression1 when falseTest Case: non-jls-jsr41.4-definite-unassignment-fail-7Expected Result: FAIL
Regression Test:
tcltest::test non-jls-jsr41.4-definite-unassignment-fail-6 { V is DU before Expression2 iff V is DU after Expression1 when false } { empty_main T414duf6 { final boolean b; assert b = false : b = true; } } {FAIL}
V is DU after the assert iff V is DU after Expression1 when true and V is DU before the assertTest Case: non-jls-jsr41.4-definite-unassignment-fail-8Expected Result: FAIL
Regression Test:
tcltest::test non-jls-jsr41.4-definite-unassignment-fail-7 { V is DU after the assert iff V is DU after Expression1 when true and V is DU before the assert } { empty_main T414duf7 { final boolean b; boolean b1 = b = true; assert b1; b = b1; } } {FAIL}
V is DU after the assert iff V is DU after Expression1 when true and V is DU before the assertTest Case: non-jls-jsr41.4-definite-unassignment-fail-9Expected Result: FAIL
Regression Test:
tcltest::test non-jls-jsr41.4-definite-unassignment-fail-8 { V is DU after the assert iff V is DU after Expression1 when true and V is DU before the assert } { empty_main T414duf8 { final boolean b; b = true; assert true; b = true; } } {FAIL}
V is DU after the assert iff V is DU after Expression1 when true and V is DU before the assertTest Case: non-jls-jsr41.4-definite-unassignment-fail-10Expected Result: FAIL
Regression Test:
tcltest::test non-jls-jsr41.4-definite-unassignment-fail-9 { V is DU after the assert iff V is DU after Expression1 when true and V is DU before the assert } { empty_main T414duf9 { final boolean b; b = true; assert false; b = true; } } {FAIL}
V is DU after the assert iff V is DU after Expression1 when true and V is DU before the assertTest Case: non-jls-jsr41.4-definite-unassignment-fail-11Expected Result: FAIL
Regression Test:
tcltest::test non-jls-jsr41.4-definite-unassignment-fail-10 { V is DU after the assert iff V is DU after Expression1 when true and V is DU before the assert } { empty_main T414duf10 { final boolean b; boolean b1 = b = true; assert b1 : ""; b = b1; } } {FAIL}
V is DU after the assert iff V is DU after Expression1 when true and V is DU before the assertTest Case: non-jls-jsr41.4-definite-unassignment-fail-12Expected Result: FAIL
Regression Test:
tcltest::test non-jls-jsr41.4-definite-unassignment-fail-11 { V is DU after the assert iff V is DU after Expression1 when true and V is DU before the assert } { empty_main T414duf11 { final boolean b; b = true; assert true : ""; b = true; } } {FAIL}
V is DU after the assert iff V is DU after Expression1 when true and V is DU before the assertTest Case: non-jls-jsr41.4-definite-unassignment-fail-13Expected Result: FAIL
Regression Test:
tcltest::test non-jls-jsr41.4-definite-unassignment-fail-12 { V is DU after the assert iff V is DU after Expression1 when true and V is DU before the assert } { empty_main T414duf12 { final boolean b; b = true; assert false : ""; b = true; } } {FAIL}
V is DU after the assert iff V is DU after Expression1 when true and V is DU before the assertTest Case: non-jls-jsr41.4-definite-unassignment-fail-14Expected Result: FAIL
Regression Test:
tcltest::test non-jls-jsr41.4-definite-unassignment-fail-13 { V is DU after the assert iff V is DU after Expression1 when true and V is DU before the assert } { empty_main T414duf13 { final boolean b; boolean b1 = true; assert b = b1; b = true; } } {FAIL}
V is DU after the assert iff V is DU after Expression1 when true and V is DU before the assertTest Case: non-jls-jsr41.4-definite-unassignment-fail-15Expected Result: FAIL
Regression Test:
tcltest::test non-jls-jsr41.4-definite-unassignment-fail-14 { V is DU after the assert iff V is DU after Expression1 when true and V is DU before the assert } { empty_main T414duf14 { final boolean b; assert b = true; b = true; } } {FAIL}
V is DU after the assert iff V is DU after Expression1 when true and V is DU before the assertTest Case: non-jls-jsr41.4-definite-unassignment-fail-16Expected Result: FAIL
Regression Test:
tcltest::test non-jls-jsr41.4-definite-unassignment-fail-15 { V is DU after the assert iff V is DU after Expression1 when true and V is DU before the assert } { empty_main T414duf15 { final boolean b; assert b = false; b = true; } } {FAIL}
V is DU after the assert iff V is DU after Expression1 when true and V is DU before the assertTest Case: non-jls-jsr41.4-definite-unassignment-fail-17Expected Result: FAIL
Regression Test:
tcltest::test non-jls-jsr41.4-definite-unassignment-fail-16 { V is DU after the assert iff V is DU after Expression1 when true and V is DU before the assert } { empty_main T414duf16 { final boolean b; boolean b1 = true; assert b = b1 : ""; b = true; } } {FAIL}
V is DU after the assert iff V is DU after Expression1 when true and V is DU before the assertTest Case: non-jls-jsr41.4-definite-unassignment-fail-18Expected Result: FAIL
Regression Test:
tcltest::test non-jls-jsr41.4-definite-unassignment-fail-17 { V is DU after the assert iff V is DU after Expression1 when true and V is DU before the assert } { empty_main T414duf17 { final boolean b; assert b = true : ""; b = true; } } {FAIL}
V is DU after the assert iff V is DU after Expression1 when true and V is DU before the assertTest Case: non-jls-jsr41.4-definite-unassignment-fail-19Expected Result: FAIL
Regression Test:
tcltest::test non-jls-jsr41.4-definite-unassignment-fail-18 { V is DU after the assert iff V is DU after Expression1 when true and V is DU before the assert } { empty_main T414duf18 { final boolean b; assert b = false : ""; b = true; } } {FAIL}
DU only applies to blank finals. Initialized finals cannot be assigned.Test Case: non-jls-jsr41.4-definite-unassignment-fail-20Expected Result: FAIL
Regression Test:
tcltest::test non-jls-jsr41.4-definite-unassignment-fail-19 { DU only applies to blank finals. Initialized finals cannot be assigned. } { empty_main T414duf19 { final boolean b = true; // constant assert true : b = true; } } {FAIL}
DU only applies to blank finals. Initialized finals cannot be assigned.Test Case: non-jls-jsr41.4-definite-unassignment-fail-21Expected Result: FAIL
Regression Test:
tcltest::test non-jls-jsr41.4-definite-unassignment-fail-20 { DU only applies to blank finals. Initialized finals cannot be assigned. } { empty_main T414duf20 { final boolean b = Boolean.TRUE.booleanValue(); // non-constant assert true : b = true; } } {FAIL}
DU only applies to blank finals. Initialized finals cannot be assigned.Test Case: non-jls-jsr41.4-definite-unassignment-fail-22Expected Result: FAIL
Regression Test:
tcltest::test non-jls-jsr41.4-definite-unassignment-fail-21 { DU only applies to blank finals. Initialized finals cannot be assigned. } { empty_class T414duf21 { void foo(final boolean b) { assert true : b = true; } } } {FAIL}
DU only applies to blank finals. Initialized finals cannot be assigned.Test Case: non-jls-jsr41.4-definite-unassignment-fail-23Expected Result: FAIL
Regression Test:
tcltest::test non-jls-jsr41.4-definite-unassignment-fail-22 { DU only applies to blank finals. Initialized finals cannot be assigned. } { empty_main T414duf22 { try { throw new Exception(); } catch (final Exception b) { assert true : b = null; } } } {FAIL}
Blank final fields cannot be assigned outside constructor/initializer.Test Case: non-jls-jsr41.4-definite-unassignment-fail-24Expected Result: FAIL
Regression Test:
tcltest::test non-jls-jsr41.4-definite-unassignment-fail-23 { Blank final fields cannot be assigned outside constructor/initializer. } { empty_class T414duf23 { static final boolean b; static { b = true; } void foo() { assert true : b = true; } } } {FAIL}
Blank final fields cannot be assigned outside constructor/initializer.Test Case: non-jls-jsr41.4-definite-unassignment-pass-1Expected Result: FAIL
Regression Test:
tcltest::test non-jls-jsr41.4-definite-unassignment-fail-24 { Blank final fields cannot be assigned outside constructor/initializer. } { empty_class T414duf24 { final boolean b; { b = true; } void foo() { assert true : b = true; } } } {FAIL}
V is DU before Expression1 iff V is DU before the assertTest Case: non-jls-jsr41.4-definite-unassignment-pass-2Expected Result: PASS
Regression Test:
tcltest::test non-jls-jsr41.4-definite-unassignment-pass-1 { V is DU before Expression1 iff V is DU before the assert } { empty_main T414dup1 { final boolean b; assert b = true; } } {PASS}
V is DU before Expression2 iff V is DU after Expression1 when falseTest Case: non-jls-jsr41.4-definite-unassignment-pass-3Expected Result: PASS
Regression Test:
tcltest::test non-jls-jsr41.4-definite-unassignment-pass-2 { V is DU before Expression2 iff V is DU after Expression1 when false } { empty_main T414dup2 { final boolean b; b = true; assert true : b = true; } } {PASS}
V is DU after the assert iff V is DU after Expression1 when true and V is DU before the assertTest Case: non-jls-jsr41.4-definite-unassignment-pass-4Expected Result: PASS
Regression Test:
tcltest::test non-jls-jsr41.4-definite-unassignment-pass-3 { V is DU after the assert iff V is DU after Expression1 when true and V is DU before the assert } { empty_main T414dup3 { final boolean b; boolean b1 = true; assert b1; b = true; } } {PASS}
V is DU after the assert iff V is DU after Expression1 when true and V is DU before the assertTest Case: non-jls-jsr41.4-definite-unassignment-pass-5Expected Result: PASS
Regression Test:
tcltest::test non-jls-jsr41.4-definite-unassignment-pass-4 { V is DU after the assert iff V is DU after Expression1 when true and V is DU before the assert } { empty_main T414dup4 { final boolean b; assert true; b = true; } } {PASS}
V is DU after the assert iff V is DU after Expression1 when true and V is DU before the assertTest Case: non-jls-jsr41.4-definite-unassignment-pass-6Expected Result: PASS
Regression Test:
tcltest::test non-jls-jsr41.4-definite-unassignment-pass-5 { V is DU after the assert iff V is DU after Expression1 when true and V is DU before the assert } { empty_main T414dup5 { final boolean b; assert false; b = true; } } {PASS}
V is DU after the assert iff V is DU after Expression1 when true and V is DU before the assertTest Case: non-jls-jsr41.4-definite-unassignment-pass-7Expected Result: PASS
Regression Test:
tcltest::test non-jls-jsr41.4-definite-unassignment-pass-6 { V is DU after the assert iff V is DU after Expression1 when true and V is DU before the assert } { empty_main T414dup6 { final boolean b; boolean b1 = true; assert b1 : b = true; b = true; } } {PASS}
V is DU after the assert iff V is DU after Expression1 when true and V is DU before the assertTest Case: non-jls-jsr41.4-definite-unassignment-pass-8Expected Result: PASS
Regression Test:
tcltest::test non-jls-jsr41.4-definite-unassignment-pass-7 { V is DU after the assert iff V is DU after Expression1 when true and V is DU before the assert } { empty_main T414dup7 { final boolean b; assert true : b = true; b = true; } } {PASS}
V is DU after the assert iff V is DU after Expression1 when true and V is DU before the assertTest Case: non-jls-jsr41.4-definite-unassignment-pass-9Expected Result: PASS
Regression Test:
tcltest::test non-jls-jsr41.4-definite-unassignment-pass-8 { V is DU after the assert iff V is DU after Expression1 when true and V is DU before the assert } { empty_main T414dup8 { final boolean b; assert false : b = true; b = true; } } {PASS}
V is DU after the assert iff V is DU after Expression1 when true and V is DU before the assertTest Case: non-jls-jsr41.4-definite-unassignment-pass-10Expected Result: PASS
Regression Test:
tcltest::test non-jls-jsr41.4-definite-unassignment-pass-9 { V is DU after the assert iff V is DU after Expression1 when true and V is DU before the assert } { empty_main T414dup9 { final boolean b; assert (b = true) && false; b = true; } } {PASS}
V is DU after the assert iff V is DU after Expression1 when true and V is DU before the assertTest Case: non-jls-jsr41.4-definite-unassignment-try-1Expected Result: PASS
Regression Test:
tcltest::test non-jls-jsr41.4-definite-unassignment-pass-10 { V is DU after the assert iff V is DU after Expression1 when true and V is DU before the assert } { empty_main T414dup10 { final boolean b; assert (b = true) && false : ""; b = true; } } {PASS}
V is DU before a catch block iff V is DU before the try block and V is not reachably assigned in the try blockTest Case: non-jls-jsr41.4-definite-unassignment-try-2Expected Result: FAIL
Regression Test:
tcltest::test non-jls-jsr41.4-definite-unassignment-try-1 { V is DU before a catch block iff V is DU before the try block and V is not reachably assigned in the try block } { empty_main T414dut1 { final boolean b; try { assert b = false; } catch (AssertionError e) { b = false; } } } {FAIL}
V is DU before a finally block iff V is DU before the try block and V is not reachably assigned in the try or catch blocksTest Case: non-jls-jsr41.4-definite-unassignment-try-3Expected Result: FAIL
Regression Test:
tcltest::test non-jls-jsr41.4-definite-unassignment-try-2 { V is DU before a finally block iff V is DU before the try block and V is not reachably assigned in the try or catch blocks } { empty_main T414dut2 { final boolean b; try { assert b = false; } finally { b = false; } } } {FAIL}
V is DU before a finally block iff V is DU before the try block and V is not reachably assigned in the try or catch blocksTest Case: non-jls-jsr41.4-definite-unassignment-try-4Expected Result: FAIL
Regression Test:
tcltest::test non-jls-jsr41.4-definite-unassignment-try-3 { V is DU before a finally block iff V is DU before the try block and V is not reachably assigned in the try or catch blocks } { empty_main T414dut3 { final boolean b; try { throw new RuntimeException(); } catch (RuntimeException e) { assert b = false; } finally { b = false; } } } {FAIL}
V is DU before a finally block iff V is DU before the try block and V is not reachably assigned in the try or catch blocksTest Case: non-jls-jsr41.4-definite-unassignment-try-5Expected Result: FAIL
Regression Test:
tcltest::test non-jls-jsr41.4-definite-unassignment-try-4 { V is DU before a finally block iff V is DU before the try block and V is not reachably assigned in the try or catch blocks } { empty_main T414dut4 { final boolean b; try { assert b = false; } catch (AssertionError e) { } finally { b = false; } } } {FAIL}
V is DU before a catch block iff V is DU before the try block and V is not reachably assigned in the try blockTest Case: non-jls-jsr41.4-definite-unassignment-try-6Expected Result: FAIL
Regression Test:
tcltest::test non-jls-jsr41.4-definite-unassignment-try-5 { V is DU before a catch block iff V is DU before the try block and V is not reachably assigned in the try block } { empty_main T414dut5 { final boolean b; try { assert false : b = true; } catch (AssertionError e) { b = false; } } } {FAIL}
V is DU before a finally block iff V is DU before the try block and V is not reachably assigned in the try or catch blocksTest Case: non-jls-jsr41.4-definite-unassignment-try-7Expected Result: FAIL
Regression Test:
tcltest::test non-jls-jsr41.4-definite-unassignment-try-6 { V is DU before a finally block iff V is DU before the try block and V is not reachably assigned in the try or catch blocks } { empty_main T414dut6 { final boolean b; try { assert false : b = true; } finally { b = false; } } } {FAIL}
V is DU before a finally block iff V is DU before the try block and V is not reachably assigned in the try or catch blocksTest Case: non-jls-jsr41.4-definite-unassignment-try-8Expected Result: FAIL
Regression Test:
tcltest::test non-jls-jsr41.4-definite-unassignment-try-7 { V is DU before a finally block iff V is DU before the try block and V is not reachably assigned in the try or catch blocks } { empty_main T414dut7 { final boolean b; try { throw new RuntimeException(); } catch (RuntimeException e) { assert false : b = true; } finally { b = false; } } } {FAIL}
V is DU before a finally block iff V is DU before the try block and V is not reachably assigned in the try or catch blocksTest Case: non-jls-jsr41.4-definite-unassignment-try-9Expected Result: FAIL
Regression Test:
tcltest::test non-jls-jsr41.4-definite-unassignment-try-8 { V is DU before a finally block iff V is DU before the try block and V is not reachably assigned in the try or catch blocks } { empty_main T414dut8 { final boolean b; try { assert false : b = true; } catch (AssertionError e) { } finally { b = false; } } } {FAIL}
V is DU before a catch block iff V is DU before the try block and V is not reachably assigned in the try blockTest Case: non-jls-jsr41.4-definite-unassignment-try-10Expected Result: PASS
Regression Test:
tcltest::test non-jls-jsr41.4-definite-unassignment-try-9 { V is DU before a catch block iff V is DU before the try block and V is not reachably assigned in the try block } { empty_main T414dut9 { final boolean b; try { assert true : b = true; } catch (AssertionError e) { b = false; } } } {PASS}
V is DU before a finally block iff V is DU before the try block and V is not reachably assigned in the try or catch blocksTest Case: non-jls-jsr41.4-definite-unassignment-try-11Expected Result: PASS
Regression Test:
tcltest::test non-jls-jsr41.4-definite-unassignment-try-10 { V is DU before a finally block iff V is DU before the try block and V is not reachably assigned in the try or catch blocks } { empty_main T414dut10 { final boolean b; try { assert true : b = true; } finally { b = false; } } } {PASS}
V is DU before a finally block iff V is DU before the try block and V is not reachably assigned in the try or catch blocksTest Case: non-jls-jsr41.4-definite-unassignment-try-12Expected Result: PASS
Regression Test:
tcltest::test non-jls-jsr41.4-definite-unassignment-try-11 { V is DU before a finally block iff V is DU before the try block and V is not reachably assigned in the try or catch blocks } { empty_main T414dut11 { final boolean b; try { throw new RuntimeException(); } catch (RuntimeException e) { assert true : b = true; } finally { b = false; } } } {PASS}
V is DU before a finally block iff V is DU before the try block and V is not reachably assigned in the try or catch blocksTest Case: non-jls-jsr41.4-loop-1Expected Result: PASS
Regression Test:
tcltest::test non-jls-jsr41.4-definite-unassignment-try-12 { V is DU before a finally block iff V is DU before the try block and V is not reachably assigned in the try or catch blocks } { empty_main T414dut12 { final boolean b; try { assert true : b = true; } catch (AssertionError e) { } finally { b = false; } } } {PASS}
v must not be multiply assigned in loopsTest Case: non-jls-jsr41.4-loop-2Expected Result: PASS
Regression Test:
tcltest::test non-jls-jsr41.4-loop-1 { v must not be multiply assigned in loops } { empty_main T414l1 { final boolean b; while (true) assert (b = true) && false; } } {PASS}
v must not be multiply assigned in loopsTest Case: non-jls-jsr41.4-loop-3Expected Result: PASS
Regression Test:
tcltest::test non-jls-jsr41.4-loop-2 { v must not be multiply assigned in loops } { empty_main T414l2 { for (final boolean b; ; ) assert (b = true) && false; } } {PASS}
v must not be multiply assigned in loopsTest Case: non-jls-jsr41.4-loop-4Expected Result: PASS
Regression Test:
tcltest::test non-jls-jsr41.4-loop-3 { v must not be multiply assigned in loops } { empty_main T414l3 { final boolean b; do assert (b = true) && false; while (true); } } {PASS}
v must not be multiply assigned in loopsTest Case: non-jls-jsr41.4-loop-5Expected Result: FAIL
Regression Test:
tcltest::test non-jls-jsr41.4-loop-4 { v must not be multiply assigned in loops } { empty_main T414l4 { final boolean b; while (true) assert b = true; } } {FAIL}
v must not be multiply assigned in loopsTest Case: non-jls-jsr41.4-loop-6Expected Result: FAIL
Regression Test:
tcltest::test non-jls-jsr41.4-loop-5 { v must not be multiply assigned in loops } { empty_main T414l5 { for (final boolean b; ; ) assert b = true; } } {FAIL}
v must not be multiply assigned in loopsTest Case: non-jls-jsr41.4-loop-7Expected Result: FAIL
Regression Test:
tcltest::test non-jls-jsr41.4-loop-6 { v must not be multiply assigned in loops } { empty_main T414l6 { final boolean b; do assert b = true; while (true); } } {FAIL}
v must not be multiply assigned in loopsTest Case: non-jls-jsr41.4-loop-8Expected Result: PASS
Regression Test:
tcltest::test non-jls-jsr41.4-loop-7 { v must not be multiply assigned in loops } { empty_main T414l7 { final boolean b; while (true) { assert b = true; break; } } } {PASS}
v must not be multiply assigned in loopsTest Case: non-jls-jsr41.4-loop-9Expected Result: PASS
Regression Test:
tcltest::test non-jls-jsr41.4-loop-8 { v must not be multiply assigned in loops } { empty_main T414l8 { for (final boolean b; ; ) { assert b = true; break; } } } {PASS}
v must not be multiply assigned in loopsTest Case: non-jls-jsr41.4-loop-10Expected Result: PASS
Regression Test:
tcltest::test non-jls-jsr41.4-loop-9 { v must not be multiply assigned in loops } { empty_main T414l9 { final boolean b; do assert b = true; while (false); } } {PASS}
v must not be multiply assigned in loopsTest Case: non-jls-jsr41.4-loop-11Expected Result: PASS
Regression Test:
tcltest::test non-jls-jsr41.4-loop-10 { v must not be multiply assigned in loops } { empty_main T414l10 { final boolean b; while (true) assert true : b = true; // assignment not reachable } } {PASS}
v must not be multiply assigned in loopsTest Case: non-jls-jsr41.4-loop-12Expected Result: PASS
Regression Test:
tcltest::test non-jls-jsr41.4-loop-11 { v must not be multiply assigned in loops } { empty_main T414l11 { for (final boolean b; ; ) assert true : b = true; // assignment not reachable } } {PASS}
v must not be multiply assigned in loopsTest Case: non-jls-jsr41.4-loop-13Expected Result: PASS
Regression Test:
tcltest::test non-jls-jsr41.4-loop-12 { v must not be multiply assigned in loops } { empty_main T414l12 { final boolean b; do assert true : b = true; // assignment not reachable while (true); } } {PASS}
v must not be multiply assigned in loopsTest Case: non-jls-jsr41.4-loop-14Expected Result: PASS
Regression Test:
tcltest::test non-jls-jsr41.4-loop-13 { v must not be multiply assigned in loops } { empty_main T414l13 { final boolean b; while (true) assert false : b = true; // if assigned, loop completes abruptly } } {PASS}
v must not be multiply assigned in loopsTest Case: non-jls-jsr41.4-loop-15Expected Result: PASS
Regression Test:
tcltest::test non-jls-jsr41.4-loop-14 { v must not be multiply assigned in loops } { empty_main T414l14 { for (final boolean b; ; ) assert false : b = true; // if assigned, loop completes abruptly } } {PASS}
v must not be multiply assigned in loopsTest Case: non-jls-jsr41.4-loop-16Expected Result: PASS
Regression Test:
tcltest::test non-jls-jsr41.4-loop-15 { v must not be multiply assigned in loops } { empty_main T414l15 { final boolean b; do assert false : b = true; // if assigned, loop completes abruptly while (true); } } {PASS}
v must not be multiply assigned in loopsTest Case: non-jls-jsr41.4-loop-17Expected Result: FAIL
Regression Test:
tcltest::test non-jls-jsr41.4-loop-16 { v must not be multiply assigned in loops } { empty_main T414l16 { final boolean b; while (true) { assert b = true; assert false; // even though an observer can prove that if b is assigned, the // loop will complete abruptly, DU rules forbid this construct } } } {FAIL}
v must not be multiply assigned in loopsTest Case: non-jls-jsr41.4-loop-18Expected Result: FAIL
Regression Test:
tcltest::test non-jls-jsr41.4-loop-17 { v must not be multiply assigned in loops } { empty_main T414l17 { for (final boolean b; ; ) { assert b = true; assert false; // even though an observer can prove that if b is assigned, the // loop will complete abruptly, DU rules forbid this construct } } } {FAIL}
v must not be multiply assigned in loopsTest Case: non-jls-jsr41.4-reachability-1Expected Result: FAIL
Regression Test:
tcltest::test non-jls-jsr41.4-loop-18 { v must not be multiply assigned in loops } { empty_main T414l18 { final boolean b; do { assert b = true; assert false; // even though an observer can prove that if b is assigned, the // loop will complete abruptly, DU rules forbid this construct } while (true); } } {FAIL}
an assert can complete normally iff it is reachableTest Case: non-jls-jsr41.4-reachability-2Expected Result: PASS
Regression Test:
tcltest::test non-jls-jsr41.4-reachability-1 { an assert can complete normally iff it is reachable } { empty_main T414r1 { System.out.println(); assert false; System.out.println(); } } {PASS}
an assert can complete normally iff it is reachableTest Case: non-jls-jsr41.4-reachability-3Expected Result: PASS
Regression Test:
tcltest::test non-jls-jsr41.4-reachability-2 { an assert can complete normally iff it is reachable } { empty_main T414r2 { System.out.println(); assert false : ""; System.out.println(); } } {PASS}
an assert can complete normally iff it is reachable, but non-void methods cannot complete normallyTest Case: non-jls-jsr41.4-reachability-4Expected Result: FAIL
Regression Test:
tcltest::test non-jls-jsr41.4-reachability-3 { an assert can complete normally iff it is reachable, but non-void methods cannot complete normally } { empty_class T414r3 { int foo() { assert false; } } } {FAIL}
an assert can complete normally iff it is reachable, but non-void methods cannot complete normallyTest Case: non-jls-jsr41.4-reachability-5Expected Result: FAIL
Regression Test:
tcltest::test non-jls-jsr41.4-reachability-4 { an assert can complete normally iff it is reachable, but non-void methods cannot complete normally } { empty_class T414r4 { int foo() { assert false : ""; } } } {FAIL}
an assert must be reachableExpected Result: FAIL
Regression Test:
tcltest::test non-jls-jsr41.4-reachability-5 { an assert must be reachable } { empty_main T414r5 { return; assert false; } } {FAIL}
tests/non-jls/argument-expansion
Under Windows, the compiler should expand command line argumentsTest Case: non-jls-argument-expansion-2Expected Result: PASS
Regression Test:
tcltest::test non-jls-argument-expansion-1 { Under Windows, the compiler should expand command line arguments } { compile C*.java D3.java } {PASS}
The @ symbol indicates that the compiler should read file names from the given fileTest Case: non-jls-argument-expansion-3Expected Result: PASS
Regression Test:
tcltest::test non-jls-argument-expansion-2 { The @ symbol indicates that the compiler should read file names from the given file} { saveas list2 "C1.java" compile @list2 } {PASS}
EOL chars in @ file argumentTest Case: non-jls-argument-expansion-4Expected Result: PASS
Regression Test:
tcltest::test non-jls-argument-expansion-3 { EOL chars in @ file argument } { saveas list3 "C1.java\nC2.java" compile @list3 } {PASS}
EOL chars in @ file argumentTest Case: non-jls-argument-expansion-5Expected Result: PASS
Regression Test:
tcltest::test non-jls-argument-expansion-4 { EOL chars in @ file argument } { saveas list4 "C1.java\r\nC2.java" compile @list4 } {PASS}
EOL chars in @ file argumentTest Case: non-jls-argument-expansion-6Expected Result: PASS
Regression Test:
tcltest::test non-jls-argument-expansion-5 { EOL chars in @ file argument } { saveas list5 "C1.java\rC2.java" compile @list5 } {PASS}
Empty line in @ file argumentTest Case: non-jls-argument-expansion-7Expected Result: PASS
Regression Test:
tcltest::test non-jls-argument-expansion-6 { Empty line in @ file argument } { saveas list6 "C1.java\n\rC2.java" compile @list6 } {PASS}
Spaces in a @ argument file should not cause the compile to failTest Case: non-jls-argument-expansion-8Expected Result: PASS
Regression Test:
tcltest::test non-jls-argument-expansion-7 { Spaces in a @ argument file should not cause the compile to fail } { saveas list7 "C1.java \n C2.java " compile @list7 } {PASS}
Tabs in a @ argument file should not cause the compile to failTest Case: non-jls-argument-expansion-9Expected Result: PASS
Regression Test:
tcltest::test non-jls-argument-expansion-8 { Tabs in a @ argument file should not cause the compile to fail } { saveas list8 "\tC1.java\nC2.java\t" compile @list8 } {PASS}
Tabs and spaces in a @ argument file should not cause the compile to failTest Case: non-jls-argument-expansion-10Expected Result: PASS
Regression Test:
tcltest::test non-jls-argument-expansion-9 { Tabs and spaces in a @ argument file should not cause the compile to fail } { saveas list9 "\t C1.java \n C2.java \t" compile @list9 } {PASS}
Tabs and spaces in empty line of a @ argument should be ignoredTest Case: non-jls-argument-expansion-11Expected Result: PASS
Regression Test:
tcltest::test non-jls-argument-expansion-10 { Tabs and spaces in empty line of a @ argument should be ignored } { saveas list10 "C1.java\n\t \nC2.java" compile @list10 } {PASS}
Expand empty @ argument. this will terminate without doing anything for JDK 1.3 compatibilityTest Case: non-jls-argument-expansion-12Expected Result: PASS
Regression Test:
tcltest::test non-jls-argument-expansion-11 { Expand empty @ argument. this will terminate without doing anything for JDK 1.3 compatibility } { saveas list11 "" compile @list11 } {PASS}
Expand empty @ argumentTest Case: non-jls-argument-expansion-13Expected Result: PASS
Regression Test:
tcltest::test non-jls-argument-expansion-12 { Expand empty @ argument } { saveas list12 "\n\n" compile @list12 } {PASS}
Expand empty @ argumentTest Case: non-jls-argument-expansion-error-1Expected Result: PASS
Regression Test:
tcltest::test non-jls-argument-expansion-13 { Expand empty @ argument } { saveas list13 "" compile C1.java @list13 } {PASS}
Error: Same class compiled twiceTest Case: non-jls-argument-expansion-error-2Expected Result: FAIL
Regression Test:
tcltest::test non-jls-argument-expansion-error-1 { Error: Same class compiled twice } { saveas error1 "C1.java" compile C1.java @error1 } {FAIL}
Error: Same class compiled twiceTest Case: non-jls-argument-expansion-error-3Expected Result: FAIL
Regression Test:
tcltest::test non-jls-argument-expansion-error-2 { Error: Same class compiled twice } { saveas error2 "C1.java C1.java" compile @error2 } {FAIL}
Error: @ file does not existTest Case: non-jls-argument-expansion-tokens-1Expected Result: FAIL
Regression Test:
tcltest::test non-jls-argument-expansion-error-3 { Error: @ file does not exist } { compile @notthere } {FAIL}
Two files on the same line are NOT parsed as two tokensTest Case: non-jls-argument-expansion-tokens-2Expected Result: FAIL
Regression Test:
tcltest::test non-jls-argument-expansion-tokens-1 { Two files on the same line are NOT parsed as two tokens } { saveas tokens1 "C1.java C2.java" compile @tokens1 } {FAIL}
A file name surrounded by double quotes is validTest Case: non-jls-argument-expansion-tokens-3Expected Result: PASS
Regression Test:
tcltest::test non-jls-argument-expansion-tokens-2 { A file name surrounded by double quotes is valid } { saveas tokens2 "\"C1.java\"" compile @tokens2 } {PASS}
A empty file name is not validTest Case: non-jls-argument-expansion-tokens-4Expected Result: FAIL
Regression Test:
tcltest::test non-jls-argument-expansion-tokens-3 { A empty file name is not valid } { saveas tokens3 "\"\"" compile @tokens3 } {FAIL}
A file name the contains a space surrounded by double quotes is validTest Case: non-jls-argument-expansion-tokens-5Expected Result: PASS
Regression Test:
tcltest::test non-jls-argument-expansion-tokens-4 { A file name the contains a space surrounded by double quotes is valid } { saveas "With Space.java" {class WithSpace {}} saveas tokens4 "\"With Space.java\"" compile @tokens4 } {PASS}
A file name the contains a space surrounded by double quotes is validTest Case: non-jls-argument-expansion-tokens-6Expected Result: PASS
Regression Test:
tcltest::test non-jls-argument-expansion-tokens-5 { A file name the contains a space surrounded by double quotes is valid } { saveas "Dir With Space/Space2.java" {class Space2 {}} saveas tokens5 "\"Dir With Space/Space2.java\"" compile @tokens5 } {PASS}
@ files may not invoke other @ filesExpected Result: FAIL
Regression Test:
tcltest::test non-jls-argument-expansion-tokens-6 { @ files may not invoke other @ files } { saveas tokens6 "C1.java" saveas tokens6a "@tokens10" compile @tokens6a } {FAIL}
tests/non-jls/encoding
works with the cp437 encodingTest Case: non-jls-encoding-2Expected Result: PASS
Regression Test:
tcltest::test non-jls-encoding-1 { works with the cp437 encoding } { constant_encoded_expression E1 cp437 \x84 {\u00e4} } {PASS}
same character in utf-8Test Case: non-jls-encoding-3Expected Result: PASS
Regression Test:
tcltest::test non-jls-encoding-2 { same character in utf-8 } { constant_encoded_expression E2 utf-8 \xC3\xA4 {\u00e4} } {PASS}
257 is out of the ASCII range, but in 8859-1 it is defined as lower case a with macron from Latin Extended-ATest Case: non-jls-encoding-4Expected Result: PASS
Regression Test:
tcltest::test non-jls-encoding-3 { 257 is out of the ASCII range, but in 8859-1 it is defined as lower case a with macron from Latin Extended-A } { constant_encoded_expression E3 ISO-8859-4 \xE0 {\u0101} } {PASS}
same character in utf-8Test Case: non-jls-encoding-5Expected Result: PASS
Regression Test:
tcltest::test non-jls-encoding-4 { same character in utf-8 } { constant_encoded_expression E4 utf-8 \xC4\x81 {\u0101} } {PASS}
65533 (FFFD) is the last symbol in "Specials" categoryTest Case: non-jls-encoding-6Expected Result: PASS
Regression Test:
tcltest::test non-jls-encoding-5 { 65533 (FFFD) is the last symbol in "Specials" category } { constant_encoded_expression E5 utf-8 \xEF\xBF\xBD {\uFFFD} } {PASS}
Latin small letter e with acute (233) is in the Latin-1 SupplimentTest Case: non-jls-invalid-encoding-1Expected Result: PASS
Regression Test:
tcltest::test non-jls-encoding-6 { Latin small letter e with acute (233) is in the Latin-1 Suppliment } { constant_encoded_expression E6 iso-8859-1 \xE9 {\u00E9} } {PASS}
Unknown encodingExpected Result: FAIL
Regression Test:
tcltest::test non-jls-invalid-encoding-1 { Unknown encoding } { saveas invalid-encoding.java { class invalid-encoding {} } compile -encoding FooIsNotValidOnAnyCompilerIKnow invalid-encoding.java } {FAIL}
tests/non-jls/random-crashers
crashExpected Result: PASS
Regression Test:
tcltest::test non-jls-random-crashers-1 { crash } { saveas I.java { public interface I { int hashCode(); } } saveas I2.java { interface I2 extends I { } } compile I.java I2.java } {PASS}
tests/non-jls/zip
Load .class file from zip without commentTest Case: non-jls-zip-2Expected Result: PASS
Regression Test:
tcltest::test non-jls-zip-1 {Load .class file from zip without comment} { saveas ZipNoComment.java { class ZipNoComment { pkg.Example inst; } } compile -classpath ZipNoComment.zip ZipNoComment.java } {PASS}
Load .class file from zip with commentTest Case: non-jls-zip-3Expected Result: PASS
Regression Test:
tcltest::test non-jls-zip-2 {Load .class file from zip with comment} { saveas ZipComment.java { class ZipComment { pkg.Example inst; } } compile -classpath ZipComment.zip ZipComment.java } {PASS}
Load .class file from a compressed zipTest Case: non-jls-zip-4Expected Result: PASS
Regression Test:
tcltest::test non-jls-zip-3 {Load .class file from a compressed zip} { saveas ZipCompressed.java { class ZipCompressed { pkg.Example inst; } } compile -classpath ZipCompressed.zip ZipCompressed.java } {PASS}
ignore zip file that does not existExpected Result: OK
Regression Test:
tcltest::test non-jls-zip-4 {ignore zip file that does not exist} { saveas ZipNotThere.java {class ZipNotThere {}} ok_pass_or_warn [compile -classpath ZipNotThere.zip ZipNotThere.java] } {OK}
tests/gcj
test case for gcj PR198Expected Result: PASS
Regression Test:
tcltest::test gcj-PR198 { test case for gcj PR198 } { compile PR198.java } {PASS}
tests/jikes/jls/lexical-structure/unicode
a comment can be formed from non-ASCII characters, Jikes should convert an 8 bit character to unicode without an encodingTest Case: 3.1-jikes-identifier-non-ascii-1Expected Result: PASS
Regression Test:
tcltest::test 3.1-jikes-comments-non-ascii-1 { a comment can be formed from non-ASCII characters, Jikes should convert an 8 bit character to unicode without an encoding } { empty_class T31jcna1 "\n // A comment \xa3 \n" } {PASS}
an identifier can be formed from non-ASCII characters, Jikes should convert an 8 bit character to unicode without an encodingTest Case: 3.1-jikes-character-literal-non-ascii-1Expected Result: PASS
Regression Test:
tcltest::test 3.1-jikes-identifier-non-ascii-1 { an identifier can be formed from non-ASCII characters, Jikes should convert an 8 bit character to unicode without an encoding } { empty_main T31jina1 "int \xa3 = 0; \n \xa3 = 1;" } {PASS}
a character literal can be formed from non-ASCII characters, Jikes should convert an 8 bit character to unicode without an encodingTest Case: 3.1-jikes-string-literal-non-ascii-1Expected Result: PASS
Regression Test:
tcltest::test 3.1-jikes-character-literal-non-ascii-1 { a character literal can be formed from non-ASCII characters, Jikes should convert an 8 bit character to unicode without an encoding } { empty_class T31jclna1 "char c = '\xa3';" } {PASS}
a string literal can be formed from non-ASCII characters, Jikes should convert an 8 bit character to unicode without an encodingTest Case: 3.1-jikes-non-ascii-1Expected Result: PASS
Regression Test:
tcltest::test 3.1-jikes-string-literal-non-ascii-1 { a string literal can be formed from non-ASCII characters, Jikes should convert an 8 bit character to unicode without an encoding } { empty_class T31jslna1 "String s = \"\xa3\";" } {PASS}
0xF7 returns false for Character.isJavaIdentifierStart() so it is not a valid identifierExpected Result: FAIL
Regression Test:
tcltest::test 3.1-jikes-non-ascii-1 { 0xF7 returns false for Character.isJavaIdentifierStart() so it is not a valid identifier } { compile [saveas T31jna1.java "class T31na2 { \xF7 v; }\n"] } {FAIL}
tests/jikes/jls/lexical-structure/literals/character-literals
It is a compile-time error for the character following the SingleCharacter be other than a '. We check the format of the printed error message for this case to make sure a valid \uXXXX escape sequence appears in the error message.Test Case: 3.10.4-jikes-non-ascii-2Expected Result: FAIL 1
Regression Test:
tcltest::test 3.10.4-jikes-non-ascii-1 { It is a compile-time error for the character following the SingleCharacter be other than a '. We check the format of the printed error message for this case to make sure a valid \uXXXX escape sequence appears in the error message. } { saveas T3104jna1.java " class T3104jna1 { char c = 'a\xa3'; } " list [compile T3104jna1.java] [expr { [match_err_or_warn {*\\u[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]*}] + [match_err_or_warn {*£*}]}] } {FAIL 1}
It is a compile-time error for the character following the EscapeSequence be other than a '. We check the format of the printed error message for this case to make sure a valid \uXXXX escape sequence appears in the error message.Expected Result: FAIL 1
Regression Test:
tcltest::test 3.10.4-jikes-non-ascii-2 { It is a compile-time error for the character following the EscapeSequence be other than a '. We check the format of the printed error message for this case to make sure a valid \uXXXX escape sequence appears in the error message. } { saveas T3104jna2.java { class T3104jna2 { char c = '\u0e0ea'; } } list [compile T3104jna2.java] [match_err_or_warn {*\\u[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]*}] } {FAIL 1}
tests/jikes/jls/packages/import-declarations/type-import-on-demand-declaration
Check the error message printed by Jikes when a package of a given given name can not be foundExpected Result: FAIL 1
Regression Test:
tcltest::test 7.5.2-jikes-package-not-found-1 { Check the error message printed by Jikes when a package of a given given name can not be found } { saveas T752pnf1.java { import pkg.not.found.*; class NotFound {} } list [compile -classpath /notadir T752pnf1.java] [match_err_or_warn "*Error:*Package \"pkg/not/found\" could not be found in:*"] } {FAIL 1}
tests/jikes/jls/classes/field-declarations/initialization-of-fields
jikes should not report incompatible types when the initializer already has an errorExpected Result: FAIL 1
Regression Test:
tcltest::test 8.3.2-jikes-message-1 { jikes should not report incompatible types when the initializer already has an error } { list [empty_class T832jm1 { T832jm1 t = new T832JM1(); // oops, T832JM1 is mispelled }] [match_err_or_warn "*1 semantic error*"] } {FAIL 1}
tests/jikes/jls/classes/method-declarations/method-body
see if jikes output is mangled by a typo in src/error.cppExpected Result: FAIL 1
Regression Test:
tcltest::test 8.4.5-jikes-1 { see if jikes output is mangled by a typo in src/error.cpp } { saveas MangleJikesOutputNoReturn.java { class MangleJikesOutputNoReturn { boolean processCommand(String s) {} } } list [compile MangleJikesOutputNoReturn.java] [match_err_or_warn "*Error:*contain a return statement with an expression compatible*"] } {FAIL 1}
tests/jikes/jls/classes/constructor-declarations/constructor-body/explicit-constructor-invocations
An ExplicitConstructorInvocation must appear before the optional BlockStatementsTest Case: 8.8.5.1-jikes-before-block-statements-2Expected Result: FAIL 1
Regression Test:
tcltest::test 8.8.5.1-jikes-before-block-statements-1 { An ExplicitConstructorInvocation must appear before the optional BlockStatements } { list [empty_class T8851jbb1 { T8851jbb1() {} T8851jbb1(int i) { i = 0; this(); } }] [match_err_or_warn "*Error:* first statement in constructor*"] } {FAIL 1}
An ExplicitConstructorInvocation must appear before the optional BlockStatementsExpected Result: FAIL 1
Regression Test:
tcltest::test 8.8.5.1-jikes-before-block-statements-2 { An ExplicitConstructorInvocation must appear before the optional BlockStatements } { list [empty_class T8851jbb2 { T8851jbb2() {} T8851jbb2(int i) { i = 0; super(); } }] [match_err_or_warn "*Error:* first statement in constructor*"] } {FAIL 1}
tests/jikes/jls/blocks-and-statements/labeled-statements
Some versions of jikes grabbed the wrong label in the error messageExpected Result: FAIL 1
Regression Test:
tcltest::test 14.7-jikes-message-1 { Some versions of jikes grabbed the wrong label in the error message } { list [empty_main T147jm1 { int i = 1; a: labelone: a: labeltwo: while (i-- > 0) break a; }] [match_err_or_warn "*a: labeltwo*"] } {FAIL 1}
tests/jikes/jls/blocks-and-statements/try-statement
Some versions of jikes turned a bad catch into Error, causing spurious warnings about subsequent catches of ErrorExpected Result: FAIL 0
Regression Test:
tcltest::test 14.19-jikes-message-1 { Some versions of jikes turned a bad catch into Error, causing spurious warnings about subsequent catches of Error } { list [empty_main T1419jm1 { try { throw new Error(); } catch (int e) { } catch (Error e) { } }] [match_err_or_warn "*catch block is unreachable*"] } {FAIL 0}
tests/jikes/jls/blocks-and-statements/unreachable-statements
jikes should not report an unreachable catch clause when fixing an earlier error in the try block can make the catch reachableTest Case: 14.20-jikes-message-2Expected Result: FAIL 0
Regression Test:
tcltest::test 14.20-jikes-message-1 { jikes should not report an unreachable catch clause when fixing an earlier error in the try block can make the catch reachable } { list [empty_class T1420jm1 { class E extends Exception {} void longname() throws E {} void foo() { try { longName(); // oops, misspelled } catch (E e) { // would be reachable if error is fixed } } }] [match_err_or_warn "*catch block is unreachable*"] } {FAIL 0}
jikes should not report an unreachable catch clause when fixing an earlier error in the try block can make the catch reachableTest Case: 14.20-jikes-message-3Expected Result: FAIL 0
Regression Test:
tcltest::test 14.20-jikes-message-2 { jikes should not report an unreachable catch clause when fixing an earlier error in the try block can make the catch reachable } { list [empty_class T1420jm2 { class E extends Exception {} T1420jm2(String s) throws Exception {} void foo() { try { new T1420jm2('1'); // oops, wrong parameter type } catch (E e) { // would be reachable if error is fixed } } }] [match_err_or_warn "*catch block is unreachable*"] } {FAIL 0}
jikes should not report an unreachable catch clause when fixing an earlier error in the try block can make the catch reachableExpected Result: FAIL 0
Regression Test:
tcltest::test 14.20-jikes-message-3 { jikes should not report an unreachable catch clause when fixing an earlier error in the try block can make the catch reachable } { list [empty_class T1420jm3 { class MyException extends Exception {} void foo() { try { throw new Myexception(); // oops, misspelled } catch (MyException e) { // would be reachable if error is fixed } } }] [match_err_or_warn "*catch block is unreachable*"] } {FAIL 0}
tests/jikes
jikes should fail but not core dump on this dependencyTest Case: jikes-3Expected Result: FAIL
Regression Test:
tcltest::test jikes-1 { jikes should fail but not core dump on this dependency } { saveas BrokenDependency.java { import a_package_that_can_not_be_found.Two; public class BrokenDependency { void foo() { Object o = new Two(); } } } # Cleanup the .u file that is produced cleanup BrokenDependency.u compile -d . +M BrokenDependency.java } {FAIL}
jikes should fail but not core dump on illegal import from anonymous packageExpected Result: FAIL
Regression Test:
tcltest::test jikes-3 { jikes should fail but not core dump on illegal import from anonymous package } { saveas Anon.java {public class Anon {}} saveas p/Import.java { package p; import Anon; // illegal class Import { Object o = new Anon(); } } compile +P Anon.java p/Import.java } {FAIL}
tests/jvms/class-file-format/attributes/deprecated-attribute
Test that a class can be deprecatedTest Case: 4.7.10-jvms-class-2Expected Result: WARN 1
Regression Test:
tcltest::test 4.7.10-jvms-class-1 { Test that a class can be deprecated } { compile [saveas T4710jc1a.java { // most compact form, need not start line import java.lang.*;/**@deprecated*/ class T4710jc1a {} }] delete T4710jc1a.java list [compile -classpath . -deprecation [saveas T4710jc1b.java { class T4710jc1b extends T4710jc1a {} }]] [match_err_or_warn {*depreca*}] } {WARN 1}
Test that a class can be deprecatedTest Case: 4.7.10-jvms-class-3Expected Result: WARN 1
Regression Test:
tcltest::test 4.7.10-jvms-class-2 { Test that a class can be deprecated } { compile [saveas T4710jc2a.java { // one-liner form /** @deprecated */ class T4710jc2a {} }] delete T4710jc2a.java list [compile -classpath . -deprecation [saveas T4710jc2b.java { class T4710jc2b extends T4710jc2a {} }]] [match_err_or_warn {*depreca*}] } {WARN 1}
Test that a class can be deprecatedTest Case: 4.7.10-jvms-class-4Expected Result: WARN 1
Regression Test:
tcltest::test 4.7.10-jvms-class-3 { Test that a class can be deprecated } { compile [saveas T4710jc3a.java { /** * all leading whitespace and * are ignored * ** @deprecated **/ class T4710jc3a {} }] delete T4710jc3a.java list [compile -classpath . -deprecation [saveas T4710jc3b.java { class T4710jc3b extends T4710jc3a {} }]] [match_err_or_warn {*depreca*}] } {WARN 1}
Test that a class can be deprecatedTest Case: 4.7.10-jvms-class-5Expected Result: WARN 1
Regression Test:
tcltest::test 4.7.10-jvms-class-4 { Test that a class can be deprecated } { compile [saveas T4710jc4a.java { /** leading * is optional @deprecated */ class T4710jc4a {} }] delete T4710jc4a.java list [compile -classpath . -deprecation [saveas T4710jc4b.java { class T4710jc4b extends T4710jc4a {} }]] [match_err_or_warn {*depreca*}] } {WARN 1}
Test that a class can be deprecatedTest Case: 4.7.10-jvms-class-6Expected Result: WARN 1
Regression Test:
tcltest::test 4.7.10-jvms-class-5 { Test that a class can be deprecated } { compile [saveas T4710jc5a.java { /** @deprecated */ /* */ // additional comments don't matter class T4710jc5a {} }] delete T4710jc5a.java list [compile -classpath . -deprecation [saveas T4710jc5b.java { class T4710jc5b extends T4710jc5a {} }]] [match_err_or_warn {*depreca*}] } {WARN 1}
Test that a class can be deprecatedTest Case: 4.7.10-jvms-class-7Expected Result: PASS 0
Regression Test:
tcltest::test 4.7.10-jvms-class-6 { Test that a class can be deprecated } { compile [saveas T4710jc6a.java { /** @deprecated */ ; // oops, must be directly before class class T4710jc6a {} }] delete T4710jc6a.java list [compile -classpath . -deprecation [saveas T4710jc6b.java { class T4710jc6b extends T4710jc6a {} }]] [match_err_or_warn {*depreca*}] } {PASS 0}
Test that a class can be deprecatedTest Case: 4.7.10-jvms-class-8Expected Result: PASS 0
Regression Test:
tcltest::test 4.7.10-jvms-class-7 { Test that a class can be deprecated } { compile [saveas T4710jc7a.java { /** @deprecated */ import java.lang.*; // oops, must be directly before class class T4710jc7a {} }] delete T4710jc7a.java list [compile -classpath . -deprecation [saveas T4710jc7b.java { class T4710jc7b extends T4710jc7a {} }]] [match_err_or_warn {*depreca*}] } {PASS 0}
Test that a class can be deprecatedTest Case: 4.7.10-jvms-class-9Expected Result: PASS 0
Regression Test:
tcltest::test 4.7.10-jvms-class-8 { Test that a class can be deprecated } { compile [saveas T4710jc8a.java { public /** oops - too late * @deprecated */ class T4710jc8a {} }] delete T4710jc8a.java list [compile -classpath . -deprecation [saveas T4710jc8b.java { class T4710jc8b extends T4710jc8a {} }]] [match_err_or_warn {*depreca*}] } {PASS 0}
Test that a class can be deprecatedTest Case: 4.7.10-jvms-class-10Expected Result: PASS 0
Regression Test:
tcltest::test 4.7.10-jvms-class-9 { Test that a class can be deprecated } { compile [saveas T4710jc9a.java { /** characters besides whitespace or * before @ deactivate tag @deprecated */ class T4710jc9a {} }] delete T4710jc9a.java list [compile -classpath . -deprecation [saveas T4710jc9b.java { class T4710jc9b extends T4710jc9a {} }]] [match_err_or_warn {*depreca*}] } {PASS 0}
Test that a class can be deprecatedTest Case: 4.7.10-jvms-class-11Expected Result: WARN 1
Regression Test:
tcltest::test 4.7.10-jvms-class-10 { Test that a class can be deprecated } { compile [saveas T4710jc10a.java { /** @deprecated */ class T4710jc10a {} }] delete T4710jc10a.java list [compile -classpath . -deprecation [saveas T4710jc10b.java { class T4710jc10b { Object o = new T4710jc10a(); } }]] [match_err_or_warn {*depreca*}] } {WARN 1}
Test that a class can be deprecatedTest Case: 4.7.10-jvms-class-12Expected Result: WARN 1
Regression Test:
tcltest::test 4.7.10-jvms-class-11 { Test that a class can be deprecated } { compile [saveas T4710jc11a.java { /** @deprecated */ class T4710jc11a { static int i; } }] delete T4710jc11a.java list [compile -classpath . -deprecation [saveas T4710jc11b.java { class T4710jc11b { int i = T4710jc11a.i; } }]] [match_err_or_warn {*depreca*}] } {WARN 1}
Test that a class can be deprecatedTest Case: 4.7.10-jvms-class-13Expected Result: WARN 1
Regression Test:
tcltest::test 4.7.10-jvms-class-12 { Test that a class can be deprecated } { compile [saveas T4710jc12a.java { /** @deprecated */ class T4710jc12a {} }] delete T4710jc12a.java list [compile -classpath . -deprecation [saveas T4710jc12b.java { class T4710jc12b { Object o; boolean b = o instanceof T4710jc12a; } }]] [match_err_or_warn {*depreca*}] } {WARN 1}
Test that a class can be deprecatedTest Case: 4.7.10-jvms-class-14Expected Result: WARN 1
Regression Test:
tcltest::test 4.7.10-jvms-class-13 { Test that a class can be deprecated } { compile [saveas T4710jc13a.java { /** @deprecated */ class T4710jc13a {} }] delete T4710jc13a.java list [compile -classpath . -deprecation [saveas T4710jc13b.java { class T4710jc13b { T4710jc13a t; } }]] [match_err_or_warn {*depreca*}] } {WARN 1}
Test that a class can be deprecatedTest Case: 4.7.10-jvms-class-15Expected Result: WARN 1
Regression Test:
tcltest::test 4.7.10-jvms-class-14 { Test that a class can be deprecated } { compile [saveas T4710jc14a.java { /** @deprecated */ class T4710jc14a {} }] delete T4710jc14a.java list [compile -classpath . -deprecation [saveas T4710jc14b.java { class T4710jc14b { T4710jc14a[] t; } }]] [match_err_or_warn {*depreca*}] } {WARN 1}
Test that a class can be deprecatedTest Case: 4.7.10-jvms-class-16Expected Result: PASS 0
Regression Test:
tcltest::test 4.7.10-jvms-class-15 { Test that a class can be deprecated } { compile [saveas T4710jc15a.java { /** @deprecated */ /** Only the most recent doc comment applies */ class T4710jc15a {} }] delete T4710jc15a.java list [compile -classpath . -deprecation [saveas T4710jc15b.java { class T4710jc15b extends T4710jc15a {} }]] [match_err_or_warn {*depreca*}] } {PASS 0}
Test that a class can be deprecatedTest Case: 4.7.10-jvms-class-17Expected Result: PASS 0
Regression Test:
tcltest::test 4.7.10-jvms-class-16 { Test that a class can be deprecated } { compile [saveas T4710jc16a.java { /** @deprecated */ /**/ // degenerate doc comment; only most recent one applies class T4710jc16a {} }] delete T4710jc16a.java list [compile -classpath . -deprecation [saveas T4710jc16b.java { class T4710jc16b extends T4710jc16a {} }]] [match_err_or_warn {*depreca*}] } {PASS 0}
Test that a class can be deprecatedTest Case: 4.7.10-jvms-class-18Expected Result: WARN 1
Regression Test:
tcltest::test 4.7.10-jvms-class-17 { Test that a class can be deprecated } { compile [saveas p1/T4710jc17a.java { package p1; /** @deprecated */ public class T4710jc17a {} }] delete p1/T4710jc17a.java list [compile -classpath . -deprecation [saveas T4710jc17b.java { import p1.T4710jc17a; class T4710jc17b {} }]] [match_err_or_warn {*depreca*}] } {WARN 1}
Test that a class can be deprecatedTest Case: 4.7.10-jvms-class-19Expected Result: WARN 1
Regression Test:
tcltest::test 4.7.10-jvms-class-18 { Test that a class can be deprecated } { compile [saveas p1/T4710jc18a.java { package p1; /** @deprecated */ public class T4710jc18a { public static class Inner {} } }] delete p1/T4710jc18a.java list [compile -classpath . -deprecation [saveas T4710jc18b.java { import p1.T4710jc18a.*; class T4710jc18b extends Inner {} }]] [match_err_or_warn {*depreca*}] } {WARN 1}
Test that a class can be deprecatedTest Case: 4.7.10-jvms-method-1Expected Result: WARN 1
Regression Test:
tcltest::test 4.7.10-jvms-class-19 { Test that a class can be deprecated } { compile [saveas T4710jc19a.java { public class T4710jc19a { /** @deprecated */ public static class Inner {} } }] delete T4710jc19a.java list [compile -classpath . -deprecation [saveas T4710jc19b.java { class T4710jc19b extends T4710jc19a.Inner {} }]] [match_err_or_warn {*depreca*}] } {WARN 1}
Test that a method can be deprecatedTest Case: 4.7.10-jvms-method-2Expected Result: WARN 1
Regression Test:
tcltest::test 4.7.10-jvms-method-1 { Test that a method can be deprecated } { empty_class T4710jm1a { // most compact form, need not start line int i;/**@deprecated*/ static int m() { return 1; } } delete T4710jm1a.java list [compile -classpath . -deprecation [saveas T4710jm1b.java { class T4710jm1b { int i = T4710jm1a.m(); } }]] [match_err_or_warn {*depreca*}] } {WARN 1}
Test that a method can be deprecatedTest Case: 4.7.10-jvms-method-3Expected Result: WARN 1
Regression Test:
tcltest::test 4.7.10-jvms-method-2 { Test that a method can be deprecated } { empty_class T4710jm2a { // one-liner form /** @deprecated */ static int m() { return 1; } } delete T4710jm2a.java list [compile -classpath . -deprecation [saveas T4710jm2b.java { class T4710jm2b { int i = T4710jm2a.m(); } }]] [match_err_or_warn {*depreca*}] } {WARN 1}
Test that a method can be deprecatedTest Case: 4.7.10-jvms-method-4Expected Result: WARN 1
Regression Test:
tcltest::test 4.7.10-jvms-method-3 { Test that a method can be deprecated } { empty_class T4710jm3a { /** * all leading whitespace and * are ignored * ** @deprecated **/ static int m() { return 1; } } delete T4710jm3a.java list [compile -classpath . -deprecation [saveas T4710jm3b.java { class T4710jm3b { int i = T4710jm3a.m(); } }]] [match_err_or_warn {*depreca*}] } {WARN 1}
Test that a method can be deprecatedTest Case: 4.7.10-jvms-method-5Expected Result: WARN 1
Regression Test:
tcltest::test 4.7.10-jvms-method-4 { Test that a method can be deprecated } { empty_class T4710jm4a { /** leading * is optional @deprecated */ static int m() { return 1; } } delete T4710jm4a.java list [compile -classpath . -deprecation [saveas T4710jm4b.java { class T4710jm4b { int i = T4710jm4a.m(); } }]] [match_err_or_warn {*depreca*}] } {WARN 1}
Test that a method can be deprecatedTest Case: 4.7.10-jvms-method-6Expected Result: WARN 1
Regression Test:
tcltest::test 4.7.10-jvms-method-5 { Test that a method can be deprecated } { empty_class T4710jm5a { /** @deprecated */ /* */ // additional comments don't matter static int m() { return 1; } } delete T4710jm5a.java list [compile -classpath . -deprecation [saveas T4710jm5b.java { class T4710jm5b { int i = T4710jm5a.m(); } }]] [match_err_or_warn {*depreca*}] } {WARN 1}
Test that a method can be deprecatedTest Case: 4.7.10-jvms-method-7Expected Result: PASS 0
Regression Test:
tcltest::test 4.7.10-jvms-method-6 { Test that a method can be deprecated } { empty_class T4710jm6a { /** @deprecated */ ; // oops, must be directly before method static int m() { return 1; } } delete T4710jm6a.java list [compile -classpath . -deprecation [saveas T4710jm6b.java { class T4710jm6b { int i = T4710jm6a.m(); } }]] [match_err_or_warn {*depreca*}] } {PASS 0}
Test that a method can be deprecatedTest Case: 4.7.10-jvms-method-8Expected Result: PASS 0
Regression Test:
tcltest::test 4.7.10-jvms-method-7 { Test that a method can be deprecated } { empty_class T4710jm7a { /** @deprecated */ int j; // oops, must be directly before method static int m() { return 1; } } delete T4710jm7a.java list [compile -classpath . -deprecation [saveas T4710jm7b.java { class T4710jm7b { int i = T4710jm7a.m(); } }]] [match_err_or_warn {*depreca*}] } {PASS 0}
Test that a method can be deprecatedTest Case: 4.7.10-jvms-method-9Expected Result: PASS 0
Regression Test:
tcltest::test 4.7.10-jvms-method-8 { Test that a method can be deprecated } { empty_class T4710jm8a { public /** oops - too late * @deprecated */ static int m() { return 1; } } delete T4710jm8a.java list [compile -classpath . -deprecation [saveas T4710jm8b.java { class T4710jm8b { int i = T4710jm8a.m(); } }]] [match_err_or_warn {*depreca*}] } {PASS 0}
Test that a method can be deprecatedTest Case: 4.7.10-jvms-method-10Expected Result: PASS 0
Regression Test:
tcltest::test 4.7.10-jvms-method-9 { Test that a method can be deprecated } { empty_class T4710jm9a { /** characters besides whitespace or * before @ deactivate tag @deprecated */ static int m() { return 1; } } delete T4710jm9a.java list [compile -classpath . -deprecation [saveas T4710jm9b.java { class T4710jm9b { int i = T4710jm9a.m(); } }]] [match_err_or_warn {*depreca*}] } {PASS 0}
Test that a method can be deprecatedTest Case: 4.7.10-jvms-method-11Expected Result: WARN 1
Regression Test:
tcltest::test 4.7.10-jvms-method-10 { Test that a method can be deprecated } { empty_class T4710jm10a { /** @deprecated */ static int m() { return 1; } } delete T4710jm10a.java list [compile -classpath . -deprecation [saveas T4710jm10b.java { class T4710jm10b extends T4710jm10a { int j = m(); } }]] [match_err_or_warn {*depreca*}] } {WARN 1}
Test that a method can be deprecatedTest Case: 4.7.10-jvms-method-12Expected Result: PASS 0
Regression Test:
tcltest::test 4.7.10-jvms-method-11 { Test that a method can be deprecated } { empty_class T4710jm11a { /** @deprecated */ /** Only the most recent doc comment applies */ static int m() { return 1; } } delete T4710jm11a.java list [compile -classpath . -deprecation [saveas T4710jm11b.java { class T4710jm11b { int i = T4710jm11a.m(); } }]] [match_err_or_warn {*depreca*}] } {PASS 0}
Test that a method can be deprecatedTest Case: 4.7.10-jvms-constructor-1Expected Result: PASS 0
Regression Test:
tcltest::test 4.7.10-jvms-method-12 { Test that a method can be deprecated } { empty_class T4710jm12a { /** @deprecated */ /**/ // degenerate doc comment; only most recent one applies static int m() { return 1; } } delete T4710jm12a.java list [compile -classpath . -deprecation [saveas T4710jm12b.java { class T4710jm12b { int i = T4710jm12a.m(); } }]] [match_err_or_warn {*depreca*}] } {PASS 0}
Test that a constructor can be deprecatedTest Case: 4.7.10-jvms-constructor-2Expected Result: WARN 1
Regression Test:
tcltest::test 4.7.10-jvms-constructor-1 { Test that a constructor can be deprecated } { empty_class T4710jcon1a { // most compact form, need not start line int i;/**@deprecated*/ T4710jcon1a() {} } delete T4710jcon1a.java list [compile -classpath . -deprecation [saveas T4710jcon1b.java { class T4710jcon1b { { new T4710jcon1a(); } } }]] [match_err_or_warn {*depreca*}] } {WARN 1}
Test that a constructor can be deprecatedTest Case: 4.7.10-jvms-constructor-3Expected Result: WARN 1
Regression Test:
tcltest::test 4.7.10-jvms-constructor-2 { Test that a constructor can be deprecated } { empty_class T4710jcon2a { // one-liner form /** @deprecated */ T4710jcon2a() {} } delete T4710jcon2a.java list [compile -classpath . -deprecation [saveas T4710jcon2b.java { class T4710jcon2b { { new T4710jcon2a(); } } }]] [match_err_or_warn {*depreca*}] } {WARN 1}
Test that a constructor can be deprecatedTest Case: 4.7.10-jvms-constructor-4Expected Result: WARN 1
Regression Test:
tcltest::test 4.7.10-jvms-constructor-3 { Test that a constructor can be deprecated } { empty_class T4710jcon3a { /** * all leading whitespace and * are ignored * ** @deprecated **/ T4710jcon3a() {} } delete T4710jcon3a.java list [compile -classpath . -deprecation [saveas T4710jcon3b.java { class T4710jcon3b { { new T4710jcon3a(); } } }]] [match_err_or_warn {*depreca*}] } {WARN 1}
Test that a constructor can be deprecatedTest Case: 4.7.10-jvms-constructor-5Expected Result: WARN 1
Regression Test:
tcltest::test 4.7.10-jvms-constructor-4 { Test that a constructor can be deprecated } { empty_class T4710jcon4a { /** leading * is optional @deprecated */ T4710jcon4a() {} } delete T4710jcon4a.java list [compile -classpath . -deprecation [saveas T4710jcon4b.java { class T4710jcon4b { { new T4710jcon4a(); } } }]] [match_err_or_warn {*depreca*}] } {WARN 1}
Test that a constructor can be deprecatedTest Case: 4.7.10-jvms-constructor-6Expected Result: WARN 1
Regression Test:
tcltest::test 4.7.10-jvms-constructor-5 { Test that a constructor can be deprecated } { empty_class T4710jcon5a { /** @deprecated */ /* */ // additional comments don't matter T4710jcon5a() {} } delete T4710jcon5a.java list [compile -classpath . -deprecation [saveas T4710jcon5b.java { class T4710jcon5b { { new T4710jcon5a(); } } }]] [match_err_or_warn {*depreca*}] } {WARN 1}
Test that a constructor can be deprecatedTest Case: 4.7.10-jvms-constructor-7Expected Result: PASS 0
Regression Test:
tcltest::test 4.7.10-jvms-constructor-6 { Test that a constructor can be deprecated } { empty_class T4710jcon6a { /** @deprecated */ ; // oops, must be directly before constructor T4710jcon6a() {} } delete T4710jcon6a.java list [compile -classpath . -deprecation [saveas T4710jcon6b.java { class T4710jcon6b { { new T4710jcon6a(); } } }]] [match_err_or_warn {*depreca*}] } {PASS 0}
Test that a constructor can be deprecatedTest Case: 4.7.10-jvms-constructor-8Expected Result: PASS 0
Regression Test:
tcltest::test 4.7.10-jvms-constructor-7 { Test that a constructor can be deprecated } { empty_class T4710jcon7a { /** @deprecated */ int i; // oops, must be directly before constructor T4710jcon7a() {} } delete T4710jcon7a.java list [compile -classpath . -deprecation [saveas T4710jcon7b.java { class T4710jcon7b { { new T4710jcon7a(); } } }]] [match_err_or_warn {*depreca*}] } {PASS 0}
Test that a constructor can be deprecatedTest Case: 4.7.10-jvms-constructor-9Expected Result: PASS 0
Regression Test:
tcltest::test 4.7.10-jvms-constructor-8 { Test that a constructor can be deprecated } { empty_class T4710jcon8a { public /** oops - too late * @deprecated */ T4710jcon8a() {} } delete T4710jcon8a.java list [compile -classpath . -deprecation [saveas T4710jcon8b.java { class T4710jcon8b { { new T4710jcon8a(); } } }]] [match_err_or_warn {*depreca*}] } {PASS 0}
Test that a constructor can be deprecatedTest Case: 4.7.10-jvms-constructor-10Expected Result: PASS 0
Regression Test:
tcltest::test 4.7.10-jvms-constructor-9 { Test that a constructor can be deprecated } { empty_class T4710jcon9a { /** characters besides whitespace or * before @ deactivate tag @deprecated */ T4710jcon9a() {} } delete T4710jcon9a.java list [compile -classpath . -deprecation [saveas T4710jcon9b.java { class T4710jcon9b { { new T4710jcon9a(); } } }]] [match_err_or_warn {*depreca*}] } {PASS 0}
Test that a constructor can be deprecatedTest Case: 4.7.10-jvms-constructor-11Expected Result: WARN 1
Regression Test:
tcltest::test 4.7.10-jvms-constructor-10 { Test that a constructor can be deprecated } { empty_class T4710jcon10a { /** @deprecated */ T4710jcon10a() {} } delete T4710jcon10a.java list [compile -classpath . -deprecation [saveas T4710jcon10b.java { class T4710jcon10b extends T4710jcon10a {} }]] [match_err_or_warn {*depreca*}] } {WARN 1}
Test that a constructor can be deprecatedTest Case: 4.7.10-jvms-constructor-12Expected Result: WARN 1
Regression Test:
tcltest::test 4.7.10-jvms-constructor-11 { Test that a constructor can be deprecated } { empty_class T4710jcon11a { /** @deprecated */ T4710jcon11a() {} } delete T4710jcon11a.java list [compile -classpath . -deprecation [saveas T4710jcon11b.java { class T4710jcon11b extends T4710jcon11a { T4710jcon11b() { super(); } } }]] [match_err_or_warn {*depreca*}] } {WARN 1}
Test that a constructor can be deprecatedTest Case: 4.7.10-jvms-constructor-13Expected Result: WARN 1
Regression Test:
tcltest::test 4.7.10-jvms-constructor-12 { Test that a constructor can be deprecated } { empty_class T4710jcon12a { /** @deprecated */ T4710jcon12a() {} } delete T4710jcon12a.java list [compile -classpath . -deprecation [saveas T4710jcon12b.java { class T4710jcon12b { { new T4710jcon12a() {}; } } }]] [match_err_or_warn {*depreca*}] } {WARN 1}
Test that a constructor can be deprecatedTest Case: 4.7.10-jvms-constructor-14Expected Result: PASS 0
Regression Test:
tcltest::test 4.7.10-jvms-constructor-13 { Test that a constructor can be deprecated } { empty_class T4710jcon13a { /** @deprecated */ /** Only the most recent doc comment applies */ T4710jcon13a() {} } delete T4710jcon13a.java list [compile -classpath . -deprecation [saveas T4710jcon13b.java { class T4710jcon13b { { new T4710jcon13a() {}; } } }]] [match_err_or_warn {*depreca*}] } {PASS 0}
Test that a constructor can be deprecatedTest Case: 4.7.10-jvms-field-1Expected Result: PASS 0
Regression Test:
tcltest::test 4.7.10-jvms-constructor-14 { Test that a constructor can be deprecated } { empty_class T4710jcon14a { /** @deprecated */ /**/ // degenerate doc comment; only most recent one applies T4710jcon14a() {} } delete T4710jcon14a.java list [compile -classpath . -deprecation [saveas T4710jcon14b.java { class T4710jcon14b { { new T4710jcon14a() {}; } } }]] [match_err_or_warn {*depreca*}] } {PASS 0}
Test that a field can be deprecatedTest Case: 4.7.10-jvms-field-2Expected Result: WARN 1
Regression Test:
tcltest::test 4.7.10-jvms-field-1 { Test that a field can be deprecated } { empty_class T4710jf1a { // most compact form, need not start line int j;/**@deprecated*/ static int i; } delete T4710jf1a.java list [compile -classpath . -deprecation [saveas T4710jf1b.java { class T4710jf1b { int i = T4710jf1a.i; } }]] [match_err_or_warn {*depreca*}] } {WARN 1}
Test that a field can be deprecatedTest Case: 4.7.10-jvms-field-3Expected Result: WARN 1
Regression Test:
tcltest::test 4.7.10-jvms-field-2 { Test that a field can be deprecated } { empty_class T4710jf2a { // one-liner form /** @deprecated */ static int i; } delete T4710jf2a.java list [compile -classpath . -deprecation [saveas T4710jf2b.java { class T4710jf2b { int i = T4710jf2a.i; } }]] [match_err_or_warn {*depreca*}] } {WARN 1}
Test that a field can be deprecatedTest Case: 4.7.10-jvms-field-4Expected Result: WARN 1
Regression Test:
tcltest::test 4.7.10-jvms-field-3 { Test that a field can be deprecated } { empty_class T4710jf3a { /** * all leading whitespace and * are ignored * ** @deprecated **/ static int i; } delete T4710jf3a.java list [compile -classpath . -deprecation [saveas T4710jf3b.java { class T4710jf3b { int i = T4710jf3a.i; } }]] [match_err_or_warn {*depreca*}] } {WARN 1}
Test that a field can be deprecatedTest Case: 4.7.10-jvms-field-5Expected Result: WARN 1
Regression Test:
tcltest::test 4.7.10-jvms-field-4 { Test that a field can be deprecated } { empty_class T4710jf4a { /** leading * is optional @deprecated */ static int i; } delete T4710jf4a.java list [compile -classpath . -deprecation [saveas T4710jf4b.java { class T4710jf4b { int i = T4710jf4a.i; } }]] [match_err_or_warn {*depreca*}] } {WARN 1}
Test that a field can be deprecatedTest Case: 4.7.10-jvms-field-6Expected Result: WARN 1
Regression Test:
tcltest::test 4.7.10-jvms-field-5 { Test that a field can be deprecated } { empty_class T4710jf5a { /** @deprecated */ /* */ // additional comments don't matter static int i; } delete T4710jf5a.java list [compile -classpath . -deprecation [saveas T4710jf5b.java { class T4710jf5b { int i = T4710jf5a.i; } }]] [match_err_or_warn {*depreca*}] } {WARN 1}
Test that a field can be deprecatedTest Case: 4.7.10-jvms-field-7Expected Result: PASS 0
Regression Test:
tcltest::test 4.7.10-jvms-field-6 { Test that a field can be deprecated } { empty_class T4710jf6a { /** @deprecated */ ; // oops, must be directly before field static int i; } delete T4710jf6a.java list [compile -classpath . -deprecation [saveas T4710jf6b.java { class T4710jf6b { int i = T4710jf6a.i; } }]] [match_err_or_warn {*depreca*}] } {PASS 0}
Test that a field can be deprecatedTest Case: 4.7.10-jvms-field-8Expected Result: PASS 0
Regression Test:
tcltest::test 4.7.10-jvms-field-7 { Test that a field can be deprecated } { empty_class T4710jf7a { /** @deprecated */ int j; // oops, must be directly before field static int i; } delete T4710jf7a.java list [compile -classpath . -deprecation [saveas T4710jf7b.java { class T4710jf7b { int i = T4710jf7a.i; } }]] [match_err_or_warn {*depreca*}] } {PASS 0}
Test that a field can be deprecatedTest Case: 4.7.10-jvms-field-9Expected Result: PASS 0
Regression Test:
tcltest::test 4.7.10-jvms-field-8 { Test that a field can be deprecated } { empty_class T4710jf8a { public /** oops - too late * @deprecated */ static int i; } delete T4710jf8a.java list [compile -classpath . -deprecation [saveas T4710jf8b.java { class T4710jf8b { int i = T4710jf8a.i; } }]] [match_err_or_warn {*depreca*}] } {PASS 0}
Test that a field can be deprecatedTest Case: 4.7.10-jvms-field-10Expected Result: PASS 0
Regression Test:
tcltest::test 4.7.10-jvms-field-9 { Test that a field can be deprecated } { empty_class T4710jf9a { /** characters besides whitespace or * before @ deactivate tag @deprecated */ static int i; } delete T4710jf9a.java list [compile -classpath . -deprecation [saveas T4710jf9b.java { class T4710jf9b { int i = T4710jf9a.i; } }]] [match_err_or_warn {*depreca*}] } {PASS 0}
Test that a field can be deprecatedTest Case: 4.7.10-jvms-field-11Expected Result: WARN 1
Regression Test:
tcltest::test 4.7.10-jvms-field-10 { Test that a field can be deprecated } { empty_class T4710jf10a { /** @deprecated */ static int i; } delete T4710jf10a.java list [compile -classpath . -deprecation [saveas T4710jf10b.java { class T4710jf10b extends T4710jf10a { int j = i; } }]] [match_err_or_warn {*depreca*}] } {WARN 1}
Test that a field can be deprecatedTest Case: 4.7.10-jvms-field-12Expected Result: WARN 1
Regression Test:
tcltest::test 4.7.10-jvms-field-11 { Test that a field can be deprecated } { empty_class T4710jf11a { /** * multiple fields in the same declaration are all deprecated * @deprecated */ static int j, i; } delete T4710jf11a.java list [compile -classpath . -deprecation [saveas T4710jf11b.java { class T4710jf11b { int i = T4710jf11a.i; } }]] [match_err_or_warn {*depreca*}] } {WARN 1}
Test that a field can be deprecatedTest Case: 4.7.10-jvms-field-13Expected Result: PASS 0
Regression Test:
tcltest::test 4.7.10-jvms-field-12 { Test that a field can be deprecated } { empty_class T4710jf12a { /** @deprecated */ /** Only the most recent doc comment applies */ static int i; } delete T4710jf12a.java list [compile -classpath . -deprecation [saveas T4710jf12b.java { class T4710jf12b { int i = T4710jf12a.i; } }]] [match_err_or_warn {*depreca*}] } {PASS 0}
Test that a field can be deprecatedTest Case: 4.7.10-jvms-lex-1Expected Result: PASS 0
Regression Test:
tcltest::test 4.7.10-jvms-field-13 { Test that a field can be deprecated } { empty_class T4710jf13a { /** @deprecated */ /**/ // degenerate doc comment; only most recent one applies static int i; } delete T4710jf13a.java list [compile -classpath . -deprecation [saveas T4710jf13b.java { class T4710jf13b { int i = T4710jf13a.i; } }]] [match_err_or_warn {*depreca*}] } {PASS 0}
Test lexing of deprecatedTest Case: 4.7.10-jvms-lex-2Expected Result: PASS 0
Regression Test:
tcltest::test 4.7.10-jvms-lex-1 { Test lexing of deprecated } { empty_class T4710jl1a { /** / before tag disables tag (except starting /**) /* @deprecated */ static int i; /** /** @deprecated */ static int j; } delete T4710j1a.java list [compile -classpath . -deprecation [saveas T4710jl1b.java { class T4710jl1b { int i = T4710jl1a.i + T4710jl1a.j; } }]] [match_err_or_warn {*depreca*}] } {PASS 0}
Test lexing of deprecatedTest Case: 4.7.10-jvms-lex-3Expected Result: PASS 0
Regression Test:
tcltest::test 4.7.10-jvms-lex-2 { Test lexing of deprecated } { empty_class T4710jl2a { /** whitespace excludes < \u0009, > \u000d * @deprecated\u0008 */ static int i; /** @deprecated\u000e */ static int j; } delete T4710j2a.java list [compile -classpath . -deprecation [saveas T4710jl2b.java { class T4710jl2b { int i = T4710jl2a.i + T4710jl2a.j; } }]] [match_err_or_warn {*depreca*}] } {PASS 0}
Test lexing of deprecatedTest Case: 4.7.10-jvms-lex-4Expected Result: PASS 0
Regression Test:
tcltest::test 4.7.10-jvms-lex-3 { Test lexing of deprecated } { empty_class T4710jl3a { /** whitespace excludes < \u001c, > \u0020 * @deprecated\u001b */ static int i; /** @deprecated\u0021 */ static int j; } delete T4710j3a.java list [compile -classpath . -deprecation [saveas T4710jl3b.java { class T4710jl3b { int i = T4710jl3a.i + T4710jl3a.j; } }]] [match_err_or_warn {*depreca*}] } {PASS 0}
Test lexing of deprecatedTest Case: 4.7.10-jvms-lex-5Expected Result: PASS 0
Regression Test:
tcltest::test 4.7.10-jvms-lex-4 { Test lexing of deprecated } { empty_class T4710jl4a { /** whitespace excludes \u00a0, \u2007, \u202f * @deprecated\u00a0 */ static int i; /** @deprecated\u2007 */ static int j; /** @deprecated\u202f */ static int k; } delete T4710j4a.java list [compile -classpath . -deprecation [saveas T4710jl4b.java { class T4710jl4b { int i = T4710jl4a.i + T4710jl4a.j + T4710jl4a.k; } }]] [match_err_or_warn {*depreca*}] } {PASS 0}
Test lexing of deprecatedTest Case: 4.7.10-jvms-lex-6Expected Result: PASS 0
Regression Test:
tcltest::test 4.7.10-jvms-lex-5 { Test lexing of deprecated } { empty_class T4710jl5a { /** only Character.isSpace() may appear before @ sign * \u000b @deprecated */ static int i; /** \u001e @deprecated */ static int j; /** \u2028 @deprecated */ static int k; } delete T4710j5a.java list [compile -classpath . -deprecation [saveas T4710jl5b.java { class T4710jl5b { int i = T4710jl5a.i + T4710jl5a.j + T4710jl5a.k; } }]] [match_err_or_warn {*depreca*}] } {PASS 0}
Test lexing of deprecatedTest Case: 4.7.10-jvms-lex-7Expected Result: WARN 1
Regression Test:
tcltest::test 4.7.10-jvms-lex-6 { Test lexing of deprecated } { empty_class T4710jl6a { /** whitespace includes \v, even though the rest of the source doesn't * @deprecated\u000b */ static int i; } delete T4710j6a.java list [compile -classpath . -deprecation [saveas T4710jl6b.java { class T4710jl6b { int i = T4710jl6a.i; } }]] [match_err_or_warn {*depreca*}] } {WARN 1}
Test lexing of deprecatedTest Case: 4.7.10-jvms-lex-8Expected Result: WARN 1
Regression Test:
tcltest::test 4.7.10-jvms-lex-7 { Test lexing of deprecated } { empty_class T4710jl7a { /** whitespace includes the ASCII separators (\u001c - \u001f), * even though the rest of the source doesn't * @deprecated\u001d */ static int i; } delete T4710j7a.java list [compile -classpath . -deprecation [saveas T4710jl7b.java { class T4710jl7b { int i = T4710jl7a.i; } }]] [match_err_or_warn {*depreca*}] } {WARN 1}
Test lexing of deprecatedTest Case: 4.7.10-jvms-lex-9Expected Result: WARN 1
Regression Test:
tcltest::test 4.7.10-jvms-lex-8 { Test lexing of deprecated } { empty_class T4710jl8a { /** whitespace includes Unicode space characters, * even though the rest of the source doesn't * @deprecated\u2002 */ static int i; } delete T4710j8a.java list [compile -classpath . -deprecation [saveas T4710jl8b.java { class T4710jl8b { int i = T4710jl8a.i; } }]] [match_err_or_warn {*depreca*}] } {WARN 1}
Test lexing of deprecatedTest Case: 4.7.10-jvms-lex-10Expected Result: WARN 1
Regression Test:
tcltest::test 4.7.10-jvms-lex-9 { Test lexing of deprecated } { empty_class T4710jl9a { /** whitespace includes Unicode line separator characters, * even though the rest of the source doesn't * @deprecated\u2028 */ static int i; } delete T4710j9a.java list [compile -classpath . -deprecation [saveas T4710jl9b.java { class T4710jl9b { int i = T4710jl9a.i; } }]] [match_err_or_warn {*depreca*}] } {WARN 1}
Test lexing of deprecatedExpected Result: WARN 1
Regression Test:
tcltest::test 4.7.10-jvms-lex-10 { Test lexing of deprecated } { empty_class T4710jl10a { /** whitespace includes Unicode paragraph separator characters, * even though the rest of the source doesn't * @deprecated\u2029 */ static int i; } delete T4710j10a.java list [compile -classpath . -deprecation [saveas T4710jl10b.java { class T4710jl10b { int i = T4710jl10a.i; } }]] [match_err_or_warn {*depreca*}] } {WARN 1}
tests/jvms/class-file-format/limitations
A class can have at most 65535 entries in the constant poolTest Case: 4.10-jvms-2Expected Result: FAIL
Regression Test:
tcltest::test 4.10-jvms-1 { A class can have at most 65535 entries in the constant pool } { set buff "class T410jvms1 \{\n" set over [expr {65555 / 5}] for {set i 0} {$i < $over} {incr i} { append buff "\tString m${i}(int i) \{\n" append buff "\t\treturn \"m${i}-1\" + i + \"m${i}-2\"\n" append buff "\t\t + i + \"m${i}-3\" + i + \"m${i}-4\"\n" append buff "\t\t + i + \"m${i}-5\";\n" append buff "\t\}\n" } append buff "\}\n" compile [saveas T410jvms1.java $buff] } {FAIL}
A single method can safely have no more than 65534 byte codes, because of the limitations of exception handlers. However, the hard limit is 65535 bytesTest Case: 4.10-jvms-3Expected Result: FAIL
Regression Test:
tcltest::test 4.10-jvms-2 { A single method can safely have no more than 65534 byte codes, because of the limitations of exception handlers. However, the hard limit is 65535 bytes } { set buff "" append buff "class T410jvms2 \{\n" append buff "\tpublic static void main(String\[\] args) \{\n" append buff "\t\tint i = 0;\n" set over 21900 for {set i 0} {$i < $over} {incr i} { append buff "\t\ti++;\n" } append buff "\t\}\n" append buff "\}\n" compile [saveas T410jvms2.java $buff] } {FAIL}
A single class can have at most 65535 member variables, although more than that can be inherited. Note that this test overflows the constant pool firstTest Case: 4.10-jvms-4Expected Result: FAIL
Regression Test:
tcltest::test 4.10-jvms-3 { A single class can have at most 65535 member variables, although more than that can be inherited. Note that this test overflows the constant pool first } { set buff "" append buff "class T410jvms3 \{\n" set over 65536 for {set i 0} {$i < $over} {incr i} { append buff "\tint v${i};\n" } append buff "\}\n" compile [saveas T410jvms3.java $buff] } {FAIL}
A single class can have at most 65535 member variables, although more than that can be inheritedTest Case: 4.10-jvms-5Expected Result: PASS
Regression Test:
tcltest::test 4.10-jvms-4 { A single class can have at most 65535 member variables, although more than that can be inherited } { set buff "" set interfaces 7 set over 10000 for {set j 0} {$j < $interfaces} {incr j} { append buff "interface T410jvms4_${j} \{\n" for {set i 0} {$i < $over} {incr i} { append buff "\tint v${j}_${i} = 1;\n" } append buff "\}\n" } append buff "class T410jvms4 implements T410jvms4_0" for {set j 1} {$j < $interfaces} {incr j} { append buff ",\n\tT410jvms4_${j}" } append buff " \{\n\t\tint v = 1;\n\}\n" compile [saveas T410jvms4.java $buff] } {PASS}
A single class can have at most 65535 methods, although more than that can be inherited. Note that this test overflows the constant pool firstTest Case: 4.10-jvms-6Expected Result: FAIL
Regression Test:
tcltest::test 4.10-jvms-5 { A single class can have at most 65535 methods, although more than that can be inherited. Note that this test overflows the constant pool first } { set buff "" append buff "class T410jvms5 \{\n" set over 65536 for {set i 0} {$i < $over} {incr i} { append buff "\tvoid m${i}() {}\n" } append buff "\}\n" compile [saveas T410jvms5.java $buff] } {FAIL}
A single class can have at most 65535 member variables, although more than that can be inheritedTest Case: 4.10-jvms-7Expected Result: PASS
Regression Test:
tcltest::test 4.10-jvms-6 { A single class can have at most 65535 member variables, although more than that can be inherited } { set buff "" set interfaces 7 set over 10000 for {set j 0} {$j < $interfaces} {incr j} { append buff "interface T410jvms6_${j} \{\n" for {set i 0} {$i < $over} {incr i} { append buff "\tint m${j}_${i}();\n" } append buff "\}\n" } append buff "abstract class T410jvms6 implements T410jvms6_0" for {set j 1} {$j < $interfaces} {incr j} { append buff ",\n\tT410jvms6_${j}" } append buff " \{\n\t\tvoid m() \{\}\n\}\n" compile [saveas T410jvms6.java $buff] } {PASS}
A method can have at most 255 parametersTest Case: 4.10-jvms-8Expected Result: FAIL
Regression Test:
tcltest::test 4.10-jvms-7 { A method can have at most 255 parameters } { set buff "" append buff "class T410jvms7 \{\n" append buff "\tpublic static void main(String\[\] args) \{\n" append buff "\t\tfoo(" set over 255 for {set i 0} {$i < $over} {incr i} { append buff "${i}, " } append buff "255); \n" append buff "\t\}\n" append buff "\tstatic void foo(" for {set i 0} {$i < $over} {incr i} { append buff "int p${i}, " } append buff "int p255)" append buff "\{\n" append buff "\t\}\n" append buff "\}\n" compile [saveas T410jvms7.java $buff] } {FAIL}
A method can have at most 255 parameters. This limit is reduced to 127 doubles or longs in an instance methodTest Case: 4.10-jvms-9Expected Result: FAIL
Regression Test:
tcltest::test 4.10-jvms-8 { A method can have at most 255 parameters. This limit is reduced to 127 doubles or longs in an instance method } { set buff "" append buff "class T410jvms8 \{\n" append buff "\tpublic static void main(String\[\] args) \{\n" append buff "\t\tnew T410jvms8().foo(" set over 127 for {set i 0} {$i < $over} {incr i} { append buff "${i}, " } append buff "127); \n" append buff "\t\}\n" append buff "\tvoid foo(" for {set i 0} {$i < $over} {incr i} { append buff "long p${i}, " } append buff "int p127)" append buff "\{\n" append buff "\t\}\n" append buff "\}\n" compile [saveas T410jvms8.java $buff] } {FAIL}
A method can have at most 255 parameters. This limit is reduced to 127 doubles or longs in interface methodsTest Case: 4.10-jvms-10Expected Result: FAIL
Regression Test:
tcltest::test 4.10-jvms-9 { A method can have at most 255 parameters. This limit is reduced to 127 doubles or longs in interface methods } { set buff "" append buff "interface T410jvms9 \{\n" set over 127 append buff "\tvoid foo(" for {set i 0} {$i < $over} {incr i} { append buff "double p${i}, " } append buff "int p127);\n" append buff "\}\n" compile [saveas T410jvms9.java $buff] } {FAIL}
The number of dimensions in an array is limited to 255.Test Case: 4.10-jvms-11Expected Result: FAIL
Regression Test:
tcltest::test 4.10-jvms-10 { The number of dimensions in an array is limited to 255. } { set buff "" append buff "class T410jvms10 \{\n" append buff "\tpublic static void main(String\[\] args) \{\n" append buff "\t\tObject intArray = new int" set over 256 for {set i 0} {$i < $over} {incr i} { append buff "\[\]" } append buff "{null};\n" append buff "\t\}\n" append buff "\}\n" compile [saveas T410jvms10.java $buff] } {FAIL}
The number of dimensions in an array is limited to 255.Test Case: 4.10-jvms-12Expected Result: FAIL
Regression Test:
tcltest::test 4.10-jvms-11 { The number of dimensions in an array is limited to 255. } { set buff "" append buff "class T410jvms11 \{\n" append buff "\tpublic static void main(String\[\] args) \{\n" append buff "\t\tObject o = null;\n" append buff "\t\tboolean b = o instanceof int" set over 256 for {set i 0} {$i < $over} {incr i} { append buff "\[\]" } append buff ";\n\t\}\n" append buff "\}\n" compile [saveas T410jvms11.java $buff] } {FAIL}
The number of dimensions in an array is limited to 255.Test Case: 4.10-jvms-13Expected Result: FAIL
Regression Test:
tcltest::test 4.10-jvms-12 { The number of dimensions in an array is limited to 255. } { set buff "" append buff "class T410jvms12 \{\n" append buff "\tpublic static void main(String\[\] args) \{\n" append buff "\t\tClass c = int" set over 256 for {set i 0} {$i < $over} {incr i} { append buff "\[\]" } append buff ".class;\n\t\}\n" append buff "\}\n" compile [saveas T410jvms12.java $buff] } {FAIL}
The number of dimensions in an array is limited to 255.Test Case: 4.10-jvms-14Expected Result: FAIL
Regression Test:
tcltest::test 4.10-jvms-13 { The number of dimensions in an array is limited to 255. } { set buff "" append buff "class T410jvms13 \{\n" append buff "\tpublic static void main(String\[\] args) \{\n" append buff "\t\tSystem.out.println(i);\n" append buff "\t\}" append buff "\tstatic int" set over 128 for {set i 0} {$i < $over} {incr i} { append buff "\[\]" } append buff " i" for {set i 0} {$i < $over} {incr i} { append buff "\[\]" } append buff ";\n\}\n" compile [saveas T410jvms13.java $buff] } {FAIL}
The number of dimensions in an array is limited to 255.Test Case: 4.10-jvms-15Expected Result: FAIL
Regression Test:
tcltest::test 4.10-jvms-14 { The number of dimensions in an array is limited to 255. } { set buff "" append buff "class T410jvms14 \{\n" append buff "\tpublic static void main(String\[\] args) \{\n" append buff "\t\tSystem.out.println(m());\n" append buff "\t\}" append buff "\tstatic int" set over 128 for {set i 0} {$i < $over} {incr i} { append buff "\[\]" } append buff " m()" for {set i 0} {$i < $over} {incr i} { append buff "\[\]" } append buff "\{ return null; \}\n\}\n" compile [saveas T410jvms14.java $buff] } {FAIL}
The number of dimensions in an array is limited to 255.Test Case: 4.10-jvms-16Expected Result: FAIL
Regression Test:
tcltest::test 4.10-jvms-15 { The number of dimensions in an array is limited to 255. } { set buff "" append buff "class T410jvms15 \{\n" append buff "\tpublic static void main(String\[\] args) \{\n" append buff "\t\tSystem.out.println(m(null));\n" append buff "\t\}" append buff "\tstatic int m(int" set over 128 for {set i 0} {$i < $over} {incr i} { append buff "\[\]" } append buff " i" for {set i 0} {$i < $over} {incr i} { append buff "\[\]" } append buff ")\{ return 0; \}\n\}\n" compile [saveas T410jvms15.java $buff] } {FAIL}
The number of dimensions in an array is limited to 255.Test Case: 4.10-jvms-17Expected Result: FAIL
Regression Test:
tcltest::test 4.10-jvms-16 { The number of dimensions in an array is limited to 255. } { set buff "" append buff "class T410jvms16 \{\n" append buff "\tpublic static void main(String\[\] args) \{\n" append buff "\t\tint" set over 128 for {set i 0} {$i < $over} {incr i} { append buff "\[\]" } append buff " i" for {set i 0} {$i < $over} {incr i} { append buff "\[\]" } append buff "; \}\n\}\n" compile [saveas T410jvms16.java $buff] } {FAIL}
The number of dimensions in an array is limited to 255.Test Case: 4.10-jvms-18Expected Result: FAIL
Regression Test:
tcltest::test 4.10-jvms-17 { The number of dimensions in an array is limited to 255. } { set buff "" append buff "class T410jvms17 \{\n" append buff "\tpublic static void main(String\[\] args) \{\n" append buff "\t\tObject o = null;\n" append buff "\t\to = (int" set over 256 for {set i 0} {$i < $over} {incr i} { append buff "\[\]" } append buff ") null; \}\n\}\n" compile [saveas T410jvms17.java $buff] } {FAIL}
Strings that occupy more than 65535 UTF8 bytes do not fit in the constant poolTest Case: 4.10-jvms-19Expected Result: FAIL
Regression Test:
tcltest::test 4.10-jvms-18 { Strings that occupy more than 65535 UTF8 bytes do not fit in the constant pool } { set buff "" append buff "class T410jvms18 \{\n" append buff "\tint a" set over 21845 for {set i 0} {$i < $over} {incr i} { append buff "\\ufffb" } append buff " = 1;\n" append buff "\tpublic static void main(String\[\] args) \{\}\n\}\n" compile [saveas T410jvms18.java $buff] } {FAIL}
Strings that occupy more than 0xffff UTF8 bytes cannot be constant, according to JVMS.Test Case: 4.10-jvms-20Expected Result: FAIL
Regression Test:
tcltest::test 4.10-jvms-19 { Strings that occupy more than 0xffff UTF8 bytes cannot be constant, according to JVMS. } { empty_class T410jvms19 { 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; // sffff is still constant! static final String sffff = s8000 + s4000 + s2000 + s1000 + s0800 + s0400 + s0200 + s0100 + s0080 + s0040 + s0020 + s0010 + s0008 + s0004 + s0002 + "b"; static final String toobig = sffff + "c"; // can't be constant void m(int i) { switch (i) { case 0: case (toobig == "a" ? 0 : 1): // using non-constant case label } } } } {FAIL}
Strings that occupy more than 65535 UTF8 bytes do not fit in the constant poolTest Case: 4.10-jvms-21Expected Result: FAIL
Regression Test:
tcltest::test 4.10-jvms-20 { Strings that occupy more than 65535 UTF8 bytes do not fit in the constant pool } { set buff "" # 12 bytes set huge "abcdefghijkl" # 48 bytes set huge "${huge}${huge}${huge}${huge}" # 192 bytes set huge "${huge}${huge}${huge}${huge}" # We have to be careful of filename length limits, so stop here set over 180 for {set i 0} {$i < $over} {incr i} { append buff "\class ${huge}${i} \{\}\n" } append buff "class T410jvms20 \{\n" append buff "\tstatic void foo(${huge}0 p0" for {set i 1} {$i < $over} {incr i} { append buff ",\n\t\t ${huge}${i} p${i}" for {set j 0} {$j < $over} {incr j} { append buff "\[\]" } } append buff ") \{\}\n" append buff "\tpublic static void main(String\[\] args) \{\n" append buff "\t\tfoo(null" for {set i 1} {$i < $over} {incr i} { append buff ", null" } append buff ");\n\t\}\n\}\n" compile [saveas T410jvms20.java $buff] } {FAIL}
A single method, includingTest Case: 4.10-jvms-22, can safely have no more than 65534 byte codes, because of the limitations of exception handlers. However, the hard limit is 65535 bytes Expected Result: FAIL
Regression Test:
tcltest::test 4.10-jvms-21 { A single method, including, can safely have no more than 65534 byte codes, because of the limitations of exception handlers. However, the hard limit is 65535 bytes } { set buff "" append buff "class T410jvms21 \{\n" append buff "\tpublic static void main(String\[\] args) {}\n" append buff "\tstatic double\[\] d = \{\n" set over 30000 for {set i 0} {$i < $over} {incr i} { append buff "1, " } append buff "\n\t\};\n\}\n" compile [saveas T410jvms21.java $buff] } {FAIL}
A single method, including instance initializers (whether inlined into constructors or not), can safely have no more than 65534 byte codes, because of the limitations of exception handlers. However, the hard limit is 65535 bytesTest Case: 4.10-jvms-23Expected Result: FAIL
Regression Test:
tcltest::test 4.10-jvms-22 { A single method, including instance initializers (whether inlined into constructors or not), can safely have no more than 65534 byte codes, because of the limitations of exception handlers. However, the hard limit is 65535 bytes } { set buff "" append buff "class T410jvms22 \{\n" append buff "\tpublic static void main(String\[\] args) {}\n" append buff "\tdouble\[\] d = \{\n" set over 30000 for {set i 0} {$i < $over} {incr i} { append buff "1, " } append buff "\n\t\};\n\}\n" compile [saveas T410jvms22.java $buff] } {FAIL}
A single method can safely have no more than 65534 byte codes, because of the limitations of exception handlers. However, the hard limit is 65535 bytesExpected Result: FAIL
Regression Test:
tcltest::test 4.10-jvms-23 { A single method can safely have no more than 65534 byte codes, because of the limitations of exception handlers. However, the hard limit is 65535 bytes } { set buff "" append buff "class T410jvms23 \{\n" append buff "\tpublic static void main(String\[\] args) \{\n" append buff "\t\tif (args.length > 0) \{\n" append buff "\t\t\tdouble\[\] d = \{\n" set over 30000 for {set i 0} {$i < $over} {incr i} { append buff "1, " } append buff "\n\t\t\t\};\n\t\t\}\n\t\}\n\}\n" compile [saveas T410jvms23.java $buff] } {FAIL}