# Jacks Tests

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

### Section Index:

- jls tests
- runtime tests
- non-jls tests
- gcj tests
- jikes tests
- jvms tests
- all tests

### jls tests

### 3.2

Directory : `tests/jls/lexical-structure/lexical-translations`

- 3.2-invalid-1
- 3.2-invalid-2
- 3.2-invalid-3
- 3.2-invalid-4
- 3.2-invalid-5
- 3.2-invalid-6
- 3.2-invalid-7
- 3.2-invalid-8
- 3.2-invalid-9
- 3.2-invalid-10
- 3.2-invalid-11
- 3.2-invalid-12
- 3.2-invalid-13
- 3.2-invalid-14
- 3.2-invalid-15
- 3.2-invalid-16
- 3.2-invalid-17
- 3.2-invalid-18
- 3.2-invalid-19
- 3.2-invalid-20
- 3.2-invalid-21
- 3.2-invalid-22
- 3.2-invalid-23
- 3.2-invalid-24
- 3.2-invalid-25
- 3.2-valid-1
- 3.2-valid-2
- 3.2-valid-3

Test Case: 3.2-invalid-1

> The parser must consume the largest token, even if another interpretation is valid

> Expected 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}

Test Case: 3.2-invalid-2

> ensure that unicode escapes are processed before tokenization is done

> Expected 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}

Test Case: 3.2-invalid-3

> The parser must consume the largest token, even if another interpretation is valid

> Expected 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}

Test Case: 3.2-invalid-4

> The parser must consume the largest token, even if another interpretation is valid

> Expected 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}

Test Case: 3.2-invalid-5

> Comments, as tokens, separate other tokens

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.2-invalid-5 { Comments, as tokens, separate other tokens } {

>         empty_main T32i5 {
>             int i = 1/**/0;
>         }

>     } {FAIL}

Test Case: 3.2-invalid-6

> Comments, as tokens, separate other tokens

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.2-invalid-6 { Comments, as tokens, separate other tokens } {

>         empty_main T32i6 {
>             i/**/nt i = 10;
>         }

>     } {FAIL}

Test Case: 3.2-invalid-7

> Comments, as tokens, separate other tokens

> Expected 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}

Test Case: 3.2-invalid-8

> An unterminated \ is illegal

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.2-invalid-8 { An unterminated \ is illegal } {

>         compile [saveas T32i8.java "class T32i8{} \\"]

>     } {FAIL}

Test Case: 3.2-invalid-9

> Even in comments, \u escapes must be legal

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.2-invalid-9 { Even in comments, \u escapes must be legal } {

>         empty_main T32i9 {
>     	/* \udefg */
>         }

>     } {FAIL}

Test Case: 3.2-invalid-10

> Whitespace, as tokens, separate other tokens

> Expected 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}

Test Case: 3.2-invalid-11

> Whitespace, as tokens, separate other tokens

> Expected 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}

Test Case: 3.2-invalid-12

> Whitespace, as tokens, separate other tokens

> Expected 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}

Test Case: 3.2-invalid-13

> Whitespace, as tokens, separate other tokens

> Expected 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}

Test Case: 3.2-invalid-14

> Whitespace, as tokens, separate other tokens

> Expected 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}

Test Case: 3.2-invalid-15

> Whitespace, as tokens, separate other tokens

> Expected 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}

Test Case: 3.2-invalid-16

> Whitespace, as tokens, separate other tokens

> Expected 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}

Test Case: 3.2-invalid-17

> Whitespace, as tokens, separate other tokens

> Expected 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}

Test Case: 3.2-invalid-18

> Whitespace, as tokens, separate other tokens

> Expected 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}

Test Case: 3.2-invalid-19

> Whitespace, as tokens, separate other tokens

> Expected 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}

Test Case: 3.2-invalid-20

> Whitespace, as tokens, separate other tokens

> Expected 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}

Test Case: 3.2-invalid-21

> Whitespace, as tokens, separate other tokens

> Expected 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}

Test Case: 3.2-invalid-22

> Whitespace, as tokens, separate other tokens

> Expected 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}

Test Case: 3.2-invalid-23

> Whitespace, as tokens, separate other tokens

> Expected 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}

Test Case: 3.2-invalid-24

> Whitespace, as tokens, separate other tokens

> Expected 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}

Test Case: 3.2-invalid-25

> Whitespace, as tokens, separate other tokens

> Expected 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}

Test Case: 3.2-valid-1

> Compiler should recognize difference in tokens

> Expected 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}

Test Case: 3.2-valid-2

> The parser must consume the largest token, even if another interpretation is valid

> Expected 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}

Test Case: 3.2-valid-3

> The parser must consume the largest token

> Expected 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}

### 3.3

Directory : `tests/jls/lexical-structure/unicode-escapes`

- 3.3-invalid-1
- 3.3-invalid-2
- 3.3-invalid-3
- 3.3-invalid-4
- 3.3-invalid-5
- 3.3-invalid-6
- 3.3-invalid-7
- 3.3-invalid-8
- 3.3-valid-1
- 3.3-valid-2
- 3.3-valid-3
- 3.3-valid-4
- 3.3-valid-5

Test Case: 3.3-invalid-1

> A unicode sequence must have four hex digits

> Expected 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}

Test Case: 3.3-invalid-2

> A unicode sequence does not recursively form more unicode sequences

> Expected 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}

Test Case: 3.3-invalid-3

> An even number of \ never form a unicode escape

> Expected 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}

Test Case: 3.3-invalid-4

> Unicode escapes begin with 'u' only

> Expected 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 Case: 3.3-invalid-5

> Test unicode escape cut short by file end

> Expected 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 Case: 3.3-invalid-6

> Test unicode escape cut short by file end

> Expected 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 Case: 3.3-invalid-7

> Test unicode escape cut short by file end

> Expected 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 Case: 3.3-invalid-8

> Test unicode escape cut short by file end

> Expected 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}

Test Case: 3.3-valid-1

> Multiple u's are allowed in unicode escapes

> Expected 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}

Test Case: 3.3-valid-2

> Unicode sequences are case insensitive

> Expected 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}

Test Case: 3.3-valid-3

> Check that \u replacement matches single quoted char

> Expected 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}

Test Case: 3.3-valid-4

> Check \u replacements in the ASCII range

> Expected 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}

Test Case: 3.3-valid-5

> 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}

### 3.4

Directory : `tests/jls/lexical-structure/line-terminators`

- 3.4-sanity-1
- 3.4-valid-1
- 3.4-valid-2
- 3.4-valid-3
- 3.4-valid-4
- 3.4-valid-5
- 3.4-valid-6
- 3.4-valid-7
- 3.4-valid-8
- 3.4-valid-9
- 3.4-valid-10
- 3.4-valid-11
- 3.4-valid-12
- 3.4-valid-13
- 3.4-valid-14
- 3.4-valid-15
- 3.4-valid-16
- 3.4-valid-17
- 3.4-valid-18
- 3.4-valid-19
- 3.4-valid-20
- 3.4-valid-21
- 3.4-valid-22
- 3.4-valid-23
- 3.4-valid-24
- 3.4-valid-25
- 3.4-valid-26
- 3.4-valid-27
- 3.4-valid-28
- 3.4-valid-29
- 3.4-valid-30
- 3.4-valid-31
- 3.4-valid-32
- 3.4-valid-33
- 3.4-valid-34
- 3.4-valid-35
- 3.4-line-number-1
- 3.4-line-number-2
- 3.4-line-number-3
- 3.4-line-number-4
- 3.4-line-number-5
- 3.4-line-number-6
- 3.4-line-number-7
- 3.4-line-number-8
- 3.4-line-number-9
- 3.4-line-number-10
- 3.4-line-number-11
- 3.4-line-number-12
- 3.4-line-number-13
- 3.4-line-number-14
- 3.4-line-number-15
- 3.4-line-number-16
- 3.4-line-number-17
- 3.4-line-number-18
- 3.4-line-number-19
- 3.4-line-number-20
- 3.4-line-number-21
- 3.4-line-number-22
- 3.4-line-number-23
- 3.4-line-number-24
- 3.4-line-number-25

Test Case: 3.4-sanity-1

> If this passes, the remaining tests are shot

> Expected 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}

Test Case: 3.4-valid-1

> CR (\r) is a LineTerminator

> Expected 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}

Test Case: 3.4-valid-2

> LF (\n) is a LineTerminator

> Expected 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}

Test Case: 3.4-valid-3

> CR (\u000d) is a LineTerminator

> Expected 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}

Test Case: 3.4-valid-4

> LF (\u000a) is a LineTerminator

> Expected 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}

Test Case: 3.4-valid-5

> CR (\u000D) is a LineTerminator

> Expected 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}

Test Case: 3.4-valid-6

> LF (\u000A) is a LineTerminator

> Expected 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}

Test Case: 3.4-valid-7

> CRLF (\r\n) is a LineTerminator

> Expected 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}

Test Case: 3.4-valid-8

> CRLF (\r\u000a) is a LineTerminator

> Expected 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}

Test Case: 3.4-valid-9

> CRLF (\u000d\n) is a LineTerminator

> Expected 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}

Test Case: 3.4-valid-10

> CRLF (\r\u000A) is a LineTerminator

> Expected 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}

Test Case: 3.4-valid-11

> CRLF (\u000D\n) is a LineTerminator

> Expected 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}

Test Case: 3.4-valid-12

> CRLF (\u000d\u000a) is a LineTerminator

> Expected 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}

Test Case: 3.4-valid-13

> CRLF (\u000d\u000A) is a LineTerminator

> Expected 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}

Test Case: 3.4-valid-14

> CRLF (\u000D\u000a) is a LineTerminator

> Expected 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}

Test Case: 3.4-valid-15

> CRLF (\u000D\u000A) is a LineTerminator

> Expected 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}

Test Case: 3.4-valid-16

> CR (\uuuuu000d) is a LineTerminator

> Expected 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}

Test Case: 3.4-valid-17

> LF (\uuuuu000a) is a LineTerminator

> Expected 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}

Test Case: 3.4-valid-18

> CR (\uuuuu000D) is a LineTerminator

> Expected 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}

Test Case: 3.4-valid-19

> LF (\uuuuu000A) is a LineTerminator

> Expected 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}

Test Case: 3.4-valid-20

> CRLF (\r\uuuuu000a) is a LineTerminator

> Expected 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}

Test Case: 3.4-valid-21

> CRLF (\uuuuu000d\n) is a LineTerminator

> Expected 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}

Test Case: 3.4-valid-22

> CRLF (\r\uuuuu000A) is a LineTerminator

> Expected 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}

Test Case: 3.4-valid-23

> CRLF (\uuuuu000D\n) is a LineTerminator

> Expected 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}

Test Case: 3.4-valid-24

> CRLF (\uuuuu000d\u000a) is a LineTerminator

> Expected 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}

Test Case: 3.4-valid-25

> CRLF (\uuuuu000d\u000A) is a LineTerminator

> Expected 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}

Test Case: 3.4-valid-26

> CRLF (\uuuuu000D\u000a) is a LineTerminator

> Expected 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}

Test Case: 3.4-valid-27

> CRLF (\uuuuu000D\u000A) is a LineTerminator

> Expected 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}

Test Case: 3.4-valid-28

> CRLF (\u000d\uuuuu000a) is a LineTerminator

> Expected 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}

Test Case: 3.4-valid-29

> CRLF (\u000d\uuuuu000A) is a LineTerminator

> Expected 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}

Test Case: 3.4-valid-30

> CRLF (\u000D\uuuuu000a) is a LineTerminator

> Expected 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}

Test Case: 3.4-valid-31

> CRLF (\u000D\uuuuu000A) is a LineTerminator

> Expected 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}

Test Case: 3.4-valid-32

> CRLF (\uuuuu000d\uuuuu000a) is a LineTerminator

> Expected 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}

Test Case: 3.4-valid-33

> CRLF (\uuuuu000d\uuuuu000A) is a LineTerminator

> Expected 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}

Test Case: 3.4-valid-34

> CRLF (\uuuuu000D\uuuuu000a) is a LineTerminator

> Expected 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}

Test Case: 3.4-valid-35

> CRLF (\uuuuu000D\uuuuu000A) is a LineTerminator

> Expected 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}

Test Case: 3.4-line-number-1

> CR (\r) is a LineTerminator

> Expected 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}

Test Case: 3.4-line-number-2

> LF (\n) is a LineTerminator

> Expected 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}

Test Case: 3.4-line-number-3

> CR (\u000d) is a LineTerminator

> Expected 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}

Test Case: 3.4-line-number-4

> LF (\u000a) is a LineTerminator

> Expected 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}

Test Case: 3.4-line-number-5

> CR (\u000D) is a LineTerminator

> Expected 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}

Test Case: 3.4-line-number-6

> LF (\u000A) is a LineTerminator

> Expected 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}

Test Case: 3.4-line-number-7

> CRLF (\r\n) is a LineTerminator

> Expected 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}

Test Case: 3.4-line-number-8

> CRLF (\r\u000a) is a LineTerminator

> Expected 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}

Test Case: 3.4-line-number-9

> CRLF (\u000d\n) is a LineTerminator

> Expected 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}

Test Case: 3.4-line-number-10

> CRLF (\r\u000A) is a LineTerminator

> Expected 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}

Test Case: 3.4-line-number-11

> CRLF (\u000D\n) is a LineTerminator

> Expected 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}

Test Case: 3.4-line-number-12

> CRLF (\u000d\u000a) is a LineTerminator

> Expected 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}

Test Case: 3.4-line-number-13

> CRLF (\u000d\u000A) is a LineTerminator

> Expected 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}

Test Case: 3.4-line-number-14

> CRLF (\u000D\u000a) is a LineTerminator

> Expected 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}

Test Case: 3.4-line-number-15

> CRLF (\u000D\u000A) is a LineTerminator

> Expected 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}

Test Case: 3.4-line-number-16

> CRCR (\r\r) is two LineTerminators

> Expected 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}

Test Case: 3.4-line-number-17

> CRCR (\u000d\u000d) is two LineTerminators

> Expected 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}

Test Case: 3.4-line-number-18

> LFLF (\n\n) is two LineTerminators

> Expected 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}

Test Case: 3.4-line-number-19

> LFLF (\u000a\u000a) is two LineTerminators

> Expected 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}

Test Case: 3.4-line-number-20

> LFCR (\n\r) is two LineTerminators

> Expected 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}

Test Case: 3.4-line-number-21

> LFCR (\u000a\u000d) is two LineTerminators

> Expected 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}

Test Case: 3.4-line-number-22

> CRLFCRLF (\r\n\r\n) is two LineTerminators

> Expected 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}

Test Case: 3.4-line-number-23

> CRLFCRLF (\u000d\u000a\u000d\u000a) is two LineTerminators

> Expected 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}

Test Case: 3.4-line-number-24

> CRCRLFLF (\r\r\n\n) is three LineTerminators

> Expected 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}

Test Case: 3.4-line-number-25

> CRCRLFLF (\u000d\u000d\u000a\u000a) is three LineTerminators

> Expected 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}

### 3.5

Directory : `tests/jls/lexical-structure/input-elements-and-tokens`

- 3.5-1
- 3.5-2
- 3.5-3
- 3.5-4
- 3.5-5
- 3.5-6
- 3.5-7
- 3.5-8
- 3.5-9
- 3.5-10
- 3.5-11
- 3.5-12
- 3.5-13
- 3.5-14
- 3.5-15
- 3.5-16
- 3.5-17

Test Case: 3.5-1

> The input sequence CRCR (0x0d0d) should be treated as two line terminators with an empty collection of input elements between them.

> Expected 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}

Test Case: 3.5-2

> The input sequence LFLF (0x0a0a) should be treated as two line terminators with an empty collection of input elements between them.

> Expected 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}

Test Case: 3.5-3

> The input sequence LFCR (0x0a0d) should be treated as two line terminators with an empty collection of input elements between them.

> Expected 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}

Test Case: 3.5-4

> The input sequence CRLFCRLF (0x0d0a0d0a) should be treated as two line terminators with an empty collection of input elements between them.

> Expected 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}

Test Case: 3.5-5

> The input sequence CRCRLF (0x0d0d0a) should be treated as two line terminators with an empty collection of input elements between them.

> Expected 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}

Test Case: 3.5-6

> The input sequence LFCRLF (0x0a0d0a) should be treated as two line terminators with an empty collection of input elements between them.

> Expected 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}

Test Case: 3.5-7

> The input sequence CRLFCR (0x0d0a0d) should be treated as two line terminators with an empty collection of input elements between them.

> Expected 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}

Test Case: 3.5-8

> The input sequence CRLFLF (0x0d0a0a) should be treated as two line terminators with an empty collection of input elements between them.

> Expected 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}

Test Case: 3.5-9

> The ASCII SUB character (0x1a) should be ignored if it is the last character in the escaped stream.

> Expected 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}

Test Case: 3.5-10

> The ASCII SUB character (0x1a) should be ignored if it is the last character in the escaped stream.

> Expected 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}

Test Case: 3.5-11

> The ASCII SUB character (0x1a) should be ignored if it is the last character in the escaped stream.

> Expected 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}

Test Case: 3.5-12

> The ASCII SUB character (0x1a) may not be duplicated as the last ignored character in the stream.

> Expected 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}

Test Case: 3.5-13

> The ASCII SUB character (0x1a) may not be duplicated as the last ignored character in the stream.

> Expected 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}

Test Case: 3.5-14

> The ASCII SUB character (0x1a) may not be duplicated as the last ignored character in the stream.

> Expected 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}

Test Case: 3.5-15

> The ASCII SUB character (0x1a) may not be duplicated as the last ignored character in the stream.

> Expected 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}

Test Case: 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)

> Expected 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}

Test Case: 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)

> 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}

### 3.6

Directory : `tests/jls/lexical-structure/white-space`

- 3.6-invalid-1
- 3.6-invalid-2
- 3.6-invalid-3
- 3.6-invalid-4
- 3.6-invalid-5
- 3.6-invalid-6
- 3.6-invalid-7
- 3.6-invalid-8
- 3.6-invalid-9
- 3.6-invalid-10
- 3.6-invalid-11
- 3.6-invalid-12
- 3.6-invalid-13
- 3.6-invalid-14
- 3.6-valid-1
- 3.6-valid-2
- 3.6-valid-3
- 3.6-valid-4
- 3.6-valid-5
- 3.6-valid-6
- 3.6-valid-7
- 3.6-valid-8
- 3.6-valid-9
- 3.6-valid-10
- 3.6-valid-11
- 3.6-valid-12

Test Case: 3.6-invalid-1

> Vertical tab (Ctrl-K) '\v' is not whitespace

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.6-invalid-1 { Vertical tab (Ctrl-K) '\v' is not whitespace } {

>         whitespace T36i1 \v

>     } {FAIL}

Test Case: 3.6-invalid-2

> Vertical tab (Ctrl-K) '\u000b' is not whitespace

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.6-invalid-2 { Vertical tab (Ctrl-K) '\u000b' is not whitespace } {

>         whitespace T36i2 {\u000b}

>     } {FAIL}

Test Case: 3.6-invalid-3

> Backspace (Ctrl-H) '\b' is not whitespace

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.6-invalid-3 { Backspace (Ctrl-H) '\b' is not whitespace } {

>         whitespace T36i3 \b

>     } {FAIL}

Test Case: 3.6-invalid-4

> Backspace (Ctrl-H) '\u0008' is not whitespace

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.6-invalid-4 { Backspace (Ctrl-H) '\u0008' is not whitespace } {

>         whitespace T36i4 {\u0008}

>     } {FAIL}

Test Case: 3.6-invalid-5

> Alert (Ctrl-G) '\a' is not whitespace

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.6-invalid-5 { Alert (Ctrl-G) '\a' is not whitespace } {

>         whitespace T36i5 \a

>     } {FAIL}

Test Case: 3.6-invalid-6

> Alert (Ctrl-G) '\u0007' is not whitespace

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.6-invalid-6 { Alert (Ctrl-G) '\u0007' is not whitespace } {

>         whitespace T36i6 {\u0007}

>     } {FAIL}

Test Case: 3.6-invalid-7

> Null '\0' is not whitespace

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.6-invalid-7 { Null '\0' is not whitespace } {

>         whitespace T36i7 \0

>     } {FAIL}

Test Case: 3.6-invalid-8

> Null '\u0000' is not whitespace

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.6-invalid-8 { Null '\u0000' is not whitespace } {

>         whitespace T36i8 {\u0000}

>     } {FAIL}

Test Case: 3.6-invalid-9

> Sub (Ctrl-Z) '\u001a' is not whitespace

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.6-invalid-9 { Sub (Ctrl-Z) '\u001a' is not whitespace } {

>         whitespace T36i9 {\u001a}

>     } {FAIL}

Test Case: 3.6-invalid-10

> Ascii separators '\u001c'-'\u001f' are not whitespace

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.6-invalid-10 { Ascii separators '\u001c'-'\u001f' are not
>             whitespace } {

>         whitespace T36i10 {\u001c}

>     } {FAIL}

Test Case: 3.6-invalid-11

> Unicode whitespace is not always Java whitespace

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.6-invalid-11 { Unicode whitespace is not always Java
>             whitespace } {

>         whitespace T36i11 {\u00a1}

>     } {FAIL}

Test Case: 3.6-invalid-12

> Unicode whitespace is not always Java whitespace

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.6-invalid-12 { Unicode whitespace is not always Java
>             whitespace } {

>         whitespace T36i12 {\u2008}

>     } {FAIL}

Test Case: 3.6-invalid-13

> Unicode line separators are not whitespace

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.6-invalid-13 { Unicode line separators are not whitespace } {

>         whitespace T36i13 {\u2028}

>     } {FAIL}

Test Case: 3.6-invalid-14

> Unicode paragraph separators are not whitespace

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.6-invalid-14 { Unicode paragraph separators are not
>             whitespace } {

>         whitespace T36i14 {\u2029}

>     } {FAIL}

Test Case: 3.6-valid-1

> Linefeed (Ctrl-J) '\n' is whitespace

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.6-valid-1 { Linefeed (Ctrl-J) '\n' is whitespace } {

>         whitespace T36v1 \n

>     } {PASS}

Test Case: 3.6-valid-2

> Linefeed (Ctrl-J) '\u000a' is whitespace

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.6-valid-2 { Linefeed (Ctrl-J) '\u000a' is whitespace } {

>         whitespace T36v2 {\u000a}

>     } {PASS}

Test Case: 3.6-valid-3

> Carriage Return (Ctrl-M) '\r' is whitespace

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.6-valid-3 { Carriage Return (Ctrl-M) '\r' is whitespace } {

>         whitespace T36v3 \r

>     } {PASS}

Test Case: 3.6-valid-4

> Carriage Return (Ctrl-M) '\u000d' is whitespace

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.6-valid-4 { Carriage Return (Ctrl-M) '\u000d' is whitespace } {

>         whitespace T36v4 {\u000d}

>     } {PASS}

Test Case: 3.6-valid-5

> CR/LF '\r\n' is whitespace

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.6-valid-5 { CR/LF '\r\n' is whitespace } {

>         whitespace T36v5 \r\n

>     } {PASS}

Test Case: 3.6-valid-6

> CR/LF '\u000d\u000a' is whitespace

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.6-valid-6 { CR/LF '\u000d\u000a' is whitespace } {

>         whitespace T36v6 {\u000d\u000a}

>     } {PASS}

Test Case: 3.6-valid-7

> Space ' ' is whitespace

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.6-valid-7 { Space ' ' is whitespace } {

>         whitespace T36v7 " "

>     } {PASS}

Test Case: 3.6-valid-8

> Space '\u0020' is whitespace

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.6-valid-8 { Space '\u0020' is whitespace } {

>         whitespace T36v8 {\u0020}

>     } {PASS}

Test Case: 3.6-valid-9

> Tab (Ctrl-I) '\t' is whitespace

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.6-valid-9 { Tab (Ctrl-I) '\t' is whitespace } {

>         whitespace T36v9 \t

>     } {PASS}

Test Case: 3.6-valid-10

> Tab (Ctrl-I) '\u0009' is whitespace

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.6-valid-10 { Tab (Ctrl-I) '\u0009' is whitespace } {

>         whitespace T36v10 {\u0009}

>     } {PASS}

Test Case: 3.6-valid-11

> Form Feed (Ctrl-L) '\f' is whitespace

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.6-valid-11 { Form Feed (Ctrl-L) '\f' is whitespace } {

>         whitespace T36v11 \f

>     } {PASS}

Test Case: 3.6-valid-12

> Form Feed (Ctrl-L) '\u000c' is whitespace

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.6-valid-12 { Form Feed (Ctrl-L) '\u000c' is whitespace } {

>         whitespace T36v12 {\u000c}

>     } {PASS}

### 3.7

Directory : `tests/jls/lexical-structure/comments`

- 3.7-1
- 3.7-2
- 3.7-3
- 3.7-4
- 3.7-5
- 3.7-6
- 3.7-7
- 3.7-8
- 3.7-9
- 3.7-10
- 3.7-11
- 3.7-12
- 3.7-13
- 3.7-14
- 3.7-15
- 3.7-16
- 3.7-17
- 3.7-18
- 3.7-19
- 3.7-20
- 3.7-21
- 3.7-22
- 3.7-23
- 3.7-24
- 3.7-25
- 3.7-26
- 3.7-27
- 3.7-28
- 3.7-29
- 3.7-30
- 3.7-31
- 3.7-32
- 3.7-33
- 3.7-34
- 3.7-35
- 3.7-36
- 3.7-37
- 3.7-38
- 3.7-39
- 3.7-line-number-1
- 3.7-line-number-2
- 3.7-line-number-3
- 3.7-line-number-4
- 3.7-line-number-5
- 3.7-line-number-6
- 3.7-line-number-7
- 3.7-line-number-8
- 3.7-line-number-9
- 3.7-line-number-10
- 3.7-line-number-11
- 3.7-line-number-12
- 3.7-line-number-13
- 3.7-line-number-14

Test Case: 3.7-1

> /* anything */ is a comment

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.7-1 { /* anything */ is a comment } {

>         compile [saveas T371.java "class T371 {/* / * // * / exit */}"]

>     } {PASS}

Test Case: 3.7-2

> /* */ comment can span multiple lines

> Expected 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}

Test Case: 3.7-3

> // comment inside /* */ comment is ignored

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.7-3 { // comment inside /* */ comment is ignored } {

>         compile [saveas T373.java "class T373 {/* hello\n // */}"]

>     } {PASS}

Test Case: 3.7-4

> // comment inside // comment is ignored

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.7-4 { // comment inside // comment is ignored } {

>         compile [saveas T374.java "class T374 {// //\n}"]

>     } {PASS}

Test Case: 3.7-5

> /* */ comment inside // comment is ignored

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.7-5 { /* */ comment inside // comment is ignored } {

>         compile [saveas T375.java "class T375 {// /*\n//*/\n}"]

>     } {PASS}

Test Case: 3.7-6

> /* or // inside /* */ comment is ignored

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.7-6 { /* or // inside /* */ comment is ignored } {

>         compile [saveas T376.java "class T376 {/* comment /* // /* */}"]

>     } {PASS}

Test Case: 3.7-7

> /* or // inside /** */ comment is ignored

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.7-7 { /* or // inside /** */ comment is ignored } {

>         compile [saveas T377.java "class T377 {/** comment /* // /* */}"]

>     } {PASS}

Test Case: 3.7-8

> /**/ is a documentaiton comment

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.7-8 { /**/ is a documentaiton comment } {

>         compile [saveas T378.java "class T378 {/**/}"]

>     } {PASS}

Test Case: 3.7-9

> // comment separates tokens

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.7-9 { // comment separates tokens } {

>         compile [saveas T379.java "class T379 {int//\ni;}"]

>     } {PASS}

Test Case: 3.7-10

> /**/ comment separates tokens

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.7-10 { /**/ comment separates tokens } {

>         compile [saveas T3710.java "class T3710 {int/* */i;}"]

>     } {PASS}

Test Case: 3.7-11

> // comment cannot appear in literal

> Expected 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}

Test Case: 3.7-12

> /**/ comment cannot appear in literal

> Expected 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}

Test Case: 3.7-13

> // comment cannot appear in literal

> Expected 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}

Test Case: 3.7-14

> /**/ comment cannot appear in literal

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.7-14 { /**/ comment cannot appear in literal } {

>         compile [saveas T3714.java "class T3714 {char c = 'a/* */';}"]

>     } {FAIL}

Test Case: 3.7-15

> /* must have matching */

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.7-15 { /* must have matching */ } {

>         compile [saveas T3715.java "class T3715 {} /*"]

>     } {FAIL}

Test Case: 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

> Expected 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}

Test Case: 3.7-17

> /**/ comment can contain any characters, including \0, unterminated quotes

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.7-17 { /**/ comment can contain any characters, including \0,
>             unterminated quotes } {

>         empty_class T3717 "/*\0'\"*/"

>     } {PASS}

Test Case: 3.7-18

> /**/ comment can contain any characters, including \0, unterminated quotes

> Expected 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}

Test Case: 3.7-19

> // comment can contain any characters, including \0, unterminated quotes

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.7-19 { // comment can contain any characters, including \0,
>             unterminated quotes } {

>         empty_class T3719 "//\0'\""

>     } {PASS}

Test Case: 3.7-20

> // comment can contain any characters, including \0, unterminated quotes

> Expected 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}

Test Case: 3.7-21

> /**/ comment can contain any characters, including ASCII SUB

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.7-21 { /**/ comment can contain any characters, including ASCII SUB } {

>         empty_class T3721 "/*\x1a*/"

>     } {PASS}

Test Case: 3.7-22

> /**/ comment can contain any characters, including ASCII SUB

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.7-22 { /**/ comment can contain any characters, including ASCII SUB } {

>         empty_class T3722 {/*\u001a*/}

>     } {PASS}

Test Case: 3.7-23

> // comment can contain any characters, including ASCII SUB

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.7-23 { // comment can contain any characters, including ASCII SUB } {

>         empty_class T3723 "//\x1a"

>     } {PASS}

Test Case: 3.7-24

> // comment can contain any characters, including ASCII SUB

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.7-24 { // comment can contain any characters, including ASCII SUB } {

>         empty_class T3724 {//\u001a}

>     } {PASS}

Test Case: 3.7-25

> comments may be unicode

> Expected 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}

Test Case: 3.7-26

> /*/ is not a comment, but an opening for /* */

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.7-26 { /*/ is not a comment, but an opening for /* */ } {

>         empty_class T3726 "/*/"

>     } {FAIL}

Test Case: 3.7-27

> /*/ is not a comment, but an opening for /* */

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.7-27 { /*/ is not a comment, but an opening for /* */ } {

>         empty_class T3727 {
>             /*/
>             */
>         }

>     } {PASS}

Test Case: 3.7-28

> /** */ doc comments are legal, in spite of a bug in the grammar which doesn't allow them

> Expected 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}

Test Case: 3.7-29

> /**/ is a legal, degenerate doc comment, in spite of a bug in the grammar which doesn't allow it

> Expected 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}

Test Case: 3.7-30

> /* */ comments don't nest

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.7-30 { /* */ comments don't nest } {

>         empty_class T3730 "/* /* */ */"

>     } {FAIL}

Test Case: 3.7-31

> /* */ comments don't nest in //

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.7-31 { /* */ comments don't nest in // } {

>         empty_class T3731 "// /* \n */"

>     } {FAIL}

Test Case: 3.7-32

> /** */ comment separates tokens

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.7-32 { /** */ comment separates tokens } {

>         compile [saveas T3732.java "class T3732 {int/** */i;}"]

>     } {PASS}

Test Case: 3.7-33

> /** */ comment separates tokens

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.7-33 { /** */ comment separates tokens } {

>         compile [saveas T3733.java "class T3733 {float f = 1./** */0;}"]

>     } {FAIL}

Test Case: 3.7-34

> /**/ comment cannot appear in literal

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.7-34 { /**/ comment cannot appear in literal } {

>         compile [saveas T3734.java "class T3734 {char c = 'a/** */';}"]

>     } {FAIL}

Test Case: 3.7-35

> /** must have matching */

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.7-35 { /** must have matching */ } {

>         compile [saveas T3735.java "class T3735 {} /**"]

>     } {FAIL}

Test Case: 3.7-36

> /* must have matching */

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.7-36 { /* must have matching */ } {

>         compile [saveas T3736.java "class T3736 {} /* "]

>     } {FAIL}

Test Case: 3.7-37

> /** must have matching */

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.7-37 { /** must have matching */ } {

>         compile [saveas T3737.java "class T3737 {} /** "]

>     } {FAIL}

Test Case: 3.7-38

> /* must have matching */

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.7-38 { /* must have matching */ } {

>         compile [saveas T3738.java "class T3738 {} /* *"]

>     } {FAIL}

Test Case: 3.7-39

> /** must have matching */

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.7-39 { /** must have matching */ } {

>         compile [saveas T3739.java "class T3739 {} /** *"]

>     } {FAIL}

Test Case: 3.7-line-number-1

> test line counts in comments

> Expected 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 Case: 3.7-line-number-2

> test line counts in comments

> Expected 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 Case: 3.7-line-number-3

> test line counts in comments

> Expected 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 Case: 3.7-line-number-4

> test line counts in comments

> Expected 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 Case: 3.7-line-number-5

> test line counts in comments

> Expected 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 Case: 3.7-line-number-6

> test line counts in comments

> Expected 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 Case: 3.7-line-number-7

> test line counts in comments

> Expected 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 Case: 3.7-line-number-8

> test line counts in comments

> Expected 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 Case: 3.7-line-number-9

> test line counts in comments

> Expected 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 Case: 3.7-line-number-10

> test line counts in comments

> Expected 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 Case: 3.7-line-number-11

> test line counts in comments

> Expected 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 Case: 3.7-line-number-12

> test line counts in comments

> Expected 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 Case: 3.7-line-number-13

> test line counts in comments

> Expected 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 Case: 3.7-line-number-14

> test line counts in comments

> Expected 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}

### 3.8

Directory : `tests/jls/lexical-structure/identifiers`

- 3.8-invalid-1
- 3.8-invalid-2
- 3.8-invalid-3
- 3.8-invalid-4
- 3.8-invalid-5
- 3.8-invalid-6
- 3.8-invalid-7
- 3.8-invalid-8
- 3.8-invalid-9
- 3.8-valid-1
- 3.8-valid-2
- 3.8-valid-3
- 3.8-valid-4
- 3.8-valid-5
- 3.8-valid-6
- 3.8-valid-7
- 3.8-valid-8
- 3.8-valid-9
- 3.8-valid-10
- 3.8-valid-11
- 3.8-valid-12
- 3.8-ignorable-1
- 3.8-ignorable-2

Test Case: 3.8-invalid-1

> A keyword cannot be an identifier

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.8-invalid-1 { A keyword cannot be an identifier } {

>         identifier T38i1 int

>     } {FAIL}

Test Case: 3.8-invalid-2

> A keyword cannot be an identifier

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.8-invalid-2 { A keyword cannot be an identifier } {

>         identifier T38i2 {\u0069\u006e\u0074}

>     } {FAIL}

Test Case: 3.8-invalid-3

> A boolean literal cannot be an identifier

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.8-invalid-3 { A boolean literal cannot be an identifier } {

>         identifier T38i3 true

>     } {FAIL}

Test Case: 3.8-invalid-4

> A boolean literal cannot be an identifier

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.8-invalid-4 { A boolean literal cannot be an identifier } {

>         identifier T38i4 {\u0074\u0072\u0075\u0065}

>     } {FAIL}

Test Case: 3.8-invalid-5

> A null literal cannot be an identifier

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.8-invalid-5 { A null literal cannot be an identifier } {

>         identifier T38i5 null

>     } {FAIL}

Test Case: 3.8-invalid-6

> A unicode null literal cannot be an identifier

> Expected 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}

Test Case: 3.8-invalid-7

> The first character of an identifier must satisfy Character.isJavaIdentifierStart

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.8-invalid-7 { The first character of an identifier
>             must satisfy Character.isJavaIdentifierStart } {

>         identifier T38i7 1

>     } {FAIL}

Test Case: 3.8-invalid-8

> Trailing characters in an identifier must satisfy Character.isJavaIdentifierPart

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.8-invalid-8 { Trailing characters in an identifier must
>             satisfy Character.isJavaIdentifierPart } {

>         identifier T38i8 i\\uffff

>     } {FAIL}

Test Case: 3.8-invalid-9

> Invalid, as \0 is not short for \u0000

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.8-invalid-9 { Invalid, as \0 is not short for \u0000 } {

>         identifier T38i9 i\\0

>     } {FAIL}

Test Case: 3.8-valid-1

> example identifier

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.8-valid-1 { example identifier } {

>         identifier T38v1 String

>     } {PASS}

Test Case: 3.8-valid-2

> example identifier

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.8-valid-2 { example identifier } {

>         identifier T38v2 i3

>     } {PASS}

Test Case: 3.8-valid-3

> example identifier

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.8-valid-3 { example identifier } {

>         identifier T38v3 MAX_VALUE

>     } {PASS}

Test Case: 3.8-valid-4

> example identifier

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.8-valid-4 { example identifier } {

>         identifier T38v4 isLetterOrDigit

>     } {PASS}

Test Case: 3.8-valid-5

> valid identifier

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.8-valid-5 { valid identifier } {

>         identifier T38v5 _

>     } {PASS}

Test Case: 3.8-valid-6

> valid identifier, although discouraged

> Expected Result: OK

> Regression Test: ``

>     tcltest::test 3.8-valid-6 { valid identifier, although discouraged } {

>         ok_pass_or_warn [identifier T38v6 \$]

>     } {OK}

Test Case: 3.8-valid-7

> valid identifier, although discouraged

> Expected Result: OK

> Regression Test: ``

>     tcltest::test 3.8-valid-7 { valid identifier, although discouraged } {

>         ok_pass_or_warn [identifier T38v7 a_\$1]

>     } {OK}

Test Case: 3.8-valid-8

> valid identifier, as \ufeff satisfies Character.isJavaIdentifierPart

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.8-valid-8 { valid identifier, as \ufeff satisfies
>             Character.isJavaIdentifierPart } {

>         identifier T38v8 i\\ufeff

>     } {PASS}

Test Case: 3.8-valid-9

> valid identifier, as \u0000 satisfies Character.isJavaIdentifierPart

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.8-valid-9 { valid identifier, as \u0000 satisfies
>             Character.isJavaIdentifierPart } {

>         identifier T38v9 i\\u0000

>     } {PASS}

Test Case: 3.8-valid-10

> example of unique identifiers

> Expected 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}

Test Case: 3.8-valid-11

> example of unique identifiers

> Expected 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}

Test Case: 3.8-valid-12

> valid identifier, as \u001a satisfies Character.isJavaIdentifierPart

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.8-valid-12 { valid identifier, as \u001a satisfies
>             Character.isJavaIdentifierPart } {

>         identifier T38v12 i\\u001a

>     } {PASS}

Test Case: 3.8-ignorable-1

> JCL docs refer to 200a, but this is a typo

> Expected 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}

Test Case: 3.8-ignorable-2

> JCL docs refer to 200a, but real value is 202a

> Expected 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}

### 3.9

Directory : `tests/jls/lexical-structure/keywords`

- 3.9-1
- 3.9-2
- 3.9-3
- 3.9-4
- 3.9-5
- 3.9-6
- 3.9-7
- 3.9-8
- 3.9-9
- 3.9-10
- 3.9-11
- 3.9-12
- 3.9-13
- 3.9-14
- 3.9-15
- 3.9-16
- 3.9-17
- 3.9-18
- 3.9-19
- 3.9-20
- 3.9-21
- 3.9-22
- 3.9-23
- 3.9-24
- 3.9-25
- 3.9-26
- 3.9-27
- 3.9-28
- 3.9-29
- 3.9-30
- 3.9-31
- 3.9-32
- 3.9-33
- 3.9-34
- 3.9-35
- 3.9-36
- 3.9-37
- 3.9-38
- 3.9-39
- 3.9-40
- 3.9-41
- 3.9-42
- 3.9-43
- 3.9-44
- 3.9-45
- 3.9-46
- 3.9-47
- 3.9-48
- 3.9-valid-1
- 3.9-valid-2
- 3.9-valid-3
- 3.9-valid-4
- 3.9-valid-5
- 3.9-valid-6
- 3.9-valid-7
- 3.9-valid-8
- 3.9-valid-9
- 3.9-valid-10
- 3.9-valid-11
- 3.9-valid-12
- 3.9-valid-13
- 3.9-valid-14
- 3.9-valid-15
- 3.9-valid-16
- 3.9-valid-17
- 3.9-valid-18
- 3.9-valid-19
- 3.9-valid-20
- 3.9-valid-21
- 3.9-valid-22
- 3.9-valid-23
- 3.9-valid-24
- 3.9-valid-25
- 3.9-valid-26
- 3.9-valid-27
- 3.9-valid-28
- 3.9-valid-29

Test Case: 3.9-1

> abstract is a keyword

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.9-1 { abstract is a keyword } {

>         keyword T391 abstract

>     } {FAIL}

Test Case: 3.9-2

> boolean is a keyword

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.9-2 { boolean is a keyword } {

>         keyword T392 boolean

>     } {FAIL}

Test Case: 3.9-3

> break is a keyword

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.9-3 { break is a keyword } {

>         keyword T393 break

>     } {FAIL}

Test Case: 3.9-4

> byte is a keyword

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.9-4 { byte is a keyword } {

>         keyword T394 byte

>     } {FAIL}

Test Case: 3.9-5

> case is a keyword

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.9-5 { case is a keyword } {

>         keyword T395 case

>     } {FAIL}

Test Case: 3.9-6

> catch is a keyword

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.9-6 { catch is a keyword } {

>         keyword T396 catch

>     } {FAIL}

Test Case: 3.9-7

> char is a keyword

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.9-7 { char is a keyword } {

>         keyword T397 char

>     } {FAIL}

Test Case: 3.9-8

> class is a keyword

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.9-8 { class is a keyword } {

>         keyword T398 class

>     } {FAIL}

Test Case: 3.9-9

> const is a keyword

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.9-9 { const is a keyword } {

>         keyword T399 const

>     } {FAIL}

Test Case: 3.9-10

> continue is a keyword

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.9-10 { continue is a keyword } {

>         keyword T3910 continue

>     } {FAIL}

Test Case: 3.9-11

> default is a keyword

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.9-11 { default is a keyword } {

>         keyword T3911 default

>     } {FAIL}

Test Case: 3.9-12

> do is a keyword

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.9-12 { do is a keyword } {

>         keyword T3912 do

>     } {FAIL}

Test Case: 3.9-13

> double is a keyword

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.9-13 { double is a keyword } {

>         keyword T3913 double

>     } {FAIL}

Test Case: 3.9-14

> else is a keyword

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.9-14 { else is a keyword } {

>         keyword T3914 else

>     } {FAIL}

Test Case: 3.9-15

> extends is a keyword

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.9-15 { extends is a keyword } {

>         keyword T3915 extends

>     } {FAIL}

Test Case: 3.9-16

> final is a keyword

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.9-16 { final is a keyword } {

>         keyword T3916 final

>     } {FAIL}

Test Case: 3.9-17

> finally is a keyword

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.9-17 { finally is a keyword } {

>         keyword T3917 finally

>     } {FAIL}

Test Case: 3.9-18

> float is a keyword

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.9-18 { float is a keyword } {

>         keyword T3918 float

>     } {FAIL}

Test Case: 3.9-19

> for is a keyword

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.9-19 { for is a keyword } {

>         keyword T3919 for

>     } {FAIL}

Test Case: 3.9-20

> goto is a keyword

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.9-20 { goto is a keyword } {

>         keyword T3920 goto

>     } {FAIL}

Test Case: 3.9-21

> if is a keyword

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.9-21 { if is a keyword } {

>         keyword T3921 if

>     } {FAIL}

Test Case: 3.9-22

> implements is a keyword

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.9-22 { implements is a keyword } {

>         keyword T3922 implements

>     } {FAIL}

Test Case: 3.9-23

> import is a keyword

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.9-23 { import is a keyword } {

>         keyword T3923 import

>     } {FAIL}

Test Case: 3.9-24

> instanceof is a keyword

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.9-24 { instanceof is a keyword } {

>         keyword T3924 instanceof

>     } {FAIL}

Test Case: 3.9-25

> int is a keyword

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.9-25 { int is a keyword } {

>         keyword T3925 int

>     } {FAIL}

Test Case: 3.9-26

> interface is a keyword

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.9-26 { interface is a keyword } {

>         keyword T3926 interface

>     } {FAIL}

Test Case: 3.9-27

> long is a keyword

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.9-27 { long is a keyword } {

>         keyword T3927 long

>     } {FAIL}

Test Case: 3.9-28

> native is a keyword

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.9-28 { native is a keyword } {

>         keyword T3928 native

>     } {FAIL}

Test Case: 3.9-29

> new is a keyword

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.9-29 { new is a keyword } {

>         keyword T3929 new

>     } {FAIL}

Test Case: 3.9-30

> package is a keyword

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.9-30 { package is a keyword } {

>         keyword T3930 package

>     } {FAIL}

Test Case: 3.9-31

> private is a keyword

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.9-31 { private is a keyword } {

>         keyword T3931 private

>     } {FAIL}

Test Case: 3.9-32

> protected is a keyword

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.9-32 { protected is a keyword } {

>         keyword T3932 protected

>     } {FAIL}

Test Case: 3.9-33

> public is a keyword

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.9-33 { public is a keyword } {

>         keyword T3933 public

>     } {FAIL}

Test Case: 3.9-34

> return is a keyword

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.9-34 { return is a keyword } {

>         keyword T3934 return

>     } {FAIL}

Test Case: 3.9-35

> short is a keyword

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.9-35 { short is a keyword } {

>         keyword T3935 short

>     } {FAIL}

Test Case: 3.9-36

> static is a keyword

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.9-36 { static is a keyword } {

>         keyword T3936 static

>     } {FAIL}

Test Case: 3.9-37

> strictfp is a keyword, it is new to version 2 of the JLS spec

> Expected 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}

Test Case: 3.9-38

> super is a keyword

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.9-38 { super is a keyword } {

>         keyword T3938 super

>     } {FAIL}

Test Case: 3.9-39

> switch is a keyword

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.9-39 { switch is a keyword } {

>         keyword T3939 switch

>     } {FAIL}

Test Case: 3.9-40

> synchronized is a keyword

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.9-40 { synchronized is a keyword } {

>         keyword T3940 synchronized

>     } {FAIL}

Test Case: 3.9-41

> this is a keyword

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.9-41 { this is a keyword } {

>         keyword T3941 this

>     } {FAIL}

Test Case: 3.9-42

> throw is a keyword

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.9-42 { throw is a keyword } {

>         keyword T3942 throw

>     } {FAIL}

Test Case: 3.9-43

> throws is a keyword

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.9-43 { throws is a keyword } {

>         keyword T3943 throws

>     } {FAIL}

Test Case: 3.9-44

> transient is a keyword

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.9-44 { transient is a keyword } {

>         keyword T3944 transient

>     } {FAIL}

Test Case: 3.9-45

> try is a keyword

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.9-45 { try is a keyword } {

>         keyword T3945 try

>     } {FAIL}

Test Case: 3.9-46

> void is a keyword

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.9-46 { void is a keyword } {

>         keyword T3946 void

>     } {FAIL}

Test Case: 3.9-47

> volatile is a keyword

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.9-47 { volatile is a keyword } {

>         keyword T3947 volatile

>     } {FAIL}

Test Case: 3.9-48

> while is a keyword

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.9-48 { while is a keyword } {

>         keyword T3948 while

>     } {FAIL}

Test Case: 3.9-valid-1

> asm is not a keyword

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.9-valid-1 { asm is not a keyword } {

>         keyword T39v1 asm

>     } {PASS}

Test Case: 3.9-valid-2

> auto is not a keyword

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.9-valid-2 { auto is not a keyword } {

>         keyword T39v2 auto

>     } {PASS}

Test Case: 3.9-valid-3

> bool is not a keyword

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.9-valid-3 { bool is not a keyword } {

>         keyword T39v3 bool

>     } {PASS}

Test Case: 3.9-valid-4

> const_cast is not a keyword

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.9-valid-4 { const_cast is not a keyword } {

>         keyword T39v4 const_cast

>     } {PASS}

Test Case: 3.9-valid-5

> delete is not a keyword

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.9-valid-5 { delete is not a keyword } {

>         keyword T39v5 delete

>     } {PASS}

Test Case: 3.9-valid-6

> dynamic_cast is not a keyword

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.9-valid-6 { dynamic_cast is not a keyword } {

>         keyword T39v6 dynamic_cast

>     } {PASS}

Test Case: 3.9-valid-7

> enum is not a keyword

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.9-valid-7 { enum is not a keyword } {

>         keyword T39v7 enum

>     } {PASS}

Test Case: 3.9-valid-8

> explicit is not a keyword

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.9-valid-8 { explicit is not a keyword } {

>         keyword T39v8 explicit

>     } {PASS}

Test Case: 3.9-valid-9

> extern is not a keyword

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.9-valid-9 { extern is not a keyword } {

>         keyword T39v9 extern

>     } {PASS}

Test Case: 3.9-valid-10

> friend is not a keyword

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.9-valid-10 { friend is not a keyword } {

>         keyword T39v10 friend

>     } {PASS}

Test Case: 3.9-valid-11

> inline is not a keyword

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.9-valid-11 { inline is not a keyword } {

>         keyword T39v11 inline

>     } {PASS}

Test Case: 3.9-valid-12

> mutable is not a keyword

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.9-valid-12 { mutable is not a keyword } {

>         keyword T39v12 mutable

>     } {PASS}

Test Case: 3.9-valid-13

> namespace is not a keyword

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.9-valid-13 { namespace is not a keyword } {

>         keyword T39v13 namespace

>     } {PASS}

Test Case: 3.9-valid-14

> operator is not a keyword

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.9-valid-14 { operator is not a keyword } {

>         keyword T39v14 operator

>     } {PASS}

Test Case: 3.9-valid-15

> register is not a keyword

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.9-valid-15 { register is not a keyword } {

>         keyword T39v15 register

>     } {PASS}

Test Case: 3.9-valid-16

> reinterpret_cast is not a keyword

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.9-valid-16 { reinterpret_cast is not a keyword } {

>         keyword T39v16 reinterpret_cast

>     } {PASS}

Test Case: 3.9-valid-17

> signed is not a keyword

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.9-valid-17 { signed is not a keyword } {

>         keyword T39v17 signed

>     } {PASS}

Test Case: 3.9-valid-18

> sizeof is not a keyword

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.9-valid-18 { sizeof is not a keyword } {

>         keyword T39v18 sizeof

>     } {PASS}

Test Case: 3.9-valid-19

> static_cast is not a keyword

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.9-valid-19 { static_cast is not a keyword } {

>         keyword T39v19 static_cast

>     } {PASS}

Test Case: 3.9-valid-20

> struct is not a keyword

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.9-valid-20 { struct is not a keyword } {

>         keyword T39v20 struct

>     } {PASS}

Test Case: 3.9-valid-21

> template is not a keyword

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.9-valid-21 { template is not a keyword } {

>         keyword T39v21 template

>     } {PASS}

Test Case: 3.9-valid-22

> typedef is not a keyword

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.9-valid-22 { typedef is not a keyword } {

>         keyword T39v22 typedef

>     } {PASS}

Test Case: 3.9-valid-23

> typeid is not a keyword

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.9-valid-23 { typeid is not a keyword } {

>         keyword T39v23 typeid

>     } {PASS}

Test Case: 3.9-valid-24

> typename is not a keyword

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.9-valid-24 { typename is not a keyword } {

>         keyword T39v24 typename

>     } {PASS}

Test Case: 3.9-valid-25

> union is not a keyword

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.9-valid-25 { union is not a keyword } {

>         keyword T39v25 union

>     } {PASS}

Test Case: 3.9-valid-26

> unsigned is not a keyword

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.9-valid-26 { unsigned is not a keyword } {

>         keyword T39v26 unsigned

>     } {PASS}

Test Case: 3.9-valid-27

> using is not a keyword

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.9-valid-27 { using is not a keyword } {

>         keyword T39v27 using

>     } {PASS}

Test Case: 3.9-valid-28

> virtual is not a keyword

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.9-valid-28 { virtual is not a keyword } {

>         keyword T39v28 virtual

>     } {PASS}

Test Case: 3.9-valid-29

> wchar_t is not a keyword

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.9-valid-29 { wchar_t is not a keyword } {

>         keyword T39v29 wchar_t

>     } {PASS}

### 3.10.1

Directory : `tests/jls/lexical-structure/literals/integer-literals`

- 3.10.1-invalid-1
- 3.10.1-invalid-2
- 3.10.1-invalid-3
- 3.10.1-invalid-4
- 3.10.1-invalid-5
- 3.10.1-invalid-6
- 3.10.1-invalid-7
- 3.10.1-invalid-8
- 3.10.1-invalid-9
- 3.10.1-invalid-10
- 3.10.1-invalid-11
- 3.10.1-invalid-12
- 3.10.1-invalid-13
- 3.10.1-valid-1
- 3.10.1-valid-2
- 3.10.1-valid-3
- 3.10.1-valid-4
- 3.10.1-valid-5
- 3.10.1-valid-6
- 3.10.1-valid-7
- 3.10.1-valid-8
- 3.10.1-valid-9
- 3.10.1-valid-10
- 3.10.1-valid-11
- 3.10.1-valid-12
- 3.10.1-valid-13
- 3.10.1-valid-14

Test Case: 3.10.1-invalid-1

> 2147483648 may appear only as the operand of unary -

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.10.1-invalid-1 { 2147483648 may appear only as the operand of unary - } {

>         literal T3101i1 2147483648

>     } {FAIL}

Test Case: 3.10.1-invalid-2

> decimal larger than 2147483648 is not an int

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.10.1-invalid-2 { decimal larger than 2147483648 is not an int } {

>         literal T3101i2 12345678901

>     } {FAIL}

Test Case: 3.10.1-invalid-3

> octal larger than 037777777777 is not an int

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.10.1-invalid-3 { octal larger than 037777777777 is not an int } {

>         literal T3101i3 040000000000

>     } {FAIL}

Test Case: 3.10.1-invalid-4

> hex larger than 0xffffffff is not an int

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.10.1-invalid-4 { hex larger than 0xffffffff is not an int } {

>         literal T3101i4 0x123456789

>     } {FAIL}

Test Case: 3.10.1-invalid-5

> 9223372036854775808L may appear only as the operand of unary -

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.10.1-invalid-5 { 9223372036854775808L may appear only as the
>             operand of unary - } {

>         literal T3101i5 9223372036854775808L

>     } {FAIL}

Test Case: 3.10.1-invalid-6

> decimal larger than 9223372036854775808L is not an int

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.10.1-invalid-6 { decimal larger than 9223372036854775808L is not an int } {

>         literal T3101i6 12345678901234567890L

>     } {FAIL}

Test Case: 3.10.1-invalid-7

> octal larger than 01777777777777777777777L is not an int

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.10.1-invalid-7 { octal larger than 01777777777777777777777L is not an int } {

>         literal T3101i7 02000000000000000000000L

>     } {FAIL}

Test Case: 3.10.1-invalid-8

> hex larger than 0xffffffffffffffffL is not an int

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.10.1-invalid-8 { hex larger than 0xffffffffffffffffL is not an int } {

>         literal T3101i8 0x123456789abcdef01L

>     } {FAIL}

Test Case: 3.10.1-invalid-9

> octal cannot contain '9'

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.10.1-invalid-9 { octal cannot contain '9' } {

>         literal T3101i9 09

>     } {FAIL}

Test Case: 3.10.1-invalid-10

> 2147483648 may appear only as the operand of unary -

> Expected 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}

Test Case: 3.10.1-invalid-11

> 9223372036854775808L may appear only as the operand of unary -

> Expected 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}

Test Case: 3.10.1-invalid-12

> 0x must be followed by digits

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.10.1-invalid-12 { 0x must be followed by digits } {

>         literal T3101i12 0x

>     } {FAIL}

Test Case: 3.10.1-invalid-13

> 0x must be followed by digits

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.10.1-invalid-13 { 0x must be followed by digits } {

>         literal T3101i13 0xL

>     } {FAIL}

Test Case: 3.10.1-valid-1

> example decimal int literal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.10.1-valid-1 { example decimal int literal } {

>         literal T3101v1 0

>     } {PASS}

Test Case: 3.10.1-valid-2

> example octal int literal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.10.1-valid-2 { example octal int literal } {

>         literal T3101v2 0372

>     } {PASS}

Test Case: 3.10.1-valid-3

> example hex int literal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.10.1-valid-3 { example hex int literal } {

>         literal T3101v3 0xDadaCafe

>     } {PASS}

Test Case: 3.10.1-valid-4

> example hex int literal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.10.1-valid-4 { example hex int literal } {

>         literal T3101v4 0X00FF00FF

>     } {PASS}

Test Case: 3.10.1-valid-5

> decimal 0, octal 00, and hex 0x0 are equal

> Expected 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}

Test Case: 3.10.1-valid-6

> 2147483648 is valid when negative

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.10.1-valid-6 { 2147483648 is valid when negative } {

>         literal T3101v6 -2147483648

>     } {PASS}

Test Case: 3.10.1-valid-7

> example long literal, suffix l (ell) == L

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.10.1-valid-7 { example long literal, suffix l (ell) == L } {

>         literal T3101v7 0l

>     } {PASS}

Test Case: 3.10.1-valid-8

> example long literal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.10.1-valid-8 { example long literal } {

>         literal T3101v8 0777L

>     } {PASS}

Test Case: 3.10.1-valid-9

> example long literal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.10.1-valid-9 { example long literal } {

>         literal T3101v9 0X100000000L

>     } {PASS}

Test Case: 3.10.1-valid-10

> example long literal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.10.1-valid-10 { example long literal } {

>         literal T3101v10 2147483648L

>     } {PASS}

Test Case: 3.10.1-valid-11

> example long literal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.10.1-valid-11 { example long literal } {

>         literal T3101v11 0xC0B0L

>     } {PASS}

Test Case: 3.10.1-valid-12

> 9223372036854775807L is valid when negative

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.10.1-valid-12 { 9223372036854775807L is valid when negative } {

>         literal T3101v12 -9223372036854775807L

>     } {PASS}

Test Case: 3.10.1-valid-13

> An octal that fits in 32 bits is legal int

> Expected 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}

Test Case: 3.10.1-valid-14

> A hex literal that fits in 64 bits is a legal long

> Expected 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}

### 3.10.2

Directory : `tests/jls/lexical-structure/literals/floating-point-literals`

- 3.10.2-invalid-1
- 3.10.2-invalid-2
- 3.10.2-invalid-3
- 3.10.2-invalid-4
- 3.10.2-invalid-5
- 3.10.2-invalid-6
- 3.10.2-invalid-7
- 3.10.2-invalid-8
- 3.10.2-invalid-9
- 3.10.2-invalid-10
- 3.10.2-invalid-11
- 3.10.2-round-1
- 3.10.2-round-2
- 3.10.2-round-3
- 3.10.2-round-4
- 3.10.2-round-5
- 3.10.2-round-6
- 3.10.2-round-7
- 3.10.2-round-8
- 3.10.2-round-9
- 3.10.2-round-10
- 3.10.2-round-11
- 3.10.2-round-12
- 3.10.2-float-1
- 3.10.2-float-2
- 3.10.2-float-3
- 3.10.2-float-4
- 3.10.2-float-5
- 3.10.2-float-6
- 3.10.2-float-7
- 3.10.2-float-8
- 3.10.2-float-9
- 3.10.2-float-10
- 3.10.2-float-11
- 3.10.2-float-12
- 3.10.2-float-13
- 3.10.2-float-14
- 3.10.2-float-15
- 3.10.2-float-16
- 3.10.2-double-1
- 3.10.2-double-2
- 3.10.2-double-3
- 3.10.2-double-4
- 3.10.2-double-5
- 3.10.2-double-6
- 3.10.2-double-7
- 3.10.2-double-8
- 3.10.2-double-9
- 3.10.2-double-10
- 3.10.2-double-11
- 3.10.2-double-12
- 3.10.2-double-13
- 3.10.2-double-14
- 3.10.2-double-15
- 3.10.2-double-16
- 3.10.2-double-17

Test Case: 3.10.2-invalid-1

> Whole or fractional part must have a digit

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.10.2-invalid-1 { Whole or fractional part must have a digit } {

>         literal T3102i1 .e2

>     } {FAIL}

Test Case: 3.10.2-invalid-2

> Whole or fractional part must have a digit

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.10.2-invalid-2 { Whole or fractional part must have a digit } {

>         literal T3102i2 .F

>     } {FAIL}

Test Case: 3.10.2-invalid-3

> Invalid Digits

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.10.2-invalid-3 { Invalid Digits } {

>         literal T3102i3 E.1e20

>     } {FAIL}

Test Case: 3.10.2-invalid-4

> ExponentPart must include a SignedInteger

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.10.2-invalid-4 { ExponentPart must include a SignedInteger } {

>         literal T3102i4 1.E

>     } {FAIL}

Test Case: 3.10.2-invalid-5

> ExponentPart must include a SignedInteger

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.10.2-invalid-5 { ExponentPart must include a SignedInteger } {

>         literal T3102i5 1.e

>     } {FAIL}

Test Case: 3.10.2-invalid-6

> ExponentPart must include a SignedInteger

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.10.2-invalid-6 { ExponentPart must include a SignedInteger } {

>         literal T3102i6 1.E+

>     } {FAIL}

Test Case: 3.10.2-invalid-7

> ExponentPart must include a SignedInteger

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.10.2-invalid-7 { ExponentPart must include a SignedInteger } {

>         literal T3102i7 1.E-

>     } {FAIL}

Test Case: 3.10.2-invalid-8

> ExponentPart must include a SignedInteger

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.10.2-invalid-8 { ExponentPart must include a SignedInteger } {

>         literal T3102i8 .1eF

>     } {FAIL}

Test Case: 3.10.2-invalid-9

> ExponentPart must include a SignedInteger

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.10.2-invalid-9 { ExponentPart must include a SignedInteger } {

>         literal T3102i9 .1e-D

>     } {FAIL}

Test Case: 3.10.2-invalid-10

> ExponentPart must include a SignedInteger

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.10.2-invalid-10 { ExponentPart must include a SignedInteger } {

>         literal T3102i10 1e-d

>     } {FAIL}

Test Case: 3.10.2-invalid-11

> ExponentPart must include a SignedInteger

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.10.2-invalid-11 { ExponentPart must include a SignedInteger } {

>         literal T3102i11 .1e+F

>     } {FAIL}

Test Case: 3.10.2-round-1

> It is an error for a floating-point literal to round to an infinity

> Expected 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}

Test Case: 3.10.2-round-2

> It is an error for a floating-point literal to round to an infinity

> Expected 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}

Test Case: 3.10.2-round-3

> It is an error for a nonzero floating-point to round to zero

> Expected 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}

Test Case: 3.10.2-round-4

> It is an error for a nonzero floating-point to round to zero

> Expected 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}

Test Case: 3.10.2-round-5

> It is an error for a floating-point literal to round to an infinity

> Expected 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}

Test Case: 3.10.2-round-6

> It is an error for a floating-point literal to round to an infinity

> Expected 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}

Test Case: 3.10.2-round-7

> It is an error for a nonzero floating-point to round to zero

> Expected 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}

Test Case: 3.10.2-round-8

> It is an error for a nonzero floating-point to round to zero

> Expected 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 Case: 3.10.2-round-9

> test rounding at border of float denorms

> Expected 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 Case: 3.10.2-round-10

> test rounding at border of double denorms. Note that Javac 1.3 enters an infinite loop on this test.

> Expected 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 Case: 3.10.2-round-11

> test rounding at largest float where Float.MIN_VALUE is 1 ulp

> Expected 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 Case: 3.10.2-round-12

> test rounding at largest double where Double.MIN_VALUE is 1 ulp

> Expected 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}

Test Case: 3.10.2-float-1

> example float literal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.10.2-float-1 { example float literal } {

>         literal T3102f1 1e1f

>     } {PASS}

Test Case: 3.10.2-float-2

> example float literal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.10.2-float-2 { example float literal } {

>         literal T3102f2 2.f

>     } {PASS}

Test Case: 3.10.2-float-3

> example float literal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.10.2-float-3 { example float literal } {

>         literal T3102f3 1.e-1

>     } {PASS}

Test Case: 3.10.2-float-4

> example float literal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.10.2-float-4 { example float literal } {

>         literal T3102f4 .3F

>     } {PASS}

Test Case: 3.10.2-float-5

> example float literal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.10.2-float-5 { example float literal } {

>         literal T3102f5 0f

>     } {PASS}

Test Case: 3.10.2-float-6

> example float literal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.10.2-float-6 { example float literal } {

>         literal T3102f6 3.14f

>     } {PASS}

Test Case: 3.10.2-float-7

> example float literal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.10.2-float-7 { example float literal } {

>         literal T3102f7 6.022137e+23f

>     } {PASS}

Test Case: 3.10.2-float-8

> largest finite float, by JLS

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.10.2-float-8 { largest finite float, by JLS } {

>         literal T3102f8 3.40282347e+38f

>     } {PASS}

Test Case: 3.10.2-float-9

> smallest finite float

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.10.2-float-9 { smallest finite float } {

>         literal T3102f9 1.40239846e-45f

>     } {PASS}

Test Case: 3.10.2-float-10

> extra 0s don't affect floating point parsing

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.10.2-float-10 { extra 0s don't affect floating point parsing } {

>         literal T3102f10 000000000000000000000000000000000000000000000000000000000000000000000000.000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000e00000000000000000000000000000000050f

>     } {PASS}

Test Case: 3.10.2-float-11

> unicode 1e0F

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.10.2-float-11 { unicode 1e0F } {

>         literal T3102f11 {\u0031\u0065\u0030\u0046}

>     } {PASS}

Test Case: 3.10.2-float-12

> largest finite float, by rounding

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 3.10.2-float-14

> valid float overrides invalid octal

> Expected 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}

Test Case: 3.10.2-float-15

> valid float overrides invalid octal

> Expected 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}

Test Case: 3.10.2-float-16

> check for 0 followed by letter

> Expected 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}

Test Case: 3.10.2-double-1

> example double literal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.10.2-double-1 { example double literal } {

>         literal T3102d1 1E1D

>     } {PASS}

Test Case: 3.10.2-double-2

> example double literal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.10.2-double-2 { example double literal } {

>         literal T3102d2 2.

>     } {PASS}

Test Case: 3.10.2-double-3

> example double literal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.10.2-double-3 { example double literal } {

>         literal T3102d3 .3

>     } {PASS}

Test Case: 3.10.2-double-4

> example double literal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.10.2-double-4 { example double literal } {

>         literal T3102d4 0.0

>     } {PASS}

Test Case: 3.10.2-double-5

> example double literal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.10.2-double-5 { example double literal } {

>         literal T3102d5 3.14

>     } {PASS}

Test Case: 3.10.2-double-6

> example double literal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.10.2-double-6 { example double literal } {

>         literal T3102d6 1e-9d

>     } {PASS}

Test Case: 3.10.2-double-7

> example double literal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.10.2-double-7 { example double literal } {

>         literal T3102d7 1e137

>     } {PASS}

Test Case: 3.10.2-double-8

> largest finite double, by JLS

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.10.2-double-8 { largest finite double, by JLS } {

>         literal T3102d8 1.79769313486231570e+308

>     } {PASS}

Test Case: 3.10.2-double-9

> smallest finite double

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.10.2-double-9 { smallest finite double } {

>         literal T3102d9 4.94065645841246544e-324

>     } {PASS}

Test Case: 3.10.2-double-10

> the compiler should correctly round denormalized literals

> Expected 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}

Test Case: 3.10.2-double-11

> extra 0s don't affect floating point parsing

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.10.2-double-11 { extra 0s don't affect floating point parsing } {

>         literal T3102d11 000000000000000000000000000000000000000000000000000000000000000000000000.000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000e00000000000000000000000000000000050

>     } {PASS}

Test Case: 3.10.2-double-12

> unicode escape the . in float 1.0

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.10.2-double-12 { unicode escape the . in float 1.0 } {

>         literal T3102d12 1\u002e0

>     } {PASS}

Test Case: 3.10.2-double-13

> largest finite double, by rounding

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 3.10.2-double-15

> valid double overrides invalid octal

> Expected 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}

Test Case: 3.10.2-double-16

> valid double overrides invalid octal

> Expected 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}

Test Case: 3.10.2-double-17

> check for 0 followed by letter

> Expected 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}

### 3.10.4

Directory : `tests/jls/lexical-structure/literals/character-literals`

- 3.10.4-invalid-1
- 3.10.4-invalid-2
- 3.10.4-invalid-3
- 3.10.4-invalid-4
- 3.10.4-invalid-5
- 3.10.4-invalid-6
- 3.10.4-invalid-7
- 3.10.4-invalid-8
- 3.10.4-invalid-9
- 3.10.4-invalid-10
- 3.10.4-invalid-11
- 3.10.4-invalid-12
- 3.10.4-invalid-13
- 3.10.4-invalid-14
- 3.10.4-invalid-15
- 3.10.4-invalid-16
- 3.10.4-invalid-17
- 3.10.4-valid-1
- 3.10.4-valid-2
- 3.10.4-valid-3
- 3.10.4-valid-4
- 3.10.4-valid-5
- 3.10.4-valid-6
- 3.10.4-valid-7
- 3.10.4-valid-8
- 3.10.4-valid-9
- 3.10.4-valid-10
- 3.10.4-valid-11
- 3.10.4-valid-12
- 3.10.4-valid-13
- 3.10.4-valid-14

Test Case: 3.10.4-invalid-1

> A SingleCharacter cannot be '

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.10.4-invalid-1 { A SingleCharacter cannot be ' } {

>         literal T3104i1 '

>     } {FAIL}

Test Case: 3.10.4-invalid-2

> A SingleCharacter cannot be '

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.10.4-invalid-2 { A SingleCharacter cannot be ' } {

>         literal T3104i2 {\u0027}

>     } {FAIL}

Test Case: 3.10.4-invalid-3

> A SingleCharacter cannot be \

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.10.4-invalid-3 { A SingleCharacter cannot be \ } {

>         literal T3104i3 \\

>     } {FAIL}

Test Case: 3.10.4-invalid-4

> A SingleCharacter cannot be \

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.10.4-invalid-4 { A SingleCharacter cannot be \ } {

>         literal T3104i4 {\u005c}

>     } {FAIL}

Test Case: 3.10.4-invalid-5

> A LineTerminator is not an InputCharacter

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.10.4-invalid-5 { A LineTerminator is not an InputCharacter } {

>         literal T3104i5 \r

>     } {FAIL}

Test Case: 3.10.4-invalid-6

> A LineTerminator is not an InputCharacter

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.10.4-invalid-6 { A LineTerminator is not an InputCharacter } {

>         literal T3104i6 \n

>     } {FAIL}

Test Case: 3.10.4-invalid-7

> A LineTerminator is not an InputCharacter

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.10.4-invalid-7 { A LineTerminator is not an InputCharacter } {

>         literal T3104i7 \r\n

>     } {FAIL}

Test Case: 3.10.4-invalid-8

> A LineTerminator is not an InputCharacter

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.10.4-invalid-8 { A LineTerminator is not an InputCharacter } {

>         literal T3104i8 {\u000d}

>     } {FAIL}

Test Case: 3.10.4-invalid-9

> A LineTerminator is not an InputCharacter

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.10.4-invalid-9 { A LineTerminator is not an InputCharacter } {

>         literal T3104i9 {\u000a}

>     } {FAIL}

Test Case: 3.10.4-invalid-10

> A LineTerminator is not an InputCharacter

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.10.4-invalid-10 { A LineTerminator is not an InputCharacter } {

>         literal T3104i10 {\u000d\u000a}

>     } {FAIL}

Test Case: 3.10.4-invalid-11

> ' must be terminated with '

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.10.4-invalid-11 { ' must be terminated with ' } {

>         literal T3104i11 AB

>     } {FAIL}

Test Case: 3.10.4-invalid-12

> empty character literal is not allowed

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.10.4-invalid-12 { empty character literal is not allowed } {

>         literal T3104i12 ""

>     } {FAIL}

Test Case: 3.10.4-invalid-13

> \r\n is two character literals

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.10.4-invalid-13 { \r\n is two character literals } {

>         literal T3104i13 {\r\n}

>     } {FAIL}

Test Case: 3.10.4-invalid-14

> ' must be terminated with '

> Expected 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}

Test Case: 3.10.4-invalid-15

> EOF inside ''

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.10.4-invalid-15 { EOF inside '' } {

>         compile [saveas T3104i15.java "class T3104i15 \{char c = '"]

>     } {FAIL}

Test Case: 3.10.4-invalid-16

> EOF inside ''

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.10.4-invalid-16 { EOF inside '' } {

>         compile [saveas T3104i16.java "class T3104i16 \{char c = 'a"]

>     } {FAIL}

Test Case: 3.10.4-invalid-17

> EOF inside ''

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.10.4-invalid-17 { EOF inside '' } {

>         compile [saveas T3104i17.java "class T3104i17 \{char c = '\\"]

>     } {FAIL}

Test Case: 3.10.4-valid-1

> example character literal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.10.4-valid-1 { example character literal } {

>         literal T3104v1 a

>     } {PASS}

Test Case: 3.10.4-valid-2

> example character literal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.10.4-valid-2 { example character literal } {

>         literal T3104v2 %

>     } {PASS}

Test Case: 3.10.4-valid-3

> example character literal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.10.4-valid-3 { example character literal } {

>         literal T3104v3 {\t}

>     } {PASS}

Test Case: 3.10.4-valid-4

> example character literal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.10.4-valid-4 { example character literal } {

>         literal T3104v4 {\\}

>     } {PASS}

Test Case: 3.10.4-valid-5

> example character literal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.10.4-valid-5 { example character literal } {

>         literal T3104v5 {\'}

>     } {PASS}

Test Case: 3.10.4-valid-6

> example character literal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.10.4-valid-6 { example character literal } {

>         literal T3104v6 {\u03a9}

>     } {PASS}

Test Case: 3.10.4-valid-7

> example character literal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.10.4-valid-7 { example character literal } {

>         literal T3104v7 {\uFFFF}

>     } {PASS}

Test Case: 3.10.4-valid-8

> example character literal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.10.4-valid-8 { example character literal } {

>         literal T3104v8 {\177}

>     } {PASS}

Test Case: 3.10.4-valid-9

> example character literal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.10.4-valid-9 { example character literal } {

>         literal T3104v9 {\r}

>     } {PASS}

Test Case: 3.10.4-valid-10

> example character literal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.10.4-valid-10 { example character literal } {

>         literal T3104v10 {\n}

>     } {PASS}

Test Case: 3.10.4-valid-11

> valid character literal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.10.4-valid-11 { valid character literal } {

>         literal T3104v11 {\"}

>     } {PASS}

Test Case: 3.10.4-valid-12

> valid character literal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.10.4-valid-12 { valid character literal } {

>         literal T3104v12 {"}

>     } {PASS}

Test Case: 3.10.4-valid-13

> valid character literal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.10.4-valid-13 { valid character literal } {

>         literal T3104v13 {\u001a}

>     } {PASS}

Test Case: 3.10.4-valid-14

> valid character literal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.10.4-valid-14 { valid character literal } {

>         literal T3104v14 \x1a

>     } {PASS}

### 3.10.5

Directory : `tests/jls/lexical-structure/literals/string-literals`

- 3.10.5-invalid-1
- 3.10.5-invalid-2
- 3.10.5-invalid-3
- 3.10.5-invalid-4
- 3.10.5-invalid-5
- 3.10.5-invalid-6
- 3.10.5-invalid-7
- 3.10.5-invalid-8
- 3.10.5-invalid-9
- 3.10.5-invalid-10
- 3.10.5-invalid-11
- 3.10.5-invalid-12
- 3.10.5-invalid-13
- 3.10.5-valid-1
- 3.10.5-valid-2
- 3.10.5-valid-3
- 3.10.5-valid-4
- 3.10.5-valid-5
- 3.10.5-valid-6
- 3.10.5-valid-7
- 3.10.5-valid-8
- 3.10.5-valid-9
- 3.10.5-valid-10
- 3.10.5-valid-11
- 3.10.5-valid-12
- 3.10.5-valid-13
- 3.10.5-valid-14

Test Case: 3.10.5-invalid-1

> A StringCharacter cannot be "

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.10.5-invalid-1 { A StringCharacter cannot be " } {

>         literal T3105i1 {"}

>     } {FAIL}

Test Case: 3.10.5-invalid-2

> A StringCharacter cannot be "

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.10.5-invalid-2 { A StringCharacter cannot be " } {

>         literal T3105i2 {\u0022}

>     } {FAIL}

Test Case: 3.10.5-invalid-3

> A StringCharacter cannot be \

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.10.5-invalid-3 { A StringCharacter cannot be \ } {

>         literal T3105i3 \\

>     } {FAIL}

Test Case: 3.10.5-invalid-4

> A StringCharacter cannot be \

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.10.5-invalid-4 { A StringCharacter cannot be \ } {

>         literal T3105i4 {\u005c}

>     } {FAIL}

Test Case: 3.10.5-invalid-5

> A LineTerminator is not an InputCharacter

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.10.5-invalid-5 { A LineTerminator is not an InputCharacter } {

>         literal T3105i5 \r

>     } {FAIL}

Test Case: 3.10.5-invalid-6

> A LineTerminator is not an InputCharacter

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.10.5-invalid-6 { A LineTerminator is not an InputCharacter } {

>         literal T3105i6 \n

>     } {FAIL}

Test Case: 3.10.5-invalid-7

> A LineTerminator is not an InputCharacter

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.10.5-invalid-7 { A LineTerminator is not an InputCharacter } {

>         literal T3105i7 \r\n

>     } {FAIL}

Test Case: 3.10.5-invalid-8

> A LineTerminator is not an InputCharacter

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.10.5-invalid-8 { A LineTerminator is not an InputCharacter } {

>         literal T3105i8 {\u000d}

>     } {FAIL}

Test Case: 3.10.5-invalid-9

> A LineTerminator is not an InputCharacter

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.10.5-invalid-9 { A LineTerminator is not an InputCharacter } {

>         literal T3105i9 {\u000a}

>     } {FAIL}

Test Case: 3.10.5-invalid-10

> A LineTerminator is not an InputCharacter

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.10.5-invalid-10 { A LineTerminator is not an InputCharacter } {

>         literal T3105i10 {\u000d\u000a}

>     } {FAIL}

Test Case: 3.10.5-invalid-11

> " must be terminated with "

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.10.5-invalid-11 { " must be terminated with " } {

>         compile [saveas T3105i11.java {class T3105i11 {String s = ";}}]

>     } {FAIL}

Test Case: 3.10.5-invalid-12

> EOF inside ""

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.10.5-invalid-12 { EOF inside "" } {

>         compile [saveas T3105i12.java "class T3105i12 \{String s = \""]

>     } {FAIL}

Test Case: 3.10.5-invalid-13

> EOF inside ""

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.10.5-invalid-13 { EOF inside "" } {

>         compile [saveas T3105i13.java "class T3105i13 \{String s = \"\\"]

>     } {FAIL}

Test Case: 3.10.5-valid-1

> example string literal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.10.5-valid-1 { example string literal } {

>         literal T3105v1 ""

>     } {PASS}

Test Case: 3.10.5-valid-2

> example string literal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.10.5-valid-2 { example string literal } {

>         literal T3105v2 {This is a string}

>     } {PASS}

Test Case: 3.10.5-valid-3

> example string literal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.10.5-valid-3 { example string literal } {

>         literal T3105v3 {This is a " +
>                          "two-line string}

>     } {PASS}

Test Case: 3.10.5-valid-4

> valid string literal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.10.5-valid-4 { valid string literal } {

>         literal T3105v4 {\\}

>     } {PASS}

Test Case: 3.10.5-valid-5

> valid string literal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.10.5-valid-5 { valid string literal } {

>         literal T3105v5 {\'}

>     } {PASS}

Test Case: 3.10.5-valid-6

> valid string literal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.10.5-valid-6 { valid string literal } {

>         literal T3105v6 {\u03a9}

>     } {PASS}

Test Case: 3.10.5-valid-7

> valid string literal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.10.5-valid-7 { valid string literal } {

>         literal T3105v7 {\uFFFF}

>     } {PASS}

Test Case: 3.10.5-valid-8

> valid string literal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.10.5-valid-8 { valid string literal } {

>         literal T3105v8 {\177}

>     } {PASS}

Test Case: 3.10.5-valid-9

> valid string literal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.10.5-valid-9 { valid string literal } {

>         literal T3105v9 {\r}

>     } {PASS}

Test Case: 3.10.5-valid-10

> valid string literal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.10.5-valid-10 { valid string literal } {

>         literal T3105v10 {\n}

>     } {PASS}

Test Case: 3.10.5-valid-11

> valid string literal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.10.5-valid-11 { valid string literal } {

>         literal T3105v11 {\"}

>     } {PASS}

Test Case: 3.10.5-valid-12

> valid string literal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.10.5-valid-12 { valid string literal } {

>         literal T3105v12 '

>     } {PASS}

Test Case: 3.10.5-valid-13

> valid string literal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.10.5-valid-13 { valid string literal } {

>         literal T3105v13 {\u001a}

>     } {PASS}

Test Case: 3.10.5-valid-14

> valid string literal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.10.5-valid-14 { valid string literal } {

>         literal T3105v14 \x1a

>     } {PASS}

### 3.10.7

Directory : `tests/jls/lexical-structure/literals/escape-sequences`

- 3.10.7-invalid-1
- 3.10.7-invalid-2
- 3.10.7-invalid-3
- 3.10.7-invalid-4
- 3.10.7-invalid-5
- 3.10.7-invalid-6
- 3.10.7-invalid-7
- 3.10.7-invalid-8
- 3.10.7-invalid-9
- 3.10.7-invalid-10
- 3.10.7-invalid-11
- 3.10.7-invalid-12
- 3.10.7-invalid-13
- 3.10.7-invalid-14
- 3.10.7-invalid-15
- 3.10.7-invalid-16
- 3.10.7-valid-1
- 3.10.7-valid-2
- 3.10.7-valid-3
- 3.10.7-valid-4
- 3.10.7-valid-5
- 3.10.7-valid-6
- 3.10.7-valid-7
- 3.10.7-valid-8
- 3.10.7-valid-9
- 3.10.7-valid-10
- 3.10.7-valid-11
- 3.10.7-valid-12
- 3.10.7-valid-13
- 3.10.7-valid-14
- 3.10.7-valid-15
- 3.10.7-valid-16
- 3.10.7-valid-17

Test Case: 3.10.7-invalid-1

> \a (Alert, Ctrl-G) is not an escape sequence

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.10.7-invalid-1 { \a (Alert, Ctrl-G) is not an escape sequence } {

>         sequence T3107i1 {\a}

>     } {FAIL}

Test Case: 3.10.7-invalid-2

> \v (Vertical tab, Ctrl-K) is not an escape sequence

> Expected 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}

Test Case: 3.10.7-invalid-3

> \x (hex sequence) is not an escape sequence

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.10.7-invalid-3 { \x (hex sequence) is not an escape sequence } {

>         sequence T3107i3 {\x0}

>     } {FAIL}

Test Case: 3.10.7-invalid-4

> \LineTerminator is not a valid line continuation

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.10.7-invalid-4 { \LineTerminator is not a valid line continuation } {

>         sequence T3107i4 a\\\n

>     } {FAIL}

Test Case: 3.10.7-invalid-5

> \u is not an escape sequence, since unicode is already expanded

> Expected 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}

Test Case: 3.10.7-invalid-6

> octal escape sequences are limited at 0377

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.10.7-invalid-6 { octal escape sequences are limited at 0377 } {

>         sequence T3107i6 {\400}

>     } {FAIL}

Test Case: 3.10.7-invalid-7

> escape sequences are case-sensitive

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.10.7-invalid-7 { escape sequences are case-sensitive } {

>         sequence T3107i7 {\N}

>     } {FAIL}

Test Case: 3.10.7-invalid-8

> escape sequences only occur within character and string literals

> Expected 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}

Test Case: 3.10.7-invalid-9

> octal escape sequences are limited at 0377

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.10.7-invalid-9 { octal escape sequences are limited at 0377 } {

>         sequence T3107i9 {\0000}

>     } {FAIL}

Test Case: 3.10.7-invalid-10

> \LineTerminator is not a valid sequence

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.10.7-invalid-10 { \LineTerminator is not a valid sequence } {

>         sequence T3107i10 \\\n

>     } {FAIL}

Test Case: 3.10.7-invalid-11

> \LineTerminator is not a valid sequence

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 3.10.7-invalid-11 { \LineTerminator is not a valid sequence } {

>         sequence T3107i11 \\\r

>     } {FAIL}

Test Case: 3.10.7-invalid-12

> \u is not an escape sequence, since unicode is already expanded

> Expected 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}

Test Case: 3.10.7-invalid-13

> escape sequences only occur within character and string literals

> Expected 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}

Test Case: 3.10.7-invalid-14

> escape sequences only occur within character and string literals

> Expected 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}

Test Case: 3.10.7-invalid-15

> \LineTerminator is not a valid sequence

> Expected 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}

Test Case: 3.10.7-invalid-16

> \LineTerminator is not a valid sequence

> Expected 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}

Test Case: 3.10.7-valid-1

> \b (Backspace, Ctrl-H, \u0008) is an escape sequence

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.10.7-valid-1 { \b (Backspace, Ctrl-H, \u0008) is an escape sequence } {

>         sequence T3107v1 {\b}

>     } {PASS}

Test Case: 3.10.7-valid-2

> \t (Tab, Ctrl-I, \u0009) is an escape sequence

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.10.7-valid-2 { \t (Tab, Ctrl-I, \u0009) is an escape sequence } {

>         sequence T3107v2 {\t}

>     } {PASS}

Test Case: 3.10.7-valid-3

> \n (Linefeed, Ctrl-J, \u000a) is an escape sequence

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.10.7-valid-3 { \n (Linefeed, Ctrl-J, \u000a) is an escape sequence } {

>         sequence T3107v3 {\n}

>     } {PASS}

Test Case: 3.10.7-valid-4

> \f (Formfeed, Ctrl-L, \u000c) is an escape sequence

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.10.7-valid-4 { \f (Formfeed, Ctrl-L, \u000c) is an escape sequence } {

>         sequence T3107v4 {\f}

>     } {PASS}

Test Case: 3.10.7-valid-5

> \r (Carriage Return, Ctrl-M, \u000d) is an escape sequence

> Expected 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}

Test Case: 3.10.7-valid-6

> \" (\u0022) is an escape sequence

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.10.7-valid-6 { \" (\u0022) is an escape sequence } {

>         sequence T3107v6 {\"}

>     } {PASS}

Test Case: 3.10.7-valid-7

> \' (\u0027) is an escape sequence

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.10.7-valid-7 { \' (\u0027) is an escape sequence } {

>         sequence T3107v7 {\'}

>     } {PASS}

Test Case: 3.10.7-valid-8

> \\ (\u005c) is an escape sequence

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.10.7-valid-8 { \\ (\u005c) is an escape sequence } {

>         sequence T3107v8 {\\}

>     } {PASS}

Test Case: 3.10.7-valid-9

> octal sequences can have one digit

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.10.7-valid-9 { octal sequences can have one digit } {

>         sequence T3107v9 {\5}

>     } {PASS}

Test Case: 3.10.7-valid-10

> octal sequences can have two digits

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.10.7-valid-10 { octal sequences can have two digits } {

>         sequence T3107v10 {\40}

>     } {PASS}

Test Case: 3.10.7-valid-11

> octal sequences can have three digits, if the first is < 4

> Expected 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}

Test Case: 3.10.7-valid-12

> escape sequences may be written in unicode

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 3.10.7-valid-12 { escape sequences may be written in unicode } {

>         sequence T3107v12 {\u005c\u005c}

>     } {PASS}

Test Case: 3.10.7-valid-13

> an octal sequence with the first digit >= 4 has at most two digits

> Expected 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}

Test Case: 3.10.7-valid-14

> escape sequences represent characters with identical value

> Expected 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}

Test Case: 3.10.7-valid-15

> escape sequences represent the same character in a String

> Expected 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}

Test Case: 3.10.7-valid-16

> escape sequences only occur within character and string literals

> Expected 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}

Test Case: 3.10.7-valid-17

> an octal sequence with the first digit < 4 has at most three digits

> Expected 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}

### 4.5.4

Directory : `tests/jls/types-values-and-variables/variables/final-variables`

- 4.5.4-instance-1
- 4.5.4-instance-2
- 4.5.4-instance-3
- 4.5.4-instance-4
- 4.5.4-instance-5
- 4.5.4-instance-6
- 4.5.4-instance-7
- 4.5.4-instance-8
- 4.5.4-instance-9
- 4.5.4-instance-10
- 4.5.4-static-1
- 4.5.4-static-2
- 4.5.4-static-3
- 4.5.4-static-4
- 4.5.4-static-5
- 4.5.4-static-6
- 4.5.4-reference-1
- 4.5.4-reference-2
- 4.5.4-9
- 4.5.4-10
- 4.5.4-local-1
- 4.5.4-local-2
- 4.5.4-local-3
- 4.5.4-parameter-1
- 4.5.4-parameter-2
- 4.5.4-parameter-3

Test Case: 4.5.4-instance-1

> final variable must be definitely assigned

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 4.5.4-instance-1 { final variable must be definitely assigned } {

>         empty_class T454i1 {
>             final int val;
>         }

>     } {FAIL}

Test Case: 4.5.4-instance-2

> final variable must be definitely assigned

> Expected 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}

Test Case: 4.5.4-instance-3

> final variable must be definitely assigned

> Expected 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}

Test Case: 4.5.4-instance-4

> final variable must be definitely assigned

> Expected 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}

Test Case: 4.5.4-instance-5

> final variable can only be assigned to once

> Expected 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}

Test Case: 4.5.4-instance-6

> final variable can only be assigned to once

> Expected 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}

Test Case: 4.5.4-instance-7

> final variable can only be assigned to once

> Expected 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}

Test Case: 4.5.4-instance-8

> final variable must be assigned before it can be used

> Expected 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}

Test Case: 4.5.4-instance-9

> blank final variable must be assigned in every constructor

> Expected 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}

Test Case: 4.5.4-instance-10

> final variable can only be assigned to once

> Expected 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}

Test Case: 4.5.4-static-1

> final variable must be definitely assigned

> Expected 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}

Test Case: 4.5.4-static-2

> final variable must be definitely assigned

> Expected 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}

Test Case: 4.5.4-static-3

> final variable must be definitely assigned

> Expected 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}

Test Case: 4.5.4-static-4

> final variable can only be assigned to once

> Expected 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}

Test Case: 4.5.4-static-5

> final variable must be assigned before it can be used

> Expected 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}

Test Case: 4.5.4-static-6

> final variable can only be assigned to once

> Expected 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}

Test Case: 4.5.4-reference-1

> a final variable can reference an Object, the reference can not change but the object being referenced can change

> Expected 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}

Test Case: 4.5.4-reference-2

> a final variable can reference an array, the elements of the array can be modified

> Expected 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}

Test Case: 4.5.4-9

> blank final variable must be assigned in every constructor

> Expected 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}

Test Case: 4.5.4-10

> blank final variable must be assigned in every constructor

> Expected 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}

Test Case: 4.5.4-local-1

> final may only be assigned once

> Expected 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}

Test Case: 4.5.4-local-2

> final may only be assigned once

> Expected 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}

Test Case: 4.5.4-local-3

> final variable can only be assigned to once

> Expected 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}

Test Case: 4.5.4-parameter-1

> final parameter may not be assigned

> Expected 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}

Test Case: 4.5.4-parameter-2

> final parameter may not be assigned

> Expected 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}

Test Case: 4.5.4-parameter-3

> final parameter may not be assigned

> Expected 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}

### 5.1.1

Directory : `tests/jls/conversions-and-promotions/kinds-of-conversion/identity-conversions`

- 5.1.1-primitive-1
- 5.1.1-primitive-2
- 5.1.1-primitive-3
- 5.1.1-primitive-4
- 5.1.1-primitive-5
- 5.1.1-primitive-6
- 5.1.1-primitive-7
- 5.1.1-primitive-8
- 5.1.1-reference-1
- 5.1.1-reference-2
- 5.1.1-reference-3
- 5.1.1-reference-4
- 5.1.1-reference-5
- 5.1.1-null-1

Test Case: 5.1.1-primitive-1

> boolean identity conversion

> Expected 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}

Test Case: 5.1.1-primitive-2

> byte identity conversion

> Expected 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}

Test Case: 5.1.1-primitive-3

> short identity conversion

> Expected 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}

Test Case: 5.1.1-primitive-4

> char identity conversion

> Expected 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}

Test Case: 5.1.1-primitive-5

> int identity conversion

> Expected 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}

Test Case: 5.1.1-primitive-6

> long identity conversion

> Expected 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}

Test Case: 5.1.1-primitive-7

> float identity conversion

> Expected 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}

Test Case: 5.1.1-primitive-8

> double identity conversion

> Expected 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}

Test Case: 5.1.1-reference-1

> reference identity conversion: Object

> Expected 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}

Test Case: 5.1.1-reference-2

> reference identity conversion: String

> Expected 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}

Test Case: 5.1.1-reference-3

> reference identity conversion: this class

> Expected 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}

Test Case: 5.1.1-reference-4

> reference identity conversion: primitive array

> Expected 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}

Test Case: 5.1.1-reference-5

> reference identity conversion: Object array

> Expected 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}

Test Case: 5.1.1-null-1

> there is no such thing as null identity conversion

> Expected 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}

### 5.1.2

Directory : `tests/jls/conversions-and-promotions/kinds-of-conversion/widening-primitive-conversions`

- 5.1.2-bts-1
- 5.1.2-bts-2
- 5.1.2-bts-3
- 5.1.2-bts-4
- 5.1.2-bts-5
- 5.1.2-bti-1
- 5.1.2-bti-2
- 5.1.2-bti-3
- 5.1.2-bti-4
- 5.1.2-bti-5
- 5.1.2-btl-1
- 5.1.2-btl-2
- 5.1.2-btl-3
- 5.1.2-btl-4
- 5.1.2-btl-5
- 5.1.2-btf-1
- 5.1.2-btf-2
- 5.1.2-btf-3
- 5.1.2-btf-4
- 5.1.2-btf-5
- 5.1.2-btd-1
- 5.1.2-btd-2
- 5.1.2-btd-3
- 5.1.2-btd-4
- 5.1.2-btd-5
- 5.1.2-sti-1
- 5.1.2-sti-2
- 5.1.2-sti-3
- 5.1.2-sti-4
- 5.1.2-sti-5
- 5.1.2-stl-1
- 5.1.2-stl-2
- 5.1.2-stl-3
- 5.1.2-stl-4
- 5.1.2-stl-5
- 5.1.2-stf-1
- 5.1.2-stf-2
- 5.1.2-stf-3
- 5.1.2-stf-4
- 5.1.2-stf-5
- 5.1.2-std-1
- 5.1.2-std-2
- 5.1.2-std-3
- 5.1.2-std-4
- 5.1.2-std-5
- 5.1.2-cti-1
- 5.1.2-cti-2
- 5.1.2-cti-3
- 5.1.2-cti-4
- 5.1.2-cti-5
- 5.1.2-cti-6
- 5.1.2-cti-7
- 5.1.2-cti-8
- 5.1.2-cti-9
- 5.1.2-ctl-1
- 5.1.2-ctl-2
- 5.1.2-ctl-3
- 5.1.2-ctl-4
- 5.1.2-ctl-5
- 5.1.2-ctl-6
- 5.1.2-ctl-7
- 5.1.2-ctl-8
- 5.1.2-ctl-9
- 5.1.2-ctf-1
- 5.1.2-ctf-2
- 5.1.2-ctf-3
- 5.1.2-ctf-4
- 5.1.2-ctf-5
- 5.1.2-ctf-6
- 5.1.2-ctf-7
- 5.1.2-ctf-8
- 5.1.2-ctf-9
- 5.1.2-ctd-1
- 5.1.2-ctd-2
- 5.1.2-ctd-3
- 5.1.2-ctd-4
- 5.1.2-ctd-5
- 5.1.2-ctd-6
- 5.1.2-ctd-7
- 5.1.2-ctd-8
- 5.1.2-ctd-9
- 5.1.2-itl-1
- 5.1.2-itl-2
- 5.1.2-itl-3
- 5.1.2-itl-4
- 5.1.2-itl-5
- 5.1.2-itf-1
- 5.1.2-itf-2
- 5.1.2-itf-3
- 5.1.2-itf-4
- 5.1.2-itf-5
- 5.1.2-itf-6
- 5.1.2-itf-7
- 5.1.2-itf-8
- 5.1.2-itf-9
- 5.1.2-itd-1
- 5.1.2-itd-2
- 5.1.2-itd-3
- 5.1.2-itd-4
- 5.1.2-itd-5
- 5.1.2-ltf-1
- 5.1.2-ltf-2
- 5.1.2-ltf-3
- 5.1.2-ltf-4
- 5.1.2-ltf-5
- 5.1.2-ltf-6
- 5.1.2-ltf-7
- 5.1.2-ltf-8
- 5.1.2-ltf-9
- 5.1.2-ltf-10
- 5.1.2-ltf-11
- 5.1.2-ltf-12
- 5.1.2-ltd-1
- 5.1.2-ltd-2
- 5.1.2-ltd-3
- 5.1.2-ltd-4
- 5.1.2-ltd-5
- 5.1.2-ltd-6
- 5.1.2-ltd-7
- 5.1.2-ltd-8
- 5.1.2-ltd-9
- 5.1.2-ftd-1
- 5.1.2-ftd-2
- 5.1.2-ftd-3
- 5.1.2-ftd-4
- 5.1.2-ftd-5
- 5.1.2-ftd-6
- 5.1.2-ftd-7
- 5.1.2-ftd-8
- 5.1.2-ftd-9

Test Case: 5.1.2-bts-1

> byte to short conversion never loses information

> Expected 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}

Test Case: 5.1.2-bts-2

> byte to short boundary case

> Expected 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}

Test Case: 5.1.2-bts-3

> byte to short boundary case

> Expected 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}

Test Case: 5.1.2-bts-4

> byte to short boundary case

> Expected 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}

Test Case: 5.1.2-bts-5

> byte to short boundary case

> Expected 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}

Test Case: 5.1.2-bti-1

> byte to int conversion never loses information

> Expected 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}

Test Case: 5.1.2-bti-2

> byte to int boundary case

> Expected 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}

Test Case: 5.1.2-bti-3

> byte to int boundary case

> Expected 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}

Test Case: 5.1.2-bti-4

> byte to int boundary case

> Expected 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}

Test Case: 5.1.2-bti-5

> byte to int boundary case

> Expected 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}

Test Case: 5.1.2-btl-1

> byte to long conversion never loses information

> Expected 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}

Test Case: 5.1.2-btl-2

> byte to long boundary case

> Expected 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}

Test Case: 5.1.2-btl-3

> byte to long boundary case

> Expected 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}

Test Case: 5.1.2-btl-4

> byte to long boundary case

> Expected 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}

Test Case: 5.1.2-btl-5

> byte to long boundary case

> Expected 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}

Test Case: 5.1.2-btf-1

> byte to float conversion never loses information

> Expected 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}

Test Case: 5.1.2-btf-2

> byte to float boundary case

> Expected 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}

Test Case: 5.1.2-btf-3

> byte to float boundary case

> Expected 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}

Test Case: 5.1.2-btf-4

> byte to float boundary case

> Expected 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}

Test Case: 5.1.2-btf-5

> byte to float boundary case

> Expected 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}

Test Case: 5.1.2-btd-1

> byte to double conversion never loses information

> Expected 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}

Test Case: 5.1.2-btd-2

> byte to double boundary case

> Expected 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}

Test Case: 5.1.2-btd-3

> byte to double boundary case

> Expected 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}

Test Case: 5.1.2-btd-4

> byte to double boundary case

> Expected 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}

Test Case: 5.1.2-btd-5

> byte to double boundary case

> Expected 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}

Test Case: 5.1.2-sti-1

> short to int conversion never loses information

> Expected 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}

Test Case: 5.1.2-sti-2

> short to int boundary case

> Expected 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}

Test Case: 5.1.2-sti-3

> short to int boundary case

> Expected 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}

Test Case: 5.1.2-sti-4

> short to int boundary case

> Expected 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}

Test Case: 5.1.2-sti-5

> short to int boundary case

> Expected 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}

Test Case: 5.1.2-stl-1

> short to long conversion never loses information

> Expected 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}

Test Case: 5.1.2-stl-2

> short to long boundary case

> Expected 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}

Test Case: 5.1.2-stl-3

> short to long boundary case

> Expected 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}

Test Case: 5.1.2-stl-4

> short to long boundary case

> Expected 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}

Test Case: 5.1.2-stl-5

> short to long boundary case

> Expected 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}

Test Case: 5.1.2-stf-1

> short to float conversion never loses information

> Expected 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}

Test Case: 5.1.2-stf-2

> short to float boundary case

> Expected 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}

Test Case: 5.1.2-stf-3

> short to float boundary case

> Expected 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}

Test Case: 5.1.2-stf-4

> short to float boundary case

> Expected 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}

Test Case: 5.1.2-stf-5

> short to float boundary case

> Expected 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}

Test Case: 5.1.2-std-1

> short to double conversion never loses information

> Expected 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}

Test Case: 5.1.2-std-2

> short to double boundary case

> Expected 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}

Test Case: 5.1.2-std-3

> short to double boundary case

> Expected 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}

Test Case: 5.1.2-std-4

> short to double boundary case

> Expected 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}

Test Case: 5.1.2-std-5

> short to double boundary case

> Expected 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}

Test Case: 5.1.2-cti-1

> char to int conversion never loses information

> Expected 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}

Test Case: 5.1.2-cti-2

> char to int boundary case

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 5.1.2-cti-2 { char to int boundary case } {

>         constant_expression T512cti2 {(int)'\uffff' == 0xffff}

>     } {PASS}

Test Case: 5.1.2-cti-3

> char to int boundary case

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 5.1.2-cti-3 { char to int boundary case } {

>         constant_expression T512cti3 {(int)'\0' == 0}

>     } {PASS}

Test Case: 5.1.2-cti-4

> char to int boundary case

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 5.1.2-cti-4 { char to int boundary case } {

>         constant_expression T512cti4 {(int)'\u7fff' == 0x7fff}

>     } {PASS}

Test Case: 5.1.2-cti-5

> char to int boundary case

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 5.1.2-cti-5 { char to int boundary case } {

>         constant_expression T512cti5 {(int)'\u8000' == 0x8000}

>     } {PASS}

Test Case: 5.1.2-cti-6

> char to int boundary case

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 5.1.2-cti-6 { char to int boundary case } {

>         constant_expression T512cti6 {(int)'\177' == 0x7f}

>     } {PASS}

Test Case: 5.1.2-cti-7

> char to int boundary case

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 5.1.2-cti-7 { char to int boundary case } {

>         constant_expression T512cti7 {(int)'\200' == 0x80}

>     } {PASS}

Test Case: 5.1.2-cti-8

> char to int boundary case

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 5.1.2-cti-8 { char to int boundary case } {

>         constant_expression T512cti8 {(int)'\377' == 0xff}

>     } {PASS}

Test Case: 5.1.2-cti-9

> char to int boundary case

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 5.1.2-cti-9 { char to int boundary case } {

>         constant_expression T512cti9 {(int)'\u0100' == 0x100}

>     } {PASS}

Test Case: 5.1.2-ctl-1

> char to long conversion never loses information

> Expected 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}

Test Case: 5.1.2-ctl-2

> char to long boundary case

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 5.1.2-ctl-2 { char to long boundary case } {

>         constant_expression T512ctl2 {(long)'\uffff' == 0xffffL}

>     } {PASS}

Test Case: 5.1.2-ctl-3

> char to long boundary case

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 5.1.2-ctl-3 { char to long boundary case } {

>         constant_expression T512ctl3 {(long)'\0' == 0L}

>     } {PASS}

Test Case: 5.1.2-ctl-4

> char to long boundary case

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 5.1.2-ctl-4 { char to long boundary case } {

>         constant_expression T512ctl4 {(long)'\u7fff' == 0x7fffL}

>     } {PASS}

Test Case: 5.1.2-ctl-5

> char to long boundary case

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 5.1.2-ctl-5 { char to long boundary case } {

>         constant_expression T512ctl5 {(long)'\u8000' == 0x8000L}

>     } {PASS}

Test Case: 5.1.2-ctl-6

> char to long boundary case

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 5.1.2-ctl-6 { char to long boundary case } {

>         constant_expression T512ctl6 {(long)'\177' == 0x7fL}

>     } {PASS}

Test Case: 5.1.2-ctl-7

> char to long boundary case

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 5.1.2-ctl-7 { char to long boundary case } {

>         constant_expression T512ctl7 {(long)'\200' == 0x80L}

>     } {PASS}

Test Case: 5.1.2-ctl-8

> char to long boundary case

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 5.1.2-ctl-8 { char to long boundary case } {

>         constant_expression T512ctl8 {(long)'\377' == 0xffL}

>     } {PASS}

Test Case: 5.1.2-ctl-9

> char to long boundary case

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 5.1.2-ctl-9 { char to long boundary case } {

>         constant_expression T512ctl9 {(int)'\u0100' == 0x100L}

>     } {PASS}

Test Case: 5.1.2-ctf-1

> char to float conversion never loses information

> Expected 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}

Test Case: 5.1.2-ctf-2

> char to float boundary case

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 5.1.2-ctf-2 { char to float boundary case } {

>         constant_expression T512ctf2 {(float)'\uffff' == 65535.0f}

>     } {PASS}

Test Case: 5.1.2-ctf-3

> char to float boundary case

> Expected 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}

Test Case: 5.1.2-ctf-4

> char to float boundary case

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 5.1.2-ctf-4 { char to float boundary case } {

>         constant_expression T512ctf4 {(float)'\u7fff' == 32767.0f}

>     } {PASS}

Test Case: 5.1.2-ctf-5

> char to float boundary case

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 5.1.2-ctf-5 { char to float boundary case } {

>         constant_expression T512ctf5 {(float)'\u8000' == 32768.0f}

>     } {PASS}

Test Case: 5.1.2-ctf-6

> char to float boundary case

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 5.1.2-ctf-6 { char to float boundary case } {

>         constant_expression T512ctf6 {(float)'\177' == 127.0f}

>     } {PASS}

Test Case: 5.1.2-ctf-7

> char to float boundary case

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 5.1.2-ctf-7 { char to float boundary case } {

>         constant_expression T512ctf7 {(float)'\200' == 128.0f}

>     } {PASS}

Test Case: 5.1.2-ctf-8

> char to float boundary case

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 5.1.2-ctf-8 { char to float boundary case } {

>         constant_expression T512ctf8 {(float)'\377' == 255.0f}

>     } {PASS}

Test Case: 5.1.2-ctf-9

> char to float boundary case

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 5.1.2-ctf-9 { char to float boundary case } {

>         constant_expression T512ctf9 {(float)'\u0100' == 256.0f}

>     } {PASS}

Test Case: 5.1.2-ctd-1

> char to double conversion never loses information

> Expected 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}

Test Case: 5.1.2-ctd-2

> char to double boundary case

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 5.1.2-ctd-2 { char to double boundary case } {

>         constant_expression T512ctd2 {(double)'\uffff' == 65535.0}

>     } {PASS}

Test Case: 5.1.2-ctd-3

> char to double boundary case

> Expected 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}

Test Case: 5.1.2-ctd-4

> char to double boundary case

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 5.1.2-ctd-4 { char to double boundary case } {

>         constant_expression T512ctd4 {(double)'\u7fff' == 32767.0}

>     } {PASS}

Test Case: 5.1.2-ctd-5

> char to double boundary case

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 5.1.2-ctd-5 { char to double boundary case } {

>         constant_expression T512ctd5 {(double)'\u8000' == 32768.0}

>     } {PASS}

Test Case: 5.1.2-ctd-6

> char to double boundary case

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 5.1.2-ctd-6 { char to double boundary case } {

>         constant_expression T512ctd6 {(double)'\177' == 127.0}

>     } {PASS}

Test Case: 5.1.2-ctd-7

> char to double boundary case

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 5.1.2-ctd-7 { char to double boundary case } {

>         constant_expression T512ctd7 {(double)'\200' == 128.0}

>     } {PASS}

Test Case: 5.1.2-ctd-8

> char to double boundary case

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 5.1.2-ctd-8 { char to double boundary case } {

>         constant_expression T512ctd8 {(double)'\377' == 255.0}

>     } {PASS}

Test Case: 5.1.2-ctd-9

> char to double boundary case

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 5.1.2-ctd-9 { char to double boundary case } {

>         constant_expression T512ctd9 {(double)'\u0100' == 256.0}

>     } {PASS}

Test Case: 5.1.2-itl-1

> int to long conversion never loses information

> Expected 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}

Test Case: 5.1.2-itl-2

> int to long boundary case

> Expected 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}

Test Case: 5.1.2-itl-3

> int to long boundary case

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 5.1.2-itl-3 { int to long boundary case } {

>         constant_expression T512itl3 {(long)0 == 0L}

>     } {PASS}

Test Case: 5.1.2-itl-4

> int to long boundary case

> Expected 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}

Test Case: 5.1.2-itl-5

> int to long boundary case

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 5.1.2-itl-5 { int to long boundary case } {

>         constant_expression T512itl5 {(long)-1 == 0xffffffffffffffffL}

>     } {PASS}

Test Case: 5.1.2-itf-1

> int to float conversion may lose precision

> Expected 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}

Test Case: 5.1.2-itf-2

> int to float conversion rounds down to nearest if remainder < .5

> Expected 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}

Test Case: 5.1.2-itf-3

> int to float conversion rounds up to nearest if remainder > .5

> Expected 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}

Test Case: 5.1.2-itf-4

> int to float conversion rounds to least significant bit 0 if remainder = .5

> Expected 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}

Test Case: 5.1.2-itf-5

> int to float conversion rounds to least significant bit 0 if remainder = .5

> Expected 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}

Test Case: 5.1.2-itf-6

> int to float boundary case

> Expected 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}

Test Case: 5.1.2-itf-7

> int to float boundary case

> Expected 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}

Test Case: 5.1.2-itf-8

> int to float boundary case

> Expected 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}

Test Case: 5.1.2-itf-9

> int to float boundary case

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 5.1.2-itf-9 { int to float boundary case } {

>         constant_expression T512itf9 {(float)-1 == -1.0f}

>     } {PASS}

Test Case: 5.1.2-itd-1

> int to double conversion never loses precision

> Expected 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}

Test Case: 5.1.2-itd-2

> int to double boundary case

> Expected 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}

Test Case: 5.1.2-itd-3

> int to double boundary case

> Expected 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}

Test Case: 5.1.2-itd-4

> int to double boundary case

> Expected 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}

Test Case: 5.1.2-itd-5

> int to double boundary case

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 5.1.2-itd-5 { int to double boundary case } {

>         constant_expression T512itd5 {(double)-1 == -1.0}

>     } {PASS}

Test Case: 5.1.2-ltf-1

> long to float conversion may lose precision

> Expected 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}

Test Case: 5.1.2-ltf-2

> long to float conversion rounds down to nearest if remainder < .5

> Expected 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}

Test Case: 5.1.2-ltf-3

> long to float conversion rounds up to nearest if remainder > .5

> Expected 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}

Test Case: 5.1.2-ltf-4

> long to float conversion rounds to least significant bit 0 if remainder = .5

> Expected 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}

Test Case: 5.1.2-ltf-5

> long to float conversion rounds to least significant bit 0 if remainder = .5

> Expected 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}

Test Case: 5.1.2-ltf-6

> long to float conversion rounds down to nearest if remainder < .5

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 5.1.2-ltf-8

> long to float boundary case

> Expected 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}

Test Case: 5.1.2-ltf-9

> long to float boundary case

> Expected 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}

Test Case: 5.1.2-ltf-10

> long to float boundary case

> Expected 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}

Test Case: 5.1.2-ltf-11

> long to float boundary case

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 5.1.2-ltf-11 { long to float boundary case } {

>         constant_expression T512ltf11 {(float)-1L == -1.0f}

>     } {PASS}

Test Case: 5.1.2-ltf-12

> long to float conversion rounds up to nearest if remainder > .5

> Expected 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}

Test Case: 5.1.2-ltd-1

> long to double conversion may lose precision

> Expected 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}

Test Case: 5.1.2-ltd-2

> long to double conversion rounds down to nearest if remainder < .5

> Expected 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}

Test Case: 5.1.2-ltd-3

> long to double conversion rounds up to nearest if remainder > .5

> Expected 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}

Test Case: 5.1.2-ltd-4

> long to double conversion rounds to least significant bit 0 if remainder = .5

> Expected 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}

Test Case: 5.1.2-ltd-5

> long to double conversion rounds to least significant bit 0 if remainder = .5

> Expected 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}

Test Case: 5.1.2-ltd-6

> long to double boundary case

> Expected 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}

Test Case: 5.1.2-ltd-7

> long to double boundary case

> Expected 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}

Test Case: 5.1.2-ltd-8

> long to float boundary case

> Expected 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}

Test Case: 5.1.2-ltd-9

> long to float boundary case

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 5.1.2-ltd-9 { long to float boundary case } {

>         constant_expression T512ltd9 {(double)-1L == -1.0}

>     } {PASS}

Test Case: 5.1.2-ftd-1

> float to double conversion never loses precision

> Expected 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}

Test Case: 5.1.2-ftd-2

> float to double boundary case

> Expected 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}

Test Case: 5.1.2-ftd-3

> float to double boundary case

> Expected 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}

Test Case: 5.1.2-ftd-4

> float to double boundary case

> Expected 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}

Test Case: 5.1.2-ftd-5

> float to double boundary case

> Expected 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}

Test Case: 5.1.2-ftd-6

> float to double boundary case

> Expected 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}

Test Case: 5.1.2-ftd-7

> float to double boundary case

> Expected 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}

Test Case: 5.1.2-ftd-8

> float to double boundary case

> Expected 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}

Test Case: 5.1.2-ftd-9

> float to double on a negative

> Expected 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}

### 5.1.3

Directory : `tests/jls/conversions-and-promotions/kinds-of-conversion/narrowing-primitive-conversions`

- 5.1.3-nan-1
- 5.1.3-nan-2
- 5.1.3-nan-3
- 5.1.3-nan-4
- 5.1.3-nan-5
- 5.1.3-dtf-1
- 5.1.3-dtf-2
- 5.1.3-dtf-3
- 5.1.3-dtf-4
- 5.1.3-dtf-5
- 5.1.3-dtf-6
- 5.1.3-dtf-7
- 5.1.3-dtl-1
- 5.1.3-dtl-2
- 5.1.3-dtl-3
- 5.1.3-dtl-4
- 5.1.3-dti-1
- 5.1.3-dti-2
- 5.1.3-dti-3
- 5.1.3-dti-4
- 5.1.3-ftl-1
- 5.1.3-ftl-2
- 5.1.3-ftl-3
- 5.1.3-ftl-4
- 5.1.3-fti-1
- 5.1.3-fti-2
- 5.1.3-fti-3
- 5.1.3-fti-4

Test Case: 5.1.3-nan-1

> narrowing from float NaN to int produces 0

> Expected 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}

Test Case: 5.1.3-nan-2

> narrowing from double NaN to int produces 0

> Expected 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}

Test Case: 5.1.3-nan-3

> narrowing from float NaN to long produces 0

> Expected 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}

Test Case: 5.1.3-nan-4

> narrowing from double NaN to long produces 0

> Expected 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}

Test Case: 5.1.3-nan-5

> narrowing from double NaN to float produces NaN

> Expected 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}

Test Case: 5.1.3-dtf-1

> narrowing from double to float can overflow

> Expected 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}

Test Case: 5.1.3-dtf-2

> narrowing from double to float can underflow

> Expected 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}

Test Case: 5.1.3-dtf-3

> narrowing from double to float rounds down if remainder < .5

> Expected 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}

Test Case: 5.1.3-dtf-4

> narrowing from double to float rounds up if remainder > .5

> Expected 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}

Test Case: 5.1.3-dtf-5

> narrowing from double to float rounds to lsb 0 if remainder == .5

> Expected 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}

Test Case: 5.1.3-dtf-6

> narrowing from double to float rounds to lsb 0 if remainder == .5

> Expected 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}

Test Case: 5.1.3-dtf-7

> narrowing from double to denorm float rounds to nearest

> Expected 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}

Test Case: 5.1.3-dtl-1

> narrowing from double to long truncates

> Expected 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}

Test Case: 5.1.3-dtl-2

> narrowing from double to long truncates

> Expected 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}

Test Case: 5.1.3-dtl-3

> narrowing from double to long truncates

> Expected 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}

Test Case: 5.1.3-dtl-4

> narrowing from double to long truncates

> Expected 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}

Test Case: 5.1.3-dti-1

> narrowing from double to int truncates

> Expected 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}

Test Case: 5.1.3-dti-2

> narrowing from double to int truncates

> Expected 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}

Test Case: 5.1.3-dti-3

> narrowing from double to int truncates

> Expected 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}

Test Case: 5.1.3-dti-4

> narrowing from double to int truncates

> Expected 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}

Test Case: 5.1.3-ftl-1

> narrowing from float to long truncates

> Expected 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}

Test Case: 5.1.3-ftl-2

> narrowing from float to long truncates

> Expected 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}

Test Case: 5.1.3-ftl-3

> narrowing from float to long truncates

> Expected 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}

Test Case: 5.1.3-ftl-4

> narrowing from float to long truncates

> Expected 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}

Test Case: 5.1.3-fti-1

> narrowing from float to int truncates

> Expected 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}

Test Case: 5.1.3-fti-2

> narrowing from float to int truncates

> Expected 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}

Test Case: 5.1.3-fti-3

> narrowing from float to int truncates

> Expected 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}

Test Case: 5.1.3-fti-4

> narrowing from float to int truncates

> Expected 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}

### 5.2

Directory : `tests/jls/conversions-and-promotions/assignment-conversion`

- 5.2-byte-identity-1
- 5.2-byte-widening-1
- 5.2-byte-widening-2
- 5.2-byte-widening-3
- 5.2-byte-widening-4
- 5.2-byte-widening-5
- 5.2-byte-narrowing-1
- 5.2-byte-narrowing-error-1
- 5.2-byte-narrowing-error-2
- 5.2-short-identity-1
- 5.2-short-widening-1
- 5.2-short-widening-2
- 5.2-short-widening-3
- 5.2-short-widening-4
- 5.2-short-narrowing-1
- 5.2-short-narrowing-2
- 5.2-short-narrowing-error-1
- 5.2-short-narrowing-error-2
- 5.2-short-narrowing-error-3
- 5.2-char-identity-1
- 5.2-char-widening-1
- 5.2-char-widening-2
- 5.2-char-widening-3
- 5.2-char-widening-4
- 5.2-char-narrowing-1
- 5.2-char-narrowing-2
- 5.2-char-narrowing-error-1
- 5.2-char-narrowing-error-2
- 5.2-char-narrowing-error-3
- 5.2-int-identity-1
- 5.2-int-widening-1
- 5.2-int-widening-2
- 5.2-int-widening-3
- 5.2-int-narrowing-1
- 5.2-int-narrowing-2
- 5.2-int-narrowing-3
- 5.2-int-narrowing-error-1
- 5.2-int-narrowing-error-2
- 5.2-int-narrowing-error-3
- 5.2-int-narrowing-error-4
- 5.2-long-identity-1
- 5.2-long-widening-1
- 5.2-long-widening-2
- 5.2-long-narrowing-error-1
- 5.2-long-narrowing-error-2
- 5.2-long-narrowing-error-3
- 5.2-long-narrowing-error-4
- 5.2-float-identity-1
- 5.2-float-widening-1
- 5.2-float-narrowing-error-1
- 5.2-float-narrowing-error-2
- 5.2-float-narrowing-error-3
- 5.2-float-narrowing-error-4
- 5.2-float-narrowing-error-5
- 5.2-double-identity-1
- 5.2-double-narrowing-error-1
- 5.2-double-narrowing-error-2
- 5.2-double-narrowing-error-3
- 5.2-double-narrowing-error-4
- 5.2-double-narrowing-error-5
- 5.2-double-narrowing-error-6
- 5.2-boolean-identity-1
- 5.2-boolean-error-1
- 5.2-reference-identity-1
- 5.2-reference-widening-1
- 5.2-reference-widening-2
- 5.2-reference-error-1
- 5.2-reference-error-2
- 5.2-reference-error-3
- 5.2-interface-identity-1
- 5.2-interface-widening-1
- 5.2-interface-widening-2
- 5.2-interface-error-1
- 5.2-interface-error-2
- 5.2-interface-error-3
- 5.2-array-identity-1
- 5.2-array-widening-1
- 5.2-array-widening-2
- 5.2-array-error-1
- 5.2-array-error-2
- 5.2-array-error-3
- 5.2-array-error-4
- 5.2-array-error-5

Test Case: 5.2-byte-identity-1

> Assignment contexts allow the use of an identity conversion

> Expected 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}

Test Case: 5.2-byte-widening-1

> Assignment contexts allow the use of a widening primitive conversion

> Expected 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}

Test Case: 5.2-byte-widening-2

> Assignment contexts allow the use of a widening primitive conversion

> Expected 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}

Test Case: 5.2-byte-widening-3

> Assignment contexts allow the use of a widening primitive conversion

> Expected 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}

Test Case: 5.2-byte-widening-4

> Assignment contexts allow the use of a widening primitive conversion

> Expected 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}

Test Case: 5.2-byte-widening-5

> Assignment contexts allow the use of a widening primitive conversion

> Expected 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}

Test Case: 5.2-byte-narrowing-1

> Assignment conversion may narrow if a constant expression of type byte is assigned to a variable of type char

> Expected 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}

Test Case: 5.2-byte-narrowing-error-1

> Assignment conversion may not narrow if the expression is non-constant

> Expected 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}

Test Case: 5.2-byte-narrowing-error-2

> Assignment conversion may not narrow if the expression is not representable in the type of the variable

> Expected 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}

Test Case: 5.2-short-identity-1

> Assignment contexts allow the use of an identity conversion

> Expected 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}

Test Case: 5.2-short-widening-1

> Assignment contexts allow the use of a widening primitive conversion

> Expected 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}

Test Case: 5.2-short-widening-2

> Assignment contexts allow the use of a widening primitive conversion

> Expected 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}

Test Case: 5.2-short-widening-3

> Assignment contexts allow the use of a widening primitive conversion

> Expected 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}

Test Case: 5.2-short-widening-4

> Assignment contexts allow the use of a widening primitive conversion

> Expected 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}

Test Case: 5.2-short-narrowing-1

> Assignment conversion may narrow if a constant expression of type short is assigned to a variable of type byte

> Expected 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}

Test Case: 5.2-short-narrowing-2

> Assignment conversion may narrow if a constant expression of type short is assigned to a variable of type char

> Expected 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}

Test Case: 5.2-short-narrowing-error-1

> Assignment conversion may not narrow if the expression is non-constant

> Expected 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}

Test Case: 5.2-short-narrowing-error-2

> Assignment conversion may not narrow if the expression is not representable in the type of the variable

> Expected 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}

Test Case: 5.2-short-narrowing-error-3

> Assignment conversion may not narrow if the expression is not representable in the type of the variable

> Expected 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}

Test Case: 5.2-char-identity-1

> Assignment contexts allow the use of an identity conversion

> Expected 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}

Test Case: 5.2-char-widening-1

> Assignment contexts allow the use of a widening primitive conversion

> Expected 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}

Test Case: 5.2-char-widening-2

> Assignment contexts allow the use of a widening primitive conversion

> Expected 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}

Test Case: 5.2-char-widening-3

> Assignment contexts allow the use of a widening primitive conversion

> Expected 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}

Test Case: 5.2-char-widening-4

> Assignment contexts allow the use of a widening primitive conversion

> Expected 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}

Test Case: 5.2-char-narrowing-1

> Assignment conversion may narrow if a constant expression of type char is assigned to a variable of type byte

> Expected 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}

Test Case: 5.2-char-narrowing-2

> Assignment conversion may narrow if a constant expression of type char is assigned to a variable of type short

> Expected 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}

Test Case: 5.2-char-narrowing-error-1

> Assignment conversion may not narrow if the expression is non-constant

> Expected 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}

Test Case: 5.2-char-narrowing-error-2

> Assignment conversion may not narrow if the expression is not representable in the type of the variable

> Expected 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}

Test Case: 5.2-char-narrowing-error-3

> Assignment conversion may not narrow if the expression is not representable in the type of the variable

> Expected 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}

Test Case: 5.2-int-identity-1

> Assignment contexts allow the use of an identity conversion

> Expected 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}

Test Case: 5.2-int-widening-1

> Assignment contexts allow the use of a widening primitive conversion

> Expected 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}

Test Case: 5.2-int-widening-2

> Assignment contexts allow the use of a widening primitive conversion

> Expected 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}

Test Case: 5.2-int-widening-3

> Assignment contexts allow the use of a widening primitive conversion

> Expected 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}

Test Case: 5.2-int-narrowing-1

> Assignment conversion may narrow if a constant expression of type int is assigned to a variable of type byte

> Expected 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}

Test Case: 5.2-int-narrowing-2

> Assignment conversion may narrow if a constant expression of type int is assigned to a variable of type short

> Expected 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}

Test Case: 5.2-int-narrowing-3

> Assignment conversion may narrow if a constant expression of type int is assigned to a variable of type char

> Expected 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}

Test Case: 5.2-int-narrowing-error-1

> Assignment conversion may not narrow if the expression is non-constant

> Expected 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}

Test Case: 5.2-int-narrowing-error-2

> Assignment conversion may not narrow if the expression is not representable in the type of the variable

> Expected 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}

Test Case: 5.2-int-narrowing-error-3

> Assignment conversion may not narrow if the expression is not representable in the type of the variable

> Expected 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}

Test Case: 5.2-int-narrowing-error-4

> Assignment conversion may not narrow if the expression is not representable in the type of the variable

> Expected 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}

Test Case: 5.2-long-identity-1

> Assignment contexts allow the use of an identity conversion

> Expected 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}

Test Case: 5.2-long-widening-1

> Assignment contexts allow the use of a widening primitive conversion

> Expected 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}

Test Case: 5.2-long-widening-2

> Assignment contexts allow the use of a widening primitive conversion

> Expected 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}

Test Case: 5.2-long-narrowing-error-1

> Assignment conversion may not narrow an expression of type long

> Expected 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}

Test Case: 5.2-long-narrowing-error-2

> Assignment conversion may not narrow an expression of type long

> Expected 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}

Test Case: 5.2-long-narrowing-error-3

> Assignment conversion may not narrow an expression of type long

> Expected 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}

Test Case: 5.2-long-narrowing-error-4

> Assignment conversion may not narrow an expression of type long

> Expected 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}

Test Case: 5.2-float-identity-1

> Assignment contexts allow the use of an identity conversion

> Expected 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}

Test Case: 5.2-float-widening-1

> Assignment contexts allow the use of a widening primitive conversion

> Expected 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}

Test Case: 5.2-float-narrowing-error-1

> Assignment conversion may not narrow an expression of type float

> Expected 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}

Test Case: 5.2-float-narrowing-error-2

> Assignment conversion may not narrow an expression of type float

> Expected 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}

Test Case: 5.2-float-narrowing-error-3

> Assignment conversion may not narrow an expression of type float

> Expected 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}

Test Case: 5.2-float-narrowing-error-4

> Assignment conversion may not narrow an expression of type float

> Expected 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}

Test Case: 5.2-float-narrowing-error-5

> Assignment conversion may not narrow an expression of type float

> Expected 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}

Test Case: 5.2-double-identity-1

> Assignment contexts allow the use of an identity conversion

> Expected 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}

Test Case: 5.2-double-narrowing-error-1

> Assignment conversion may not narrow an expression of type double

> Expected 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}

Test Case: 5.2-double-narrowing-error-2

> Assignment conversion may not narrow an expression of type double

> Expected 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}

Test Case: 5.2-double-narrowing-error-3

> Assignment conversion may not narrow an expression of type double

> Expected 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}

Test Case: 5.2-double-narrowing-error-4

> Assignment conversion may not narrow an expression of type double

> Expected 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}

Test Case: 5.2-double-narrowing-error-5

> Assignment conversion may not narrow an expression of type double

> Expected 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}

Test Case: 5.2-double-narrowing-error-6

> Assignment conversion may not narrow an expression of type double

> Expected 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}

Test Case: 5.2-boolean-identity-1

> Assignment contexts allow the use of an identity conversion

> Expected 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}

Test Case: 5.2-boolean-error-1

> Assignment conversion cannot assign a boolean type to another type

> Expected 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}

Test Case: 5.2-reference-identity-1

> Assignment contexts allow the use of an identity conversion

> Expected 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}

Test Case: 5.2-reference-widening-1

> Assignment contexts allow the use of a widening reference conversion

> Expected 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}

Test Case: 5.2-reference-widening-2

> Assignment contexts allow the use of a widening reference conversion

> Expected 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}

Test Case: 5.2-reference-error-1

> Assignment conversion cannot assign a primitive type to a reference variable

> Expected 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}

Test Case: 5.2-reference-error-2

> Assignment conversion cannot narrow

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 5.2-reference-error-2 { Assignment conversion cannot narrow } {

>         empty_main T52re2 {
>             String s = new Object();
>         }

>     } {FAIL}

Test Case: 5.2-reference-error-3

> Assignment conversion cannot assign a different type to a reference variable

> Expected 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}

Test Case: 5.2-interface-identity-1

> Assignment contexts allow the use of an identity conversion

> Expected 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}

Test Case: 5.2-interface-widening-1

> Assignment contexts allow the use of a widening reference conversion

> Expected 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}

Test Case: 5.2-interface-widening-2

> Assignment contexts allow the use of a widening reference conversion

> Expected 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}

Test Case: 5.2-interface-error-1

> Assignment conversion cannot assign a primitive type to a reference variable

> Expected 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}

Test Case: 5.2-interface-error-2

> Assignment conversion cannot narrow

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 5.2-interface-error-2 { Assignment conversion cannot narrow } {

>         empty_main T52ie2 {
>             Cloneable c = "";
>         }

>     } {FAIL}

Test Case: 5.2-interface-error-3

> Assignment conversion cannot assign a different type to a reference variable

> Expected 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}

Test Case: 5.2-array-identity-1

> Assignment contexts allow the use of an identity conversion

> Expected 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}

Test Case: 5.2-array-widening-1

> Assignment contexts allow the use of a widening reference conversion

> Expected 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}

Test Case: 5.2-array-widening-2

> Assignment contexts allow the use of a widening reference conversion

> Expected 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}

Test Case: 5.2-array-error-1

> Assignment conversion cannot assign a primitive type to a reference variable

> Expected 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}

Test Case: 5.2-array-error-2

> Assignment conversion cannot narrow

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 5.2-array-error-2 { Assignment conversion cannot narrow } {

>         empty_main T52ae2 {
>             String[] s = new Object[0];
>         }

>     } {FAIL}

Test Case: 5.2-array-error-3

> Assignment conversion cannot assign a different type to a reference variable

> Expected 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}

Test Case: 5.2-array-error-4

> Assignment conversion cannot assign a array with a different primitive base type

> Expected 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}

Test Case: 5.2-array-error-5

> Assignment conversion cannot assign a array with a primitive base type to an object array

> Expected 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}

### 6.2

Directory : `tests/jls/names/names-and-identifiers`

- 6.2-identifier-1
- 6.2-identifier-2
- 6.2-identifier-3
- 6.2-identifier-4
- 6.2-identifier-5
- 6.2-identifier-6
- 6.2-identifier-7
- 6.2-identifier-8
- 6.2-identifier-9
- 6.2-identifier-10
- 6.2-identifier-11
- 6.2-example-1
- 6.2-example-2

Test Case: 6.2-identifier-1

> Declarations expect an identifier, not a qualified name

> Expected 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}

Test Case: 6.2-identifier-2

> Declarations expect an identifier, not a qualified name

> Expected 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}

Test Case: 6.2-identifier-3

> Declarations expect an identifier, not a qualified name

> Expected 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}

Test Case: 6.2-identifier-4

> Declarations expect an identifier, not a qualified name

> Expected 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}

Test Case: 6.2-identifier-5

> Declarations expect an identifier, not a qualified name

> Expected 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}

Test Case: 6.2-identifier-6

> Declarations expect an identifier, not a qualified name

> Expected 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}

Test Case: 6.2-identifier-7

> Declarations expect an identifier, not a qualified name

> Expected 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}

Test Case: 6.2-identifier-8

> Declarations expect an identifier, not a qualified name

> Expected 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}

Test Case: 6.2-identifier-9

> Labels expect an identifier, not a qualified name

> Expected 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}

Test Case: 6.2-identifier-10

> Labels expect an identifier, not a qualified name

> Expected 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}

Test Case: 6.2-identifier-11

> Qualified class instance creation expects an identifier, not a qualified name

> Expected 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}

Test Case: 6.2-example-1

> First example from the specs

> Expected 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}

Test Case: 6.2-example-2

> Second example from the specs: labels are independent from other uses of names

> Expected 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}

### 6.3

Directory : `tests/jls/names/scope-of-a-declaration`

- 6.3-1
- 6.3-2
- 6.3-3
- 6.3-4

Test Case: 6.3-1

> symbol used in field initialization must be defined before it can be used

> Expected 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}

Test Case: 6.3-2

> forward reference to a field outside of an initializer is legal

> Expected 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}

Test Case: 6.3-3

> use of a class before it is defined is legal

> Expected 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}

Test Case: 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

> Expected 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}

### 6.4.1

Directory : `tests/jls/names/members-and-inheritance/members-of-a-package`

- 6.4.1-class-member-1

Test Case: 6.4.1-class-member-1

> A class declared in a package is a member of that package

> Expected 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}

### 6.4.2

Directory : `tests/jls/names/members-and-inheritance/members-of-a-class-type`

- 6.4.2-1
- 6.4.2-2

Test Case: 6.4.2-1

> interface member reference can not be ambiguous

> Expected 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}

Test Case: 6.4.2-2

> a qualified reference is not ambiguous

> Expected 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}

### 6.4.3

Directory : `tests/jls/names/members-and-inheritance/members-of-an-interface-type`

- 6.4.3-1
- 6.4.3-2

Test Case: 6.4.3-1

> interface member reference can not be ambiguous

> Expected 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}

Test Case: 6.4.3-2

> a qualified reference is not ambiguous

> Expected 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}

### 6.4.4

Directory : `tests/jls/names/members-and-inheritance/members-of-an-array-type`

- 6.4.4-1
- 6.4.4-2
- 6.4.4-3

Test Case: 6.4.4-1

> An array object should be able to access methods defined in the java.lang.Object class

> Expected 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}

Test Case: 6.4.4-2

> the length member of an array is an int

> Expected 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}

Test Case: 6.4.4-3

> compile error on attempt to change array length member

> Expected 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}

### 6.5.1

Directory : `tests/jls/names/meaning-of-a-name/syntactic-classification`

- 6.5.1-type-1
- 6.5.1-type-2
- 6.5.1-type-3
- 6.5.1-type-4
- 6.5.1-type-5
- 6.5.1-type-6
- 6.5.1-type-7
- 6.5.1-type-8
- 6.5.1-type-9
- 6.5.1-type-10
- 6.5.1-type-11
- 6.5.1-type-12
- 6.5.1-type-13
- 6.5.1-type-14
- 6.5.1-type-15
- 6.5.1-type-16
- 6.5.1-type-17
- 6.5.1-type-18
- 6.5.1-type-19
- 6.5.1-typeorpackage-1
- 6.5.1-typeorpackage-2

Test Case: 6.5.1-type-1

> A name in an extends clause is a type name, not an ambiguous name

> Expected 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}

Test Case: 6.5.1-type-2

> A name in an implements clause is a type name, not an ambiguous name

> Expected 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}

Test Case: 6.5.1-type-3

> A name in an interface extends clause is a type name, not an ambiguous name

> Expected 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}

Test Case: 6.5.1-type-4

> A name in a field declaration is a type name, not an ambiguous name

> Expected 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}

Test Case: 6.5.1-type-5

> A name in the result type of a method is a type name, not an ambiguous name

> Expected 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}

Test Case: 6.5.1-type-6

> A name in a formal parameter is a type name, not an ambiguous name

> Expected 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}

Test Case: 6.5.1-type-7

> A name in a throws clause is a type name, not an ambiguous name

> Expected 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}

Test Case: 6.5.1-type-8

> A name in the type of a local variable is a type name, not an ambiguous name

> Expected 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}

Test Case: 6.5.1-type-9

> A name in an exception parameter is a type name, not an ambiguous name

> Expected 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}

Test Case: 6.5.1-type-10

> A name in a class literal is a type name, not an ambiguous name

> Expected 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}

Test Case: 6.5.1-type-11

> A name qualifying a this expression is a type name, not an ambiguous name

> Expected 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}

Test Case: 6.5.1-type-12

> A name in an unqualified class instance creation expression is a type name, not an ambiguous name

> Expected 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}

Test Case: 6.5.1-type-13

> A name in an unqualified anonymous class instance creation expression is a type name, not an ambiguous name

> Expected 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}

Test Case: 6.5.1-type-14

> A name as the element type of an array creation expression is a type name, not an ambiguous name

> Expected 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}

Test Case: 6.5.1-type-15

> A name qualifying a super field access is a type name, not an ambiguous name

> Expected 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}

Test Case: 6.5.1-type-16

> A name qualifying a super method access is a type name, not an ambiguous name

> Expected 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}

Test Case: 6.5.1-type-17

> A name in a cast operator is a type name, not an ambiguous name

> Expected 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}

Test Case: 6.5.1-type-18

> A name following the instanceof operator is a type name, not an ambiguous name

> Expected 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}

Test Case: 6.5.1-type-19

> A name in a single type import is a type name, not an ambiguous name

> Expected 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}

Test Case: 6.5.1-typeorpackage-1

> A typename qualifier is a typeorpackage name, not an ambiguous name

> Expected 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}

Test Case: 6.5.1-typeorpackage-2

> An import-on-demand name is a typeorpackage name, not an ambiguous name

> Expected 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}

### 6.5.2

Directory : `tests/jls/names/meaning-of-a-name/reclassification`

- 6.5.2-simple-1
- 6.5.2-simple-2
- 6.5.2-simple-3
- 6.5.2-simple-4
- 6.5.2-simple-5
- 6.5.2-simple-6
- 6.5.2-qualified-1
- 6.5.2-qualified-2
- 6.5.2-qualified-3
- 6.5.2-qualified-4
- 6.5.2-qualified-5
- 6.5.2-qualified-6
- 6.5.2-qualified-7
- 6.5.2-qualified-8
- 6.5.2-qualified-9
- 6.5.2-qualified-10
- 6.5.2-qualified-11
- 6.5.2-qualified-12
- 6.5.2-example-1

Test Case: 6.5.2-simple-1

> A simple ambiguous name is reclassified as an expression name if it appears in the scope of any variable

> Expected 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}

Test Case: 6.5.2-simple-2

> A simple ambiguous name is reclassified as an expression name if it appears in the scope of any variable

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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)

> Expected 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}

Test Case: 6.5.2-example-1

> Example of ambiguous name resolution

> Expected 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}

### 6.5.3.1

Directory : `tests/jls/names/meaning-of-a-name/package-names/simple`

- 6.5.3.1-simple-1
- 6.5.3.1-simple-2

Test Case: 6.5.3.1-simple-1

> It is an error if there is no top-level package with the given simple package name

> Expected 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}

Test Case: 6.5.3.1-simple-2

> A simple package name denotes the top-level package which is in scope

> Expected 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}

### 6.5.3.2

Directory : `tests/jls/names/meaning-of-a-name/package-names/qualified`

- 6.5.3.2-qualified-1
- 6.5.3.2-qualified-2
- 6.5.3.2-qualified-3

Test Case: 6.5.3.2-qualified-1

> It is an error if there is not a member subpackage with the given qualified package name

> Expected 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}

Test Case: 6.5.3.2-qualified-2

> It is an error if the qualifier of a package name is not an observable package

> Expected 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}

Test Case: 6.5.3.2-qualified-3

> A qualified package name denotes the member subpackage of the qualifying package

> Expected 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}

### 6.5.4.1

Directory : `tests/jls/names/meaning-of-a-name/packageortypenames/simple`

- 6.5.4.1-simple-1
- 6.5.4.1-simple-2
- 6.5.4.1-simple-3
- 6.5.4.1-simple-4
- 6.5.4.1-simple-5
- 6.5.4.1-simple-6
- 6.5.4.1-simple-7
- 6.5.4.1-simple-8
- 6.5.4.1-simple-9
- 6.5.4.1-simple-10
- 6.5.4.1-simple-11

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

### 6.5.4.2

Directory : `tests/jls/names/meaning-of-a-name/packageortypenames/qualified`

- 6.5.4.2-qualified-1
- 6.5.4.2-qualified-2
- 6.5.4.2-qualified-3
- 6.5.4.2-qualified-4
- 6.5.4.2-qualified-5
- 6.5.4.2-qualified-6

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

### 6.5.5.1

Directory : `tests/jls/names/meaning-of-a-name/type-names/simple`

- 6.5.5.1-nested-1
- 6.5.5.1-nested-2
- 6.5.5.1-nested-3
- 6.5.5.1-nested-4
- 6.5.5.1-nested-5
- 6.5.5.1-nested-6
- 6.5.5.1-nested-7
- 6.5.5.1-nested-8
- 6.5.5.1-nested-9
- 6.5.5.1-nested-10
- 6.5.5.1-nested-11
- 6.5.5.1-nested-12
- 6.5.5.1-nested-13
- 6.5.5.1-nested-14
- 6.5.5.1-nested-15
- 6.5.5.1-nested-16
- 6.5.5.1-nested-17
- 6.5.5.1-nested-18
- 6.5.5.1-nested-19
- 6.5.5.1-nested-20
- 6.5.5.1-nested-21
- 6.5.5.1-nested-22
- 6.5.5.1-nested-23
- 6.5.5.1-import-1
- 6.5.5.1-import-2
- 6.5.5.1-import-3
- 6.5.5.1-import-4

Test Case: 6.5.5.1-nested-1

> A simple type name must occur in the scope of a type by that name

> Expected 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}

Test Case: 6.5.5.1-nested-2

> A simple type name favors a visible local class declaration over member types

> Expected 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}

Test Case: 6.5.5.1-nested-3

> A simple type name favors a visible local class declaration over member types

> Expected 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}

Test Case: 6.5.5.1-nested-4

> A simple type name favors a visible local class declaration over member types

> Expected 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}

Test Case: 6.5.5.1-nested-5

> A simple type name favors a visible local class declaration over member types

> Expected 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}

Test Case: 6.5.5.1-nested-6

> A simple type name must not have ambiguity in referring to visible member types

> Expected 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}

Test Case: 6.5.5.1-nested-7

> A simple type name must not have ambiguity in referring to visible member types

> Expected 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}

Test Case: 6.5.5.1-nested-8

> A simple type name must not have ambiguity in referring to visible member types

> Expected 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}

Test Case: 6.5.5.1-nested-9

> A simple type name must not have ambiguity in referring to visible member types

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 6.5.5.1-nested-16

> A simple type name favors a visible member type over top-level types in the same compilation unit

> Expected 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}

Test Case: 6.5.5.1-nested-17

> A simple type name favors a visible member type over top-level types in the same compilation unit

> Expected 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}

Test Case: 6.5.5.1-nested-18

> A simple type name favors a visible member type over top-level types in the same compilation unit

> Expected 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}

Test Case: 6.5.5.1-nested-19

> A simple type name favors a visible member type over top-level types in the same compilation unit

> Expected 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}

Test Case: 6.5.5.1-nested-20

> A simple type name favors a visible member type over top-level types in the same compilation unit

> Expected 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}

Test Case: 6.5.5.1-nested-21

> A simple type name favors a visible member type over top-level types in the same compilation unit

> Expected 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}

Test Case: 6.5.5.1-nested-22

> A simple type name favors a visible member type over top-level types in the same compilation unit

> Expected 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}

Test Case: 6.5.5.1-nested-23

> A simple type name must not have ambiguity in referring to visible member types

> Expected 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}

Test Case: 6.5.5.1-import-1

> A simple type name favors a single-type import over a top-level type in the same package

> Expected 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}

Test Case: 6.5.5.1-import-2

> A simple type name favors a single-type import over import-on-demand

> Expected 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}

Test Case: 6.5.5.1-import-3

> A simple type name favors a top-level type in the same package over import-on-demand

> Expected 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}

Test Case: 6.5.5.1-import-4

> A simple type name may not resolve to ambiguous types from import-on-demand

> Expected 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}

### 6.5.5.2

Directory : `tests/jls/names/meaning-of-a-name/type-names/qualified`

- 6.5.5.2-package-1
- 6.5.5.2-package-2
- 6.5.5.2-package-3
- 6.5.5.2-package-4
- 6.5.5.2-type-1
- 6.5.5.2-type-2
- 6.5.5.2-type-3
- 6.5.5.2-type-4
- 6.5.5.2-type-5
- 6.5.5.2-type-6
- 6.5.5.2-type-7
- 6.5.5.2-type-8
- 6.5.5.2-example-1

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 6.5.5.2-example-1

> Example in the specs

> Expected 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}

### 6.5.6.1

Directory : `tests/jls/names/meaning-of-a-name/expression-names/simple`

- 6.5.6.1-local-1
- 6.5.6.1-local-2
- 6.5.6.1-local-3
- 6.5.6.1-local-4
- 6.5.6.1-local-5
- 6.5.6.1-field-1
- 6.5.6.1-field-2
- 6.5.6.1-field-3
- 6.5.6.1-field-4
- 6.5.6.1-field-5
- 6.5.6.1-field-6
- 6.5.6.1-field-7
- 6.5.6.1-field-8
- 6.5.6.1-instance-1
- 6.5.6.1-instance-2
- 6.5.6.1-instance-3
- 6.5.6.1-instance-4
- 6.5.6.1-instance-5
- 6.5.6.1-explicit-constructor-1
- 6.5.6.1-explicit-constructor-2
- 6.5.6.1-explicit-constructor-3
- 6.5.6.1-explicit-constructor-4
- 6.5.6.1-explicit-constructor-5
- 6.5.6.1-example-1
- 6.5.6.1-example-2

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 6.5.6.1-instance-1

> An expression name which resolves to an instance field must not occur in a static context

> Expected 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}

Test Case: 6.5.6.1-instance-2

> An expression name which resolves to an instance field must not occur in a static context

> Expected 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}

Test Case: 6.5.6.1-instance-3

> An expression name which resolves to an instance field must not occur in a static context

> Expected 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}

Test Case: 6.5.6.1-instance-4

> An expression name which resolves to an instance field must not occur in a static context

> Expected 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}

Test Case: 6.5.6.1-instance-5

> An expression name which resolves to an instance field must not occur in a static context

> Expected 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}

Test Case: 6.5.6.1-explicit-constructor-1

> Cannot access instance fields from this class within an explicit constructor

> Expected 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}

Test Case: 6.5.6.1-explicit-constructor-2

> Cannot access instance fields from this class within an explicit constructor

> Expected 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}

Test Case: 6.5.6.1-explicit-constructor-3

> Cannot access instance fields from this class within an explicit constructor

> Expected 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}

Test Case: 6.5.6.1-explicit-constructor-4

> Cannot access instance fields from this class within an explicit constructor

> Expected 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}

Test Case: 6.5.6.1-explicit-constructor-5

> Cannot access instance fields from this class within an explicit constructor

> Expected 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}

Test Case: 6.5.6.1-example-1

> JLS example

> Expected 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}

Test Case: 6.5.6.1-example-2

> JLS example

> Expected 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}

### 6.5.6.2

Directory : `tests/jls/names/meaning-of-a-name/expression-names/qualified`

- 6.5.6.2-package-1
- 6.5.6.2-package-2
- 6.5.6.2-type-1
- 6.5.6.2-type-2
- 6.5.6.2-type-3
- 6.5.6.2-type-4
- 6.5.6.2-type-5
- 6.5.6.2-type-6
- 6.5.6.2-type-7
- 6.5.6.2-type-8
- 6.5.6.2-type-9
- 6.5.6.2-type-10
- 6.5.6.2-expression-1
- 6.5.6.2-expression-2
- 6.5.6.2-expression-3
- 6.5.6.2-expression-4
- 6.5.6.2-expression-5
- 6.5.6.2-expression-6
- 6.5.6.2-expression-7
- 6.5.6.2-expression-8

Test Case: 6.5.6.2-package-1

> A qualified expression name may not be qualified by a package name

> Expected 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}

Test Case: 6.5.6.2-package-2

> A qualified expression name may not be qualified by a package name

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 6.5.6.2-expression-8

> A qualified expression name may occur in a static context, even when it references an instance field

> Expected 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}

### 6.5.7.1

Directory : `tests/jls/names/meaning-of-a-name/method-names/simple`

- 6.5.7.1-simple-1
- 6.5.7.1-simple-2

Test Case: 6.5.7.1-simple-1

> A simple method name must name a method in the current type

> Expected 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}

Test Case: 6.5.7.1-simple-2

> A simple method name must name a method in the current type

> Expected 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}

### 6.5.7.2

Directory : `tests/jls/names/meaning-of-a-name/method-names/qualified`

- 6.5.7.2-package-1
- 6.5.7.2-package-2
- 6.5.7.2-type-1
- 6.5.7.2-type-2
- 6.5.7.2-type-3
- 6.5.7.2-expression-1
- 6.5.7.2-expression-2
- 6.5.7.2-expression-3

Test Case: 6.5.7.2-package-1

> A qualified method name may not be qualified by a package name

> Expected 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}

Test Case: 6.5.7.2-package-2

> A qualified method name may not be qualified by a package name

> Expected 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}

Test Case: 6.5.7.2-type-1

> A method name qualified by a type name must name at least one static method in the type

> Expected 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}

Test Case: 6.5.7.2-type-2

> A method name qualified by a type name must name at least one static method in the type

> Expected 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}

Test Case: 6.5.7.2-type-3

> A method name qualified by a type name must name at least one static method in the type

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

### 6.6.1

Directory : `tests/jls/names/access-control/determining-accessibility`

- 6.6.1-1
- 6.6.1-2
- 6.6.1-3
- 6.6.1-4
- 6.6.1-5
- 6.6.1-6
- 6.6.1-7
- 6.6.1-8
- 6.6.1-9
- 6.6.1-10
- 6.6.1-11
- 6.6.1-12
- 6.6.1-13
- 6.6.1-14
- 6.6.1-15
- 6.6.1-16
- 6.6.1-17
- 6.6.1-array-1
- 6.6.1-array-2
- 6.6.1-array-3
- 6.6.1-array-4
- 6.6.1-array-5
- 6.6.1-array-6
- 6.6.1-array-7
- 6.6.1-array-8
- 6.6.1-array-9
- 6.6.1-array-10
- 6.6.1-array-11
- 6.6.1-array-12
- 6.6.1-array-13
- 6.6.1-array-14
- 6.6.1-array-15
- 6.6.1-array-16
- 6.6.1-array-17
- 6.6.1-array-18
- 6.6.1-array-19
- 6.6.1-array-20
- 6.6.1-array-21
- 6.6.1-array-22
- 6.6.1-array-23
- 6.6.1-array-24
- 6.6.1-array-25
- 6.6.1-array-26
- 6.6.1-array-27
- 6.6.1-array-28
- 6.6.1-array-29
- 6.6.1-array-30
- 6.6.1-array-31
- 6.6.1-array-32
- 6.6.1-array-33
- 6.6.1-array-34
- 6.6.1-array-35
- 6.6.1-array-36

Test Case: 6.6.1-1

> A class declared public is accessible from outside the package

> Expected 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}

Test Case: 6.6.1-2

> A class declared public is accessible from outside the package when the .java source is loaded from the CLASSPATH

> Expected 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}

Test Case: 6.6.1-3

> A class declared public is accessible from outside the package when the .class file is loaded from the CLASSPATH

> Expected 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}

Test Case: 6.6.1-4

> An interface declared public is accessible from outside the package

> Expected 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}

Test Case: 6.6.1-5

> An interface declared public is accessible from outside the package when the .java source is loaded from the CLASSPATH

> Expected 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}

Test Case: 6.6.1-6

> An interface declared public is accessible from outside the package when the .class file is loaded from the CLASSPATH

> Expected 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}

Test Case: 6.6.1-7

> Access a public class from inside the package

> Expected 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}

Test Case: 6.6.1-8

> A class with default access is inaccessible from outside the package

> Expected 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}

Test Case: 6.6.1-9

> A class with default access is inaccessible from outside the package when the .java source is loaded from the CLASSPATH

> Expected 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}

Test Case: 6.6.1-10

> A class with default access is inaccessible from outside the package when the .class file is loaded from the CLASSPATH

> Expected 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}

Test Case: 6.6.1-11

> An interface with default access is inaccessible from outside the package

> Expected 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}

Test Case: 6.6.1-12

> An interface with default access is inaccessible from outside the package when the .java source is loaded from the CLASSPATH

> Expected 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}

Test Case: 6.6.1-13

> An interface with default access is inaccessible from outside the package when the .class file is loaded from the CLASSPATH

> Expected 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}

Test Case: 6.6.1-14

> Access a default class from inside the package

> Expected 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}

Test Case: 6.6.1-15

> A class field declared public is accessible from outside the package

> Expected 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}

Test Case: 6.6.1-16

> A class field declared public is accessible from outside the package when the .java source is loaded from the CLASSPATH

> Expected 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}

Test Case: 6.6.1-17

> A class field declared public is accessible from outside the package when the .class file is loaded from the CLASSPATH

> Expected 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}

Test Case: 6.6.1-array-1

> Arrays are exactly as accessible as their component type

> Expected 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}

Test Case: 6.6.1-array-2

> Arrays are exactly as accessible as their component type

> Expected 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}

Test Case: 6.6.1-array-3

> Arrays are exactly as accessible as their component type

> Expected 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}

Test Case: 6.6.1-array-4

> Arrays are exactly as accessible as their component type

> Expected 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}

Test Case: 6.6.1-array-5

> Arrays are exactly as accessible as their component type

> Expected 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}

Test Case: 6.6.1-array-6

> Arrays are exactly as accessible as their component type

> Expected 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}

Test Case: 6.6.1-array-7

> Arrays are exactly as accessible as their component type

> Expected 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}

Test Case: 6.6.1-array-8

> Arrays are exactly as accessible as their component type

> Expected 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}

Test Case: 6.6.1-array-9

> Arrays are exactly as accessible as their component type

> Expected 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}

Test Case: 6.6.1-array-10

> The public length field of an array is accessible only if the array class is accessible

> Expected 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}

Test Case: 6.6.1-array-11

> The public length field of an array is accessible only if the array class is accessible

> Expected 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}

Test Case: 6.6.1-array-12

> The public length field of an array is accessible only if the array class is accessible

> Expected 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}

Test Case: 6.6.1-array-13

> The public length field of an array is accessible only if the array class is accessible

> Expected 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}

Test Case: 6.6.1-array-14

> The public length field of an array is accessible only if the array class is accessible

> Expected 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}

Test Case: 6.6.1-array-15

> The public length field of an array is accessible only if the array class is accessible

> Expected 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}

Test Case: 6.6.1-array-16

> The public length field of an array is accessible only if the array class is accessible

> Expected 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}

Test Case: 6.6.1-array-17

> The public length field of an array is accessible only if the array class is accessible

> Expected 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}

Test Case: 6.6.1-array-18

> The public length field of an array is accessible only if the array class is accessible

> Expected 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}

Test Case: 6.6.1-array-19

> A public member method of an array is accessible only if the array class is accessible

> Expected 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}

Test Case: 6.6.1-array-20

> A public member method of an array is accessible only if the array class is accessible

> Expected 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}

Test Case: 6.6.1-array-21

> A public member method of an array is accessible only if the array class is accessible

> Expected 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}

Test Case: 6.6.1-array-22

> A public member method of an array is accessible only if the array class is accessible

> Expected 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}

Test Case: 6.6.1-array-23

> A public member method of an array is accessible only if the array class is accessible

> Expected 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}

Test Case: 6.6.1-array-24

> A public member method of an array is accessible only if the array class is accessible

> Expected 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}

Test Case: 6.6.1-array-25

> A public member method of an array is accessible only if the array class is accessible

> Expected 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}

Test Case: 6.6.1-array-26

> A public member method of an array is accessible only if the array class is accessible

> Expected 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}

Test Case: 6.6.1-array-27

> A public member method of an array is accessible only if the array class is accessible

> Expected 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}

Test Case: 6.6.1-array-28

> The public clone method of an array is accessible only if the array class is accessible

> Expected 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}

Test Case: 6.6.1-array-29

> The public clone method of an array is accessible only if the array class is accessible

> Expected 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}

Test Case: 6.6.1-array-30

> The public clone method of an array is accessible only if the array class is accessible

> Expected 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}

Test Case: 6.6.1-array-31

> The public clone method of an array is accessible only if the array class is accessible

> Expected 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}

Test Case: 6.6.1-array-32

> The public clone method of an array is accessible only if the array class is accessible

> Expected 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}

Test Case: 6.6.1-array-33

> The public clone method of an array is accessible only if the array class is accessible

> Expected 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}

Test Case: 6.6.1-array-34

> The public clone method of an array is accessible only if the array class is accessible

> Expected 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}

Test Case: 6.6.1-array-35

> The public clone method of an array is accessible only if the array class is accessible

> Expected 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}

Test Case: 6.6.1-array-36

> The public clone method of an array is accessible only if the array class is accessible

> Expected 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}

### 6.6.2.1

Directory : `tests/jls/names/access-control/details-on-protected-access/protected-member`

- 6.6.2.1-protected-static-field-1
- 6.6.2.1-protected-static-field-2
- 6.6.2.1-protected-static-field-3
- 6.6.2.1-protected-static-field-4
- 6.6.2.1-protected-static-field-5
- 6.6.2.1-protected-static-field-6
- 6.6.2.1-protected-static-field-7
- 6.6.2.1-protected-static-field-8
- 6.6.2.1-protected-instance-field-1
- 6.6.2.1-protected-instance-field-2
- 6.6.2.1-protected-instance-field-3
- 6.6.2.1-protected-instance-field-4
- 6.6.2.1-protected-instance-field-5
- 6.6.2.1-protected-instance-field-6
- 6.6.2.1-protected-instance-field-7
- 6.6.2.1-protected-instance-field-8
- 6.6.2.1-protected-static-method-1
- 6.6.2.1-protected-static-method-2
- 6.6.2.1-protected-static-method-3
- 6.6.2.1-protected-static-method-4
- 6.6.2.1-protected-static-method-5
- 6.6.2.1-protected-static-method-6
- 6.6.2.1-protected-static-method-7
- 6.6.2.1-protected-static-method-8
- 6.6.2.1-protected-instance-method-1
- 6.6.2.1-protected-instance-method-2
- 6.6.2.1-protected-instance-method-3
- 6.6.2.1-protected-instance-method-4
- 6.6.2.1-protected-instance-method-5
- 6.6.2.1-protected-instance-method-6
- 6.6.2.1-protected-instance-method-7
- 6.6.2.1-protected-instance-method-8
- 6.6.2.1-protected-type-1
- 6.6.2.1-protected-type-2
- 6.6.2.1-protected-type-3
- 6.6.2.1-protected-type-4
- 6.6.2.1-protected-type-5
- 6.6.2.1-protected-type-6
- 6.6.2.1-protected-type-7
- 6.6.2.1-protected-type-8

Test Case: 6.6.2.1-protected-static-field-1

> Access to a protected static field is legal in the same package

> Expected 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}

Test Case: 6.6.2.1-protected-static-field-2

> Access to a protected static field is illegal outside the package in a non-subclass

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 6.6.2.1-protected-instance-field-1

> Access to a protected instance field is legal in the same package

> Expected 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}

Test Case: 6.6.2.1-protected-instance-field-2

> Access to a protected instance field is illegal outside the package in a non-subclass

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 6.6.2.1-protected-static-method-1

> Access to a protected static method is legal in the same package

> Expected 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}

Test Case: 6.6.2.1-protected-static-method-2

> Access to a protected static method is illegal outside the package in a non-subclass

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 6.6.2.1-protected-instance-method-1

> Access to a protected instance method is legal in the same package

> Expected 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}

Test Case: 6.6.2.1-protected-instance-method-2

> Access to a protected instance method is illegal outside the package in a non-subclass

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 6.6.2.1-protected-type-1

> Access to a protected member type is legal in the same package

> Expected 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}

Test Case: 6.6.2.1-protected-type-2

> Access to a protected member type is illegal outside the package in a non-subclass

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

### 6.6.2.2

Directory : `tests/jls/names/access-control/details-on-protected-access/protected-constructor`

- 6.6.2.2-protected-superctor-1
- 6.6.2.2-protected-superctor-2
- 6.6.2.2-protected-superctor-3
- 6.6.2.2-protected-superctor-4
- 6.6.2.2-protected-superctor-5
- 6.6.2.2-protected-creation-1
- 6.6.2.2-protected-creation-2
- 6.6.2.2-protected-creation-3

Test Case: 6.6.2.2-protected-superctor-1

> A protected superconstructor may be always be accessed

> Expected 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}

Test Case: 6.6.2.2-protected-superctor-2

> A protected superconstructor may be always be accessed

> Expected 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}

Test Case: 6.6.2.2-protected-superctor-3

> A protected superconstructor may be always be accessed, even by an anonymous class

> Expected 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}

Test Case: 6.6.2.2-protected-superctor-4

> A protected superconstructor may be always be accessed, even by an anonymous class

> Expected 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}

Test Case: 6.6.2.2-protected-superctor-5

> A protected superconstructor may always be accessed, even by a inner member class

> Expected 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}

Test Case: 6.6.2.2-protected-creation-1

> A protected constructor may be accessed by instance creation in the same package

> Expected 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}

Test Case: 6.6.2.2-protected-creation-2

> A protected constructor may not be accessed by instance creation outside the same package

> Expected 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}

Test Case: 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

> Expected 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}

### 7.1

Directory : `tests/jls/packages/package-members`

- 7.1-unnamed-1
- 7.1-unnamed-2
- 7.1-unnamed-3
- 7.1-unnamed-4
- 7.1-named-1
- 7.1-named-2
- 7.1-named-3
- 7.1-named-4
- 7.1-named-5
- 7.1-named-6
- 7.1-named-7

Test Case: 7.1-unnamed-1

> The unnamed package may not contain duplicate members

> Expected 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}

Test Case: 7.1-unnamed-2

> The unnamed package may not contain duplicate members

> Expected 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}

Test Case: 7.1-unnamed-3

> The unnamed package may not contain duplicate members

> Expected 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}

Test Case: 7.1-unnamed-4

> The unnamed package may not contain duplicate members

> Expected 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}

Test Case: 7.1-named-1

> A named package may not contain duplicate members

> Expected 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}

Test Case: 7.1-named-2

> A named package may not contain duplicate members

> Expected 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}

Test Case: 7.1-named-3

> A named package may not contain duplicate members

> Expected 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}

Test Case: 7.1-named-4

> A named package may not contain duplicate members

> Expected 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}

Test Case: 7.1-named-5

> A named package may not contain duplicate members

> Expected 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}

Test Case: 7.1-named-6

> A named package may not contain duplicate members

> Expected 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}

Test Case: 7.1-named-7

> A named package may not contain duplicate members

> Expected 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}

### 7.3

Directory : `tests/jls/packages/compilation-units`

- 7.3-1
- 7.3-2
- 7.3-3
- 7.3-4
- 7.3-5
- 7.3-6
- 7.3-7
- 7.3-8
- 7.3-9
- 7.3-10
- 7.3-11
- 7.3-12
- 7.3-13

Test Case: 7.3-1

> A compilation unit may be empty

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 7.3-1 { A compilation unit may be empty } {

>         compile [saveas T731.java {}]

>     } {PASS}

Test Case: 7.3-2

> A compilation unit may contain only a package statement

> Expected 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}

Test Case: 7.3-3

> A compilation unit may contain only import statements

> Expected 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}

Test Case: 7.3-4

> A compilation unit may contain only a type declaration

> Expected 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}

Test Case: 7.3-5

> Type declarations are optional in compilation units

> Expected 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}

Test Case: 7.3-6

> Package declarations are optional in compilation units

> Expected 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}

Test Case: 7.3-7

> Import declarations are optional in compilation units

> Expected 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}

Test Case: 7.3-8

> Compilation units may contain package, import, and type-declarations

> Expected 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}

Test Case: 7.3-9

> package must come before import

> Expected 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}

Test Case: 7.3-10

> package must come before type-declarations

> Expected 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}

Test Case: 7.3-11

> import must come before type-declarations

> Expected 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}

Test Case: 7.3-12

> import must come before type-declarations, in this case, the extra ;

> Expected 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}

Test Case: 7.3-13

> Every compilation unit implicitly imports every public type from java.lang

> Expected 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}

### 7.4.1

Directory : `tests/jls/packages/package-declarations/named-packages`

- 7.4.1-1

Test Case: 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.

> 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}

### 7.4.2

Directory : `tests/jls/packages/package-declarations/unnamed-packages`

- 7.4.2-1
- 7.4.2-2
- 7.4.2-3
- 7.4.2-subpackage-1
- 7.4.2-subpackage-2

Test Case: 7.4.2-1

> Create a public class in the default package

> Expected 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}

Test Case: 7.4.2-2

> Extend a class in the default package with another class in default package

> Expected 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}

Test Case: 7.4.2-3

> Extend a class in the default package with another class in default package

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

### 7.5.1

Directory : `tests/jls/packages/import-declarations/single-type-import-declaration`

- 7.5.1-1
- 7.5.1-2
- 7.5.1-3
- 7.5.1-4
- 7.5.1-canonical-1
- 7.5.1-canonical-2
- 7.5.1-canonical-3
- 7.5.1-accessible-1
- 7.5.1-accessible-2
- 7.5.1-accessible-3
- 7.5.1-accessible-4
- 7.5.1-accessible-5
- 7.5.1-shadow-1
- 7.5.1-shadow-2
- 7.5.1-duplicate-1
- 7.5.1-duplicate-2
- 7.5.1-duplicate-3
- 7.5.1-duplicate-4
- 7.5.1-subpackage-1

Test Case: 7.5.1-1

> Doing an import of a class that does not exist should fail

> Expected 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}

Test Case: 7.5.1-2

> Cannot import from the unnamed package

> Expected 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}

Test Case: 7.5.1-3

> Importing a non-public class should fail

> Expected 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}

Test Case: 7.5.1-4

> Cannot import from the unnamed package

> Expected 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}

Test Case: 7.5.1-canonical-1

> A single-type import must give the canonical name of a class

> Expected 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}

Test Case: 7.5.1-canonical-2

> Imports use the canonical name, even if a prefix name exists in the current package or prior import

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 7.5.1-accessible-1

> A single-type import must name an accessible type

> Expected 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}

Test Case: 7.5.1-accessible-2

> A single-type import must name an accessible type

> Expected 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}

Test Case: 7.5.1-accessible-3

> A single-type import must name an accessible type

> Expected 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}

Test Case: 7.5.1-accessible-4

> A single-type import must name an accessible type

> Expected 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}

Test Case: 7.5.1-accessible-5

> A single-type import must name an accessible type

> Expected 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}

Test Case: 7.5.1-shadow-1

> A single-type import shadows an otherwise accessible top-level type in another compilation unit

> Expected 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}

Test Case: 7.5.1-shadow-2

> A single-type import shadows an otherwise accessible top-level type in another compilation unit

> Expected 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}

Test Case: 7.5.1-duplicate-1

> Importing the same class twice is legal

> Expected 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}

Test Case: 7.5.1-duplicate-2

> Importing two classes of the same name is illegal

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 7.5.1-duplicate-4

> It is legal to import the class being declared in a compilation unit

> Expected 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}

Test Case: 7.5.1-subpackage-1

> Single-type import cannot import subpackages

> Expected 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}

### 7.5.2

Directory : `tests/jls/packages/import-declarations/type-import-on-demand-declaration`

- 7.5.2-1
- 7.5.2-unnamed-1
- 7.5.2-canonical-1
- 7.5.2-canonical-2
- 7.5.2-canonical-3
- 7.5.2-canonical-4
- 7.5.2-accessible-1
- 7.5.2-accessible-2
- 7.5.2-accessible-3
- 7.5.2-accessible-4
- 7.5.2-accessible-5
- 7.5.2-duplicate-1
- 7.5.2-duplicate-2
- 7.5.2-duplicate-3
- 7.5.2-duplicate-4
- 7.5.2-inherited-1

Test Case: 7.5.2-1

> import *; is not a valid import statement

> Expected 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}

Test Case: 7.5.2-unnamed-1

> Imports cannot occur from the unnamed package

> Expected 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}

Test Case: 7.5.2-canonical-1

> A type-import-on-demand must use canonical package or type names

> Expected 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}

Test Case: 7.5.2-canonical-2

> Imports use the canonical name, even if a prefix name exists in the current package or prior import

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 7.5.2-accessible-1

> It is an error for an import statement to mention an inaccessible type or package

> Expected 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}

Test Case: 7.5.2-accessible-2

> It is an error for an import statement to mention an inaccessible type or package

> Expected 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}

Test Case: 7.5.2-accessible-3

> It is an error for an import statement to mention an inaccessible type or package

> Expected 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}

Test Case: 7.5.2-accessible-4

> Only the accessible types are imported by import-on-demand

> Expected 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}

Test Case: 7.5.2-accessible-5

> Only the accessible types are imported by import-on-demand

> Expected 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}

Test Case: 7.5.2-duplicate-1

> It is legal to have duplicate imports

> Expected 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}

Test Case: 7.5.2-duplicate-2

> It is legal to import the current package

> Expected 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}

Test Case: 7.5.2-duplicate-3

> It is legal to import a type declared in the same compilation unit

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 7.5.2-inherited-1

> Type import on demand does not include inherited member types, just declared ones

> Expected 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}

### 7.5.3

Directory : `tests/jls/packages/import-declarations/automatic-imports`

- 7.5.3-automatic-1
- 7.5.3-automatic-2

Test Case: 7.5.3-automatic-1

> All classes have an implicit import java.lang.*;

> Expected 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}

Test Case: 7.5.3-automatic-2

> It is not an error to explicitly import from java.lang

> Expected 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}

### 7.5.4

Directory : `tests/jls/packages/import-declarations/strange-example`

- 7.5.4-example-1

Test Case: 7.5.4-example-1

> Example in the JLS: imported names are not in scope in later imports

> Expected 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}

### 7.6

Directory : `tests/jls/packages/top-level-type-declarations`

- 7.6-syntax-1
- 7.6-syntax-2
- 7.6-syntax-3
- 7.6-scope-1
- 7.6-scope-2
- 7.6-scope-3
- 7.6-scope-4
- 7.6-name-1
- 7.6-name-2
- 7.6-name-3
- 7.6-optional-restrictions-1
- 7.6-modifiers-1
- 7.6-modifiers-2
- 7.6-modifiers-3
- 7.6-unnamed-scope-1
- 7.6-unnamed-scope-2
- 7.6-unnamed-scope-3

Test Case: 7.6-syntax-1

> ; is a valid top-level TypeDeclaration

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 7.6-syntax-1 { ; is a valid top-level TypeDeclaration } {

>         compile [saveas T76syntax1.java {;}]

>     } {PASS}

Test Case: 7.6-syntax-2

> top-level TypeDeclaration

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 7.6-syntax-2 { top-level TypeDeclaration } {

>         compile [saveas T76syntax2.java {
>     class T76syntax2 {}
>     }]

>     } {PASS}

Test Case: 7.6-syntax-3

> top-level TypeDeclaration

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 7.6-syntax-3 { top-level TypeDeclaration } {

>         compile [saveas T76syntax3.java {
>     interface T76syntax3 {}
>     }]

>     } {PASS}

Test Case: 7.6-scope-1

> TypeDeclaration within a package must have a unique Identifier

> Expected 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}

Test Case: 7.6-scope-2

> TypeDeclaration cannot conflict with single-type-imports

> Expected 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}

Test Case: 7.6-scope-3

> TypeDeclaration may shadow types in general imports

> Expected 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}

Test Case: 7.6-scope-4

> TypeDeclaration may have forward references within a compilation unit

> Expected 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 Case: 7.6-name-1

> Test fully qualified toplevel type name

> Expected 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 Case: 7.6-name-2

> Test fully qualified toplevel type name

> Expected 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}

Test Case: 7.6-name-3

> TypeDeclaration need not be related to the file name if class is not public

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 7.6-modifiers-1

> Top-level types may not be static

> Expected 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}

Test Case: 7.6-modifiers-2

> Top-level types may not be protected

> Expected 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}

Test Case: 7.6-modifiers-3

> Top-level types may not be private

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

### 8.1

Directory : `tests/jls/classes/class-declaration`

- 8.1-enclosing-1
- 8.1-enclosing-2
- 8.1-enclosing-3
- 8.1-enclosing-4
- 8.1-enclosing-5
- 8.1-enclosing-6
- 8.1-enclosing-7
- 8.1-enclosing-8

Test Case: 8.1-enclosing-1

> A class may not have the same simple name as an enclosing type

> Expected 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}

Test Case: 8.1-enclosing-2

> A class may not have the same simple name as an enclosing type

> Expected 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}

Test Case: 8.1-enclosing-3

> A class may not have the same simple name as an enclosing type

> Expected 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}

Test Case: 8.1-enclosing-4

> A class may not have the same simple name as an enclosing type

> Expected 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}

Test Case: 8.1-enclosing-5

> A class may not have the same simple name as an enclosing type

> Expected 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}

Test Case: 8.1-enclosing-6

> A class may not have the same simple name as an enclosing type

> Expected 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}

Test Case: 8.1-enclosing-7

> A class may not have the same simple name as an enclosing type

> Expected 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}

Test Case: 8.1-enclosing-8

> A class may not have the same simple name as an enclosing type

> Expected 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}

### 8.1.1

Directory : `tests/jls/classes/class-declaration/class-modifiers`

- 8.1.1-valid-modifier-1
- 8.1.1-valid-modifier-2
- 8.1.1-valid-modifier-3
- 8.1.1-valid-modifier-4
- 8.1.1-duplicate-modifier-1
- 8.1.1-duplicate-modifier-2
- 8.1.1-duplicate-modifier-3
- 8.1.1-duplicate-modifier-4

Test Case: 8.1.1-valid-modifier-1

> public is valid ClassModifier

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 8.1.1-valid-modifier-1 { public is valid ClassModifier } {

>         compile [saveas T811vm1.java {
>     public class T811vm1 {}
>         }]

>     } {PASS}

Test Case: 8.1.1-valid-modifier-2

> abstract is valid ClassModifier

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 8.1.1-valid-modifier-2 { abstract is valid ClassModifier } {

>         compile [saveas T811vm2.java {
>     abstract class T811vm2 {}
>         }]

>     } {PASS}

Test Case: 8.1.1-valid-modifier-3

> final is valid ClassModifier

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 8.1.1-valid-modifier-3 { final is valid ClassModifier } {

>         compile [saveas T811vm3.java {
>     final class T811vm3 {}
>         }]

>     } {PASS}

Test Case: 8.1.1-valid-modifier-4

> strictfp is valid ClassModifier

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 8.1.1-valid-modifier-4 { strictfp is valid ClassModifier } {

>         compile [saveas T811vm4.java {
>     strictfp class T811vm4 {}
>         }]

>     } {PASS}

Test Case: 8.1.1-duplicate-modifier-1

> compile time error to specify a class modifier twice

> Expected 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}

Test Case: 8.1.1-duplicate-modifier-2

> compile time error to specify a class modifier twice

> Expected 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}

Test Case: 8.1.1-duplicate-modifier-3

> compile time error to specify a class modifier twice

> Expected 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}

Test Case: 8.1.1-duplicate-modifier-4

> compile time error to specify a class modifier twice

> Expected 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}

### 8.1.1.1

Directory : `tests/jls/classes/class-declaration/class-modifiers/abstract-classes`

- 8.1.1.1-1
- 8.1.1.1-2
- 8.1.1.1-3
- 8.1.1.1-4
- 8.1.1.1-5
- 8.1.1.1-6
- 8.1.1.1-7
- 8.1.1.1-8
- 8.1.1.1-9
- 8.1.1.1-10
- 8.1.1.1-11
- 8.1.1.1-12
- 8.1.1.1-default-abstract-1
- 8.1.1.1-default-abstract-2
- 8.1.1.1-default-abstract-3
- 8.1.1.1-default-abstract-4
- 8.1.1.1-default-abstract-5
- 8.1.1.1-default-abstract-6
- 8.1.1.1-default-abstract-7
- 8.1.1.1-default-abstract-8
- 8.1.1.1-default-abstract-9
- 8.1.1.1-default-abstract-10
- 8.1.1.1-default-abstract-11
- 8.1.1.1-default-abstract-12
- 8.1.1.1-default-abstract-13
- 8.1.1.1-default-abstract-14
- 8.1.1.1-default-abstract-15
- 8.1.1.1-default-abstract-16
- 8.1.1.1-default-abstract-17
- 8.1.1.1-default-abstract-18
- 8.1.1.1-default-abstract-19
- 8.1.1.1-default-abstract-20
- 8.1.1.1-default-abstract-21
- 8.1.1.1-default-abstract-22
- 8.1.1.1-default-abstract-23
- 8.1.1.1-default-abstract-24
- 8.1.1.1-default-abstract-25

Test Case: 8.1.1.1-1

> declare an abstract class

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 8.1.1.1-3

> declare an abstract class with an abstract method

> Expected 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}

Test Case: 8.1.1.1-4

> a non-abstract class can not have an abstract method

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 8.1.1.1-7

> inherit from an abstract class with an abstract method, the subclass must be marked as abstract

> Expected 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}

Test Case: 8.1.1.1-8

> Compile time error on attempt to create an instance of an abstract class that inherits from and abstract class

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 8.1.1.1-11

> Implement an abstract method inherited from an abstract superclass

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

### 8.1.1.2

Directory : `tests/jls/classes/class-declaration/class-modifiers/final-classes`

- 8.1.1.2-conflicting-modifier-1
- 8.1.1.2-invalid-subclass-1
- 8.1.1.2-invalid-subclass-2

Test Case: 8.1.1.2-conflicting-modifier-1

> a final class cannot also be declared abstract

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 8.1.1.2-invalid-subclass-2

> A final class can not be extended via an anymous innerclass

> Expected 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}

### 8.1.2

Directory : `tests/jls/classes/class-declaration/inner-classes-and-enclosing-instances`

- 8.1.2-static-1
- 8.1.2-static-2
- 8.1.2-static-3
- 8.1.2-static-4
- 8.1.2-static-5
- 8.1.2-static-6
- 8.1.2-static-7
- 8.1.2-static-8
- 8.1.2-static-9
- 8.1.2-static-10
- 8.1.2-static-11
- 8.1.2-static-12
- 8.1.2-static-13
- 8.1.2-static-14
- 8.1.2-static-15
- 8.1.2-static-16
- 8.1.2-static-17
- 8.1.2-enclosing-1
- 8.1.2-enclosing-2
- 8.1.2-enclosing-3
- 8.1.2-enclosing-4
- 8.1.2-enclosing-5

Test Case: 8.1.2-static-1

> Static variables inside inner class must be compile-time constants

> Expected 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}

Test Case: 8.1.2-static-2

> Static variables inside inner class must be compile-time constant

> Expected 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}

Test Case: 8.1.2-static-3

> Static variables inside inner class must be compile-time constant

> Expected 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}

Test Case: 8.1.2-static-4

> Static variables inside inner class must be compile-time constant

> Expected 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}

Test Case: 8.1.2-static-5

> static initializers are not allowed in anonymous classes

> Expected 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}

Test Case: 8.1.2-static-6

> syntax error in illegal static initializers should not cause core dump (jikes bug 343)

> Expected 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}

Test Case: 8.1.2-static-7

> local classes in static context still may not have static members

> Expected 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}

Test Case: 8.1.2-static-8

> local classes in static context still may not have static members

> Expected 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}

Test Case: 8.1.2-static-9

> local classes in static context still may not have static members

> Expected 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}

Test Case: 8.1.2-static-10

> local classes in static context still may not have static members

> Expected 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}

Test Case: 8.1.2-static-11

> local classes in static context still may not have static members

> Expected 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}

Test Case: 8.1.2-static-12

> anonymous classes in static context still may not have static members

> Expected 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}

Test Case: 8.1.2-static-13

> anonymous classes in static context still may not have static members

> Expected 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}

Test Case: 8.1.2-static-14

> anonymous classes in static context still may not have static members

> Expected 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}

Test Case: 8.1.2-static-15

> anonymous classes in static context still may not have static members

> Expected 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}

Test Case: 8.1.2-static-16

> anonymous classes in static context still may not have static members

> Expected 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}

Test Case: 8.1.2-static-17

> anonymous classes in static context still may not have static members

> Expected 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}

Test Case: 8.1.2-enclosing-1

> A parameter used but not declared in an inner class must be declared final

> Expected 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}

Test Case: 8.1.2-enclosing-2

> A local used but not declared in an inner class must be declared final

> Expected 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}

Test Case: 8.1.2-enclosing-3

> A blank final field may not be assigned within an inner class

> Expected 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}

Test Case: 8.1.2-enclosing-4

> A final field may not be assigned within an inner class

> Expected 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}

Test Case: 8.1.2-enclosing-5

> A final parameter may not be assigned within an inner class

> Expected 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}

### 8.1.3

Directory : `tests/jls/classes/class-declaration/superclasses-and-subclasses`

- 8.1.3-circular-1
- 8.1.3-circular-2
- 8.1.3-circular-3
- 8.1.3-circular-4
- 8.1.3-circular-5
- 8.1.3-circular-6
- 8.1.3-non-circular-1
- 8.1.3-object-1
- 8.1.3-object-2
- 8.1.3-object-3
- 8.1.3-object-4
- 8.1.3-superclass-1
- 8.1.3-superclass-2
- 8.1.3-superclass-3
- 8.1.3-superclass-4
- 8.1.3-superclass-5
- 8.1.3-superclass-6
- 8.1.3-superclass-7
- 8.1.3-superclass-8
- 8.1.3-superclass-9
- 8.1.3-superclass-10
- 8.1.3-superclass-11
- 8.1.3-superclass-12
- 8.1.3-superclass-13

Test Case: 8.1.3-circular-1

> Circular dependencies are illegal

> Expected 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}

Test Case: 8.1.3-circular-2

> Circular dependencies are illegal

> Expected 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}

Test Case: 8.1.3-circular-3

> Circular dependencies are illegal

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 8.1.3-circular-3 { Circular dependencies are illegal } {

>         compile [saveas T813c3.java {
>     class T813c3 extends T813c3 {}
>         }]

>     } {FAIL}

Test Case: 8.1.3-circular-4

> Circular dependencies are illegal

> Expected 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}

Test Case: 8.1.3-circular-5

> Circular dependencies are illegal

> Expected 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}

Test Case: 8.1.3-circular-6

> Circular dependencies are illegal

> Expected 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}

Test Case: 8.1.3-non-circular-1

> In spite of cross-referencing, this declaration is not circular, but is legal

> Expected 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}

Test Case: 8.1.3-object-1

> Object must not have an extends clause

> Expected 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}

Test Case: 8.1.3-object-2

> Object must not have an extends clause

> Expected 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}

Test Case: 8.1.3-object-3

> Object must not have an extends clause

> Expected 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}

Test Case: 8.1.3-object-4

> A class with no extends clause implicitly extends java.lang.Object, even if it is shadowed

> Expected 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}

Test Case: 8.1.3-superclass-1

> A superclass must be accessible

> Expected 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}

Test Case: 8.1.3-superclass-2

> A superclass must be accessible

> Expected 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}

Test Case: 8.1.3-superclass-3

> A superclass must be a class

> Expected 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}

Test Case: 8.1.3-superclass-4

> A superclass must be non-final

> Expected 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}

Test Case: 8.1.3-superclass-5

> A superclass must be accessible

> Expected 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}

Test Case: 8.1.3-superclass-6

> A superclass must be accessible

> Expected 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}

Test Case: 8.1.3-superclass-7

> A superclass must be accessible

> Expected 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}

Test Case: 8.1.3-superclass-8

> A superclass must be accessible

> Expected 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 Case: 8.1.3-superclass-9

> Test for accessible inner superclass - Jikes bug 3202

> Expected 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}

Test Case: 8.1.3-superclass-10

> A superclass name may be non-canonical

> Expected 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}

Test Case: 8.1.3-superclass-11

> A superclass name may be non-canonical

> Expected 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}

Test Case: 8.1.3-superclass-12

> A superclass name may be non-canonical

> Expected 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}

Test Case: 8.1.3-superclass-13

> A superclass name may be non-canonical

> Expected 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}

### 8.1.4

Directory : `tests/jls/classes/class-declaration/superinterfaces`

- 8.1.4-object-1
- 8.1.4-superinterface-1
- 8.1.4-superinterface-2
- 8.1.4-superinterface-3
- 8.1.4-superinterface-4
- 8.1.4-superinterface-5
- 8.1.4-superinterface-6
- 8.1.4-superinterface-7
- 8.1.4-superinterface-8
- 8.1.4-superinterface-9
- 8.1.4-superinterface-10
- 8.1.4-superinterface-11
- 8.1.4-duplicate-1
- 8.1.4-duplicate-2
- 8.1.4-duplicate-3
- 8.1.4-duplicate-4
- 8.1.4-abstract-1
- 8.1.4-abstract-2
- 8.1.4-abstract-3
- 8.1.4-abstract-4
- 8.1.4-conflict-1
- 8.1.4-conflict-2
- 8.1.4-conflict-3

Test Case: 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

> Expected 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}

Test Case: 8.1.4-superinterface-1

> A superinterface must be accessible

> Expected 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}

Test Case: 8.1.4-superinterface-2

> A superinterface must be accessible

> Expected 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}

Test Case: 8.1.4-superinterface-3

> A superinterface must be an interface

> Expected 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}

Test Case: 8.1.4-superinterface-4

> A superinterface must be accessible

> Expected 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}

Test Case: 8.1.4-superinterface-5

> A superinterface must be accessible

> Expected 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}

Test Case: 8.1.4-superinterface-6

> A superinterface must be accessible

> Expected 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}

Test Case: 8.1.4-superinterface-7

> A superinterface must be accessible

> Expected 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}

Test Case: 8.1.4-superinterface-8

> A superinterface name may be non-canonical

> Expected 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}

Test Case: 8.1.4-superinterface-9

> A superinterface name may be non-canonical

> Expected 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}

Test Case: 8.1.4-superinterface-10

> A superinterface name may be non-canonical

> Expected 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}

Test Case: 8.1.4-superinterface-11

> A superinterface name may be non-canonical

> Expected 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}

Test Case: 8.1.4-duplicate-1

> A class may not have duplicate superinterfaces

> Expected 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}

Test Case: 8.1.4-duplicate-2

> A class may not have duplicate superinterfaces

> Expected 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}

Test Case: 8.1.4-duplicate-3

> A class may not have duplicate superinterfaces

> Expected 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}

Test Case: 8.1.4-duplicate-4

> A class may not have duplicate superinterfaces

> Expected 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}

Test Case: 8.1.4-abstract-1

> A class must implement, or inherit an implementation, of all methods of its superinterfaces, or be abstract

> Expected 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}

Test Case: 8.1.4-abstract-2

> A class must implement, or inherit an implementation, of all methods of its superinterfaces, or be abstract

> Expected 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}

Test Case: 8.1.4-abstract-3

> A class must implement, or inherit an implementation, of all methods of its superinterfaces, or be abstract

> Expected 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}

Test Case: 8.1.4-abstract-4

> A class must implement, or inherit an implementation, of all methods of its superinterfaces, or be abstract

> Expected 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}

Test Case: 8.1.4-conflict-1

> Multiple superinterfaces must not conflict

> Expected 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}

Test Case: 8.1.4-conflict-2

> Multiple superinterfaces must not conflict

> Expected 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}

Test Case: 8.1.4-conflict-3

> Multiple superinterfaces must not conflict

> Expected 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}

### 8.2

Directory : `tests/jls/classes/class-members`

- 8.2-accessibility-inherited-member-1
- 8.2-accessibility-inherited-member-2
- 8.2-accessibility-inherited-member-3
- 8.2-accessibility-inherited-member-4
- 8.2-accessibility-inherited-member-5
- 8.2-accessibility-inherited-member-6
- 8.2-accessibility-inherited-member-7
- 8.2-accessibility-inherited-member-8
- 8.2-constructor-not-inherited-1

Test Case: 8.2-accessibility-inherited-member-1

> members declared public are accessible in a subclass

> Expected 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}

Test Case: 8.2-accessibility-inherited-member-2

> members declared public are accessible in a subclass

> Expected 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}

Test Case: 8.2-accessibility-inherited-member-3

> members declared protected are accessible in a subclass

> Expected 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}

Test Case: 8.2-accessibility-inherited-member-4

> members declared protected are accessible in a subclass

> Expected 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}

Test Case: 8.2-accessibility-inherited-member-5

> members declared private are not accessible in a subclass

> Expected 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}

Test Case: 8.2-accessibility-inherited-member-6

> members declared private are not accessible in a subclass

> Expected 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}

Test Case: 8.2-accessibility-inherited-member-7

> members with default protection are accessible in a subclass

> Expected 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}

Test Case: 8.2-accessibility-inherited-member-8

> members with default protection are accessible in a subclass

> Expected 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}

Test Case: 8.2-constructor-not-inherited-1

> A constructor is not a class member and is therefore not inherited

> Expected 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}

### 8.3

Directory : `tests/jls/classes/field-declarations`

- 8.3-inheritance-1
- 8.3-inheritance-2
- 8.3-inheritance-3
- 8.3-inheritance-4
- 8.3-inheritance-5
- 8.3-inheritance-6
- 8.3-inheritance-7
- 8.3-inheritance-8
- 8.3-inheritance-9
- 8.3-name-1
- 8.3-name-2
- 8.3-hiding-1
- 8.3-hiding-2
- 8.3-hiding-3
- 8.3-hiding-4

Test Case: 8.3-inheritance-1

> A class inherits non-private accessible fields that it does not hide by redeclaration

> Expected 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}

Test Case: 8.3-inheritance-2

> A class inherits non-private accessible fields that it does not hide by redeclaration

> Expected 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}

Test Case: 8.3-inheritance-3

> A class inherits non-private accessible fields that it does not hide by redeclaration

> Expected 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}

Test Case: 8.3-inheritance-4

> A class inherits non-private accessible fields that it does not hide by redeclaration

> Expected 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}

Test Case: 8.3-inheritance-5

> A class inherits non-private accessible fields that it does not hide by redeclaration

> Expected 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}

Test Case: 8.3-inheritance-6

> A class inherits non-private accessible fields that it does not hide by redeclaration

> Expected 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}

Test Case: 8.3-inheritance-7

> A class inherits non-private accessible fields that it does not hide by redeclaration

> Expected 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}

Test Case: 8.3-inheritance-8

> Multiple fields may be inherited with the same name, causing no problems if no ambiguous reference is made

> Expected 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}

Test Case: 8.3-inheritance-9

> Inheritance along multiple paths is still single inheritance

> Expected 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}

Test Case: 8.3-name-1

> Duplicate field names are forbidden

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 8.3-name-1 { Duplicate field names are forbidden } {

>         empty_class T83n1 {
>     	int i, i;
>         }

>     } {FAIL}

Test Case: 8.3-name-2

> Field names may match method and type names

> Expected 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}

Test Case: 8.3-hiding-1

> Fields can hide supertype fields regardless of accessibility relationships

> Expected 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}

Test Case: 8.3-hiding-2

> Fields can hide supertype fields regardless of type relationships

> Expected 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}

Test Case: 8.3-hiding-3

> Fields can hide supertype fields regardless of instance relationships

> Expected 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}

Test Case: 8.3-hiding-4

> Fields can hide supertype fields regardless of modifier relationships

> Expected 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}

### 8.3.1

Directory : `tests/jls/classes/field-declarations/field-modifiers`

- 8.3.1-access-1
- 8.3.1-access-2
- 8.3.1-access-3
- 8.3.1-access-4
- 8.3.1-access-5
- 8.3.1-access-6
- 8.3.1-access-7
- 8.3.1-access-8
- 8.3.1-access-9
- 8.3.1-access-10
- 8.3.1-access-11
- 8.3.1-access-12
- 8.3.1-access-13
- 8.3.1-static-1
- 8.3.1-static-2
- 8.3.1-static-3
- 8.3.1-static-4
- 8.3.1-static-5
- 8.3.1-static-6
- 8.3.1-static-7
- 8.3.1-static-8
- 8.3.1-static-9
- 8.3.1-static-10
- 8.3.1-static-11
- 8.3.1-static-12
- 8.3.1-static-13
- 8.3.1-static-14
- 8.3.1-final-1
- 8.3.1-final-2
- 8.3.1-final-3
- 8.3.1-final-4
- 8.3.1-final-5
- 8.3.1-final-6
- 8.3.1-final-7
- 8.3.1-final-8
- 8.3.1-final-9
- 8.3.1-final-10
- 8.3.1-final-11
- 8.3.1-final-12
- 8.3.1-transient-1
- 8.3.1-transient-2
- 8.3.1-transient-3
- 8.3.1-transient-4
- 8.3.1-transient-5
- 8.3.1-transient-6
- 8.3.1-transient-7
- 8.3.1-transient-8
- 8.3.1-transient-9
- 8.3.1-transient-10
- 8.3.1-volatile-1
- 8.3.1-volatile-2
- 8.3.1-volatile-3
- 8.3.1-volatile-4
- 8.3.1-volatile-5
- 8.3.1-volatile-6
- 8.3.1-volatile-7
- 8.3.1-volatile-8
- 8.3.1-big-1
- 8.3.1-big-2
- 8.3.1-big-3
- 8.3.1-bad-1
- 8.3.1-bad-2
- 8.3.1-bad-3
- 8.3.1-bad-4

Test Case: 8.3.1-access-1

> Multiple access modifiers is an error

> Expected 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}

Test Case: 8.3.1-access-2

> Multiple access modifiers is an error

> Expected 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}

Test Case: 8.3.1-access-3

> Multiple access modifiers is an error

> Expected 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}

Test Case: 8.3.1-access-4

> Multiple access modifiers is an error

> Expected 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}

Test Case: 8.3.1-access-5

> Multiple access modifiers is an error

> Expected 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}

Test Case: 8.3.1-access-6

> Multiple access modifiers is an error

> Expected 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}

Test Case: 8.3.1-access-7

> Multiple access modifiers is an error

> Expected 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}

Test Case: 8.3.1-access-8

> Multiple access modifiers is an error

> Expected 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}

Test Case: 8.3.1-access-9

> Multiple access modifiers is an error

> Expected 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}

Test Case: 8.3.1-access-10

> A single access modifier is legal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 8.3.1-access-10 { A single access modifier is legal } {

>         empty_class T831access10 {
>             public int i;
>         }

>     } {PASS}

Test Case: 8.3.1-access-11

> A single access modifier is legal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 8.3.1-access-11 { A single access modifier is legal } {

>         empty_class T831access11 {
>             protected int i;
>         }

>     } {PASS}

Test Case: 8.3.1-access-12

> A single access modifier is legal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 8.3.1-access-12 { A single access modifier is legal } {

>         empty_class T831access12 {
>             private int i;
>         }

>     } {PASS}

Test Case: 8.3.1-access-13

> No access modifier is legal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 8.3.1-access-13 { No access modifier is legal } {

>         empty_class T831access13 {
>             int i;
>         }

>     } {PASS}

Test Case: 8.3.1-static-1

> static alone is legal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 8.3.1-static-1 { static alone is legal } {

>         empty_class T831static1 {
>             static int i;
>         }

>     } {PASS}

Test Case: 8.3.1-static-2

> public static is legal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 8.3.1-static-2 { public static is legal } {

>         empty_class T831static2 {
>             public static int i;
>         }

>     } {PASS}

Test Case: 8.3.1-static-3

> static public is legal, but not in the preferred order

> Expected 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}

Test Case: 8.3.1-static-4

> protected static is legal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 8.3.1-static-4 { protected static is legal } {

>         empty_class T831static4 {
>             protected static int i;
>         }

>     } {PASS}

Test Case: 8.3.1-static-5

> static protected is legal, but not in the preferred order

> Expected 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}

Test Case: 8.3.1-static-6

> private static is legal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 8.3.1-static-6 { private static is legal } {

>         empty_class T831static6 {
>             private static int i;
>         }

>     } {PASS}

Test Case: 8.3.1-static-7

> static private is legal, but not in the preferred order

> Expected 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}

Test Case: 8.3.1-static-8

> static static is illegal

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 8.3.1-static-8 { static static is illegal } {

>         empty_class T831static8 {
>             static static int i;
>         }

>     } {FAIL}

Test Case: 8.3.1-static-9

> static final is legal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 8.3.1-static-9 { static final is legal } {

>         empty_class T831static9 {
>             static final int i = 1;
>         }

>     } {PASS}

Test Case: 8.3.1-static-10

> final static is legal, but not in the preferred order

> Expected 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}

Test Case: 8.3.1-static-11

> static transient is legal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 8.3.1-static-11 { static transient is legal } {

>         empty_class T831static11 {
>             static transient int i;
>         }

>     } {PASS}

Test Case: 8.3.1-static-12

> transient static is legal, but not in the preferred order

> Expected 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}

Test Case: 8.3.1-static-13

> static volatile is legal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 8.3.1-static-13 { static volatile is legal } {

>         empty_class T831static13 {
>             static volatile int i;
>         }

>     } {PASS}

Test Case: 8.3.1-static-14

> volatile static is legal, but not in the preferred order

> Expected 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}

Test Case: 8.3.1-final-1

> final alone is legal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 8.3.1-final-1 { final alone is legal } {

>         empty_class T831final1 {
>             final int i = 1;
>         }

>     } {PASS}

Test Case: 8.3.1-final-2

> public final is legal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 8.3.1-final-2 { public final is legal } {

>         empty_class T831final2 {
>             public final int i = 1;
>         }

>     } {PASS}

Test Case: 8.3.1-final-3

> final public is legal, but not in the preferred order

> Expected 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}

Test Case: 8.3.1-final-4

> protected final is legal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 8.3.1-final-4 { protected final is legal } {

>         empty_class T831final4 {
>             protected final int i = 1;
>         }

>     } {PASS}

Test Case: 8.3.1-final-5

> final protected is legal, but not in the preferred order

> Expected 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}

Test Case: 8.3.1-final-6

> private final is legal, but redundant

> Expected 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}

Test Case: 8.3.1-final-7

> final private is legal, but redundant, and not in the preferred order

> Expected 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}

Test Case: 8.3.1-final-8

> final final is illegal

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 8.3.1-final-8 { final final is illegal } {

>         empty_class T831final8 {
>             final final int i = 1;
>         }

>     } {FAIL}

Test Case: 8.3.1-final-9

> final transient is legal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 8.3.1-final-9 { final transient is legal } {

>         empty_class T831final9 {
>             final transient int i = 1;
>         }

>     } {PASS}

Test Case: 8.3.1-final-10

> transient final is legal, but not in the preferred order

> Expected 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}

Test Case: 8.3.1-final-11

> final volatile is illegal

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 8.3.1-final-11 { final volatile is illegal } {

>         empty_class T831final11 {
>             final volatile int i = 1;
>         }

>     } {FAIL}

Test Case: 8.3.1-final-12

> volatile final is illegal

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 8.3.1-final-12 { volatile final is illegal } {

>         empty_class T831final12 {
>             volatile final int i = 1;
>         }

>     } {FAIL}

Test Case: 8.3.1-transient-1

> transient alone is legal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 8.3.1-transient-1 { transient alone is legal } {

>         empty_class T831transient1 {
>             transient int i;
>         }

>     } {PASS}

Test Case: 8.3.1-transient-2

> public transient is legal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 8.3.1-transient-2 { public transient is legal } {

>         empty_class T831transient2 {
>             public transient int i;
>         }

>     } {PASS}

Test Case: 8.3.1-transient-3

> transient public is legal, but not in the preferred order

> Expected 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}

Test Case: 8.3.1-transient-4

> protected transient is legal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 8.3.1-transient-4 { protected transient is legal } {

>         empty_class T831transient4 {
>             protected transient int i;
>         }

>     } {PASS}

Test Case: 8.3.1-transient-5

> transient protected is legal, but not in the preferred order

> Expected 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}

Test Case: 8.3.1-transient-6

> private transient is legal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 8.3.1-transient-6 { private transient is legal } {

>         empty_class T831transient6 {
>             private transient int i;
>         }

>     } {PASS}

Test Case: 8.3.1-transient-7

> transient private is legal, but not in the preferred order

> Expected 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}

Test Case: 8.3.1-transient-8

> transient transient is illegal

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 8.3.1-transient-8 { transient transient is illegal } {

>         empty_class T831transient8 {
>             transient transient int i;
>         }

>     } {FAIL}

Test Case: 8.3.1-transient-9

> transient volatile is legal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 8.3.1-transient-9 { transient volatile is legal } {

>         empty_class T831transient9 {
>             transient volatile int i;
>         }

>     } {PASS}

Test Case: 8.3.1-transient-10

> volatile transient is legal, but not in the preferred order

> Expected 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}

Test Case: 8.3.1-volatile-1

> volatile alone is legal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 8.3.1-volatile-1 { volatile alone is legal } {

>         empty_class T831volatile1 {
>             volatile int i;
>         }

>     } {PASS}

Test Case: 8.3.1-volatile-2

> public volatile is legal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 8.3.1-volatile-2 { public volatile is legal } {

>         empty_class T831volatile2 {
>             public volatile int i;
>         }

>     } {PASS}

Test Case: 8.3.1-volatile-3

> volatile public is legal, but not in the preferred order

> Expected 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}

Test Case: 8.3.1-volatile-4

> protected volatile is legal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 8.3.1-volatile-4 { protected volatile is legal } {

>         empty_class T831volatile4 {
>             protected volatile int i;
>         }

>     } {PASS}

Test Case: 8.3.1-volatile-5

> volatile protected is legal, but not in the preferred order

> Expected 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}

Test Case: 8.3.1-volatile-6

> private volatile is legal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 8.3.1-volatile-6 { private volatile is legal } {

>         empty_class T831volatile6 {
>             private volatile int i;
>         }

>     } {PASS}

Test Case: 8.3.1-volatile-7

> volatile private is legal, but not in the preferred order

> Expected 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}

Test Case: 8.3.1-volatile-8

> volatile volatile is illegal

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 8.3.1-volatile-8 { volatile volatile is illegal } {

>         empty_class T831volatile8 {
>             volatile volatile int i;
>         }

>     } {FAIL}

Test Case: 8.3.1-big-1

> largest number of modifiers allowed

> Expected 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}

Test Case: 8.3.1-big-2

> largest number of modifiers allowed

> Expected 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}

Test Case: 8.3.1-big-3

> modifiers stress test

> Expected 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}

Test Case: 8.3.1-bad-1

> abstract fields don't exist

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 8.3.1-bad-1 { abstract fields don't exist } {

>         empty_class T831bad1 {
>             abstract int i;
>         }

>     } {FAIL}

Test Case: 8.3.1-bad-2

> synchronized fields don't exist

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 8.3.1-bad-2 { synchronized fields don't exist } {

>         empty_class T831bad2 {
>     	synchronized int i;
>         }

>     } {FAIL}

Test Case: 8.3.1-bad-3

> native fields don't exist

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 8.3.1-bad-3 { native fields don't exist } {

>         empty_class T831bad3 {
>     	native int i;
>         }

>     } {FAIL}

Test Case: 8.3.1-bad-4

> strictfp fields don't exist

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 8.3.1-bad-4 { strictfp fields don't exist } {

>         empty_class T831bad4 {
>     	strictfp int i;
>         }

>     } {FAIL}

### 8.3.1.1

Directory : `tests/jls/classes/field-declarations/field-modifiers/static-fields`

- 8.3.1.1-valid-modifier-1
- 8.3.1.1-valid-modifier-2
- 8.3.1.1-valid-modifier-3
- 8.3.1.1-valid-modifier-4
- 8.3.1.1-valid-modifier-5
- 8.3.1.1-valid-modifier-6
- 8.3.1.1-other-1
- 8.3.1.1-other-2

Test Case: 8.3.1.1-valid-modifier-1

> public is a valid static FieldModifier

> Expected 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}

Test Case: 8.3.1.1-valid-modifier-2

> protected is a valid static FieldModifier

> Expected 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}

Test Case: 8.3.1.1-valid-modifier-3

> private is a valid static FieldModifier

> Expected 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}

Test Case: 8.3.1.1-valid-modifier-4

> final is a valid static FieldModifier

> Expected 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}

Test Case: 8.3.1.1-valid-modifier-5

> transient is a valid static FieldModifier

> Expected 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}

Test Case: 8.3.1.1-valid-modifier-6

> volatile is a valid static FieldModifier

> Expected 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}

Test Case: 8.3.1.1-other-1

> access an initialized final static field in another class that has not yet been compiled

> Expected 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}

Test Case: 8.3.1.1-other-2

> access an uninitialized final static field in another class that has not yet been compiled

> Expected 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}

### 8.3.1.2

Directory : `tests/jls/classes/field-declarations/field-modifiers/final-fields`

- 8.3.1.2-final-1
- 8.3.1.2-final-2
- 8.3.1.2-final-3
- 8.3.1.2-final-4
- 8.3.1.2-final-5
- 8.3.1.2-final-6
- 8.3.1.2-final-7
- 8.3.1.2-final-8
- 8.3.1.2-final-9
- 8.3.1.2-final-10
- 8.3.1.2-final-11
- 8.3.1.2-final-12
- 8.3.1.2-final-13
- 8.3.1.2-final-14
- 8.3.1.2-final-15
- 8.3.1.2-final-16
- 8.3.1.2-final-17
- 8.3.1.2-final-18
- 8.3.1.2-final-19
- 8.3.1.2-final-20
- 8.3.1.2-final-21
- 8.3.1.2-final-22
- 8.3.1.2-final-23
- 8.3.1.2-final-24
- 8.3.1.2-final-25
- 8.3.1.2-final-26
- 8.3.1.2-final-27
- 8.3.1.2-final-28
- 8.3.1.2-final-29

Test Case: 8.3.1.2-final-1

> instance and class fields may be final

> Expected 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}

Test Case: 8.3.1.2-final-2

> blank final class variables must be assigned in an initializer

> Expected 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}

Test Case: 8.3.1.2-final-3

> blank final class variables must be assigned in an initializer

> Expected 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}

Test Case: 8.3.1.2-final-4

> blank final class variables must be assigned in an initializer

> Expected 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}

Test Case: 8.3.1.2-final-5

> blank final class variables must be assigned in an initializer

> Expected 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}

Test Case: 8.3.1.2-final-6

> blank final class variables must be assigned in an initializer

> Expected 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}

Test Case: 8.3.1.2-final-7

> blank final instance variables must be assigned by the end of every constructor

> Expected 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}

Test Case: 8.3.1.2-final-8

> blank final instance variables must be assigned by the end of every constructor

> Expected 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}

Test Case: 8.3.1.2-final-9

> blank final instance variables must be assigned by the end of every constructor

> Expected 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}

Test Case: 8.3.1.2-final-10

> blank final instance variables must be assigned by the end of every constructor

> Expected 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}

Test Case: 8.3.1.2-final-11

> blank final instance variables must be assigned by the end of every constructor

> Expected 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}

Test Case: 8.3.1.2-final-12

> blank final instance variables must be assigned by the end of every constructor

> Expected 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}

Test Case: 8.3.1.2-final-13

> blank final instance variables must be assigned by the end of every constructor

> Expected 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}

Test Case: 8.3.1.2-final-14

> blank final instance variables must be assigned by the end of every constructor

> Expected 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}

Test Case: 8.3.1.2-final-15

> blank final instance variables must be assigned by the end of every constructor

> Expected 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}

Test Case: 8.3.1.2-final-16

> blank final instance variables must be assigned by the end of every constructor

> Expected 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}

Test Case: 8.3.1.2-final-17

> blank final instance variables must be assigned by the end of every constructor

> Expected 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}

Test Case: 8.3.1.2-final-18

> blank final instance variables must be assigned by the end of every constructor

> Expected 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}

Test Case: 8.3.1.2-final-19

> blank final instance variables must be assigned by the end of every constructor

> Expected 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}

Test Case: 8.3.1.2-final-20

> blank final instance variables must be assigned by the end of every constructor

> Expected 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}

Test Case: 8.3.1.2-final-21

> blank final instance variables must be assigned by the end of every constructor

> Expected 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}

Test Case: 8.3.1.2-final-22

> blank final instance variables must be assigned by the end of every constructor

> Expected 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}

Test Case: 8.3.1.2-final-23

> blank final instance variables must be assigned by the end of every constructor

> Expected 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}

Test Case: 8.3.1.2-final-24

> blank final instance variables must be assigned by the end of every constructor

> Expected 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}

Test Case: 8.3.1.2-final-25

> blank final instance variables must be assigned by the end of every constructor

> Expected 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}

Test Case: 8.3.1.2-final-26

> blank final instance variables must be assigned by the end of every constructor

> Expected 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}

Test Case: 8.3.1.2-final-27

> blank final instance variables must be assigned by the end of every constructor

> Expected 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}

Test Case: 8.3.1.2-final-28

> blank final instance variables must be assigned by the end of every constructor

> Expected 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}

Test Case: 8.3.1.2-final-29

> blank final instance variables must be assigned by the end of every constructor

> Expected 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}

### 8.3.2

Directory : `tests/jls/classes/field-declarations/initialization-of-fields`

- 8.3.2-abrupt-1
- 8.3.2-abrupt-2
- 8.3.2-abrupt-3
- 8.3.2-abrupt-4
- 8.3.2-abrupt-5
- 8.3.2-abrupt-6
- 8.3.2-abrupt-7
- 8.3.2-abrupt-8

Test Case: 8.3.2-abrupt-1

> A class variable initializer may not complete abruptly with a checked exception

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 8.3.2-abrupt-8

> A class variable initializer may not complete abruptly with a checked exception

> Expected 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}

### 8.3.2.1

Directory : `tests/jls/classes/field-declarations/initialization-of-fields/initializers-for-class-variables`

- 8.3.2.1-this-1
- 8.3.2.1-this-2
- 8.3.2.1-this-3
- 8.3.2.1-super-1
- 8.3.2.1-super-2

Test Case: 8.3.2.1-this-1

> Class field initializers cannot refer to this, not even implicitly

> Expected 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}

Test Case: 8.3.2.1-this-2

> Class field initializers cannot refer to this, not even implicitly

> Expected 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}

Test Case: 8.3.2.1-this-3

> Class field initializers cannot refer to this, not even implicitly

> Expected 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}

Test Case: 8.3.2.1-super-1

> Class field initializers cannot refer to super

> Expected 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}

Test Case: 8.3.2.1-super-2

> Class field initializers cannot refer to super

> Expected 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}

### 8.3.2.2

Directory : `tests/jls/classes/field-declarations/initialization-of-fields/initializers-for-instance-variables`

- 8.3.2.2-static-1
- 8.3.2.2-this-1
- 8.3.2.2-this-2
- 8.3.2.2-this-3
- 8.3.2.2-super-1
- 8.3.2.2-super-2

Test Case: 8.3.2.2-static-1

> Instance field initializers may use static members, regardless of their declaration order

> Expected 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}

Test Case: 8.3.2.2-this-1

> Instance field initializers may refer to this, even implicitly

> Expected 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}

Test Case: 8.3.2.2-this-2

> Instance field initializers may refer to this, even implicitly

> Expected 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}

Test Case: 8.3.2.2-this-3

> Instance field initializers may refer to this, even implicitly

> Expected 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}

Test Case: 8.3.2.2-super-1

> Instance field initializers may refer to super

> Expected 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}

Test Case: 8.3.2.2-super-2

> Instance field initializers may refer to super

> Expected 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}

### 8.3.2.3

Directory : `tests/jls/classes/field-declarations/initialization-of-fields/restrictions`

- 8.3.2.3-illegal-forward-instance-1
- 8.3.2.3-illegal-forward-instance-2
- 8.3.2.3-illegal-forward-instance-3
- 8.3.2.3-illegal-forward-instance-4
- 8.3.2.3-illegal-forward-instance-5
- 8.3.2.3-illegal-forward-instance-6
- 8.3.2.3-illegal-forward-instance-7
- 8.3.2.3-illegal-forward-instance-8
- 8.3.2.3-illegal-forward-instance-9
- 8.3.2.3-legal-forward-instance-1
- 8.3.2.3-legal-forward-instance-2
- 8.3.2.3-legal-forward-instance-3
- 8.3.2.3-legal-forward-instance-4
- 8.3.2.3-legal-forward-instance-5
- 8.3.2.3-legal-forward-instance-6
- 8.3.2.3-legal-forward-instance-7
- 8.3.2.3-legal-forward-instance-8
- 8.3.2.3-legal-forward-instance-9
- 8.3.2.3-legal-forward-instance-10
- 8.3.2.3-legal-forward-instance-11
- 8.3.2.3-legal-forward-instance-12
- 8.3.2.3-illegal-forward-static-1
- 8.3.2.3-illegal-forward-static-2
- 8.3.2.3-illegal-forward-static-3
- 8.3.2.3-illegal-forward-static-4
- 8.3.2.3-illegal-forward-static-5
- 8.3.2.3-illegal-forward-static-6
- 8.3.2.3-illegal-forward-static-7
- 8.3.2.3-illegal-forward-static-8
- 8.3.2.3-illegal-forward-static-9
- 8.3.2.3-illegal-forward-static-10
- 8.3.2.3-legal-forward-static-1
- 8.3.2.3-legal-forward-static-2
- 8.3.2.3-legal-forward-static-3
- 8.3.2.3-legal-forward-static-4
- 8.3.2.3-legal-forward-static-5
- 8.3.2.3-legal-forward-static-6
- 8.3.2.3-legal-forward-static-7
- 8.3.2.3-legal-forward-static-8
- 8.3.2.3-legal-forward-static-9
- 8.3.2.3-legal-forward-static-10

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 8.3.2.3-illegal-forward-instance-7

> Reading a variable is not legal before declaration, even if it was assigned before declaration

> Expected 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}

Test Case: 8.3.2.3-illegal-forward-instance-8

> Reading a variable is not legal before declaration, even if it was assigned before declaration

> Expected 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}

Test Case: 8.3.2.3-illegal-forward-instance-9

> Reading a variable is not legal before declaration, even if it was assigned before declaration

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 8.3.2.3-illegal-forward-static-7

> Reading a variable is not legal before declaration, even if it was assigned before declaration

> Expected 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}

Test Case: 8.3.2.3-illegal-forward-static-8

> Reading a variable is not legal before declaration, even if it was assigned before declaration

> Expected 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}

Test Case: 8.3.2.3-illegal-forward-static-9

> Reading a variable is not legal before declaration, even if it was assigned before declaration

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

### 8.4.3

Directory : `tests/jls/classes/method-declarations/method-modifiers`

- 8.4.3-access-1
- 8.4.3-access-2
- 8.4.3-access-3
- 8.4.3-access-4
- 8.4.3-access-5
- 8.4.3-access-6
- 8.4.3-access-7
- 8.4.3-access-8
- 8.4.3-access-9
- 8.4.3-access-10
- 8.4.3-access-11
- 8.4.3-access-12
- 8.4.3-access-13
- 8.4.3-abstract-1
- 8.4.3-abstract-2
- 8.4.3-abstract-3
- 8.4.3-abstract-4
- 8.4.3-abstract-5
- 8.4.3-abstract-6
- 8.4.3-abstract-7
- 8.4.3-abstract-8
- 8.4.3-abstract-9
- 8.4.3-abstract-10
- 8.4.3-abstract-11
- 8.4.3-abstract-12
- 8.4.3-abstract-13
- 8.4.3-abstract-14
- 8.4.3-abstract-15
- 8.4.3-abstract-16
- 8.4.3-abstract-17
- 8.4.3-abstract-18
- 8.4.3-static-1
- 8.4.3-static-2
- 8.4.3-static-3
- 8.4.3-static-4
- 8.4.3-static-5
- 8.4.3-static-6
- 8.4.3-static-7
- 8.4.3-static-8
- 8.4.3-static-9
- 8.4.3-static-10
- 8.4.3-static-11
- 8.4.3-static-12
- 8.4.3-static-13
- 8.4.3-static-14
- 8.4.3-static-15
- 8.4.3-static-16
- 8.4.3-final-1
- 8.4.3-final-2
- 8.4.3-final-3
- 8.4.3-final-4
- 8.4.3-final-5
- 8.4.3-final-6
- 8.4.3-final-7
- 8.4.3-final-8
- 8.4.3-final-9
- 8.4.3-final-10
- 8.4.3-final-11
- 8.4.3-final-12
- 8.4.3-final-13
- 8.4.3-final-14
- 8.4.3-final-15
- 8.4.3-synchronized-1
- 8.4.3-synchronized-2
- 8.4.3-synchronized-3
- 8.4.3-synchronized-4
- 8.4.3-synchronized-5
- 8.4.3-synchronized-6
- 8.4.3-synchronized-7
- 8.4.3-synchronized-8
- 8.4.3-synchronized-9
- 8.4.3-synchronized-10
- 8.4.3-synchronized-11
- 8.4.3-synchronized-12
- 8.4.3-native-1
- 8.4.3-native-2
- 8.4.3-native-3
- 8.4.3-native-4
- 8.4.3-native-5
- 8.4.3-native-6
- 8.4.3-native-7
- 8.4.3-native-8
- 8.4.3-native-9
- 8.4.3-native-10
- 8.4.3-strictfp-1
- 8.4.3-strictfp-2
- 8.4.3-strictfp-3
- 8.4.3-strictfp-4
- 8.4.3-strictfp-5
- 8.4.3-strictfp-6
- 8.4.3-strictfp-7
- 8.4.3-strictfp-8
- 8.4.3-strictfp-9
- 8.4.3-big-1
- 8.4.3-big-2
- 8.4.3-big-3
- 8.4.3-bad-1
- 8.4.3-bad-2

Test Case: 8.4.3-access-1

> Multiple access modifiers is an error

> Expected 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}

Test Case: 8.4.3-access-2

> Multiple access modifiers is an error

> Expected 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}

Test Case: 8.4.3-access-3

> Multiple access modifiers is an error

> Expected 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}

Test Case: 8.4.3-access-4

> Multiple access modifiers is an error

> Expected 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}

Test Case: 8.4.3-access-5

> Multiple access modifiers is an error

> Expected 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}

Test Case: 8.4.3-access-6

> Multiple access modifiers is an error

> Expected 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}

Test Case: 8.4.3-access-7

> Multiple access modifiers is an error

> Expected 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}

Test Case: 8.4.3-access-8

> Multiple access modifiers is an error

> Expected 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}

Test Case: 8.4.3-access-9

> Multiple access modifiers is an error

> Expected 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}

Test Case: 8.4.3-access-10

> A single access modifier is legal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 8.4.3-access-10 { A single access modifier is legal } {

>         empty_class T843access10 {
>             public void foo() {}
>         }

>     } {PASS}

Test Case: 8.4.3-access-11

> A single access modifier is legal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 8.4.3-access-11 { A single access modifier is legal } {

>         empty_class T843access11 {
>             protected void foo() {}
>         }

>     } {PASS}

Test Case: 8.4.3-access-12

> A single access modifier is legal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 8.4.3-access-12 { A single access modifier is legal } {

>         empty_class T843access12 {
>             private void foo() {}
>         }

>     } {PASS}

Test Case: 8.4.3-access-13

> No access modifier is legal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 8.4.3-access-13 { No access modifier is legal } {

>         empty_class T843access13 {
>             void foo() {}
>         }

>     } {PASS}

Test Case: 8.4.3-abstract-1

> abstract alone is legal

> Expected 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}

Test Case: 8.4.3-abstract-2

> public abstract is legal

> Expected 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}

Test Case: 8.4.3-abstract-3

> abstract public is legal, but not in the preferred order

> Expected 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}

Test Case: 8.4.3-abstract-4

> protected abstract is legal

> Expected 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}

Test Case: 8.4.3-abstract-5

> abstract protected is legal, but not in the preferred order

> Expected 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}

Test Case: 8.4.3-abstract-6

> private abstract is illegal

> Expected 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}

Test Case: 8.4.3-abstract-7

> abstract private is illegal

> Expected 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}

Test Case: 8.4.3-abstract-8

> abstract abstract is illegal

> Expected 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}

Test Case: 8.4.3-abstract-9

> static abstract is illegal

> Expected 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}

Test Case: 8.4.3-abstract-10

> abstract static is illegal

> Expected 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}

Test Case: 8.4.3-abstract-11

> final abstract is illegal

> Expected 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}

Test Case: 8.4.3-abstract-12

> abstract final is illegal

> Expected 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}

Test Case: 8.4.3-abstract-13

> synchronized abstract is illegal

> Expected 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}

Test Case: 8.4.3-abstract-14

> abstract synchronized is illegal

> Expected 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}

Test Case: 8.4.3-abstract-15

> native abstract is illegal

> Expected 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}

Test Case: 8.4.3-abstract-16

> abstract native is illegal

> Expected 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}

Test Case: 8.4.3-abstract-17

> strictfp abstract is illegal

> Expected 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}

Test Case: 8.4.3-abstract-18

> abstract strictfp is illegal

> Expected 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}

Test Case: 8.4.3-static-1

> static alone is legal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 8.4.3-static-1 { static alone is legal } {

>         empty_class T843static1 {
>             static void foo() {}
>         }

>     } {PASS}

Test Case: 8.4.3-static-2

> public static is legal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 8.4.3-static-2 { public static is legal } {

>         empty_class T843static2 {
>             public static void foo() {}
>         }

>     } {PASS}

Test Case: 8.4.3-static-3

> static public is legal, but not in the preferred order

> Expected 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}

Test Case: 8.4.3-static-4

> protected static is legal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 8.4.3-static-4 { protected static is legal } {

>         empty_class T843static4 {
>             protected static void foo() {}
>         }

>     } {PASS}

Test Case: 8.4.3-static-5

> static protected is legal, but not in the preferred order

> Expected 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}

Test Case: 8.4.3-static-6

> private static is legal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 8.4.3-static-6 { private static is legal } {

>         empty_class T843static6 {
>             private static void foo() {}
>         }

>     } {PASS}

Test Case: 8.4.3-static-7

> static private is legal, but not in the preferred order

> Expected 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}

Test Case: 8.4.3-static-8

> static static is illegal

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 8.4.3-static-8 { static static is illegal } {

>         empty_class T843static8 {
>             static static void foo() {}
>         }

>     } {FAIL}

Test Case: 8.4.3-static-9

> static final is legal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 8.4.3-static-9 { static final is legal } {

>         empty_class T843static9 {
>             static final void foo() {}
>         }

>     } {PASS}

Test Case: 8.4.3-static-10

> final static is legal, but not in the preferred order

> Expected 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}

Test Case: 8.4.3-static-11

> static synchronized is legal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 8.4.3-static-11 { static synchronized is legal } {

>         empty_class T843static11 {
>             static synchronized void foo() {}
>         }

>     } {PASS}

Test Case: 8.4.3-static-12

> synchronized static is legal, but not in the preferred order

> Expected 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}

Test Case: 8.4.3-static-13

> static native is legal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 8.4.3-static-13 { static native is legal } {

>         empty_class T843static13 {
>             static native void foo();
>         }

>     } {PASS}

Test Case: 8.4.3-static-14

> native static is legal, but not in the preferred order

> Expected 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}

Test Case: 8.4.3-static-15

> static strictfp is legal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 8.4.3-static-15 { static strictfp is legal } {

>         empty_class T843static15 {
>             static strictfp void foo() {}
>         }

>     } {PASS}

Test Case: 8.4.3-static-16

> strictfp static is legal, but not in the preferred order

> Expected 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}

Test Case: 8.4.3-final-1

> final alone is legal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 8.4.3-final-1 { final alone is legal } {

>         empty_class T843final1 {
>             final void foo() {}
>         }

>     } {PASS}

Test Case: 8.4.3-final-2

> public final is legal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 8.4.3-final-2 { public final is legal } {

>         empty_class T843final2 {
>             public final void foo() {}
>         }

>     } {PASS}

Test Case: 8.4.3-final-3

> final public is legal, but not in the preferred order

> Expected 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}

Test Case: 8.4.3-final-4

> protected final is legal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 8.4.3-final-4 { protected final is legal } {

>         empty_class T843final4 {
>             protected final void foo() {}
>         }

>     } {PASS}

Test Case: 8.4.3-final-5

> final protected is legal, but not in the preferred order

> Expected 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}

Test Case: 8.4.3-final-6

> private final is legal, but redundant

> Expected 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}

Test Case: 8.4.3-final-7

> final private is legal, but redundant, and not in the preferred order

> Expected 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}

Test Case: 8.4.3-final-8

> final final is illegal

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 8.4.3-final-8 { final final is illegal } {

>         empty_class T843final8 {
>             final final void foo() {}
>         }

>     } {FAIL}

Test Case: 8.4.3-final-9

> final synchronized is legal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 8.4.3-final-9 { final synchronized is legal } {

>         empty_class T843final9 {
>             final synchronized void foo() {}
>         }

>     } {PASS}

Test Case: 8.4.3-final-10

> synchronized final is legal, but not in the preferred order

> Expected 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}

Test Case: 8.4.3-final-11

> final native is legal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 8.4.3-final-11 { final native is legal } {

>         empty_class T843final11 {
>             final native void foo();
>         }

>     } {PASS}

Test Case: 8.4.3-final-12

> native final is legal, but not in the preferred order

> Expected 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}

Test Case: 8.4.3-final-13

> final strictfp is legal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 8.4.3-final-13 { final strictfp is legal } {

>         empty_class T843final13 {
>             final strictfp void foo() {}
>         }

>     } {PASS}

Test Case: 8.4.3-final-14

> strictfp final is legal, but not in the preferred order

> Expected 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}

Test Case: 8.4.3-final-15

> final in a final class is legal, but redundant

> Expected 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}

Test Case: 8.4.3-synchronized-1

> synchronized alone is legal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 8.4.3-synchronized-1 { synchronized alone is legal } {

>         empty_class T843synchronized1 {
>             synchronized void foo() {}
>         }

>     } {PASS}

Test Case: 8.4.3-synchronized-2

> public synchronized is legal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 8.4.3-synchronized-2 { public synchronized is legal } {

>         empty_class T843synchronized2 {
>             public synchronized void foo() {}
>         }

>     } {PASS}

Test Case: 8.4.3-synchronized-3

> synchronized public is legal, but not in the preferred order

> Expected 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}

Test Case: 8.4.3-synchronized-4

> protected synchronized is legal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 8.4.3-synchronized-4 { protected synchronized is legal } {

>         empty_class T843synchronized4 {
>             protected synchronized void foo() {}
>         }

>     } {PASS}

Test Case: 8.4.3-synchronized-5

> synchronized protected is legal, but not in the preferred order

> Expected 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}

Test Case: 8.4.3-synchronized-6

> private synchronized is legal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 8.4.3-synchronized-6 { private synchronized is legal } {

>         empty_class T843synchronized6 {
>             private synchronized void foo() {}
>         }

>     } {PASS}

Test Case: 8.4.3-synchronized-7

> synchronized private is legal, but not in the preferred order

> Expected 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}

Test Case: 8.4.3-synchronized-8

> synchronized synchronized is illegal

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 8.4.3-synchronized-8 { synchronized synchronized is illegal } {

>         empty_class T843synchronized8 {
>             synchronized synchronized void foo() {}
>         }

>     } {FAIL}

Test Case: 8.4.3-synchronized-9

> synchronized native is legal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 8.4.3-synchronized-9 { synchronized native is legal } {

>         empty_class T843synchronized9 {
>             synchronized native void foo();
>         }

>     } {PASS}

Test Case: 8.4.3-synchronized-10

> native synchronized is legal, but not in the preferred order

> Expected 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}

Test Case: 8.4.3-synchronized-11

> synchronized strictfp is legal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 8.4.3-synchronized-11 { synchronized strictfp is legal } {

>         empty_class T843synchronized11 {
>             synchronized strictfp void foo() {}
>         }

>     } {PASS}

Test Case: 8.4.3-synchronized-12

> strictfp synchronized is legal, but not in the preferred order

> Expected 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}

Test Case: 8.4.3-native-1

> native alone is legal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 8.4.3-native-1 { native alone is legal } {

>         empty_class T843native1 {
>             native void foo();
>         }

>     } {PASS}

Test Case: 8.4.3-native-2

> public native is legal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 8.4.3-native-2 { public native is legal } {

>         empty_class T843native2 {
>             public native void foo();
>         }

>     } {PASS}

Test Case: 8.4.3-native-3

> native public is legal, but not in the preferred order

> Expected 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}

Test Case: 8.4.3-native-4

> protected native is legal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 8.4.3-native-4 { protected native is legal } {

>         empty_class T843native4 {
>             protected native void foo();
>         }

>     } {PASS}

Test Case: 8.4.3-native-5

> native protected is legal, but not in the preferred order

> Expected 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}

Test Case: 8.4.3-native-6

> private native is legal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 8.4.3-native-6 { private native is legal } {

>         empty_class T843native6 {
>             private native void foo();
>         }

>     } {PASS}

Test Case: 8.4.3-native-7

> native private is legal, but not in the preferred order

> Expected 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}

Test Case: 8.4.3-native-8

> native native is illegal

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 8.4.3-native-8 { native native is illegal } {

>         empty_class T843native8 {
>             native native void foo();
>         }

>     } {FAIL}

Test Case: 8.4.3-native-9

> native strictfp is illegal

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 8.4.3-native-9 { native strictfp is illegal } {

>         empty_class T843native9 {
>             native strictfp void foo();
>         }

>     } {FAIL}

Test Case: 8.4.3-native-10

> strictfp native is illegal

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 8.4.3-native-10 { strictfp native is illegal } {

>         empty_class T843native10 {
>             strictfp native void foo();
>         }

>     } {FAIL}

Test Case: 8.4.3-strictfp-1

> strictfp alone is legal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 8.4.3-strictfp-1 { strictfp alone is legal } {

>         empty_class T843strictfp1 {
>             strictfp void foo() {}
>         }

>     } {PASS}

Test Case: 8.4.3-strictfp-2

> public strictfp is legal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 8.4.3-strictfp-2 { public strictfp is legal } {

>         empty_class T843strictfp2 {
>             public strictfp void foo() {}
>         }

>     } {PASS}

Test Case: 8.4.3-strictfp-3

> strictfp public is legal, but not in the preferred order

> Expected 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}

Test Case: 8.4.3-strictfp-4

> protected strictfp is legal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 8.4.3-strictfp-4 { protected strictfp is legal } {

>         empty_class T843strictfp4 {
>             protected strictfp void foo() {}
>         }

>     } {PASS}

Test Case: 8.4.3-strictfp-5

> strictfp protected is legal, but not in the preferred order

> Expected 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}

Test Case: 8.4.3-strictfp-6

> private strictfp is legal

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 8.4.3-strictfp-6 { private strictfp is legal } {

>         empty_class T843strictfp6 {
>             private strictfp void foo() {}
>         }

>     } {PASS}

Test Case: 8.4.3-strictfp-7

> strictfp private is legal, but not in the preferred order

> Expected 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}

Test Case: 8.4.3-strictfp-8

> strictfp strictfp is illegal

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 8.4.3-strictfp-8 { strictfp strictfp is illegal } {

>         empty_class T843strictfp8 {
>             strictfp strictfp void foo() {}
>         }

>     } {FAIL}

Test Case: 8.4.3-strictfp-9

> strictfp in a strictfp class is legal, but redundant

> Expected 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}

Test Case: 8.4.3-big-1

> largest number of modifiers allowed

> Expected 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}

Test Case: 8.4.3-big-2

> largest number of modifiers allowed

> Expected 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}

Test Case: 8.4.3-big-3

> modifiers stress test

> Expected 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}

Test Case: 8.4.3-bad-1

> transient methods don't exist

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 8.4.3-bad-1 { transient methods don't exist } {

>         empty_class T843bad1 {
>             transient void foo() {}
>         }

>     } {FAIL}

Test Case: 8.4.3-bad-2

> volatile methods don't exist

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 8.4.3-bad-2 { volatile methods don't exist } {

>         empty_class T843bad2 {
>             volatile void foo() {}
>         }

>     } {FAIL}

### 8.4.5

Directory : `tests/jls/classes/method-declarations/method-body`

- 8.4.5-1
- 8.4.5-2
- 8.4.5-3
- 8.4.5-4
- 8.4.5-5
- 8.4.5-6
- 8.4.5-7
- 8.4.5-8
- 8.4.5-9
- 8.4.5-10
- 8.4.5-11

Test Case: 8.4.5-1

> {} is a valid method body

> Expected 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}

Test Case: 8.4.5-2

> only a native or abstract method can have no method body

> Expected 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}

Test Case: 8.4.5-3

> a native method does not have a body

> Expected 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}

Test Case: 8.4.5-4

> a native method can not have a body

> Expected 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}

Test Case: 8.4.5-5

> an abstract method does not have a body

> Expected 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}

Test Case: 8.4.5-6

> an abstract method can not have a body

> Expected 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}

Test Case: 8.4.5-7

> non void method without a return is invalid

> Expected 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}

Test Case: 8.4.5-8

> a void method with a non expression return is valid

> Expected 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}

Test Case: 8.4.5-9

> a return with no expression in a non void method is invalid

> Expected 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}

Test Case: 8.4.5-10

> a return with an expression in a void method is invalid

> Expected 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}

Test Case: 8.4.5-11

> 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}

### 8.4.6

Directory : `tests/jls/classes/method-declarations/inheritance-overriding-and-hiding`

- 8.4.6-miranda-1
- 8.4.6-miranda-2
- 8.4.6-miranda-3
- 8.4.6-miranda-4
- 8.4.6-inheritance-1
- 8.4.6-inheritance-2
- 8.4.6-inheritance-3
- 8.4.6-inheritance-4
- 8.4.6-inheritance-5
- 8.4.6-inheritance-6

Test Case: 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)

> Expected 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}

Test Case: 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)

> Expected 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}

Test Case: 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)

> Expected 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}

Test Case: 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)

> Expected 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}

Test Case: 8.4.6-inheritance-1

> A class inherits non-private accessible methods that it does not hide by redeclaration

> Expected 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}

Test Case: 8.4.6-inheritance-2

> A class inherits non-private accessible methods that it does not hide by redeclaration

> Expected 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}

Test Case: 8.4.6-inheritance-3

> A class inherits non-private accessible methods that it does not hide by redeclaration.

> Expected 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}

Test Case: 8.4.6-inheritance-4

> A class inherits non-private accessible methods that it does not hide by redeclaration.

> Expected 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}

Test Case: 8.4.6-inheritance-5

> A class inherits non-private accessible methods that it does not hide by redeclaration.

> Expected 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}

Test Case: 8.4.6-inheritance-6

> A class inherits non-private accessible methods that it does not hide by redeclaration

> Expected 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}

### 8.4.6.1

Directory : `tests/jls/classes/method-declarations/inheritance-overriding-and-hiding/overriding`

- 8.4.6.1-override-1
- 8.4.6.1-override-2
- 8.4.6.1-override-3
- 8.4.6.1-override-4
- 8.4.6.1-override-5
- 8.4.6.1-override-6

Test Case: 8.4.6.1-override-1

> instance methods may not override static

> Expected 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}

Test Case: 8.4.6.1-override-2

> overloading does not affect overriding

> Expected 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}

Test Case: 8.4.6.1-override-3

> instance methods cannot override what is not accessible in superclass

> Expected 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}

Test Case: 8.4.6.1-override-4

> instance methods cannot override what is not accessible in superclass

> Expected 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}

Test Case: 8.4.6.1-override-5

> non-abstract methods implement abstract ones that they override

> Expected 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}

Test Case: 8.4.6.1-override-6

> instance methods cannot override what is not accessible in superclass

> Expected 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}

### 8.4.6.2

Directory : `tests/jls/classes/method-declarations/inheritance-overriding-and-hiding/hiding`

- 8.4.6.2-hiding-1
- 8.4.6.2-hiding-2
- 8.4.6.2-hiding-3
- 8.4.6.2-hiding-4
- 8.4.6.2-hiding-5
- 8.4.6.2-hiding-6

Test Case: 8.4.6.2-hiding-1

> static methods may not override instance

> Expected 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}

Test Case: 8.4.6.2-hiding-2

> overloading does not affect hiding

> Expected 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}

Test Case: 8.4.6.2-hiding-3

> static methods cannot hide what is not accessible in superclass

> Expected 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}

Test Case: 8.4.6.2-hiding-4

> static methods cannot hide what is not accessible in superclass

> Expected 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}

Test Case: 8.4.6.2-hiding-5

> static methods cannot implement abstract ones

> Expected 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}

Test Case: 8.4.6.2-hiding-6

> static methods cannot hide what is not accessible in superclass

> Expected 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}

### 8.4.6.3

Directory : `tests/jls/classes/method-declarations/inheritance-overriding-and-hiding/requirements`

- 8.4.6.3-modifier-1
- 8.4.6.3-modifier-2
- 8.4.6.3-modifier-3
- 8.4.6.3-modifier-4
- 8.4.6.3-modifier-5
- 8.4.6.3-modifier-6
- 8.4.6.3-modifier-7
- 8.4.6.3-modifier-8
- 8.4.6.3-modifier-9
- 8.4.6.3-modifier-10
- 8.4.6.3-modifier-11
- 8.4.6.3-modifier-12
- 8.4.6.3-modifier-13
- 8.4.6.3-modifier-14
- 8.4.6.3-private-1
- 8.4.6.3-default-1
- 8.4.6.3-default-2
- 8.4.6.3-default-3
- 8.4.6.3-default-4
- 8.4.6.3-default-5
- 8.4.6.3-default-6
- 8.4.6.3-default-7
- 8.4.6.3-default-8
- 8.4.6.3-default-9
- 8.4.6.3-default-10
- 8.4.6.3-default-11
- 8.4.6.3-default-12
- 8.4.6.3-default-13
- 8.4.6.3-default-14
- 8.4.6.3-signature-1
- 8.4.6.3-signature-2
- 8.4.6.3-signature-3
- 8.4.6.3-signature-4
- 8.4.6.3-signature-5
- 8.4.6.3-signature-6
- 8.4.6.3-signature-7
- 8.4.6.3-signature-8
- 8.4.6.3-signature-9
- 8.4.6.3-signature-10
- 8.4.6.3-signature-11
- 8.4.6.3-signature-12
- 8.4.6.3-signature-13
- 8.4.6.3-signature-14
- 8.4.6.3-signature-15
- 8.4.6.3-signature-16

Test Case: 8.4.6.3-modifier-1

> Access of overriding or hiding methods must equal or exceed prior access

> Expected 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}

Test Case: 8.4.6.3-modifier-2

> Access of overriding or hiding methods must equal or exceed prior access

> Expected 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}

Test Case: 8.4.6.3-modifier-3

> Access of overriding or hiding methods must equal or exceed prior access

> Expected 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}

Test Case: 8.4.6.3-modifier-4

> Access of overriding or hiding methods must equal or exceed prior access

> Expected 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}

Test Case: 8.4.6.3-modifier-5

> Access of overriding or hiding methods must equal or exceed prior access

> Expected 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}

Test Case: 8.4.6.3-modifier-6

> Access of overriding or hiding methods must equal or exceed prior access

> Expected 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}

Test Case: 8.4.6.3-modifier-7

> Access of overriding or hiding methods must equal or exceed prior access

> Expected 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}

Test Case: 8.4.6.3-modifier-8

> Access of overriding or hiding methods must equal or exceed prior access

> Expected 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}

Test Case: 8.4.6.3-modifier-9

> Access of overriding or hiding methods must equal or exceed prior access

> Expected 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}

Test Case: 8.4.6.3-modifier-10

> Access of overriding or hiding methods must equal or exceed prior access

> Expected 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}

Test Case: 8.4.6.3-modifier-11

> Access of overriding or hiding methods must equal or exceed prior access

> Expected 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}

Test Case: 8.4.6.3-modifier-12

> Access of overriding or hiding methods must equal or exceed prior access

> Expected 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}

Test Case: 8.4.6.3-modifier-13

> Access of overriding or hiding methods must equal or exceed prior access

> Expected 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}

Test Case: 8.4.6.3-modifier-14

> strictfp, abstract, native, and synchronized modifiers may change in overridden or hidden versions

> Expected 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}

Test Case: 8.4.6.3-private-1

> private methods are not overridden or hidden

> Expected 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}

Test Case: 8.4.6.3-default-1

> It is possible to avoid inheriting a package scope method, but it must still be overridden correctly

> Expected 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}

Test Case: 8.4.6.3-default-2

> It is possible to avoid inheriting a package scope method, but it must still be hidden correctly

> Expected 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}

Test Case: 8.4.6.3-default-3

> It is possible to avoid inheriting a package scope method, but it must still be overridden correctly

> Expected 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}

Test Case: 8.4.6.3-default-4

> It is possible to avoid inheriting a package scope method, but it must still be hidden correctly

> Expected 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}

Test Case: 8.4.6.3-default-5

> It is possible to avoid inheriting a package scope method, but it must still be overridden correctly

> Expected 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}

Test Case: 8.4.6.3-default-6

> It is possible to avoid inheriting a package scope method, but it must still be hidden correctly

> Expected 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}

Test Case: 8.4.6.3-default-7

> It is possible to avoid inheriting a package scope method, but it must still be overridden correctly

> Expected 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}

Test Case: 8.4.6.3-default-8

> It is possible to avoid inheriting a package scope method, but it must still be hidden correctly

> Expected 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}

Test Case: 8.4.6.3-default-9

> It is possible to avoid inheriting a package scope method, but it must still be overridden correctly

> Expected 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}

Test Case: 8.4.6.3-default-10

> It is possible to avoid inheriting a package scope method, but it must still be hidden correctly

> Expected 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}

Test Case: 8.4.6.3-default-11

> It is possible to avoid inheriting a package scope method, but it must still be overridden correctly

> Expected 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}

Test Case: 8.4.6.3-default-12

> It is possible to avoid inheriting a package scope method, but it must still be hidden correctly

> Expected 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}

Test Case: 8.4.6.3-default-13

> It is possible to avoid inheriting a package scope method, but it must still be overridden correctly

> Expected 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}

Test Case: 8.4.6.3-default-14

> It is possible to avoid inheriting a package scope method, but it must still be hidden correctly

> Expected 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}

Test Case: 8.4.6.3-signature-1

> return types must not conflict

> Expected 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}

Test Case: 8.4.6.3-signature-2

> return types must not conflict

> Expected 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}

Test Case: 8.4.6.3-signature-3

> throws clauses must be compatible

> Expected 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}

Test Case: 8.4.6.3-signature-4

> throws clauses must be compatible

> Expected 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}

Test Case: 8.4.6.3-signature-5

> throws clauses must be compatible

> Expected 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}

Test Case: 8.4.6.3-signature-6

> throws clauses must be compatible

> Expected 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}

Test Case: 8.4.6.3-signature-7

> throws clauses must be compatible

> Expected 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}

Test Case: 8.4.6.3-signature-8

> throws clauses must be compatible

> Expected 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}

Test Case: 8.4.6.3-signature-9

> throws clauses must be compatible

> Expected 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}

Test Case: 8.4.6.3-signature-10

> throws clauses must be compatible

> Expected 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}

Test Case: 8.4.6.3-signature-11

> throws clauses must be compatible

> Expected 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}

Test Case: 8.4.6.3-signature-12

> throws clauses must be compatible

> Expected 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}

Test Case: 8.4.6.3-signature-13

> throws clauses must be compatible

> Expected 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}

Test Case: 8.4.6.3-signature-14

> throws clauses must be compatible

> Expected 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}

Test Case: 8.4.6.3-signature-15

> throws clauses must be compatible

> Expected 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}

Test Case: 8.4.6.3-signature-16

> throws clauses must be compatible

> Expected 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}

### 8.4.6.4

Directory : `tests/jls/classes/method-declarations/inheritance-overriding-and-hiding/inheriting-same-signature`

- 8.4.6.4-multiple-1
- 8.4.6.4-multiple-2
- 8.4.6.4-multiple-3
- 8.4.6.4-multiple-4
- 8.4.6.4-multiple-5
- 8.4.6.4-multiple-6
- 8.4.6.4-multiple-7
- 8.4.6.4-multiple-8
- 8.4.6.4-multiple-9
- 8.4.6.4-multiple-10
- 8.4.6.4-multiple-11
- 8.4.6.4-abstract-1
- 8.4.6.4-abstract-2
- 8.4.6.4-abstract-3
- 8.4.6.4-abstract-4
- 8.4.6.4-abstract-5
- 8.4.6.4-abstract-6
- 8.4.6.4-abstract-7
- 8.4.6.4-abstract-8
- 8.4.6.4-abstract-9
- 8.4.6.4-abstract-10

Test Case: 8.4.6.4-multiple-1

> multiple inheritance is not a problem

> Expected 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}

Test Case: 8.4.6.4-multiple-2

> multiple paths still gives single inheritance

> Expected 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}

Test Case: 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.

> Expected 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}

Test Case: 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.

> Expected 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}

Test Case: 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.

> Expected 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}

Test Case: 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.

> Expected 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}

Test Case: 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.

> Expected 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}

Test Case: 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.

> Expected 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}

Test Case: 8.4.6.4-multiple-9

> multiple inheritance is not a problem

> Expected 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}

Test Case: 8.4.6.4-multiple-10

> multiple paths still gives single inheritance

> Expected 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}

Test Case: 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.

> Expected 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}

Test Case: 8.4.6.4-abstract-1

> in multiple inheritance, a non-abstract method must implement the inherited abstract ones

> Expected 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}

Test Case: 8.4.6.4-abstract-2

> in multiple inheritance, a non-abstract method must implement the inherited abstract ones

> Expected 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}

Test Case: 8.4.6.4-abstract-3

> in multiple inheritance, a non-abstract method must implement the inherited abstract ones

> Expected 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}

Test Case: 8.4.6.4-abstract-4

> in multiple inheritance, a non-abstract method must implement the inherited abstract ones

> Expected 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}

Test Case: 8.4.6.4-abstract-5

> in multiple inheritance, a non-abstract method must implement the inherited abstract ones

> Expected 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}

Test Case: 8.4.6.4-abstract-6

> in multiple inheritance with no implementation, all abstract methods are inherited, regardless of throws clauses

> Expected 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}

Test Case: 8.4.6.4-abstract-7

> in multiple inheritance with no implementation, all abstract methods are inherited

> Expected 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}

Test Case: 8.4.6.4-abstract-8

> in multiple inheritance with no implementation, all abstract methods are inherited, regardless of throws clauses

> Expected 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}

Test Case: 8.4.6.4-abstract-9

> in multiple inheritance with no implementation, all abstract methods must have same return type

> Expected 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}

Test Case: 8.4.6.4-abstract-10

> in multiple inheritance with no implementation, all abstract methods must have same return type

> Expected 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}

### 8.5

Directory : `tests/jls/classes/member-type-declarations`

- 8.5-inheritance-1
- 8.5-inheritance-2
- 8.5-inheritance-3
- 8.5-inheritance-4
- 8.5-inheritance-5
- 8.5-inheritance-6
- 8.5-name-1
- 8.5-hiding-1
- 8.5-hiding-2
- 8.5-hiding-3
- 8.5-hiding-4

Test Case: 8.5-inheritance-1

> A class inherits non-private accessible types that it does not hide by redeclaration

> Expected 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}

Test Case: 8.5-inheritance-2

> A class inherits non-private accessible types that it does not hide by redeclaration

> Expected 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}

Test Case: 8.5-inheritance-3

> A class inherits non-private accessible types that it does not hide by redeclaration

> Expected 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}

Test Case: 8.5-inheritance-4

> A class inherits non-private accessible types that it does not hide by redeclaration

> Expected 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}

Test Case: 8.5-inheritance-5

> Multiple types may be inherited with the same name, causing no problems if no ambiguous reference is made

> Expected 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}

Test Case: 8.5-inheritance-6

> Inheritance along multiple paths is still single inheritance

> Expected 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}

Test Case: 8.5-name-1

> Duplicate type names are forbidden

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 8.5-name-1 { Duplicate type names are forbidden } {

>         empty_class T85n1 {
>     	class Dup {}
>     	interface Dup {}
>         }

>     } {FAIL}

Test Case: 8.5-hiding-1

> Types can hide supertype types regardless of accessibility relationships

> Expected 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}

Test Case: 8.5-hiding-2

> Types can hide supertype types regardless of type relationships

> Expected 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}

Test Case: 8.5-hiding-3

> Types can hide supertype types regardless of instance relationships

> Expected 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}

Test Case: 8.5-hiding-4

> Types can hide supertype types regardless of modifier relationships

> Expected 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}

### 8.5.1

Directory : `tests/jls/classes/member-type-declarations/access-modifiers`

- 8.5.1-valid-modifier-1
- 8.5.1-valid-modifier-2
- 8.5.1-valid-modifier-3
- 8.5.1-valid-modifier-4
- 8.5.1-valid-modifier-5
- 8.5.1-duplicate-modifier-1
- 8.5.1-duplicate-modifier-2
- 8.5.1-duplicate-modifier-3
- 8.5.1-conflicting-modifier-1
- 8.5.1-conflicting-modifier-2
- 8.5.1-conflicting-modifier-3
- 8.5.1-conflicting-modifier-4
- 8.5.1-conflicting-modifier-5
- 8.5.1-conflicting-modifier-6

Test Case: 8.5.1-valid-modifier-1

> public is a valid ClassModifier for a member class

> Expected 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}

Test Case: 8.5.1-valid-modifier-2

> protected is a valid ClassModifier for a member class

> Expected 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}

Test Case: 8.5.1-valid-modifier-3

> private is a valid ClassModifier for a member class

> Expected 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}

Test Case: 8.5.1-valid-modifier-4

> static is a valid ClassModifier for a member class

> Expected 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}

Test Case: 8.5.1-valid-modifier-5

> strictfp is a valid ClassModifier for a member class

> Expected 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}

Test Case: 8.5.1-duplicate-modifier-1

> compile time error to specify a class modifier twice

> Expected 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}

Test Case: 8.5.1-duplicate-modifier-2

> compile time error to specify a class modifier twice

> Expected 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}

Test Case: 8.5.1-duplicate-modifier-3

> compile time error to specify a class modifier twice

> Expected 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}

Test Case: 8.5.1-conflicting-modifier-1

> conflicting modifiers must generate a compile time error

> Expected 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}

Test Case: 8.5.1-conflicting-modifier-2

> conflicting modifiers must generate a compile time error

> Expected 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}

Test Case: 8.5.1-conflicting-modifier-3

> conflicting modifiers must generate a compile time error

> Expected 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}

Test Case: 8.5.1-conflicting-modifier-4

> conflicting modifiers must generate a compile time error

> Expected 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}

Test Case: 8.5.1-conflicting-modifier-5

> conflicting modifiers must generate a compile time error

> Expected 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}

Test Case: 8.5.1-conflicting-modifier-6

> conflicting modifiers must generate a compile time error

> Expected 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}

### 8.5.2

Directory : `tests/jls/classes/member-type-declarations/static-member-type-declarations`

- 8.5.2-static-member-usage-1
- 8.5.2-static-member-usage-2
- 8.5.2-non-static-member-usage-1
- 8.5.2-non-static-member-usage-2
- 8.5.2-accessible-static-member-usage-1
- 8.5.2-accessible-static-member-usage-2
- 8.5.2-inherited-non-static-member-usage-1
- 8.5.2-inherited-non-static-member-usage-2
- 8.5.2-accessible-inherited-non-static-member-usage-1
- 8.5.2-accessible-inherited-non-static-member-usage-2

Test Case: 8.5.2-static-member-usage-1

> a member type with the static modifier may use static members of the enclosing class

> Expected 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}

Test Case: 8.5.2-static-member-usage-2

> a member type with the static modifier may use static members of the enclosing class

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 8.5.2-accessible-static-member-usage-1

> a member type with the static modifer may access private static members of the enclosing class

> Expected 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}

Test Case: 8.5.2-accessible-static-member-usage-2

> a member type with the static modifer may access private static members of the enclosing class

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

### 8.6

Directory : `tests/jls/classes/instance-initializers`

- 8.6-checked-exception-1
- 8.6-checked-exception-2
- 8.6-checked-exception-3
- 8.6-checked-exception-4
- 8.6-checked-exception-5
- 8.6-checked-exception-6
- 8.6-checked-exception-7
- 8.6-checked-exception-8
- 8.6-checked-exception-9
- 8.6-checked-exception-10
- 8.6-checked-exception-11
- 8.6-checked-exception-12
- 8.6-complete-1
- 8.6-complete-2
- 8.6-complete-3
- 8.6-complete-4
- 8.6-complete-5
- 8.6-complete-6
- 8.6-return-1
- 8.6-return-2
- 8.6-return-3
- 8.6-return-4
- 8.6-this-1
- 8.6-super-1
- 8.6-modifier-1
- 8.6-modifier-2
- 8.6-modifier-3
- 8.6-modifier-4
- 8.6-modifier-5
- 8.6-modifier-6
- 8.6-modifier-7
- 8.6-modifier-8
- 8.6-modifier-9
- 8.6-modifier-10

Test Case: 8.6-checked-exception-1

> Instance initializers of non-anonymous classes may throw checked exceptions only if all constructors have compatible throws clauses

> Expected 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}

Test Case: 8.6-checked-exception-2

> Instance initializers of non-anonymous classes may throw checked exceptions only if all constructors have compatible throws clauses

> Expected 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}

Test Case: 8.6-checked-exception-3

> Instance initializers of non-anonymous classes may throw checked exceptions only if all constructors have compatible throws clauses

> Expected 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}

Test Case: 8.6-checked-exception-4

> Instance initializers of non-anonymous classes may throw checked exceptions only if all constructors have compatible throws clauses

> Expected 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}

Test Case: 8.6-checked-exception-5

> Instance initializers of anonymous classes may throw any exception, and the generated constructor must automatically throw such exceptions

> Expected 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}

Test Case: 8.6-checked-exception-6

> Instance initializers of anonymous classes may throw any exception, and the generated constructor must automatically throw such exceptions

> Expected 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}

Test Case: 8.6-checked-exception-7

> Instance initializers of non-anonymous classes may throw checked exceptions only if all constructors have compatible throws clauses

> Expected 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}

Test Case: 8.6-checked-exception-8

> Instance initializers of non-anonymous classes may throw checked exceptions only if all constructors have compatible throws clauses

> Expected 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}

Test Case: 8.6-checked-exception-9

> Instance initializers of non-anonymous classes may throw checked exceptions only if all constructors have compatible throws clauses

> Expected 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}

Test Case: 8.6-checked-exception-10

> Instance initializers of non-anonymous classes may throw checked exceptions only if all constructors have compatible throws clauses

> Expected 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}

Test Case: 8.6-checked-exception-11

> Instance initializers of anonymous classes may throw any exception, and the generated constructor must automatically throw such exceptions

> Expected 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}

Test Case: 8.6-checked-exception-12

> Instance initializers of anonymous classes may throw any exception, and the generated constructor must automatically throw such exceptions

> Expected 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}

Test Case: 8.6-complete-1

> Instance initializers must be able to complete normally

> Expected 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}

Test Case: 8.6-complete-2

> Instance initializers must be able to complete normally

> Expected 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}

Test Case: 8.6-complete-3

> Instance initializers must be able to complete normally, by 14.20, if(true) always completes normally

> Expected 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}

Test Case: 8.6-complete-4

> Instance initializers must be able to complete normally

> Expected 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}

Test Case: 8.6-complete-5

> Instance initializers must be able to complete normally

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 8.6-complete-5 { Instance initializers must be able to complete
>             normally } {

>         empty_class T86c5 {
>             { while (true); }
>         }

>     } {FAIL}

Test Case: 8.6-complete-6

> Instance initializers must be able to complete normally, by 14.20, if(true) always completes normally

> Expected 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}

Test Case: 8.6-return-1

> Instance initializers may not return

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 8.6-return-1 { Instance initializers may not return } {

>         empty_class T86r1 {
>             { return; }
>         }

>     } {FAIL}

Test Case: 8.6-return-2

> Instance initializers may not return

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 8.6-return-2 { Instance initializers may not return } {

>         empty_class T86r2 {
>             { if (false) return; }
>         }

>     } {FAIL}

Test Case: 8.6-return-3

> Instance initializers may not return

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 8.6-return-3 { Instance initializers may not return } {

>         empty_class T86r3 {
>             { return 1; }
>         }

>     } {FAIL}

Test Case: 8.6-return-4

> Instance initializers may not return

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 8.6-return-4 { Instance initializers may not return } {

>         empty_class T86r4 {
>             { if (false) return 1; }
>         }

>     } {FAIL}

Test Case: 8.6-this-1

> Instance initializers may access this

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 8.6-this-1 { Instance initializers may access this } {

>         empty_class T86t1 {
>             { this.toString(); }
>         }

>     } {PASS}

Test Case: 8.6-super-1

> Instance initializers may access super

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 8.6-super-1 { Instance initializers may access super } {

>         empty_class T86s1 {
>             { super.toString(); }
>         }

>     } {PASS}

Test Case: 8.6-modifier-1

> Instance initializers may not have modifiers

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 8.6-modifier-1 { Instance initializers may not have modifiers } {

>         empty_class T86m1 {
>     	public {}
>         }

>     } {FAIL}

Test Case: 8.6-modifier-2

> Instance initializers may not have modifiers

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 8.6-modifier-2 { Instance initializers may not have modifiers } {

>         empty_class T86m2 {
>     	protected {}
>         }

>     } {FAIL}

Test Case: 8.6-modifier-3

> Instance initializers may not have modifiers

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 8.6-modifier-3 { Instance initializers may not have modifiers } {

>         empty_class T86m3 {
>     	private {}
>         }

>     } {FAIL}

Test Case: 8.6-modifier-4

> Instance initializers may not have modifiers

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 8.6-modifier-4 { Instance initializers may not have modifiers } {

>         empty_class T86m4 {
>     	final {}
>         }

>     } {FAIL}

Test Case: 8.6-modifier-5

> Instance initializers may not have modifiers

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 8.6-modifier-5 { Instance initializers may not have modifiers } {

>         empty_class T86m5 {
>     	synchronized {}
>         }

>     } {FAIL}

Test Case: 8.6-modifier-6

> Instance initializers may not have modifiers

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 8.6-modifier-6 { Instance initializers may not have modifiers } {

>         empty_class T86m6 {
>     	volatile {}
>         }

>     } {FAIL}

Test Case: 8.6-modifier-7

> Instance initializers may not have modifiers

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 8.6-modifier-7 { Instance initializers may not have modifiers } {

>         empty_class T86m7 {
>     	transient {}
>         }

>     } {FAIL}

Test Case: 8.6-modifier-8

> Instance initializers may not have modifiers

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 8.6-modifier-8 { Instance initializers may not have modifiers } {

>         empty_class T86m8 {
>     	native {}
>         }

>     } {FAIL}

Test Case: 8.6-modifier-9

> Instance initializers may not have modifiers

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 8.6-modifier-9 { Instance initializers may not have modifiers } {

>         empty_class T86m9 {
>     	abstract {}
>         }

>     } {FAIL}

Test Case: 8.6-modifier-10

> Instance initializers may not have modifiers

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 8.6-modifier-10 { Instance initializers may not have modifiers } {

>         empty_class T86m10 {
>     	strictfp {}
>         }

>     } {FAIL}

### 8.7

Directory : `tests/jls/classes/static-initializers`

- 8.7-checked-exception-1
- 8.7-checked-exception-2
- 8.7-checked-exception-3
- 8.7-complete-1
- 8.7-complete-2
- 8.7-complete-3
- 8.7-complete-4
- 8.7-return-1
- 8.7-return-2
- 8.7-return-3
- 8.7-return-4
- 8.7-this-1
- 8.7-this-2
- 8.7-super-1
- 8.7-modifier-1
- 8.7-modifier-2
- 8.7-modifier-3
- 8.7-modifier-4
- 8.7-modifier-5
- 8.7-modifier-6
- 8.7-modifier-7
- 8.7-modifier-8
- 8.7-modifier-9
- 8.7-modifier-10
- 8.7-modifier-11
- 8.7-modifier-12
- 8.7-modifier-13
- 8.7-modifier-14
- 8.7-modifier-15
- 8.7-modifier-16
- 8.7-modifier-17
- 8.7-modifier-18
- 8.7-modifier-19
- 8.7-modifier-20
- 8.7-modifier-21

Test Case: 8.7-checked-exception-1

> Static initializers may not throw checked exceptions

> Expected 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}

Test Case: 8.7-checked-exception-2

> Static initializers may not throw checked exceptions

> Expected 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}

Test Case: 8.7-checked-exception-3

> Static initializers may not throw checked exceptions

> Expected 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}

Test Case: 8.7-complete-1

> Static initializers must be able to complete normally

> Expected 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}

Test Case: 8.7-complete-2

> Static initializers must be able to complete normally, by 14.20, if(true) always completes normally

> Expected 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}

Test Case: 8.7-complete-3

> Static initializers must be able to complete normally

> Expected 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}

Test Case: 8.7-complete-4

> Static initializers must be able to complete normally, by 14.20, if(true) always completes normally

> Expected 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}

Test Case: 8.7-return-1

> Static initializers may not return

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 8.7-return-1 { Static initializers may not return } {

>         empty_class T87r1 {
>             static { return; }
>         }

>     } {FAIL}

Test Case: 8.7-return-2

> Static initializers may not return

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 8.7-return-2 { Static initializers may not return } {

>         empty_class T87r2 {
>             static { if (false) return; }
>         }

>     } {FAIL}

Test Case: 8.7-return-3

> Static initializers may not return

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 8.7-return-3 { Static initializers may not return } {

>         empty_class T87r3 {
>             static { return 1; }
>         }

>     } {FAIL}

Test Case: 8.7-return-4

> Static initializers may not return

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 8.7-return-4 { Static initializers may not return } {

>         empty_class T87r4 {
>             static { if (false) return 1; }
>         }

>     } {FAIL}

Test Case: 8.7-this-1

> Static initializers may not access this

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 8.7-this-1 { Static initializers may not access this } {

>         empty_class T87t1 {
>             static { this.toString(); }
>         }

>     } {FAIL}

Test Case: 8.7-this-2

> Static initializers may not access this, not even implicitly

> Expected 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}

Test Case: 8.7-super-1

> Static initializers may not access super

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 8.7-super-1 { Static initializers may not access super } {

>         empty_class T87s1 {
>             static { super.toString(); }
>         }

>     } {FAIL}

Test Case: 8.7-modifier-1

> Static initializers may not have modifiers

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 8.7-modifier-1 { Static initializers may not have modifiers } {

>         empty_class T87m1 {
>     	public static {}
>         }

>     } {FAIL}

Test Case: 8.7-modifier-2

> Static initializers may not have modifiers

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 8.7-modifier-2 { Static initializers may not have modifiers } {

>         empty_class T87m2 {
>     	protected static {}
>         }

>     } {FAIL}

Test Case: 8.7-modifier-3

> Static initializers may not have modifiers

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 8.7-modifier-3 { Static initializers may not have modifiers } {

>         empty_class T87m3 {
>     	private static {}
>         }

>     } {FAIL}

Test Case: 8.7-modifier-4

> Static initializers may not have modifiers

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 8.7-modifier-4 { Static initializers may not have modifiers } {

>         empty_class T87m4 {
>     	final static {}
>         }

>     } {FAIL}

Test Case: 8.7-modifier-5

> Static initializers may not have modifiers

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 8.7-modifier-5 { Static initializers may not have modifiers } {

>         empty_class T87m5 {
>     	synchronized static {}
>         }

>     } {FAIL}

Test Case: 8.7-modifier-6

> Static initializers may not have modifiers

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 8.7-modifier-6 { Static initializers may not have modifiers } {

>         empty_class T87m6 {
>     	volatile static {}
>         }

>     } {FAIL}

Test Case: 8.7-modifier-7

> Static initializers may not have modifiers

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 8.7-modifier-7 { Static initializers may not have modifiers } {

>         empty_class T87m7 {
>     	transient static {}
>         }

>     } {FAIL}

Test Case: 8.7-modifier-8

> Static initializers may not have modifiers

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 8.7-modifier-8 { Static initializers may not have modifiers } {

>         empty_class T87m8 {
>     	native static {}
>         }

>     } {FAIL}

Test Case: 8.7-modifier-9

> Static initializers may not have modifiers

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 8.7-modifier-9 { Static initializers may not have modifiers } {

>         empty_class T87m9 {
>     	abstract static {}
>         }

>     } {FAIL}

Test Case: 8.7-modifier-10

> Static initializers may not have modifiers

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 8.7-modifier-10 { Static initializers may not have modifiers } {

>         empty_class T87m10 {
>     	strictfp static {}
>         }

>     } {FAIL}

Test Case: 8.7-modifier-11

> Static initializers may not have modifiers

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 8.7-modifier-11 { Static initializers may not have modifiers } {

>         empty_class T87m11 {
>     	static public {}
>         }

>     } {FAIL}

Test Case: 8.7-modifier-12

> Static initializers may not have modifiers

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 8.7-modifier-12 { Static initializers may not have modifiers } {

>         empty_class T87m12 {
>     	static protected {}
>         }

>     } {FAIL}

Test Case: 8.7-modifier-13

> Static initializers may not have modifiers

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 8.7-modifier-13 { Static initializers may not have modifiers } {

>         empty_class T87m13 {
>     	static private {}
>         }

>     } {FAIL}

Test Case: 8.7-modifier-14

> Static initializers may not have modifiers

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 8.7-modifier-14 { Static initializers may not have modifiers } {

>         empty_class T87m14 {
>     	static final {}
>         }

>     } {FAIL}

Test Case: 8.7-modifier-15

> Static initializers may not have modifiers

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 8.7-modifier-15 { Static initializers may not have modifiers } {

>         empty_class T87m15 {
>     	static synchronized {}
>         }

>     } {FAIL}

Test Case: 8.7-modifier-16

> Static initializers may not have modifiers

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 8.7-modifier-16 { Static initializers may not have modifiers } {

>         empty_class T87m16 {
>     	static volatile {}
>         }

>     } {FAIL}

Test Case: 8.7-modifier-17

> Static initializers may not have modifiers

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 8.7-modifier-17 { Static initializers may not have modifiers } {

>         empty_class T87m17 {
>     	static transient {}
>         }

>     } {FAIL}

Test Case: 8.7-modifier-18

> Static initializers may not have modifiers

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 8.7-modifier-18 { Static initializers may not have modifiers } {

>         empty_class T87m18 {
>     	static native {}
>         }

>     } {FAIL}

Test Case: 8.7-modifier-19

> Static initializers may not have modifiers

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 8.7-modifier-19 { Static initializers may not have modifiers } {

>         empty_class T87m19 {
>     	static abstract {}
>         }

>     } {FAIL}

Test Case: 8.7-modifier-20

> Static initializers may not have modifiers

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 8.7-modifier-20 { Static initializers may not have modifiers } {

>         empty_class T87m20 {
>     	static strictfp {}
>         }

>     } {FAIL}

Test Case: 8.7-modifier-21

> Static initializers may not have modifiers

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 8.7-modifier-21 { Static initializers may not have modifiers } {

>         empty_class T87m21 {
>     	static static {}
>         }

>     } {FAIL}

### 8.8

Directory : `tests/jls/classes/constructor-declarations`

- 8.8-simpletypename-1
- 8.8-simpletypename-2
- 8.8-simpletypename-3
- 8.8-simpletypename-4
- 8.8-example-1

Test Case: 8.8-simpletypename-1

> SimpleTypeName in the ConstructorDeclarator must be the simple name of the class that contains the constructor declaration

> Expected 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}

Test Case: 8.8-simpletypename-2

> SimpleTypeName in the ConstructorDeclarator must be the simple name of the class that contains the constructor declaration

> Expected 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}

Test Case: 8.8-simpletypename-3

> SimpleTypeName in the ConstructorDeclarator must be the simple name of the class that contains the constructor declaration

> Expected 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}

Test Case: 8.8-simpletypename-4

> SimpleTypeName in the ConstructorDeclarator must be the simple name of the class that contains the constructor declaration

> Expected 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}

Test Case: 8.8-example-1

> JLS example

> Expected 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}

### 8.8.1

Directory : `tests/jls/classes/constructor-declarations/formal-parameters`

- 8.8.1-formal-parameters-1
- 8.8.1-formal-parameters-2
- 8.8.1-formal-parameters-3
- 8.8.1-formal-parameters-4
- 8.8.1-formal-parameters-5
- 8.8.1-formal-parameters-6
- 8.8.1-invalid-formal-parameters-1
- 8.8.1-invalid-formal-parameters-2
- 8.8.1-invalid-formal-parameters-3
- 8.8.1-invalid-formal-parameters-4

Test Case: 8.8.1-formal-parameters-1

> See 8.4.1

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 8.8.1-formal-parameters-1 { See 8.4.1 } {

>         empty_class T881fp1 "T881fp1() {}"

>     } {PASS}

Test Case: 8.8.1-formal-parameters-2

> See 8.4.1

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 8.8.1-formal-parameters-2 { See 8.4.1 } {

>         empty_class T881fp2 "T881fp2(int i) {}"

>     } {PASS}

Test Case: 8.8.1-formal-parameters-3

> See 8.4.1

> Expected 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}

Test Case: 8.8.1-formal-parameters-4

> See 8.4.1

> Expected 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}

Test Case: 8.8.1-formal-parameters-5

> See 8.4.1

> Expected 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}

Test Case: 8.8.1-formal-parameters-6

> See 8.4.1

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 8.8.1-formal-parameters-6 { See 8.4.1 } {

>         empty_class T881fp6 {T881fp6(final int[] arr) {}}

>     } {PASS}

Test Case: 8.8.1-invalid-formal-parameters-1

> See 8.4.1

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 8.8.1-invalid-formal-parameters-1 { See 8.4.1 } {

>         empty_class T881ifp1 "T881ifp1(int i, ) {}"

>     } {FAIL}

Test Case: 8.8.1-invalid-formal-parameters-2

> See 8.4.1

> Expected 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}

Test Case: 8.8.1-invalid-formal-parameters-3

> See 8.4.1

> Expected 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}

Test Case: 8.8.1-invalid-formal-parameters-4

> See 8.4.1

> Expected 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}

### 8.8.2

Directory : `tests/jls/classes/constructor-declarations/constructor-signature`

- 8.8.2-signature-1
- 8.8.2-invalid-signature-1

Test Case: 8.8.2-signature-1

> The signature of a constructor consists of the number and types of formal parameters to the constructor

> Expected 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}

Test Case: 8.8.2-invalid-signature-1

> A class may not declare two constructors with the same signature, or a compile-time error occurs

> Expected 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}

### 8.8.3

Directory : `tests/jls/classes/constructor-declarations/constructor-modifiers`

- 8.8.3-modifiers-1
- 8.8.3-modifiers-2
- 8.8.3-modifiers-3
- 8.8.3-duplicate-modifiers-1
- 8.8.3-duplicate-modifiers-2
- 8.8.3-duplicate-modifiers-3
- 8.8.3-multiple-modifiers-1
- 8.8.3-multiple-modifiers-2
- 8.8.3-multiple-modifiers-3
- 8.8.3-multiple-modifiers-4
- 8.8.3-multiple-modifiers-5
- 8.8.3-multiple-modifiers-6
- 8.8.3-invalid-modifiers-1
- 8.8.3-invalid-modifiers-2
- 8.8.3-invalid-modifiers-3
- 8.8.3-invalid-modifiers-4
- 8.8.3-invalid-modifiers-5
- 8.8.3-invalid-modifiers-6

Test Case: 8.8.3-modifiers-1

> ConstructorModifier can be public, protected, or private

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 8.8.3-modifiers-1 { ConstructorModifier can
>             be public, protected, or private } {

>         empty_class T883m1 "public T883m1() {}"

>     } {PASS}

Test Case: 8.8.3-modifiers-2

> ConstructorModifier can be public, protected, or private

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 8.8.3-modifiers-2 { ConstructorModifier can
>             be public, protected, or private } {

>         empty_class T883m2 "protected T883m2() {}"

>     } {PASS}

Test Case: 8.8.3-modifiers-3

> ConstructorModifier can be public, protected, or private

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 8.8.3-modifiers-3 { ConstructorModifier can
>             be public, protected, or private } {

>         empty_class T883m3 "private T883m3() {}"

>     } {PASS}

Test Case: 8.8.3-duplicate-modifiers-1

> A compile-time error occurs if the same modifier appears more than once in a constructor declaration

> Expected 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}

Test Case: 8.8.3-duplicate-modifiers-2

> A compile-time error occurs if the same modifier appears more than once in a constructor declaration

> Expected 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}

Test Case: 8.8.3-duplicate-modifiers-3

> A compile-time error occurs if the same modifier appears more than once in a constructor declaration

> Expected 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}

Test Case: 8.8.3-multiple-modifiers-1

> A compile-time error occurs if a constructor declaration has more than one of public, protected, and private

> Expected 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}

Test Case: 8.8.3-multiple-modifiers-2

> A compile-time error occurs if a constructor declaration has more than one of public, protected, and private

> Expected 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}

Test Case: 8.8.3-multiple-modifiers-3

> A compile-time error occurs if a constructor declaration has more than one of public, protected, and private

> Expected 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}

Test Case: 8.8.3-multiple-modifiers-4

> A compile-time error occurs if a constructor declaration has more than one of public, protected, and private

> Expected 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}

Test Case: 8.8.3-multiple-modifiers-5

> A compile-time error occurs if a constructor declaration has more than one of public, protected, and private

> Expected 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}

Test Case: 8.8.3-multiple-modifiers-6

> A compile-time error occurs if a constructor declaration has more than one of public, protected, and private

> Expected 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}

Test Case: 8.8.3-invalid-modifiers-1

> A constructor cannot be abstract, static, final, native, strictfp, or synchronized

> Expected 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}

Test Case: 8.8.3-invalid-modifiers-2

> A constructor cannot be abstract, static, final, native, strictfp, or synchronized

> Expected 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}

Test Case: 8.8.3-invalid-modifiers-3

> A constructor cannot be abstract, static, final, native, strictfp, or synchronized

> Expected 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}

Test Case: 8.8.3-invalid-modifiers-4

> A constructor cannot be abstract, static, final, native, strictfp, or synchronized

> Expected 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}

Test Case: 8.8.3-invalid-modifiers-5

> A constructor cannot be abstract, static, final, native, strictfp, or synchronized

> Expected 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}

Test Case: 8.8.3-invalid-modifiers-6

> A constructor cannot be abstract, static, final, native, strictfp, or synchronized

> Expected 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}

### 8.8.5

Directory : `tests/jls/classes/constructor-declarations/constructor-body`

- 8.8.5-return-statement-1
- 8.8.5-return-statement-2
- 8.8.5-example-1

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 8.8.5-example-1

> JLS example

> Expected 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}

### 8.8.5.1

Directory : `tests/jls/classes/constructor-declarations/constructor-body/explicit-constructor-invocations`

- 8.8.5.1-before-block-statements-this-1
- 8.8.5.1-before-block-statements-this-2
- 8.8.5.1-before-block-statements-this-3
- 8.8.5.1-before-block-statements-super-1
- 8.8.5.1-before-block-statements-super-2
- 8.8.5.1-before-block-statements-super-3
- 8.8.5.1-multiple-this-invocations-1
- 8.8.5.1-multiple-this-invocations-2
- 8.8.5.1-multiple-this-invocations-3
- 8.8.5.1-accessible-implicit-super-invocation-1
- 8.8.5.1-accessible-implicit-super-invocation-2
- 8.8.5.1-accessible-implicit-super-invocation-3
- 8.8.5.1-accessible-explicit-super-invocation-1
- 8.8.5.1-accessible-explicit-super-invocation-2
- 8.8.5.1-accessible-explicit-super-invocation-3
- 8.8.5.1-accessible-explicit-super-invocation-args-1
- 8.8.5.1-accessible-explicit-super-invocation-args-2
- 8.8.5.1-accessible-explicit-super-invocation-args-3
- 8.8.5.1-accessible-explicit-super-invocation-args-4
- 8.8.5.1-accessible-explicit-super-invocation-args-5
- 8.8.5.1-inaccessible-implicit-super-invocation-1
- 8.8.5.1-inaccessible-explicit-super-invocation-1
- 8.8.5.1-inaccessible-explicit-super-invocation-args-1
- 8.8.5.1-inaccessible-explicit-super-invocation-args-2
- 8.8.5.1-example-1
- 8.8.5.1-example-2
- 8.8.5.1-example-3
- 8.8.5.1-example-4
- 8.8.5.1-ambiguous-super-1
- 8.8.5.1-ambiguous-super-2
- 8.8.5.1-ambiguous-super-3
- 8.8.5.1-ambiguous-super-4
- 8.8.5.1-ambiguous-super-5
- 8.8.5.1-alternate-constructor-invocation-1
- 8.8.5.1-alternate-constructor-invocation-2
- 8.8.5.1-alternate-constructor-invocation-3
- 8.8.5.1-ambiguous-this-1
- 8.8.5.1-ambiguous-this-2
- 8.8.5.1-ambiguous-this-3
- 8.8.5.1-qualified-1
- 8.8.5.1-qualified-2
- 8.8.5.1-qualified-3
- 8.8.5.1-qualified-4
- 8.8.5.1-qualified-5
- 8.8.5.1-qualified-6
- 8.8.5.1-qualified-7
- 8.8.5.1-qualified-8
- 8.8.5.1-qualified-9
- 8.8.5.1-qualified-10
- 8.8.5.1-qualified-11
- 8.8.5.1-qualified-12
- 8.8.5.1-qualified-13
- 8.8.5.1-qualified-14
- 8.8.5.1-qualified-15
- 8.8.5.1-qualified-16
- 8.8.5.1-qualified-17
- 8.8.5.1-qualified-18

Test Case: 8.8.5.1-before-block-statements-this-1

> An ExplicitConstructorInvocation must appear before the optional BlockStatements

> Expected 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}

Test Case: 8.8.5.1-before-block-statements-this-2

> An ExplicitConstructorInvocation must appear before the optional BlockStatements

> Expected 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}

Test Case: 8.8.5.1-before-block-statements-this-3

> An ExplicitConstructorInvocation must appear before the optional BlockStatements

> Expected 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}

Test Case: 8.8.5.1-before-block-statements-super-1

> An ExplicitConstructorInvocation must appear before the optional BlockStatements

> Expected 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}

Test Case: 8.8.5.1-before-block-statements-super-2

> An ExplicitConstructorInvocation must appear before the optional BlockStatements

> Expected 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}

Test Case: 8.8.5.1-before-block-statements-super-3

> An ExplicitConstructorInvocation must appear before the optional BlockStatements

> Expected 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}

Test Case: 8.8.5.1-multiple-this-invocations-1

> It is a compile-time error for a constructor to invoke itself

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 8.8.5.1-accessible-explicit-super-invocation-1

> explicit superclass constructor invocation

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 8.8.5.1-accessible-explicit-super-invocation-args-1

> explicit superclass constructor invocation

> Expected 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}

Test Case: 8.8.5.1-accessible-explicit-super-invocation-args-2

> explicit superclass constructor invocation

> Expected 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}

Test Case: 8.8.5.1-accessible-explicit-super-invocation-args-3

> a private constructor in an enclosing class is accessible

> Expected 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}

Test Case: 8.8.5.1-accessible-explicit-super-invocation-args-4

> a private constructor in an enclosing class is accessible

> Expected 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}

Test Case: 8.8.5.1-accessible-explicit-super-invocation-args-5

> pass lots of types to multiple accessible constructors

> Expected 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}

Test Case: 8.8.5.1-inaccessible-implicit-super-invocation-1

> A private constructor is not accessible in a subclass

> Expected 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}

Test Case: 8.8.5.1-inaccessible-explicit-super-invocation-1

> A private constructor is not accessible in a subclass

> Expected 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}

Test Case: 8.8.5.1-inaccessible-explicit-super-invocation-args-1

> A private constructor is not accessible in a subclass

> Expected 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}

Test Case: 8.8.5.1-inaccessible-explicit-super-invocation-args-2

> A private constructor is not accessible in a subclass

> Expected 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}

Test Case: 8.8.5.1-example-1

> Example of qualified superconstructor

> Expected 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}

Test Case: 8.8.5.1-example-2

> Example of error accessing instance field

> Expected 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}

Test Case: 8.8.5.1-example-3

> Example of error accessing instance field when anonymous class is in explicit constructor invocation

> Expected 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}

Test Case: 8.8.5.1-example-4

> Example of legal access of parameter when anonymous class is in explicit constructor invocation

> Expected 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}

Test Case: 8.8.5.1-ambiguous-super-1

> The constructor to call must not be ambiguous

> Expected 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}

Test Case: 8.8.5.1-ambiguous-super-2

> The constructor to call must not be ambiguous

> Expected 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}

Test Case: 8.8.5.1-ambiguous-super-3

> The constructor to call must not be ambiguous

> Expected 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}

Test Case: 8.8.5.1-ambiguous-super-4

> The constructor to call must not be ambiguous

> Expected 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}

Test Case: 8.8.5.1-ambiguous-super-5

> The constructor to call must not be ambiguous

> Expected 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}

Test Case: 8.8.5.1-alternate-constructor-invocation-1

> An alternate constructor invocation invokes a constructor of the same class

> Expected 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}

Test Case: 8.8.5.1-alternate-constructor-invocation-2

> An alternate constructor invocation can invoke a chain of constructors in the same class

> Expected 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}

Test Case: 8.8.5.1-alternate-constructor-invocation-3

> An alternate constructor must exist

> Expected 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}

Test Case: 8.8.5.1-ambiguous-this-1

> The constructor to call must not be ambiguous

> Expected 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}

Test Case: 8.8.5.1-ambiguous-this-2

> The constructor to call must not be ambiguous

> Expected 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}

Test Case: 8.8.5.1-ambiguous-this-3

> The constructor to call must not be ambiguous

> Expected 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}

Test Case: 8.8.5.1-qualified-1

> Qualified explicit invocation allows one to specify the enclosing instance of the superclass

> Expected 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}

Test Case: 8.8.5.1-qualified-2

> Qualified explicit invocation allows one to specify the enclosing instance of the superclass

> Expected 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}

Test Case: 8.8.5.1-qualified-3

> Qualified explicit invocation allows one to specify the enclosing instance of the superclass

> Expected 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}

Test Case: 8.8.5.1-qualified-4

> Qualified explicit invocation allows one to specify the enclosing instance of the superclass

> Expected 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}

Test Case: 8.8.5.1-qualified-5

> Qualified explicit invocation allows one to specify the enclosing instance of the superclass

> Expected 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}

Test Case: 8.8.5.1-qualified-6

> Qualified explicit invocation allows one to specify the enclosing instance of the superclass

> Expected 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}

Test Case: 8.8.5.1-qualified-7

> There is no qualified this() explicit constructor invocation

> Expected 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}

Test Case: 8.8.5.1-qualified-8

> Qualified explicit constructors must have a superclass that is an inner class

> Expected 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}

Test Case: 8.8.5.1-qualified-9

> Qualified explicit constructors must have a superclass that is an inner class

> Expected 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}

Test Case: 8.8.5.1-qualified-10

> Qualified explicit constructors are allowed even when the enclosing class of the superclass can be determined already

> Expected 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}

Test Case: 8.8.5.1-qualified-11

> Explicit constructors may reference qualified this or super which names an enclosing class

> Expected 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}

Test Case: 8.8.5.1-qualified-12

> Explicit constructors may reference qualified this or super which names an enclosing class

> Expected 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}

Test Case: 8.8.5.1-qualified-13

> Explicit constructors may reference qualified this or super which names an enclosing class

> Expected 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}

Test Case: 8.8.5.1-qualified-14

> Explicit constructors may reference qualified this or super which names an enclosing class

> Expected 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}

Test Case: 8.8.5.1-qualified-15

> Explicit constructors may reference qualified this or super which names an enclosing class

> Expected 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}

Test Case: 8.8.5.1-qualified-16

> Explicit constructors may reference qualified this or super which names an enclosing class

> Expected 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}

Test Case: 8.8.5.1-qualified-17

> Explicit constructors may reference qualified this or super which names an enclosing class

> Expected 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}

Test Case: 8.8.5.1-qualified-18

> Explicit constructors may reference qualified this or super which names an enclosing class

> Expected 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}

### 8.8.6

Directory : `tests/jls/classes/constructor-declarations/constructor-overloading`

- 8.8.6-overloaded-1

Test Case: 8.8.6-overloaded-1

> An overloaded constructor is resolved at compiler time as described in 15.9.3

> Expected 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}

### 8.8.7

Directory : `tests/jls/classes/constructor-declarations/default-constructor`

- 8.8.7-default-1
- 8.8.7-default-2
- 8.8.7-throws-1
- 8.8.7-inaccessible-default-constructor-toplevel-1
- 8.8.7-inaccessible-default-constructor-toplevel-2
- 8.8.7-accessible-default-constructor-inner-1
- 8.8.7-accessible-default-constructor-inner-2
- 8.8.7-accessible-default-constructor-inner-3
- 8.8.7-accessible-default-constructor-inner-4
- 8.8.7-accessible-default-constructor-inner-5
- 8.8.7-accessible-default-constructor-inner-6
- 8.8.7-accessible-default-constructor-inner-7
- 8.8.7-accessible-default-constructor-inner-8
- 8.8.7-accessible-default-constructor-inner-9
- 8.8.7-accessible-default-constructor-inner-10
- 8.8.7-accessible-default-constructor-inner-11
- 8.8.7-accessible-default-constructor-inner-12
- 8.8.7-accessible-default-constructor-inner-13
- 8.8.7-accessible-default-constructor-inner-14
- 8.8.7-accessible-default-constructor-inner-15
- 8.8.7-accessible-default-constructor-inner-16
- 8.8.7-accessible-default-constructor-inner-17
- 8.8.7-accessible-default-constructor-inner-18
- 8.8.7-accessible-default-constructor-inner-19
- 8.8.7-accessible-default-constructor-inner-20
- 8.8.7-accessible-default-constructor-inner-21
- 8.8.7-accessible-default-constructor-inner-22
- 8.8.7-accessible-default-constructor-inner-23
- 8.8.7-accessible-default-constructor-inner-24
- 8.8.7-accessible-default-constructor-inner-25
- 8.8.7-accessible-default-constructor-inner-26
- 8.8.7-accessible-default-constructor-inner-27
- 8.8.7-accessible-default-constructor-inner-28
- 8.8.7-accessible-default-constructor-inner-29

Test Case: 8.8.7-default-1

> If a class contains no constructor declarations, then a default constructor that takes no parameters is automatically provided

> Expected 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}

Test Case: 8.8.7-default-2

> If a class contains no constructor declarations, then a default constructor that takes no parameters is automatically provided

> Expected 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}

Test Case: 8.8.7-throws-1

> A default constructor has no throws clause

> Expected 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}

Test Case: 8.8.7-inaccessible-default-constructor-toplevel-1

> A private constructor is not accessible in a subclass

> Expected 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}

Test Case: 8.8.7-inaccessible-default-constructor-toplevel-2

> A constructor with default accessibility in some other package is not accessible in a subclass

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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.

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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.

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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.

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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.

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 8.8.7-accessible-default-constructor-inner-28

> A constructor with private accessibility can be accessed from an inner class of an anonymous class

> Expected 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}

Test Case: 8.8.7-accessible-default-constructor-inner-29

> A constructor with private accessibility can be accessed from an inner class of an anonymous class

> Expected 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}

### 9.1

Directory : `tests/jls/interfaces/interface-declarations`

- 9.1-enclosing-1
- 9.1-enclosing-2
- 9.1-enclosing-3
- 9.1-enclosing-4

Test Case: 9.1-enclosing-1

> An interface may not have the same simple name as an enclosing type

> Expected 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}

Test Case: 9.1-enclosing-2

> An interface may not have the same simple name as an enclosing type

> Expected 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}

Test Case: 9.1-enclosing-3

> An interface may not have the same simple name as an enclosing type

> Expected 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}

Test Case: 9.1-enclosing-4

> An interface may not have the same simple name as an enclosing type

> Expected 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}

### 9.1.1

Directory : `tests/jls/interfaces/interface-declarations/interface-modifiers`

- 9.1.1-1
- 9.1.1-2
- 9.1.1-3
- 9.1.1-4
- 9.1.1-5
- 9.1.1-6
- 9.1.1-7
- 9.1.1-8
- 9.1.1-9
- 9.1.1-10
- 9.1.1-11
- 9.1.1-12
- 9.1.1-13
- 9.1.1-14
- 9.1.1-15
- 9.1.1-16
- 9.1.1-17
- 9.1.1-in-class-1
- 9.1.1-in-class-2
- 9.1.1-in-class-3
- 9.1.1-in-class-4
- 9.1.1-in-class-5
- 9.1.1-in-class-6
- 9.1.1-in-class-7
- 9.1.1-in-class-8
- 9.1.1-in-class-9
- 9.1.1-in-class-10
- 9.1.1-in-class-11
- 9.1.1-in-class-12
- 9.1.1-in-class-13
- 9.1.1-in-class-14
- 9.1.1-in-class-15
- 9.1.1-in-class-16
- 9.1.1-in-class-17
- 9.1.1-in-class-18
- 9.1.1-in-class-19
- 9.1.1-in-class-20
- 9.1.1-in-class-21
- 9.1.1-in-class-22
- 9.1.1-in-class-23
- 9.1.1-in-class-24
- 9.1.1-in-class-25
- 9.1.1-in-interface-1
- 9.1.1-in-interface-2
- 9.1.1-in-interface-3
- 9.1.1-in-interface-4
- 9.1.1-in-interface-5
- 9.1.1-in-interface-6
- 9.1.1-in-interface-7
- 9.1.1-in-interface-8
- 9.1.1-in-interface-9
- 9.1.1-in-interface-10
- 9.1.1-in-interface-11
- 9.1.1-in-interface-12
- 9.1.1-in-interface-13
- 9.1.1-in-interface-14
- 9.1.1-in-interface-15
- 9.1.1-in-interface-16
- 9.1.1-in-interface-17

Test Case: 9.1.1-1

> should generate error on synchronized interface

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 9.1.1-1 {should generate error on synchronized interface} {

>         compile [saveas SynchronizedInterface.java  "synchronized interface SynchronizedInterface {}"]

>     } {FAIL}

Test Case: 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

> Expected 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}

Test Case: 9.1.1-3

> an interface may be public

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 9.1.1-3 {an interface may be public} {

>         compile [saveas PublicInterface.java  "public interface PublicInterface {}"]

>     } {PASS}

Test Case: 9.1.1-4

> should generate an error if a modifier is given more than once

> Expected 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}

Test Case: 9.1.1-5

> The access modifier protected pertains only to member interfaces

> Expected 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}

Test Case: 9.1.1-6

> The access modifier private pertains only to member interfaces

> Expected 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}

Test Case: 9.1.1-7

> The access modifier static pertains only to member interfaces

> Expected 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}

Test Case: 9.1.1-8

> An interface may be strictfp

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 9.1.1-8 { An interface may be strictfp } {

>         compile [saveas T9118.java "strictfp interface T9118 {}"]

>     } {PASS}

Test Case: 9.1.1-9

> Error declaring strictfp more than once

> Expected 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}

Test Case: 9.1.1-10

> An interface may be redundantly declared abstract

> Expected 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}

Test Case: 9.1.1-11

> Error declaring abstract more than once

> Expected 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}

Test Case: 9.1.1-12

> Error declaring final

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 9.1.1-12 { Error declaring final } {

>         compile [saveas T91112.java "final interface T91112 {}"]

>     } {FAIL}

Test Case: 9.1.1-13

> Error declaring native

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 9.1.1-13 { Error declaring native } {

>         compile [saveas T91113.java "native interface T91113 {}"]

>     } {FAIL}

Test Case: 9.1.1-14

> Error declaring transient

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 9.1.1-14 { Error declaring transient } {

>         compile [saveas T91114.java "transient interface T91114 {}"]

>     } {FAIL}

Test Case: 9.1.1-15

> Error declaring volatile

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 9.1.1-15 { Error declaring volatile } {

>         compile [saveas T91115.java "volatile interface T91115 {}"]

>     } {FAIL}

Test Case: 9.1.1-16

> longest legal combination

> Expected 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}

Test Case: 9.1.1-17

> stress test

> Expected 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}

Test Case: 9.1.1-in-class-1

> may be public

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 9.1.1-in-class-1 { may be public } {

>         empty_class T911ic1 "public interface I {}"

>     } {PASS}

Test Case: 9.1.1-in-class-2

> may be protected

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 9.1.1-in-class-2 { may be protected } {

>         empty_class T911ic2 "protected interface I {}"

>     } {PASS}

Test Case: 9.1.1-in-class-3

> may be private

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 9.1.1-in-class-3 { may be private } {

>         empty_class T911ic3 "private interface I {}"

>     } {PASS}

Test Case: 9.1.1-in-class-4

> may not have multiple access modifiers

> Expected 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}

Test Case: 9.1.1-in-class-5

> may not have multiple access modifiers

> Expected 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}

Test Case: 9.1.1-in-class-6

> may not have multiple access modifiers

> Expected 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}

Test Case: 9.1.1-in-class-7

> may not have multiple access modifiers

> Expected 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}

Test Case: 9.1.1-in-class-8

> may not have multiple access modifiers

> Expected 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}

Test Case: 9.1.1-in-class-9

> may not have multiple access modifiers

> Expected 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}

Test Case: 9.1.1-in-class-10

> may not have multiple access modifiers

> Expected 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}

Test Case: 9.1.1-in-class-11

> may not have multiple access modifiers

> Expected 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}

Test Case: 9.1.1-in-class-12

> may not have multiple access modifiers

> Expected 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}

Test Case: 9.1.1-in-class-13

> may be redundantly abstract

> Expected 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}

Test Case: 9.1.1-in-class-14

> may not have abstract twice

> Expected 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}

Test Case: 9.1.1-in-class-15

> may be redundantly static

> Expected 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}

Test Case: 9.1.1-in-class-16

> may not have static twice

> Expected 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}

Test Case: 9.1.1-in-class-17

> may be strictfp

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 9.1.1-in-class-17 { may be strictfp } {

>         empty_class T911ic17 "strictfp interface I {}"

>     } {PASS}

Test Case: 9.1.1-in-class-18

> may not have strictfp twice

> Expected 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}

Test Case: 9.1.1-in-class-19

> may not be final

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 9.1.1-in-class-19 { may not be final } {

>         empty_class T911ic19 "final interface I {}"

>     } {FAIL}

Test Case: 9.1.1-in-class-20

> may not be synchronized

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 9.1.1-in-class-20 { may not be synchronized } {

>         empty_class T911ic20 "synchronized interface I {}"

>     } {FAIL}

Test Case: 9.1.1-in-class-21

> may not be native

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 9.1.1-in-class-21 { may not be native } {

>         empty_class T911ic21 "native interface I {}"

>     } {FAIL}

Test Case: 9.1.1-in-class-22

> may not be transient

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 9.1.1-in-class-22 { may not be transient } {

>         empty_class T911ic22 "transient interface I {}"

>     } {FAIL}

Test Case: 9.1.1-in-class-23

> may not be volatile

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 9.1.1-in-class-23 { may not be volatile } {

>         empty_class T911ic23 "volatile interface I {}"

>     } {FAIL}

Test Case: 9.1.1-in-class-24

> longest legal combination

> Expected 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}

Test Case: 9.1.1-in-class-25

> stress test

> Expected 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}

Test Case: 9.1.1-in-interface-1

> may be redundantly public

> Expected 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}

Test Case: 9.1.1-in-interface-2

> may not be protected

> Expected 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}

Test Case: 9.1.1-in-interface-3

> may not be private

> Expected 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}

Test Case: 9.1.1-in-interface-4

> may not have public twice

> Expected 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}

Test Case: 9.1.1-in-interface-5

> may be redundantly abstract

> Expected 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}

Test Case: 9.1.1-in-interface-6

> may not have abstract twice

> Expected 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}

Test Case: 9.1.1-in-interface-7

> may be redundantly static

> Expected 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}

Test Case: 9.1.1-in-interface-8

> may not have static twice

> Expected 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}

Test Case: 9.1.1-in-interface-9

> may be strictfp

> Expected 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}

Test Case: 9.1.1-in-interface-10

> may not have strictfp twice

> Expected 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}

Test Case: 9.1.1-in-interface-11

> may not be final

> Expected 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}

Test Case: 9.1.1-in-interface-12

> may not be synchronized

> Expected 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}

Test Case: 9.1.1-in-interface-13

> may not be native

> Expected 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}

Test Case: 9.1.1-in-interface-14

> may not be transient

> Expected 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}

Test Case: 9.1.1-in-interface-15

> may not be volatile

> Expected 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}

Test Case: 9.1.1-in-interface-16

> longest legal combination

> Expected 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}

Test Case: 9.1.1-in-interface-17

> stress test

> Expected 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}

### 9.1.1.1

Directory : `tests/jls/interfaces/interface-declarations/interface-modifiers/abstract-interfaces`

- 9.1.1.1-1
- 9.1.1.1-2
- 9.1.1.1-3

Test Case: 9.1.1.1-1

> The compiler may generate a warning when abstract modifier is applied to an implicitly abstract interface

> Expected 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}

Test Case: 9.1.1.1-2

> The compiler may generate a warning when abstract modifier is applied to an implicitly abstract inner interface

> Expected 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}

Test Case: 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

> Expected 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}

### 9.1.2

Directory : `tests/jls/interfaces/interface-declarations/superinterfaces-and-subinterfaces`

- 9.1.2-accessible-1
- 9.1.2-accessible-2
- 9.1.2-accessible-3
- 9.1.2-accessible-4
- 9.1.2-accessible-5
- 9.1.2-accessible-6
- 9.1.2-interface-1
- 9.1.2-interface-2
- 9.1.2-interface-3
- 9.1.2-interface-4
- 9.1.2-interface-5
- 9.1.2-interface-6
- 9.1.2-circular-1
- 9.1.2-circular-2
- 9.1.2-circular-3
- 9.1.2-circular-4
- 9.1.2-circular-5
- 9.1.2-unique-1
- 9.1.2-unique-2
- 9.1.2-unique-3
- 9.1.2-unique-4
- 9.1.2-supertype-1

Test Case: 9.1.2-accessible-1

> All interfaces in the extends clause must be accessible

> Expected 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}

Test Case: 9.1.2-accessible-2

> All interfaces in the extends clause must be accessible

> Expected 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}

Test Case: 9.1.2-accessible-3

> All interfaces in the extends clause must be accessible

> Expected 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}

Test Case: 9.1.2-accessible-4

> All interfaces in the extends clause must be accessible

> Expected 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}

Test Case: 9.1.2-accessible-5

> All interfaces in the extends clause must be accessible

> Expected 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}

Test Case: 9.1.2-accessible-6

> All interfaces in the extends clause must be accessible

> Expected 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}

Test Case: 9.1.2-interface-1

> All types in the extends clause must be interfaces

> Expected 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}

Test Case: 9.1.2-interface-2

> All types in the extends clause must be interfaces

> Expected 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}

Test Case: 9.1.2-interface-3

> A superinterface name may be non-canonical

> Expected 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}

Test Case: 9.1.2-interface-4

> A superinterface name may be non-canonical

> Expected 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}

Test Case: 9.1.2-interface-5

> A superinterface name may be non-canonical

> Expected 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}

Test Case: 9.1.2-interface-6

> A superinterface name may be non-canonical

> Expected 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}

Test Case: 9.1.2-circular-1

> An interface must not depend on itself

> Expected 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}

Test Case: 9.1.2-circular-2

> An interface must not depend on itself

> Expected 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}

Test Case: 9.1.2-circular-3

> An interface must not depend on itself

> Expected 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}

Test Case: 9.1.2-circular-4

> An interface must not depend on itself

> Expected 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}

Test Case: 9.1.2-circular-5

> An interface must not depend on itself

> Expected 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}

Test Case: 9.1.2-unique-1

> The extends clause must not list an element twice, by any name

> Expected 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}

Test Case: 9.1.2-unique-2

> The extends clause must not list an element twice, by any name

> Expected 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}

Test Case: 9.1.2-unique-3

> The extends clause must not list an element twice, by any name

> Expected 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}

Test Case: 9.1.2-unique-4

> An interface may inherit the same superinterface via more than one path

> Expected 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 Case: 9.1.2-supertype-1

> Test for accessible inner supertype - Jikes bug 3202

> Expected 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}

### 9.1.3

Directory : `tests/jls/interfaces/interface-declarations/interface-body-and-member-declarations`

- 9.1.3-body-1
- 9.1.3-body-2
- 9.1.3-body-3
- 9.1.3-body-4
- 9.1.3-body-5
- 9.1.3-body-6
- 9.1.3-body-7
- 9.1.3-body-8

Test Case: 9.1.3-body-1

> An interface may include a field declaration

> Expected 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}

Test Case: 9.1.3-body-2

> An interface may include an abstract method declaration

> Expected 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}

Test Case: 9.1.3-body-3

> An interface may include a class declaration

> Expected 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}

Test Case: 9.1.3-body-4

> An interface may include an interface declaration

> Expected 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}

Test Case: 9.1.3-body-5

> An interface may include an empty declaration

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 9.1.3-body-5 { An interface may include an empty declaration } {

>         empty_class T913b5 "interface I { ; }"

>     } {PASS}

Test Case: 9.1.3-body-6

> An interface may not have a constructor

> Expected 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}

Test Case: 9.1.3-body-7

> An interface may not have an instance initializer

> Expected 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}

Test Case: 9.1.3-body-8

> An interface may not have a static initializer

> Expected 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}

### 9.2

Directory : `tests/jls/interfaces/interface-members`

- 9.2-implicit-1
- 9.2-implicit-2
- 9.2-implicit-3
- 9.2-implicit-4
- 9.2-implicit-5
- 9.2-implicit-6
- 9.2-implicit-7
- 9.2-implicit-8
- 9.2-implicit-9
- 9.2-implicit-10
- 9.2-implicit-11
- 9.2-implicit-12
- 9.2-implicit-13
- 9.2-implicit-14
- 9.2-implicit-15
- 9.2-implicit-16
- 9.2-implicit-17
- 9.2-implicit-18
- 9.2-implicit-19

Test Case: 9.2-implicit-1

> Interfaces implicitly have all public method members of Object

> Expected 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}

Test Case: 9.2-implicit-2

> It is an error for an interface method to conflict with a public one from Object

> Expected 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}

Test Case: 9.2-implicit-3

> It is an error for an interface method to conflict with a public one from Object

> Expected 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}

Test Case: 9.2-implicit-4

> It is an error for an interface method to conflict with a public one from Object

> Expected 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}

Test Case: 9.2-implicit-5

> An interface may redeclare a non-final method of Object

> Expected 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}

Test Case: 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.

> Expected 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}

Test Case: 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.

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 9.2-implicit-9

> Interfaces do not implicitly have any protected methods from Object. Thus, this declaration is legal - see Jikes bug 2878

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 9.2-implicit-17

> The version of clone() inherited from Object does not satisfy clone() specified in an interface

> Expected 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}

Test Case: 9.2-implicit-18

> The version of clone() inherited from Object does not satisfy clone() specified in an interface

> Expected 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}

Test Case: 9.2-implicit-19

> The version of finalize() inherited from Object does not satisfy finalize() specified in an interface

> Expected 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}

### 9.3

Directory : `tests/jls/interfaces/field-constant-declarations`

- 9.3-modifier-1
- 9.3-modifier-2
- 9.3-modifier-3
- 9.3-modifier-4
- 9.3-modifier-5
- 9.3-modifier-6
- 9.3-modifier-7
- 9.3-modifier-8
- 9.3-modifier-9
- 9.3-modifier-10
- 9.3-modifier-11
- 9.3-modifier-12
- 9.3-modifier-13
- 9.3-modifier-14
- 9.3-modifier-15
- 9.3-modifier-16
- 9.3-modifier-17
- 9.3-modifier-18
- 9.3-modifier-19
- 9.3-conflict-1
- 9.3-conflict-2
- 9.3-conflict-3
- 9.3-conflict-4

Test Case: 9.3-modifier-1

> An interface field may be redundantly public

> Expected 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}

Test Case: 9.3-modifier-2

> An interface field may not have public twice

> Expected 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}

Test Case: 9.3-modifier-3

> An interface field may be redundantly static

> Expected 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}

Test Case: 9.3-modifier-4

> An interface field may not have static twice

> Expected 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}

Test Case: 9.3-modifier-5

> An interface field may be redundantly final

> Expected 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}

Test Case: 9.3-modifier-6

> An interface field may not have final twice

> Expected 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}

Test Case: 9.3-modifier-7

> An interface field may not be protected

> Expected 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}

Test Case: 9.3-modifier-8

> An interface field may not be private

> Expected 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}

Test Case: 9.3-modifier-9

> An interface field may not be abstract

> Expected 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}

Test Case: 9.3-modifier-10

> An interface field may not be transient

> Expected 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}

Test Case: 9.3-modifier-11

> An interface field may not be volatile

> Expected 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}

Test Case: 9.3-modifier-12

> An interface field may not be strictfp

> Expected 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}

Test Case: 9.3-modifier-13

> An interface field may not be native

> Expected 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}

Test Case: 9.3-modifier-14

> An interface field may not be synchronized

> Expected 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}

Test Case: 9.3-modifier-15

> Longest legal modifier sequence

> Expected 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}

Test Case: 9.3-modifier-16

> Stress test

> Expected 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}

Test Case: 9.3-modifier-17

> static public is legal, though redundant and not in the preferred order

> Expected 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}

Test Case: 9.3-modifier-18

> final public is legal, though redundant and not in the preferred order

> Expected 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}

Test Case: 9.3-modifier-19

> final static is legal, though redundant and not in the preferred order

> Expected 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}

Test Case: 9.3-conflict-1

> An interface may not declare the same field twice

> Expected 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}

Test Case: 9.3-conflict-2

> An interface may inherit a field with the same name twice, provided it doesn't either one by simple name

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 9.3-conflict-4

> A field inherited through two paths is not ambiguous

> Expected 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}

### 9.3.1

Directory : `tests/jls/interfaces/field-constant-declarations/initialization-of-fields`

- 9.3.1-init-1
- 9.3.1-init-2
- 9.3.1-init-3
- 9.3.1-init-4
- 9.3.1-init-5
- 9.3.1-init-6
- 9.3.1-illegal-forward-1
- 9.3.1-illegal-forward-2
- 9.3.1-legal-forward-1
- 9.3.1-legal-forward-2

Test Case: 9.3.1-init-1

> All interface fields must have an initializer

> Expected 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}

Test Case: 9.3.1-init-2

> Keyword this may not appear directly in init

> Expected 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}

Test Case: 9.3.1-init-3

> Keyword super may not appear directly in init

> Expected 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}

Test Case: 9.3.1-init-4

> Initializer may use anonymous class

> Expected 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}

Test Case: 9.3.1-init-5

> Initializer may use class literal

> Expected 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}

Test Case: 9.3.1-init-6

> Initializer may use anonymous class

> Expected 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}

Test Case: 9.3.1-illegal-forward-1

> Simple usage before declaration legal if not in declaring class

> Expected 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}

Test Case: 9.3.1-illegal-forward-2

> Simple usage before declaration legal if not in declaring class

> Expected 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}

Test Case: 9.3.1-legal-forward-1

> Simple usage before declaration legal if not in declaring class

> Expected 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}

Test Case: 9.3.1-legal-forward-2

> Simple usage before declaration legal if not in declaring class

> Expected 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}

### 9.4

Directory : `tests/jls/interfaces/abstract-method-declarations`

- 9.4-modifier-1
- 9.4-modifier-2
- 9.4-modifier-3
- 9.4-modifier-4
- 9.4-modifier-5
- 9.4-modifier-6
- 9.4-modifier-7
- 9.4-modifier-8
- 9.4-modifier-9
- 9.4-modifier-10
- 9.4-modifier-11
- 9.4-modifier-12
- 9.4-modifier-13
- 9.4-modifier-14
- 9.4-modifier-15
- 9.4-conflict-1
- 9.4-conflict-2
- 9.4-conflict-3
- 9.4-conflict-4
- 9.4-abstract-1

Test Case: 9.4-modifier-1

> interface methods may be redundantly public

> Expected 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}

Test Case: 9.4-modifier-2

> interface methods may not have public twice

> Expected 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}

Test Case: 9.4-modifier-3

> interface methods may be redundantly abstract

> Expected 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}

Test Case: 9.4-modifier-4

> interface methods may not have abstract twice

> Expected 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}

Test Case: 9.4-modifier-5

> interface methods may not be protected

> Expected 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}

Test Case: 9.4-modifier-6

> interface methods may not be private

> Expected 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}

Test Case: 9.4-modifier-7

> interface methods may not be static

> Expected 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}

Test Case: 9.4-modifier-8

> interface methods may not be final

> Expected 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}

Test Case: 9.4-modifier-9

> interface methods may not be transient

> Expected 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}

Test Case: 9.4-modifier-10

> interface methods may not be volatile

> Expected 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}

Test Case: 9.4-modifier-11

> interface methods may not be strictfp

> Expected 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}

Test Case: 9.4-modifier-12

> interface methods may not be native

> Expected 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}

Test Case: 9.4-modifier-13

> interface methods may not be synchronized

> Expected 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}

Test Case: 9.4-modifier-14

> Longest legal modifier sequence

> Expected 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}

Test Case: 9.4-modifier-15

> Stress test

> Expected 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}

Test Case: 9.4-conflict-1

> An interface may not declare the same method twice

> Expected 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}

Test Case: 9.4-conflict-2

> An interface may inherit a method with the same name and signature twice

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 9.4-conflict-4

> A method inherited through two paths is not ambiguous

> Expected 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}

Test Case: 9.4-abstract-1

> An interface method is abstract, so it must not have a body

> Expected 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}

### 9.4.1

Directory : `tests/jls/interfaces/abstract-method-declarations/inheritance-and-overriding`

- 9.4.1-conflict-1
- 9.4.1-conflict-2
- 9.4.1-conflict-3
- 9.4.1-conflict-4
- 9.4.1-override-1
- 9.4.1-override-2

Test Case: 9.4.1-conflict-1

> An overriding method must not conflict in return type or throws clause

> Expected 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}

Test Case: 9.4.1-conflict-2

> An overriding method must not conflict in return type or throws clause

> Expected 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}

Test Case: 9.4.1-conflict-3

> An interface must not inherit conflicting return types, but throws clauses are ok

> Expected 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}

Test Case: 9.4.1-conflict-4

> An interface must not inherit conflicting return types, but throws clauses are ok

> Expected 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}

Test Case: 9.4.1-override-1

> methods not overridden are inherited

> Expected 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}

Test Case: 9.4.1-override-2

> A method may be overridden to have a less permissive throws clause

> Expected 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}

### 9.4.2

Directory : `tests/jls/interfaces/abstract-method-declarations/overloading`

- 9.4.2-overload-1
- 9.4.2-overload-2

Test Case: 9.4.2-overload-1

> there are no required relations between overloaded methods

> Expected 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}

Test Case: 9.4.2-overload-2

> there are no required relations between overloaded methods

> Expected 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}

### 10.6

Directory : `tests/jls/arrays/array-initializers`

- 10.6-syntax-1
- 10.6-syntax-2
- 10.6-syntax-3
- 10.6-syntax-4
- 10.6-syntax-5
- 10.6-syntax-6
- 10.6-type-1
- 10.6-type-2
- 10.6-type-3
- 10.6-type-4
- 10.6-type-5
- 10.6-type-6
- 10.6-type-7
- 10.6-type-8
- 10.6-type-9
- 10.6-type-10
- 10.6-type-11
- 10.6-type-12
- 10.6-type-13

Test Case: 10.6-syntax-1

> array initializer may be empty

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 10.6-syntax-1 { array initializer may be empty } {

>         empty_main T106s1 {
>             int[] ia = {};
>         }

>     } {PASS}

Test Case: 10.6-syntax-2

> array initializer may contain initializers

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 10.6-syntax-2 { array initializer may contain initializers } {

>         empty_main T106s2 {
>             int[] ia = { 1 };
>         }

>     } {PASS}

Test Case: 10.6-syntax-3

> array initializer may contain initializers

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 10.6-syntax-3 { array initializer may contain initializers } {

>         empty_main T106s3 {
>             int[] ia = { 1, 2 };
>         }

>     } {PASS}

Test Case: 10.6-syntax-4

> array initializer may contain concluding comma

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 10.6-syntax-4 { array initializer may contain concluding comma } {

>         empty_main T106s4 {
>             int[] ia = { , };
>         }

>     } {PASS}

Test Case: 10.6-syntax-5

> array initializer may contain concluding comma

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 10.6-syntax-5 { array initializer may contain concluding comma } {

>         empty_main T106s5 {
>             int[] ia = { 1, };
>         }

>     } {PASS}

Test Case: 10.6-syntax-6

> array initializers may nest

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 10.6-syntax-6 { array initializers may nest } {

>         empty_main T106i6 {
>             int[][] iaa = { {1}, {2} };
>         }

>     } {PASS}

Test Case: 10.6-type-1

> expressions in array initializer must be assignment compatible with array type

> Expected 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}

Test Case: 10.6-type-2

> expressions in array initializer must be assignment compatible with array type

> Expected 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}

Test Case: 10.6-type-3

> expressions in array initializer must be assignment compatible with array type

> Expected 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}

Test Case: 10.6-type-4

> expressions in array initializer must be assignment compatible with array type

> Expected 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}

Test Case: 10.6-type-5

> expressions in array initializer must be assignment compatible with array type

> Expected 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}

Test Case: 10.6-type-6

> expressions in array initializer must be assignment compatible with array type

> Expected 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}

Test Case: 10.6-type-7

> expressions in array initializer must be assignment compatible with array type

> Expected 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}

Test Case: 10.6-type-8

> expressions in array initializer must be assignment compatible with array type

> Expected 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}

Test Case: 10.6-type-9

> expressions in array initializer must be assignment compatible with array type

> Expected 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}

Test Case: 10.6-type-10

> expressions in array initializer must be assignment compatible with array type

> Expected 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}

Test Case: 10.6-type-11

> expressions in array initializer must be assignment compatible with array type

> Expected 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}

Test Case: 10.6-type-12

> expressions in array initializer must be assignment compatible with array type

> Expected 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}

Test Case: 10.6-type-13

> expressions in array initializer must be assignment compatible with array type

> Expected 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}

### 13.1

Directory : `tests/jls/binary-compatibility/form-of-binary`

- 13.1-constructor-1
- 13.1-covariance-1
- 13.1-covariance-2
- 13.1-covariance-3

Test Case: 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

> Expected 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}

Test Case: 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.

> Expected 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}

Test Case: 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.

> Expected 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}

Test Case: 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.

> 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}

### 14.3

Directory : `tests/jls/blocks-and-statements/local-class-declarations`

- 14.3-1
- 14.3-scope-1
- 14.3-scope-2
- 14.3-scope-3
- 14.3-scope-4
- 14.3-scope-5
- 14.3-scope-6
- 14.3-scope-7
- 14.3-scope-8
- 14.3-scope-9
- 14.3-scope-10
- 14.3-scope-11

Test Case: 14.3-1

> tests local class declarations in both static and instance methods

> Expected 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}

Test Case: 14.3-scope-1

> The scope of a local class includes its declaration

> Expected 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}

Test Case: 14.3-scope-2

> The scope of a local class starts at its declaration, not before

> Expected 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}

Test Case: 14.3-scope-3

> The scope of a local class continues to the end of the current block

> Expected 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}

Test Case: 14.3-scope-4

> The scope of a local class continues to the end of the current block

> Expected 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}

Test Case: 14.3-scope-5

> The scope of a local class continues to the end of the current block

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 14.3-scope-7

> The scope of a local class continues to the end of the current block

> Expected 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}

Test Case: 14.3-scope-8

> Example of scoping, minus failures

> Expected 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}

Test Case: 14.3-scope-9

> The scope of a local class starts at its declaration, not before

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

### 14.4.2

Directory : `tests/jls/blocks-and-statements/local-variable-declaration-statements/scope`

- 14.4.2-valid-scope-1
- 14.4.2-valid-scope-2
- 14.4.2-valid-scope-3
- 14.4.2-valid-scope-4
- 14.4.2-valid-scope-5
- 14.4.2-valid-scope-6
- 14.4.2-valid-scope-7
- 14.4.2-valid-scope-8
- 14.4.2-invalid-scope-1
- 14.4.2-invalid-scope-2
- 14.4.2-invalid-scope-3
- 14.4.2-invalid-scope-4
- 14.4.2-invalid-scope-5
- 14.4.2-invalid-scope-6
- 14.4.2-shadow-1
- 14.4.2-shadow-2
- 14.4.2-shadow-3
- 14.4.2-shadow-4
- 14.4.2-shadow-5
- 14.4.2-shadow-6
- 14.4.2-shadow-7
- 14.4.2-shadow-8
- 14.4.2-shadow-9

Test Case: 14.4.2-valid-scope-1

> The scope of a local variable declarator includes its own initializer and further declarations to right

> Expected 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}

Test Case: 14.4.2-valid-scope-2

> The scope of a local variable declarator includes its own initializer and further declarations to right

> Expected 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}

Test Case: 14.4.2-valid-scope-3

> The scope of a local variable declarator includes its own initializer and further declarations to right

> Expected 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}

Test Case: 14.4.2-valid-scope-4

> The scope of a local variable declarator includes its own initializer and further declarations to right

> Expected 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}

Test Case: 14.4.2-valid-scope-5

> The scope of a local variable declarator includes its own initializer and further declarations to right

> Expected 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}

Test Case: 14.4.2-valid-scope-6

> The scope of a local variable declarator includes its own initializer and further declarations to right

> Expected 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}

Test Case: 14.4.2-valid-scope-7

> The scope of a local variable declarator includes its own initializer and further declarations to right

> Expected 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}

Test Case: 14.4.2-valid-scope-8

> The scope of a local variable declarator includes its own initializer and further declarations to right

> Expected 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}

Test Case: 14.4.2-invalid-scope-1

> A local variable cannot be redeclared

> Expected 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}

Test Case: 14.4.2-invalid-scope-2

> A local variable cannot be redeclared

> Expected 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}

Test Case: 14.4.2-invalid-scope-3

> A local variable cannot be redeclared

> Expected 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}

Test Case: 14.4.2-invalid-scope-4

> A local variable cannot be redeclared

> Expected 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}

Test Case: 14.4.2-invalid-scope-5

> A local variable cannot be redeclared

> Expected 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}

Test Case: 14.4.2-invalid-scope-6

> A local variable cannot be redeclared

> Expected 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}

Test Case: 14.4.2-shadow-1

> A local variable may shadow member variables

> Expected 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}

Test Case: 14.4.2-shadow-2

> A local variable may shadow member variables

> Expected 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}

Test Case: 14.4.2-shadow-3

> A local variable may shadow member variables

> Expected 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}

Test Case: 14.4.2-shadow-4

> A local variable may be shadowed by a member

> Expected 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}

Test Case: 14.4.2-shadow-5

> A local variable may be shadowed by a local

> Expected 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}

Test Case: 14.4.2-shadow-6

> A local variable may be shadowed by a local

> Expected 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}

Test Case: 14.4.2-shadow-7

> A local variable may be shadowed by a local

> Expected 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}

Test Case: 14.4.2-shadow-8

> A local variable may be shadowed by a parameter

> Expected 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}

Test Case: 14.4.2-shadow-9

> A local variable may be shadowed by an inherited member

> Expected 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}

### 14.7

Directory : `tests/jls/blocks-and-statements/labeled-statements`

- 14.7-scope-1
- 14.7-shadow-1
- 14.7-shadow-2
- 14.7-shadow-3
- 14.7-same-1
- 14.7-same-2
- 14.7-same-3
- 14.7-same-4
- 14.7-same-5
- 14.7-same-6
- 14.7-same-7
- 14.7-enclosed-1
- 14.7-enclosed-2
- 14.7-enclosed-3
- 14.7-enclosed-4
- 14.7-enclosed-5
- 14.7-ident-1
- 14.7-ident-2
- 14.7-ident-3
- 14.7-ident-4
- 14.7-ident-5
- 14.7-ident-6

Test Case: 14.7-scope-1

> The scope of a label is its contained statement

> Expected 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}

Test Case: 14.7-shadow-1

> Labels cannot shadow another label in the same enclosing method, constructor, or initializer

> Expected 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}

Test Case: 14.7-shadow-2

> Labels cannot shadow another label in the same enclosing method, constructor, or initializer

> Expected 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}

Test Case: 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.

> Expected 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}

Test Case: 14.7-same-1

> Labels can share same identifier as package

> Expected 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}

Test Case: 14.7-same-2

> Labels can share same identifier as class

> Expected 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}

Test Case: 14.7-same-3

> Labels can share same identifier as interface

> Expected 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}

Test Case: 14.7-same-4

> Labels can share same identifier as method

> Expected 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}

Test Case: 14.7-same-5

> Labels can share same identifier as field

> Expected 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}

Test Case: 14.7-same-6

> Labels can share same identifier as parameter

> Expected 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}

Test Case: 14.7-same-7

> Labels can share same identifier as local variable

> Expected 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}

Test Case: 14.7-enclosed-1

> Labels must have an enclosed statement

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 14.7-enclosed-1 { Labels must have an enclosed statement } {

>         empty_main T147enclosed1 {
>             test:
>         }

>     } {FAIL}

Test Case: 14.7-enclosed-2

> Labels must have an enclosed statement

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 14.7-enclosed-2 { Labels must have an enclosed statement } {

>         empty_main T147enclosed2 {
>             test: int i;
>         }

>     } {FAIL}

Test Case: 14.7-enclosed-3

> Labels must have an enclosed statement

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 14.7-enclosed-3 { Labels must have an enclosed statement } {

>         empty_main T147enclosed3 {
>             test: class Foo {}
>         }

>     } {FAIL}

Test Case: 14.7-enclosed-4

> Labels must have an enclosed statement

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 14.7-enclosed-4 { Labels must have an enclosed statement } {

>         empty_main T147enclosed4 {
>             test: {}
>         }

>     } {PASS}

Test Case: 14.7-enclosed-5

> Labels must have an enclosed statement

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 14.7-enclosed-5 { Labels must have an enclosed statement } {

>         empty_main T147enclosed5 {
>             test: ;
>         }

>     } {PASS}

Test Case: 14.7-ident-1

> Labels must be identifiers

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 14.7-ident-1 { Labels must be identifiers } {

>         empty_main T147ident1 {
>             int i;
>             1: i = 1;
>         }

>     } {FAIL}

Test Case: 14.7-ident-2

> Labels must be identifiers

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 14.7-ident-2 { Labels must be identifiers } {

>         empty_main T147ident2 {
>             int i;
>             "label": i = 1;
>         }

>     } {FAIL}

Test Case: 14.7-ident-3

> Labels must be identifiers

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 14.7-ident-3 { Labels must be identifiers } {

>         empty_main T147ident3 {
>             int i;
>             (label): i = 1;
>         }

>     } {FAIL}

Test Case: 14.7-ident-4

> Labels must be identifiers

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 14.7-ident-4 { Labels must be identifiers } {

>         empty_main T147ident4 {
>             int i;
>             label.a: i = 1;
>         }

>     } {FAIL}

Test Case: 14.7-ident-5

> Labels must be identifiers

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 14.7-ident-5 { Labels must be identifiers } {

>         empty_main T147ident5 {
>             int i;
>             int: i = 1;
>         }

>     } {FAIL}

Test Case: 14.7-ident-6

> Labels must be identifiers, including unicode

> Expected 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}

### 14.9

Directory : `tests/jls/blocks-and-statements/if-statement`

- 14.9-invalid-syntax-1
- 14.9-invalid-syntax-2
- 14.9-invalid-syntax-3
- 14.9-invalid-syntax-4
- 14.9-expression-evaluation-1
- 14.9-expression-evaluation-2
- 14.9-expression-evaluation-3
- 14.9-expression-evaluation-4
- 14.9-expression-evaluation-5
- 14.9-expression-evaluation-6
- 14.9-expression-evaluation-7
- 14.9-expression-evaluation-8
- 14.9-expression-evaluation-9
- 14.9-expression-evaluation-10
- 14.9-expression-evaluation-11
- 14.9-expression-evaluation-12
- 14.9-expression-evaluation-13
- 14.9-expression-evaluation-14
- 14.9-expression-evaluation-15
- 14.9-expression-evaluation-16
- 14.9-expression-evaluation-17
- 14.9-expression-evaluation-18
- 14.9-expression-evaluation-19

Test Case: 14.9-invalid-syntax-1

> Expression have ()

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 14.9-invalid-syntax-1 { Expression have () } {

>         empty_main T149is1 {
>             if true
>                 ;
>         }

>     } {FAIL}

Test Case: 14.9-invalid-syntax-2

> Expression must be of type boolean

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 14.9-invalid-syntax-2 { Expression must be of type boolean } {

>         empty_main T149is2 {
>             if (0)
>                 ;
>         }

>     } {FAIL}

Test Case: 14.9-invalid-syntax-3

> else without Statement is invalid

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 14.9-invalid-syntax-3 { else without Statement is invalid } {

>         empty_main T149is3 {
>             if (true)
>                 ;
>             else
>         }

>     } {FAIL}

Test Case: 14.9-invalid-syntax-4

> Multiple if Statement are invalid

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 14.9-invalid-syntax-4 { Multiple if Statement are invalid } {

>         empty_main T149is4 {
>             if (true)
>                 ;
>                 ;
>             else
>                 ;
>         }

>     } {FAIL}

Test Case: 14.9-expression-evaluation-1

> constant expression

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 14.9-expression-evaluation-1 {constant expression} {

>         empty_main T149ee1 {
>             if (true)
>                 ;
>         }

>     } {PASS}

Test Case: 14.9-expression-evaluation-2

> constant expression

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 14.9-expression-evaluation-2 {constant expression} {

>         empty_main T149ee2 {
>             if (false == true)
>                 ;
>         }

>     } {PASS}

Test Case: 14.9-expression-evaluation-3

> non-constant expression

> Expected 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}

Test Case: 14.9-expression-evaluation-4

> constant expression

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 14.9-expression-evaluation-4 {constant expression} {

>         empty_main T149ee4 {
>             if ((byte) 0 == (byte) 1)
>                 ;
>         }

>     } {PASS}

Test Case: 14.9-expression-evaluation-5

> non-constant expression

> Expected 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}

Test Case: 14.9-expression-evaluation-6

> constant expression

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 14.9-expression-evaluation-6 {constant expression} {

>         empty_main T149ee6 {
>             if ((short) 0 == (short) 1)
>                 ;
>         }

>     } {PASS}

Test Case: 14.9-expression-evaluation-7

> non-constant expression

> Expected 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}

Test Case: 14.9-expression-evaluation-8

> constant expression

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 14.9-expression-evaluation-8 {constant expression} {

>         empty_main T149ee8 {
>             if ((char) 0 == (char) 1)
>                 ;
>         }

>     } {PASS}

Test Case: 14.9-expression-evaluation-9

> non-constant expression

> Expected 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}

Test Case: 14.9-expression-evaluation-10

> constant expression

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 14.9-expression-evaluation-10 {constant expression} {

>         empty_main T149ee10 {
>             if (0 == 1)
>                 ;
>         }

>     } {PASS}

Test Case: 14.9-expression-evaluation-11

> non-constant expression

> Expected 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}

Test Case: 14.9-expression-evaluation-12

> constant expression

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 14.9-expression-evaluation-12 {constant expression} {

>         empty_main T149ee12 {
>             if (0L == 1L)
>                 ;
>         }

>     } {PASS}

Test Case: 14.9-expression-evaluation-13

> non-constant expression

> Expected 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}

Test Case: 14.9-expression-evaluation-14

> constant expression

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 14.9-expression-evaluation-14 {constant expression} {

>         empty_main T149ee14 {
>             if (0F == 1F)
>                 ;
>         }

>     } {PASS}

Test Case: 14.9-expression-evaluation-15

> non-constant expression

> Expected 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}

Test Case: 14.9-expression-evaluation-16

> constant expression

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 14.9-expression-evaluation-16 {constant expression} {

>         empty_main T149ee16 {
>             if (0D == 1D)
>                 ;
>         }

>     } {PASS}

Test Case: 14.9-expression-evaluation-17

> non-constant expression

> Expected 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}

Test Case: 14.9-expression-evaluation-18

> constant expression

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 14.9-expression-evaluation-18 {constant expression} {

>         empty_main T149ee18 {
>             if ("hi" == "there")
>                 ;
>         }

>     } {PASS}

Test Case: 14.9-expression-evaluation-19

> non-constant expression

> Expected 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}

### 14.10

Directory : `tests/jls/blocks-and-statements/switch-statement`

- 14.10-invalid-syntax-1
- 14.10-invalid-syntax-2
- 14.10-invalid-syntax-3
- 14.10-invalid-syntax-4
- 14.10-invalid-syntax-5
- 14.10-valid-1
- 14.10-valid-2
- 14.10-invalid-type-1
- 14.10-invalid-type-2
- 14.10-invalid-type-3
- 14.10-invalid-type-4
- 14.10-invalid-type-5
- 14.10-invalid-type-6
- 14.10-valid-type-1
- 14.10-valid-type-2
- 14.10-valid-type-3
- 14.10-valid-type-4
- 14.10-switchlabel-1
- 14.10-switchlabel-2
- 14.10-switchlabel-3
- 14.10-assignable-1
- 14.10-assignable-2
- 14.10-assignable-3
- 14.10-assignable-4
- 14.10-assignable-5
- 14.10-assignable-6
- 14.10-assignable-7
- 14.10-assignable-8
- 14.10-assignable-9
- 14.10-assignable-10
- 14.10-assignable-11
- 14.10-assignable-12
- 14.10-duplicate-1
- 14.10-duplicate-2
- 14.10-duplicate-3
- 14.10-duplicate-4
- 14.10-abrupt-completion-1
- 14.10-abrupt-completion-2
- 14.10-exhaustion-1
- 14.10-exhaustion-2
- 14.10-example-1

Test Case: 14.10-invalid-syntax-1

> SwitchStatement must have () around Expression

> Expected 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}

Test Case: 14.10-invalid-syntax-2

> SwitchBlock must have {} around statements

> Expected 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}

Test Case: 14.10-invalid-syntax-3

> SwitchBlockStatementGroup must begin with a SwitchLabel

> Expected 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}

Test Case: 14.10-invalid-syntax-4

> Duff's device is not valid

> Expected 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}

Test Case: 14.10-invalid-syntax-5

> Jikes 1.17 accepts a cute typo

> Expected 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}

Test Case: 14.10-valid-1

> SwitchBlockStatementGroups and SwitchLabels are optional inside a SwitchBlock

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 14.10-valid-1 { SwitchBlockStatementGroups and SwitchLabels are
>             optional inside a SwitchBlock } {

>         switch_labels T1410v1 int {}

>     } {PASS}

Test Case: 14.10-valid-2

> default SwitchLabel by itself is acceptable

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 14.10-valid-2 { default SwitchLabel by itself is acceptable } {

>         switch_labels T1410v2 int {default:}

>     } {PASS}

Test Case: 14.10-invalid-type-1

> Expression type must be char, byte, short, or int

> Expected 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}

Test Case: 14.10-invalid-type-2

> Expression type must be char, byte, short, or int

> Expected 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}

Test Case: 14.10-invalid-type-3

> Expression type must be char, byte, short, or int

> Expected 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}

Test Case: 14.10-invalid-type-4

> Expression type must be char, byte, short, or int

> Expected 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}

Test Case: 14.10-invalid-type-5

> Expression type must be char, byte, short, or int

> Expected 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}

Test Case: 14.10-invalid-type-6

> Expression type must be char, byte, short, or int

> Expected 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}

Test Case: 14.10-valid-type-1

> Expression type must be char, byte, short, or int

> Expected 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}

Test Case: 14.10-valid-type-2

> Expression type must be char, byte, short, or int

> Expected 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}

Test Case: 14.10-valid-type-3

> Expression type must be char, byte, short, or int

> Expected 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}

Test Case: 14.10-valid-type-4

> Expression type must be char, byte, short, or int

> Expected 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}

Test Case: 14.10-switchlabel-1

> case label must have a ConstantExpression

> Expected 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}

Test Case: 14.10-switchlabel-2

> case label must have a ConstantExpression, i++ is not a constant expression as defined by 15.28

> Expected 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}

Test Case: 14.10-switchlabel-3

> case label must have a ConstantExpression, the additive operator - produces a constant expression (see 15.28)

> Expected 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}

Test Case: 14.10-assignable-1

> ConstantExpression must be assignable to Expression

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 14.10-assignable-1 { ConstantExpression must be assignable to Expression } {

>         switch_labels T1410a1 int {case 0:}

>     } {PASS}

Test Case: 14.10-assignable-2

> ConstantExpression must be assignable to Expression

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 14.10-assignable-2 { ConstantExpression must be assignable to Expression } {

>         switch_labels T1410a2 int {case 0L:}

>     } {FAIL}

Test Case: 14.10-assignable-3

> ConstantExpression must be assignable to Expression

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 14.10-assignable-3 { ConstantExpression must be assignable to Expression } {

>         switch_labels T1410a3 int {case 0.0D:}

>     } {FAIL}

Test Case: 14.10-assignable-4

> ConstantExpression must be assignable to Expression

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 14.10-assignable-4 { ConstantExpression must be assignable to Expression } {

>         switch_labels T1410a4 int {case true:}

>     } {FAIL}

Test Case: 14.10-assignable-5

> ConstantExpression must be assignable to Expression

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 14.10-assignable-5 { ConstantExpression must be assignable to Expression } {

>         switch_labels T1410a5 byte {case 128:}

>     } {FAIL}

Test Case: 14.10-assignable-6

> ConstantExpression must be assignable to Expression

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 14.10-assignable-6 { ConstantExpression must be assignable to Expression } {

>         switch_labels T1410a6 byte {case 127:}

>     } {PASS}

Test Case: 14.10-assignable-7

> ConstantExpression must be assignable to Expression

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 14.10-assignable-7 { ConstantExpression must be assignable to Expression } {

>         switch_labels T1410a7 int {case null:}

>     } {FAIL}

Test Case: 14.10-assignable-8

> ConstantExpression must be assignable to Expression

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 14.10-assignable-8 { ConstantExpression must be assignable to Expression } {

>         switch_labels T1410a8 byte {case (short) 1:}

>     } {PASS}

Test Case: 14.10-assignable-9

> ConstantExpression must be assignable to Expression

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 14.10-assignable-9 { ConstantExpression must be assignable to Expression } {

>         switch_labels T1410a9 byte {case '1':}

>     } {PASS}

Test Case: 14.10-assignable-10

> ConstantExpression must be assignable to Expression

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 14.10-assignable-10 { ConstantExpression must be assignable to Expression } {

>         switch_labels T1410a10 char {case (short) 1:}

>     } {PASS}

Test Case: 14.10-assignable-11

> ConstantExpression must be assignable to Expression

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 14.10-assignable-11 { ConstantExpression must be assignable to Expression } {

>         switch_labels T1410a11 short {case '1':}

>     } {PASS}

Test Case: 14.10-assignable-12

> ConstantExpression must be assignable to Expression

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 14.10-assignable-12 { ConstantExpression must be assignable to Expression } {

>         switch_labels T1410a12 char {case (byte) 1:}

>     } {PASS}

Test Case: 14.10-duplicate-1

> No two case statements may have the same ConstantExpression value

> Expected 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}

Test Case: 14.10-duplicate-2

> No two case statements may have the same ConstantExpression value

> Expected 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}

Test Case: 14.10-duplicate-3

> No two case statements may have the same ConstantExpression value

> Expected 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}

Test Case: 14.10-duplicate-4

> At most 1 default statement can be associated with the same switch statement

> Expected 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}

Test Case: 14.10-abrupt-completion-1

> break is a valid abrupt completion

> Expected 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}

Test Case: 14.10-abrupt-completion-2

> continue is not a valid abrupt completion

> Expected 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}

Test Case: 14.10-exhaustion-1

> When all 256 cases explicitly listed, the specs are unclear as to whether default is reachable

> Expected 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}

Test Case: 14.10-exhaustion-2

> When all 256 cases explicitly listed, the specs are unclear as to whether the switch can complete normally

> Expected 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}

Test Case: 14.10-example-1

> This example causes an assertion in Jikes

> Expected 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}

### 14.14

Directory : `tests/jls/blocks-and-statements/break-statement`

- 14.14-plain-1
- 14.14-plain-2
- 14.14-plain-3
- 14.14-plain-4
- 14.14-plain-5
- 14.14-plain-6
- 14.14-plain-7
- 14.14-plain-8
- 14.14-plain-9
- 14.14-nonlocal-1
- 14.14-try-1
- 14.14-label-1
- 14.14-label-2
- 14.14-label-3
- 14.14-label-4
- 14.14-label-5
- 14.14-label-6
- 14.14-label-7
- 14.14-label-8
- 14.14-label-9
- 14.14-label-10
- 14.14-label-11
- 14.14-label-12
- 14.14-label-13
- 14.14-arg-1
- 14.14-arg-2
- 14.14-arg-3
- 14.14-arg-4

Test Case: 14.14-plain-1

> plain break must occur in a loop statement or switch

> Expected 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}

Test Case: 14.14-plain-2

> plain break must occur in a loop statement or switch

> Expected 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}

Test Case: 14.14-plain-3

> plain break must occur in a loop statement or switch

> Expected 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}

Test Case: 14.14-plain-4

> plain break must occur in a loop statement or switch

> Expected 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}

Test Case: 14.14-plain-5

> plain break must occur in a loop statement or switch

> Expected 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}

Test Case: 14.14-plain-6

> plain break must occur in a loop statement or switch

> Expected 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}

Test Case: 14.14-plain-7

> plain break must occur in a loop statement or switch

> Expected 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}

Test Case: 14.14-plain-8

> plain break must occur in a loop statement or switch

> Expected 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}

Test Case: 14.14-plain-9

> plain break must occur in a loop statement or switch

> Expected 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}

Test Case: 14.14-nonlocal-1

> there are no non-local jumps

> Expected 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}

Test Case: 14.14-try-1

> the break can be interrupted by a finally

> Expected 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}

Test Case: 14.14-label-1

> A label may be targeted by break

> Expected 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}

Test Case: 14.14-label-2

> A label may be targeted by break

> Expected 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}

Test Case: 14.14-label-3

> labeled break must occur in that label

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 14.14-label-3 { labeled break must
>             occur in that label } {

>         empty_main T1414l3 {
>             b: break a;
>         }

>     } {FAIL}

Test Case: 14.14-label-4

> labeled break must occur in that label

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 14.14-label-4 { labeled break must
>             occur in that label } {

>         empty_main T1414l4 {
>             a: break a;
>         }

>     } {PASS}

Test Case: 14.14-label-5

> labeled break must occur in that label

> Expected 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}

Test Case: 14.14-label-6

> labeled break must occur in that label

> Expected 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}

Test Case: 14.14-label-7

> labeled break must occur in that label

> Expected 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}

Test Case: 14.14-label-8

> labeled break must occur in that label

> Expected 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}

Test Case: 14.14-label-9

> labeled break must occur in that label

> Expected 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}

Test Case: 14.14-label-10

> labeled break must occur in that label

> Expected 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}

Test Case: 14.14-label-11

> labeled break must occur in that label

> Expected 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}

Test Case: 14.14-label-12

> there are no non-local jumps

> Expected 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}

Test Case: 14.14-label-13

> the break can be interrupted by a finally

> Expected 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}

Test Case: 14.14-arg-1

> The arg to break must be an identifier

> Expected 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}

Test Case: 14.14-arg-2

> The arg to break must be an identifier

> Expected 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}

Test Case: 14.14-arg-3

> The arg to break must be an identifier

> Expected 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}

Test Case: 14.14-arg-4

> The arg to break must be an identifier

> Expected 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}

### 14.15

Directory : `tests/jls/blocks-and-statements/continue-statement`

- 14.15-plain-1
- 14.15-plain-2
- 14.15-plain-3
- 14.15-plain-4
- 14.15-plain-5
- 14.15-plain-6
- 14.15-plain-7
- 14.15-plain-8
- 14.15-nonlocal-1
- 14.15-try-1
- 14.15-label-1
- 14.15-label-2
- 14.15-label-3
- 14.15-label-4
- 14.15-label-5
- 14.15-label-6
- 14.15-label-7
- 14.15-label-8
- 14.15-label-9
- 14.15-label-10
- 14.15-label-11
- 14.15-nonlocal-2
- 14.15-try-2
- 14.15-arg-1
- 14.15-arg-2
- 14.15-arg-3
- 14.15-arg-4

Test Case: 14.15-plain-1

> continue must occur in a loop statement

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 14.15-plain-1 { continue must occur in a loop statement } {

>         empty_main T1415p1 {
>             continue;
>         }

>     } {FAIL}

Test Case: 14.15-plain-2

> continue must occur in a loop statement

> Expected 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}

Test Case: 14.15-plain-3

> continue must occur in a loop statement

> Expected 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}

Test Case: 14.15-plain-4

> continue must occur in a loop statement

> Expected 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}

Test Case: 14.15-plain-5

> continue must occur in a loop statement

> Expected 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}

Test Case: 14.15-plain-6

> continue must occur in a loop statement

> Expected 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}

Test Case: 14.15-plain-7

> continue must occur in a loop statement

> Expected 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}

Test Case: 14.15-plain-8

> continue must occur in a loop statement

> Expected 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}

Test Case: 14.15-nonlocal-1

> there are no non-local jumps

> Expected 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}

Test Case: 14.15-try-1

> the continue can be interrupted by a finally

> Expected 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}

Test Case: 14.15-label-1

> A label targeted by continue must have a loop as its statment

> Expected 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}

Test Case: 14.15-label-2

> A label targeted by continue must have a loop as its statment

> Expected 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}

Test Case: 14.15-label-3

> labeled continue must occur in that label

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 14.15-label-3 { labeled continue must occur in that label } {

>         empty_main T1415l3 {
>             b: continue a;
>         }

>     } {FAIL}

Test Case: 14.15-label-4

> continue must occur in a loop statement

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 14.15-label-4 { continue must occur in a loop statement } {

>         empty_main T1415l4 {
>             a: continue a;
>         }

>     } {FAIL}

Test Case: 14.15-label-5

> continue must occur in a loop statement

> Expected 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}

Test Case: 14.15-label-6

> continue must occur in a loop statement

> Expected 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}

Test Case: 14.15-label-7

> continue must occur in a loop statement

> Expected 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}

Test Case: 14.15-label-8

> continue must occur in a loop statement

> Expected 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}

Test Case: 14.15-label-9

> continue must occur in a loop statement

> Expected 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}

Test Case: 14.15-label-10

> continue must occur in a loop statement

> Expected 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}

Test Case: 14.15-label-11

> continue must occur in a loop statement

> Expected 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}

Test Case: 14.15-nonlocal-2

> there are no non-local jumps

> Expected 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}

Test Case: 14.15-try-2

> the continue can be interrupted by a finally

> Expected 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}

Test Case: 14.15-arg-1

> The arg to continue must be an identifier

> Expected 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}

Test Case: 14.15-arg-2

> The arg to continue must be an identifier

> Expected 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}

Test Case: 14.15-arg-3

> The arg to continue must be an identifier

> Expected 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}

Test Case: 14.15-arg-4

> The arg to continue must be an identifier

> Expected 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}

### 14.18

Directory : `tests/jls/blocks-and-statements/synchronized-statement`

- 14.18-expression-1
- 14.18-expression-2
- 14.18-expression-3
- 14.18-expression-4
- 14.18-expression-5
- 14.18-expression-6
- 14.18-expression-7
- 14.18-syntax-1
- 14.18-syntax-2
- 14.18-syntax-3
- 14.18-syntax-4
- 14.18-lock-1
- 14.18-lock-2
- 14.18-lock-3

Test Case: 14.18-expression-1

> The type of the expression must be a reference

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 14.18-expression-1 { The type of the expression must be a
>             reference } {

>         empty_main T1418e1 {
>             synchronized ("") {}
>         }

>     } {PASS}

Test Case: 14.18-expression-2

> The type of the expression must be a reference

> Expected 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}

Test Case: 14.18-expression-3

> The type of the expression must be a reference

> Expected 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}

Test Case: 14.18-expression-4

> The type of the expression must be a reference

> Expected 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}

Test Case: 14.18-expression-5

> The type of the expression must be a reference

> Expected 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}

Test Case: 14.18-expression-6

> The type of the expression must be a reference

> Expected 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}

Test Case: 14.18-expression-7

> The type of the expression must be a reference

> Expected 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}

Test Case: 14.18-syntax-1

> The synchronized expression must be in ()

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 14.18-syntax-1 { The synchronized expression must be in () } {

>         empty_main T1418s1 {
>             synchronized "" {}
>         }

>     } {FAIL}

Test Case: 14.18-syntax-2

> The synchronized statement must be in {}

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 14.18-syntax-2 { The synchronized statement must be in {} } {

>         empty_main T1418s2 {
>             synchronized ("") ;
>         }

>     } {FAIL}

Test Case: 14.18-syntax-3

> The synchronized statement must be in {}

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 14.18-syntax-3 { The synchronized statement must be in {} } {

>         empty_main T1418s3 {
>             synchronized ("") break;
>         }

>     } {FAIL}

Test Case: 14.18-syntax-4

> The synchronized block may not be labeled

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 14.18-syntax-4 { The synchronized block may not be labeled } {

>         empty_main T1418s4 {
>             synchronized ("") label: {};
>         }

>     } {FAIL}

Test Case: 14.18-lock-1

> A single thread may lock the same object multiple times (JLS example)

> Expected 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}

Test Case: 14.18-lock-2

> A single thread may lock the same object multiple times (in a synchronized instance method, this is locked)

> Expected 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}

Test Case: 14.18-lock-3

> 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}

### 14.19

Directory : `tests/jls/blocks-and-statements/try-statement`

- 14.19-shadow-1
- 14.19-shadow-2
- 14.19-shadow-3
- 14.19-shadow-4
- 14.19-shadow-5
- 14.19-shadow-6
- 14.19-shadow-7
- 14.19-shadow-8
- 14.19-shadow-9
- 14.19-shadow-10
- 14.19-shadow-11
- 14.19-shadow-12
- 14.19-shadow-13
- 14.19-shadow-14
- 14.19-shadow-15
- 14.19-syntax-1
- 14.19-syntax-2
- 14.19-syntax-3
- 14.19-syntax-4
- 14.19-syntax-5
- 14.19-syntax-6
- 14.19-syntax-7
- 14.19-syntax-8
- 14.19-syntax-9
- 14.19-syntax-10
- 14.19-syntax-11
- 14.19-syntax-12
- 14.19-syntax-13
- 14.19-syntax-14
- 14.19-syntax-15
- 14.19-syntax-16
- 14.19-syntax-17
- 14.19-syntax-18
- 14.19-syntax-19
- 14.19-syntax-20
- 14.19-type-1
- 14.19-type-2
- 14.19-type-3
- 14.19-type-4
- 14.19-type-5

Test Case: 14.19-shadow-1

> A catch clause parameter may shadow a member

> Expected 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}

Test Case: 14.19-shadow-2

> A catch clause parameter may shadow a member

> Expected 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}

Test Case: 14.19-shadow-3

> A catch clause parameter may shadow a member

> Expected 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}

Test Case: 14.19-shadow-4

> A catch clause parameter may shadow a local

> Expected 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}

Test Case: 14.19-shadow-5

> A catch clause parameter may shadow a local

> Expected 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}

Test Case: 14.19-shadow-6

> A catch clause parameter may shadow a local

> Expected 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}

Test Case: 14.19-shadow-7

> A catch clause parameter may shadow a local

> Expected 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}

Test Case: 14.19-shadow-8

> Catch clauses may repeat a parameter name

> Expected 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}

Test Case: 14.19-shadow-9

> Local variables may not shadow a catch clause parameter

> Expected 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}

Test Case: 14.19-shadow-10

> Local variables may not shadow a catch clause parameter

> Expected 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}

Test Case: 14.19-shadow-11

> A catch clause parameter may be shadowed

> Expected 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}

Test Case: 14.19-shadow-12

> A catch clause parameter may be shadowed

> Expected 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}

Test Case: 14.19-shadow-13

> A catch clause parameter may be shadowed

> Expected 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}

Test Case: 14.19-shadow-14

> A catch clause parameter may be shadowed

> Expected 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}

Test Case: 14.19-shadow-15

> A catch clause parameter may be shadowed

> Expected 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}

Test Case: 14.19-syntax-1

> The try block must be a block

> Expected 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}

Test Case: 14.19-syntax-2

> The try block must be a block

> Expected 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}

Test Case: 14.19-syntax-3

> The try block must be a block

> Expected 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}

Test Case: 14.19-syntax-4

> The try block must be a block

> Expected 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}

Test Case: 14.19-syntax-5

> The try block must be a block

> Expected 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}

Test Case: 14.19-syntax-6

> The catch block must be a block

> Expected 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}

Test Case: 14.19-syntax-7

> The catch block must be a block

> Expected 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}

Test Case: 14.19-syntax-8

> The catch block must be a block

> Expected 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}

Test Case: 14.19-syntax-9

> The catch block must be a block

> Expected 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}

Test Case: 14.19-syntax-10

> The catch block must be a block

> Expected 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}

Test Case: 14.19-syntax-11

> The finally block must be a block

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 14.19-syntax-11 { The finally block must be a block } {

>         empty_main T1419syn11 {
>     	try {}
>     	finally ;
>         }

>     } {FAIL}

Test Case: 14.19-syntax-12

> The finally block must be a block

> Expected 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}

Test Case: 14.19-syntax-13

> The finally block must be a block

> Expected 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}

Test Case: 14.19-syntax-14

> The finally block must be a block

> Expected 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}

Test Case: 14.19-syntax-15

> The finally block must be a block

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 14.19-syntax-15 { The finally block must be a block } {

>         empty_main T1419syn15 {
>     	try {}
>     	finally label: {}
>         }

>     } {FAIL}

Test Case: 14.19-syntax-16

> The finally block must be a block

> Expected 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}

Test Case: 14.19-syntax-17

> The finally block must be a block

> Expected 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}

Test Case: 14.19-syntax-18

> The finally block must be a block

> Expected 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}

Test Case: 14.19-syntax-19

> The finally block must be a block

> Expected 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}

Test Case: 14.19-syntax-20

> The finally block must be a block

> Expected 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}

Test Case: 14.19-type-1

> The catch variable must extend Throwable

> Expected 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}

Test Case: 14.19-type-2

> The catch variable must extend Throwable

> Expected 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}

Test Case: 14.19-type-3

> The catch variable must extend Throwable

> Expected 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}

Test Case: 14.19-type-4

> The catch variable must extend Throwable

> Expected 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}

Test Case: 14.19-type-5

> The catch variable must extend Throwable

> Expected 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}

### 14.20

Directory : `tests/jls/blocks-and-statements/unreachable-statements`

- 14.20-valid-1
- 14.20-block-1
- 14.20-block-2
- 14.20-block-3
- 14.20-block-4
- 14.20-block-5
- 14.20-block-6
- 14.20-block-7
- 14.20-block-8
- 14.20-block-9
- 14.20-block-10
- 14.20-block-11
- 14.20-local-1
- 14.20-local-2
- 14.20-local-3
- 14.20-local-4
- 14.20-empty-1
- 14.20-label-1
- 14.20-label-2
- 14.20-label-3
- 14.20-label-4
- 14.20-label-5
- 14.20-label-6
- 14.20-label-7
- 14.20-label-8
- 14.20-label-9
- 14.20-label-10
- 14.20-label-11
- 14.20-label-12
- 14.20-label-13
- 14.20-label-14
- 14.20-label-15
- 14.20-expression-1
- 14.20-expression-2
- 14.20-switch-1
- 14.20-switch-2
- 14.20-switch-3
- 14.20-switch-4
- 14.20-switch-5
- 14.20-switch-6
- 14.20-switch-7
- 14.20-switch-8
- 14.20-switch-9
- 14.20-switch-10
- 14.20-switch-11
- 14.20-switch-12
- 14.20-switch-13
- 14.20-switch-14
- 14.20-switch-15
- 14.20-switch-16
- 14.20-switch-17
- 14.20-switch-18
- 14.20-switch-19
- 14.20-switch-20
- 14.20-switch-21
- 14.20-switch-22
- 14.20-switch-23
- 14.20-switch-24
- 14.20-while-1
- 14.20-while-2
- 14.20-while-3
- 14.20-while-4
- 14.20-while-5
- 14.20-while-6
- 14.20-while-7
- 14.20-while-8
- 14.20-while-9
- 14.20-while-10
- 14.20-while-11
- 14.20-while-12
- 14.20-while-13
- 14.20-while-14
- 14.20-while-15
- 14.20-while-16
- 14.20-while-17
- 14.20-while-18
- 14.20-while-19
- 14.20-do-1
- 14.20-do-2
- 14.20-do-3
- 14.20-do-4
- 14.20-do-5
- 14.20-do-6
- 14.20-do-7
- 14.20-do-8
- 14.20-do-9
- 14.20-do-10
- 14.20-do-11
- 14.20-do-12
- 14.20-do-13
- 14.20-do-14
- 14.20-do-15
- 14.20-do-16
- 14.20-do-17
- 14.20-do-18
- 14.20-do-19
- 14.20-do-20
- 14.20-do-21
- 14.20-do-22
- 14.20-do-23
- 14.20-do-24
- 14.20-do-25
- 14.20-do-26
- 14.20-do-27
- 14.20-do-28
- 14.20-do-29
- 14.20-do-30
- 14.20-do-31
- 14.20-do-32
- 14.20-do-33
- 14.20-do-34
- 14.20-for-1
- 14.20-for-2
- 14.20-for-3
- 14.20-for-4
- 14.20-for-5
- 14.20-for-6
- 14.20-for-7
- 14.20-for-8
- 14.20-for-9
- 14.20-for-10
- 14.20-for-11
- 14.20-for-12
- 14.20-for-13
- 14.20-for-14
- 14.20-for-15
- 14.20-for-16
- 14.20-for-17
- 14.20-for-18
- 14.20-for-19
- 14.20-for-20
- 14.20-for-21
- 14.20-for-22
- 14.20-abrupt-1
- 14.20-abrupt-2
- 14.20-abrupt-3
- 14.20-abrupt-4
- 14.20-abrupt-5
- 14.20-abrupt-6
- 14.20-abrupt-7
- 14.20-abrupt-8
- 14.20-abrupt-9
- 14.20-abrupt-10
- 14.20-abrupt-11
- 14.20-abrupt-12
- 14.20-abrupt-13
- 14.20-abrupt-14
- 14.20-abrupt-15
- 14.20-abrupt-16
- 14.20-synchronized-1
- 14.20-synchronized-2
- 14.20-synchronized-3
- 14.20-synchronized-4
- 14.20-synchronized-5
- 14.20-try-1
- 14.20-try-2
- 14.20-try-3
- 14.20-try-4
- 14.20-try-5
- 14.20-try-6
- 14.20-try-7
- 14.20-try-8
- 14.20-try-9
- 14.20-try-10
- 14.20-try-11
- 14.20-try-12
- 14.20-try-13
- 14.20-try-14
- 14.20-try-15
- 14.20-try-16
- 14.20-try-17
- 14.20-try-18
- 14.20-try-19
- 14.20-try-20
- 14.20-try-21
- 14.20-try-22
- 14.20-try-23
- 14.20-try-24
- 14.20-try-25
- 14.20-try-26
- 14.20-try-27
- 14.20-try-28
- 14.20-try-29
- 14.20-try-30
- 14.20-try-31
- 14.20-try-32
- 14.20-try-33
- 14.20-try-34
- 14.20-try-35
- 14.20-try-36
- 14.20-try-37
- 14.20-catch-1
- 14.20-catch-2
- 14.20-catch-3
- 14.20-catch-4
- 14.20-catch-5
- 14.20-catch-6
- 14.20-catch-7
- 14.20-catch-8
- 14.20-catch-9
- 14.20-catch-10
- 14.20-catch-11
- 14.20-catch-12
- 14.20-catch-13
- 14.20-catch-14
- 14.20-catch-15
- 14.20-catch-16
- 14.20-catch-17
- 14.20-catch-18
- 14.20-catch-19
- 14.20-catch-20
- 14.20-catch-21
- 14.20-catch-22
- 14.20-catch-23
- 14.20-catch-24
- 14.20-if-1
- 14.20-if-2
- 14.20-if-3
- 14.20-if-4
- 14.20-if-5
- 14.20-if-6
- 14.20-if-7
- 14.20-if-8
- 14.20-for-update-1

Test Case: 14.20-valid-1

> Example of valid unreachable code, since value analysis is not made

> Expected 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}

Test Case: 14.20-block-1

> Empty blocks complete normally iff reachable

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 14.20-block-1 { Empty blocks complete normally iff reachable } {

>         empty_main T1420block1 {
>             {}
>             int i;
>         }

>     } {PASS}

Test Case: 14.20-block-2

> Non-empty blocks complete normally iff last statement does

> Expected 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}

Test Case: 14.20-block-3

> Non-empty blocks complete normally iff last statement does

> Expected 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}

Test Case: 14.20-block-4

> Non-empty blocks complete normally iff last statement does

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 14.20-block-4 { Non-empty blocks complete normally iff last statement does } {

>         empty_main T1420block4 {
>             { return; }
>             ;
>         }

>     } {FAIL}

Test Case: 14.20-block-5

> Non-empty blocks complete normally iff last statement does

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 14.20-block-5 { Non-empty blocks complete normally iff last statement does } {

>         empty_main T1420block5 {
>             { return; }
>             {}
>         }

>     } {FAIL}

Test Case: 14.20-block-6

> Non-empty blocks complete normally iff last statement does

> Expected 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}

Test Case: 14.20-block-7

> First block statement is reachable iff block is; all others iff the preceding statement completes normally

> Expected 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}

Test Case: 14.20-block-8

> First block statement is reachable iff block is; all others iff the preceding statement completes normally

> Expected 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}

Test Case: 14.20-block-9

> First block statement is reachable iff block is; all others iff the preceding statement completes normally

> Expected 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}

Test Case: 14.20-block-10

> First block statement is reachable iff block is; all others iff the preceding statement completes normally

> Expected 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}

Test Case: 14.20-block-11

> First block statement is reachable iff block is; all others iff the preceding statement completes normally

> Expected 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}

Test Case: 14.20-local-1

> Local class declarations can complete normally iff reachable

> Expected 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}

Test Case: 14.20-local-2

> Local class declarations can complete normally iff reachable

> Expected 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}

Test Case: 14.20-local-3

> Local variable declarations can complete normally iff reachable

> Expected 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}

Test Case: 14.20-local-4

> Local variable declarations can complete normally iff reachable

> Expected 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}

Test Case: 14.20-empty-1

> The empty statement completes normally iff reachable

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 14.20-empty-1 { The empty statement completes normally iff reachable } {

>         empty_main T1420empty1 {
>             ;
>             int i;
>         }

>     } {PASS}

Test Case: 14.20-label-1

> Labeled statements can complete normally if contained statement can as well

> Expected 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}

Test Case: 14.20-label-2

> Labeled statements can complete normally if it contains a reachable break to exit the label

> Expected 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}

Test Case: 14.20-label-3

> Labeled statements can complete normally if it contains a reachable break to exit the label

> Expected 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}

Test Case: 14.20-label-4

> Labeled statements without exiting break or normal completion of contained statement do not complete normally

> Expected 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}

Test Case: 14.20-label-5

> Labeled statements without exiting break or normal completion of contained statement do not complete normally

> Expected 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}

Test Case: 14.20-label-6

> Labeled statements without exiting break or normal completion of contained statement do not complete normally

> Expected 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}

Test Case: 14.20-label-7

> Labeled statements without exiting break or normal completion of contained statement do not complete normally

> Expected 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}

Test Case: 14.20-label-8

> The break is interrupted by the try-finally

> Expected 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}

Test Case: 14.20-label-9

> The break is interrupted by the try-finally

> Expected 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}

Test Case: 14.20-label-10

> The break is interrupted by the try-finally

> Expected 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}

Test Case: 14.20-label-11

> The break is interrupted by the try-finally

> Expected 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}

Test Case: 14.20-label-12

> The break is interrupted by the try-finally

> Expected 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}

Test Case: 14.20-label-13

> The break is interrupted by the try-finally

> Expected 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}

Test Case: 14.20-label-14

> The break is interrupted by the try-finally

> Expected 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}

Test Case: 14.20-label-15

> The break is interrupted by the try-finally

> Expected 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}

Test Case: 14.20-expression-1

> Expression statements can complete normally iff reachable

> Expected 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}

Test Case: 14.20-expression-2

> Expression statements can complete normally iff reachable (even if stricter analysis shows otherwise)

> Expected 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}

Test Case: 14.20-switch-1

> A switch statement can complete normally if: The last statement in the switch block can complete normally.

> Expected 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}

Test Case: 14.20-switch-2

> A switch statement can complete normally if: The switch block is empty or contains only switch labels.

> Expected 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}

Test Case: 14.20-switch-3

> A switch statement can complete normally if: The switch block is empty or contains only switch labels.

> Expected 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}

Test Case: 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.

> Expected 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}

Test Case: 14.20-switch-5

> A switch statement can complete normally if: The switch block does not contain a default label.

> Expected 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}

Test Case: 14.20-switch-6

> A switch statement can complete normally if: There is a reachable break statement that exits the switch statement.

> Expected 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}

Test Case: 14.20-switch-7

> A switch statement cannot complete normally if all five preceding conditions are not met

> Expected 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}

Test Case: 14.20-switch-8

> A switch statement cannot complete normally if all five preceding conditions are not met

> Expected 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}

Test Case: 14.20-switch-9

> A switch statement cannot complete normally if all five preceding conditions are not met

> Expected 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}

Test Case: 14.20-switch-10

> A switch statement cannot complete normally if all five preceding conditions are not met

> Expected 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}

Test Case: 14.20-switch-11

> A switchblock statement is reachable if it bears a switch label

> Expected 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}

Test Case: 14.20-switch-12

> A switchblock statement is reachable if a prior statement can complete normally

> Expected 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}

Test Case: 14.20-switch-13

> A switchblock statement is unreachable iff it bears no label and the prior statement cannot complete normally

> Expected 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}

Test Case: 14.20-switch-14

> A switchblock statement is unreachable iff it bears no label and the prior statement cannot complete normally

> Expected 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}

Test Case: 14.20-switch-15

> A switchblock statement is unreachable iff it bears no label and the prior statement cannot complete normally

> Expected 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}

Test Case: 14.20-switch-16

> A switchblock statement is unreachable iff it bears no label and the prior statement cannot complete normally

> Expected 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}

Test Case: 14.20-switch-17

> The break is interrupted by the try-finally

> Expected 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}

Test Case: 14.20-switch-18

> The break is interrupted by the try-finally

> Expected 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}

Test Case: 14.20-switch-19

> The break is interrupted by the try-finally

> Expected 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}

Test Case: 14.20-switch-20

> The break is interrupted by the try-finally

> Expected 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}

Test Case: 14.20-switch-21

> The break is interrupted by the try-finally

> Expected 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}

Test Case: 14.20-switch-22

> The break is interrupted by the try-finally

> Expected 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}

Test Case: 14.20-switch-23

> The break is interrupted by the try-finally

> Expected 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}

Test Case: 14.20-switch-24

> The break is interrupted by the try-finally

> Expected 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}

Test Case: 14.20-while-1

> A while statement can complete normally if: The condition expression is not a constant expression with value true

> Expected 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}

Test Case: 14.20-while-2

> A while statement can complete normally if: There is a reachable break statement that exits the while statement.

> Expected 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}

Test Case: 14.20-while-3

> A while statement cannot complete normally iff there is no break and the condition is constant true

> Expected 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}

Test Case: 14.20-while-4

> A while statement cannot complete normally iff there is no break and the condition is constant true

> Expected 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}

Test Case: 14.20-while-5

> A while statement cannot complete normally iff there is no break and the condition is constant true

> Expected 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}

Test Case: 14.20-while-6

> A while statement cannot complete normally iff there is no break and the condition is constant true

> Expected 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}

Test Case: 14.20-while-7

> The contained statement of a while is unreachable iff the condition is constant false

> Expected 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}

Test Case: 14.20-while-8

> The contained statement of a while is unreachable iff the condition is constant false

> Expected 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}

Test Case: 14.20-while-9

> The contained statement of a while is unreachable iff the condition is constant false

> Expected 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}

Test Case: 14.20-while-10

> The contained statement of a while is unreachable iff the condition is constant false

> Expected 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}

Test Case: 14.20-while-11

> The contained statement of a while is unreachable iff the condition is constant false

> Expected 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}

Test Case: 14.20-while-12

> The break is interrupted by the try-finally

> Expected 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}

Test Case: 14.20-while-13

> The break is interrupted by the try-finally

> Expected 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}

Test Case: 14.20-while-14

> The break is interrupted by the try-finally

> Expected 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}

Test Case: 14.20-while-15

> The break is interrupted by the try-finally

> Expected 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}

Test Case: 14.20-while-16

> The break is interrupted by the try-finally

> Expected 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}

Test Case: 14.20-while-17

> The break is interrupted by the try-finally

> Expected 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}

Test Case: 14.20-while-18

> The break is interrupted by the try-finally

> Expected 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}

Test Case: 14.20-while-19

> The break is interrupted by the try-finally

> Expected 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}

Test Case: 14.20-do-1

> A do statement can complete normally if: The contained statement can complete normally and the condition is not constant true

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 14.20-do-4

> A do statement can complete normally if: There is a reachable break statement that exits the do statement.

> Expected 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}

Test Case: 14.20-do-5

> A do statement cannot complete normally iff all four preceding conditions are not met

> Expected 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}

Test Case: 14.20-do-6

> A do statement cannot complete normally iff all four preceding conditions are not met

> Expected 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}

Test Case: 14.20-do-7

> A do statement cannot complete normally iff all four preceding conditions are not met

> Expected 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}

Test Case: 14.20-do-8

> A do statement cannot complete normally iff all four preceding conditions are not met

> Expected 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}

Test Case: 14.20-do-9

> The break is interrupted by the try-finally

> Expected 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}

Test Case: 14.20-do-10

> The break is interrupted by the try-finally

> Expected 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}

Test Case: 14.20-do-11

> The break is interrupted by the try-finally

> Expected 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}

Test Case: 14.20-do-12

> The break is interrupted by the try-finally

> Expected 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}

Test Case: 14.20-do-13

> The break is interrupted by the try-finally

> Expected 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}

Test Case: 14.20-do-14

> The break is interrupted by the try-finally

> Expected 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}

Test Case: 14.20-do-15

> The break is interrupted by the try-finally

> Expected 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}

Test Case: 14.20-do-16

> The break is interrupted by the try-finally

> Expected 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}

Test Case: 14.20-do-17

> The continue is interrupted by the try-finally

> Expected 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}

Test Case: 14.20-do-18

> The continue is interrupted by the try-finally

> Expected 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}

Test Case: 14.20-do-19

> The continue is interrupted by the try-finally

> Expected 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}

Test Case: 14.20-do-20

> The continue is interrupted by the try-finally

> Expected 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}

Test Case: 14.20-do-21

> The continue is interrupted by the try-finally

> Expected 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}

Test Case: 14.20-do-22

> The continue is interrupted by the try-finally

> Expected 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}

Test Case: 14.20-do-23

> The continue is interrupted by the try-finally

> Expected 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}

Test Case: 14.20-do-24

> The continue is interrupted by the try-finally

> Expected 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}

Test Case: 14.20-do-25

> The continue is interrupted by the try-finally

> Expected 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}

Test Case: 14.20-do-26

> The continue is interrupted by the try-finally

> Expected 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}

Test Case: 14.20-do-27

> The continue is interrupted by the try-finally

> Expected 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}

Test Case: 14.20-do-28

> The continue is interrupted by the try-finally

> Expected 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}

Test Case: 14.20-do-29

> The continue is interrupted by the try-finally

> Expected 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}

Test Case: 14.20-do-30

> The continue is interrupted by the try-finally

> Expected 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}

Test Case: 14.20-do-31

> The continue is interrupted by the try-finally

> Expected 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}

Test Case: 14.20-do-32

> The continue is interrupted by the try-finally

> Expected 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}

Test Case: 14.20-do-33

> The continue is interrupted by the try-finally

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 14.20-for-1

> A for statement can complete normally if: The condition statement exists and is non-constant

> Expected 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}

Test Case: 14.20-for-2

> A for statement can complete normally if: There is a reachable break statement that exits the for statement.

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 14.20-for-11

> A for statement cannot have a constant false condition

> Expected 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}

Test Case: 14.20-for-12

> A for statement cannot have a constant false condition

> Expected 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}

Test Case: 14.20-for-13

> A for statement cannot have a constant false condition

> Expected 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}

Test Case: 14.20-for-14

> A for statement cannot have a constant false condition

> Expected 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}

Test Case: 14.20-for-15

> The break is interrupted by the try-finally

> Expected 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}

Test Case: 14.20-for-16

> The break is interrupted by the try-finally

> Expected 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}

Test Case: 14.20-for-17

> The break is interrupted by the try-finally

> Expected 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}

Test Case: 14.20-for-18

> The break is interrupted by the try-finally

> Expected 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}

Test Case: 14.20-for-19

> The break is interrupted by the try-finally

> Expected 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}

Test Case: 14.20-for-20

> The break is interrupted by the try-finally

> Expected 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}

Test Case: 14.20-for-21

> The break is interrupted by the try-finally

> Expected 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}

Test Case: 14.20-for-22

> The break is interrupted by the try-finally

> Expected 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}

Test Case: 14.20-abrupt-1

> break cannot complete normally

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 14.20-abrupt-1 { break cannot complete normally } {

>         empty_main T1420abrupt1 {
>             while (true) {
>                 break;
>                 int i;
>             }
>         }

>     } {FAIL}

Test Case: 14.20-abrupt-2

> break cannot complete normally

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 14.20-abrupt-2 { break cannot complete normally } {

>         empty_main T1420abrupt2 {
>             while (true) {
>                 break;
>                 ;
>             }
>         }

>     } {FAIL}

Test Case: 14.20-abrupt-3

> break cannot complete normally

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 14.20-abrupt-3 { break cannot complete normally } {

>         empty_main T1420abrupt3 {
>             while (true) {
>                 break;
>                 {}
>             }
>         }

>     } {FAIL}

Test Case: 14.20-abrupt-4

> break cannot complete normally

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 14.20-abrupt-4 { break cannot complete normally } {

>         empty_main T1420abrupt4 {
>             while (true) {
>                 break;
>                 { int x=3; }
>             }
>         }

>     } {FAIL}

Test Case: 14.20-abrupt-5

> continue cannot complete normally

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 14.20-abrupt-5 { continue cannot complete normally } {

>         empty_main T1420abrupt5 {
>             while (true) {
>                 continue;
>                 int i;
>             }
>         }

>     } {FAIL}

Test Case: 14.20-abrupt-6

> continue cannot complete normally

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 14.20-abrupt-6 { continue cannot complete normally } {

>         empty_main T1420abrupt6 {
>             while (true) {
>                 continue;
>                 ;
>             }
>         }

>     } {FAIL}

Test Case: 14.20-abrupt-7

> continue cannot complete normally

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 14.20-abrupt-7 { continue cannot complete normally } {

>         empty_main T1420abrupt7 {
>             while (true) {
>                 continue;
>                 {}
>             }
>         }

>     } {FAIL}

Test Case: 14.20-abrupt-8

> continue cannot complete normally

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 14.20-abrupt-8 { continue cannot complete normally } {

>         empty_main T1420abrupt8 {
>             while (true) {
>                 continue;
>                 { int x=3; }
>             }
>         }

>     } {FAIL}

Test Case: 14.20-abrupt-9

> return cannot complete normally

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 14.20-abrupt-9 { return cannot complete normally } {

>         empty_main T1420abrupt9 {
>             return;
>             int i;
>         }

>     } {FAIL}

Test Case: 14.20-abrupt-10

> return cannot complete normally

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 14.20-abrupt-10 { return cannot complete normally } {

>         empty_main T1420abrupt10 {
>             return;
>             ;
>         }

>     } {FAIL}

Test Case: 14.20-abrupt-11

> return cannot complete normally

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 14.20-abrupt-11 { return cannot complete normally } {

>         empty_main T1420abrupt11 {
>             return;
>             {}
>         }

>     } {FAIL}

Test Case: 14.20-abrupt-12

> return cannot complete normally

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 14.20-abrupt-12 { return cannot complete normally } {

>         empty_main T1420abrupt12 {
>             return;
>             { int x=3; }
>         }

>     } {FAIL}

Test Case: 14.20-abrupt-13

> throw cannot complete normally

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 14.20-abrupt-13 { throw cannot complete normally } {

>         empty_main T1420abrupt13 {
>             throw new RuntimeException();
>             int i;
>         }

>     } {FAIL}

Test Case: 14.20-abrupt-14

> throw cannot complete normally

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 14.20-abrupt-14 { throw cannot complete normally } {

>         empty_main T1420abrupt14 {
>             throw new RuntimeException();
>             ;
>         }

>     } {FAIL}

Test Case: 14.20-abrupt-15

> throw cannot complete normally

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 14.20-abrupt-15 { throw cannot complete normally } {

>         empty_main T1420abrupt15 {
>             throw new RuntimeException();
>             {}
>         }

>     } {FAIL}

Test Case: 14.20-abrupt-16

> throw cannot complete normally

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 14.20-abrupt-16 { throw cannot complete normally } {

>         empty_main T1420abrupt16 {
>             throw new RuntimeException();
>             { int x=3; }
>         }

>     } {FAIL}

Test Case: 14.20-synchronized-1

> synchronized completes normally iff the contained block does as well

> Expected 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}

Test Case: 14.20-synchronized-2

> synchronized completes normally iff the contained block does as well

> Expected 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}

Test Case: 14.20-synchronized-3

> synchronized completes normally iff the contained block does as well

> Expected 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}

Test Case: 14.20-synchronized-4

> synchronized completes normally iff the contained block does as well

> Expected 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}

Test Case: 14.20-synchronized-5

> synchronized completes normally iff the contained block does as well

> Expected 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}

Test Case: 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.

> Expected 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}

Test Case: 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.

> Expected 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}

Test Case: 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.

> Expected 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}

Test Case: 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.

> Expected 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}

Test Case: 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.

> Expected 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}

Test Case: 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.

> Expected 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}

Test Case: 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.

> Expected 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}

Test Case: 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.

> Expected 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}

Test Case: 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.

> Expected 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}

Test Case: 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.

> Expected 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}

Test Case: 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.

> Expected 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}

Test Case: 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.

> Expected 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}

Test Case: 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.

> Expected 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}

Test Case: 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.

> Expected 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}

Test Case: 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.

> Expected 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}

Test Case: 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.

> Expected 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}

Test Case: 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.

> Expected 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}

Test Case: 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.

> Expected 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}

Test Case: 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.

> Expected 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}

Test Case: 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.

> Expected 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}

Test Case: 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.

> Expected 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}

Test Case: 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.

> Expected 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}

Test Case: 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.

> Expected 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}

Test Case: 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.

> Expected 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}

Test Case: 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.

> Expected 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}

Test Case: 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.

> Expected 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}

Test Case: 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.

> Expected 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}

Test Case: 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.

> Expected 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}

Test Case: 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.

> Expected 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}

Test Case: 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.

> Expected 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}

Test Case: 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.

> Expected 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}

Test Case: 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.

> Expected 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}

Test Case: 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.

> Expected 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}

Test Case: 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.

> Expected 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}

Test Case: 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.

> Expected 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}

Test Case: 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.

> Expected 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}

Test Case: 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.

> Expected 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}

Test Case: 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.

> Expected 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}

Test Case: 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.

> Expected 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}

Test Case: 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.

> Expected 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}

Test Case: 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.

> Expected 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}

Test Case: 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.

> Expected 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}

Test Case: 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.

> Expected 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}

Test Case: 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.

> Expected 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}

Test Case: 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.

> Expected 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}

Test Case: 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.

> Expected 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}

Test Case: 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.

> Expected 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}

Test Case: 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.

> Expected 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}

Test Case: 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.

> Expected 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}

Test Case: 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.

> Expected 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}

Test Case: 14.20-catch-14

> The throw is interrupted by the inner finally

> Expected 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}

Test Case: 14.20-catch-15

> The throw is interrupted by the inner finally

> Expected 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}

Test Case: 14.20-catch-16

> The throw is interrupted by the inner finally

> Expected 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}

Test Case: 14.20-catch-17

> The throw is interrupted by the inner finally

> Expected 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}

Test Case: 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.

> Expected 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}

Test Case: 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.

> Expected 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}

Test Case: 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.

> Expected 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}

Test Case: 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.

> Expected 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}

Test Case: 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.

> Expected 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}

Test Case: 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.

> Expected 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}

Test Case: 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.

> Expected 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}

Test Case: 14.20-if-1

> if-then can complete normally iff it is reachable

> Expected 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}

Test Case: 14.20-if-2

> then-statement of if-then is reachable

> Expected 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}

Test Case: 14.20-if-3

> if-then-else can complete normally iff then-statement or else-statement can complete normally.

> Expected 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}

Test Case: 14.20-if-4

> if-then-else can complete normally iff then-statement or else-statement can complete normally.

> Expected 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}

Test Case: 14.20-if-5

> if-then-else can complete normally iff then-statement or else-statement can complete normally.

> Expected 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}

Test Case: 14.20-if-6

> if-then-else can complete normally iff then-statement or else-statement can complete normally.

> Expected 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}

Test Case: 14.20-if-7

> if-then-else can complete normally iff then-statement or else-statement can complete normally.

> Expected 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}

Test Case: 14.20-if-8

> if-then-else can complete normally iff then-statement or else-statement can complete normally.

> Expected 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}

Test Case: 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)

> 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}

### 15.8.2

Directory : `tests/jls/expressions/primary-expressions/class-literals`

- 15.8.2-type-1
- 15.8.2-type-2
- 15.8.2-type-3
- 15.8.2-type-4
- 15.8.2-type-5
- 15.8.2-type-6
- 15.8.2-type-7
- 15.8.2-type-8
- 15.8.2-type-9
- 15.8.2-type-10
- 15.8.2-type-11
- 15.8.2-type-12
- 15.8.2-type-13
- 15.8.2-type-14
- 15.8.2-primary-1
- 15.8.2-primary-2
- 15.8.2-syntax-1
- 15.8.2-syntax-2
- 15.8.2-syntax-3
- 15.8.2-syntax-4
- 15.8.2-syntax-5
- 15.8.2-syntax-6
- 15.8.2-syntax-7
- 15.8.2-syntax-8
- 15.8.2-synthetic-1
- 15.8.2-synthetic-2
- 15.8.2-synthetic-3
- 15.8.2-synthetic-4

Test Case: 15.8.2-type-1

> The class literal may be for any type

> Expected 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}

Test Case: 15.8.2-type-2

> The class literal may be for any type

> Expected 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}

Test Case: 15.8.2-type-3

> The class literal may be for any type

> Expected 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}

Test Case: 15.8.2-type-4

> The class literal may be for any type

> Expected 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}

Test Case: 15.8.2-type-5

> The class literal may be for any type

> Expected 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}

Test Case: 15.8.2-type-6

> The class literal may be for any type

> Expected 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}

Test Case: 15.8.2-type-7

> The class literal may be for any type

> Expected 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}

Test Case: 15.8.2-type-8

> The class literal may be for any type

> Expected 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}

Test Case: 15.8.2-type-9

> The class literal must be a known type

> Expected 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}

Test Case: 15.8.2-type-10

> The class literal must be a valid type

> Expected 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}

Test Case: 15.8.2-type-11

> The class literal must be an accessible type

> Expected 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}

Test Case: 15.8.2-type-12

> The class literal must be an accessible type

> Expected 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}

Test Case: 15.8.2-type-13

> The class literal must be an accessible type

> Expected 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}

Test Case: 15.8.2-type-14

> The class literal must be an accessible type

> Expected 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}

Test Case: 15.8.2-primary-1

> The class literal serves as a primary

> Expected 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}

Test Case: 15.8.2-primary-2

> The class literal serves as a primary

> Expected 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}

Test Case: 15.8.2-syntax-1

> The class literal does not work on expressions

> Expected 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}

Test Case: 15.8.2-syntax-2

> The class literal does not work on expressions

> Expected 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}

Test Case: 15.8.2-syntax-3

> The class literal does not work on expressions

> Expected 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}

Test Case: 15.8.2-syntax-4

> The class literal does not work on expressions

> Expected 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}

Test Case: 15.8.2-syntax-5

> The class literal does not work on expressions

> Expected 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}

Test Case: 15.8.2-syntax-6

> The class literal does not work on expressions

> Expected 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}

Test Case: 15.8.2-syntax-7

> The type in the class literal is not obscured

> Expected 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}

Test Case: 15.8.2-syntax-8

> The class literal does not work on void[]

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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 Case: 15.8.2-synthetic-3

> Test synthesis of class literal variables across inner classes without enclosing instance

> Expected 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 Case: 15.8.2-synthetic-4

> Test synthesis of class literal variables in an interface field

> Expected 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}

### 15.8.4

Directory : `tests/jls/expressions/primary-expressions/qualified-this`

- 15.8.4-static-1
- 15.8.4-static-2
- 15.8.4-name-1
- 15.8.4-name-2
- 15.8.4-name-3
- 15.8.4-syntax-1
- 15.8.4-syntax-2
- 15.8.4-syntax-3
- 15.8.4-syntax-4
- 15.8.4-syntax-5
- 15.8.4-syntax-6

Test Case: 15.8.4-static-1

> Qualified this may not appear in static context

> Expected 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}

Test Case: 15.8.4-static-2

> Qualified this must name an enclosing class, which does not exist in a static context

> Expected 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}

Test Case: 15.8.4-name-1

> Qualified this must name an enclosing class, or the class itself

> Expected 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}

Test Case: 15.8.4-name-2

> Qualified this must name an enclosing class, or the class itself

> Expected 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}

Test Case: 15.8.4-name-3

> Qualified this must name an enclosing class, or the class itself

> Expected 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}

Test Case: 15.8.4-syntax-1

> The type in the qualified this is not obscured

> Expected 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}

Test Case: 15.8.4-syntax-2

> The type in qualified this may not be a primitive type

> Expected 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}

Test Case: 15.8.4-syntax-3

> The type in qualified this may not be an array type

> Expected 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}

Test Case: 15.8.4-syntax-4

> The type in qualified this may not be an array type

> Expected 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}

Test Case: 15.8.4-syntax-5

> The type in qualified this may not be null

> Expected 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}

Test Case: 15.8.4-syntax-6

> The type in qualified this may not be void

> Expected 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}

### 15.8.5

Directory : `tests/jls/expressions/primary-expressions/parenthesized-expressions`

- 15.8.5-statement-1
- 15.8.5-statement-2
- 15.8.5-statement-3
- 15.8.5-statement-4
- 15.8.5-statement-5
- 15.8.5-statement-6
- 15.8.5-statement-7
- 15.8.5-primary-expression-1
- 15.8.5-primary-expression-2
- 15.8.5-primary-expression-3
- 15.8.5-primary-expression-4
- 15.8.5-primary-expression-5
- 15.8.5-primary-expression-6
- 15.8.5-primary-expression-7
- 15.8.5-this-expression-1
- 15.8.5-this-expression-2
- 15.8.5-this-expression-3
- 15.8.5-this-expression-4
- 15.8.5-creation-expression-1
- 15.8.5-creation-expression-2
- 15.8.5-creation-expression-3
- 15.8.5-creation-expression-4
- 15.8.5-creation-expression-5
- 15.8.5-creation-expression-6
- 15.8.5-creation-expression-7
- 15.8.5-creation-expression-8
- 15.8.5-field-expression-1
- 15.8.5-field-expression-2
- 15.8.5-field-expression-3
- 15.8.5-field-expression-4
- 15.8.5-field-expression-5
- 15.8.5-field-expression-6
- 15.8.5-field-expression-7
- 15.8.5-field-expression-8
- 15.8.5-field-expression-9
- 15.8.5-field-expression-10
- 15.8.5-field-expression-11
- 15.8.5-method-expression-1
- 15.8.5-method-expression-2
- 15.8.5-method-expression-3
- 15.8.5-method-expression-4
- 15.8.5-method-expression-5
- 15.8.5-method-expression-6
- 15.8.5-method-expression-7
- 15.8.5-method-expression-8
- 15.8.5-method-expression-9
- 15.8.5-method-expression-10
- 15.8.5-method-expression11
- 15.8.5-method-expression-12
- 15.8.5-method-expression-13
- 15.8.5-array-expression-1
- 15.8.5-array-expression-2
- 15.8.5-array-expression-3
- 15.8.5-array-expression-4
- 15.8.5-variable-1
- 15.8.5-variable-2
- 15.8.5-variable-3
- 15.8.5-variable-4
- 15.8.5-variable-5
- 15.8.5-variable-6
- 15.8.5-variable-7
- 15.8.5-variable-8
- 15.8.5-cast-1
- 15.8.5-cast-2
- 15.8.5-cast-3
- 15.8.5-instanceof-1
- 15.8.5-instanceof-2
- 15.8.5-instanceof-3
- 15.8.5-precedence-1

Test Case: 15.8.5-statement-1

> Parenthesized expression must contain expression, not statement

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 15.8.5-statement-1 { Parenthesized expression must contain
>             expression, not statement } {

>         empty_main T1585s1 {
>             (int i);
>         }

>     } {FAIL}

Test Case: 15.8.5-statement-2

> Parenthesized expression must contain expression, not statement

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 15.8.5-statement-2 { Parenthesized expression must contain
>             expression, not statement } {

>         empty_main T1585s2 {
>             int[] i = ({});
>         }

>     } {FAIL}

Test Case: 15.8.5-statement-3

> Parenthesized expression must contain expression, not statement

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 15.8.5-statement-3 { Parenthesized expression must contain
>             expression, not statement } {

>         empty_main T1585s3 {
>             (class Inner{})
>         }

>     } {FAIL}

Test Case: 15.8.5-statement-4

> Parenthesized expression must contain expression, not statement

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 15.8.5-statement-4 { Parenthesized expression must contain
>             expression, not statement } {

>         empty_main T1585s4 {
>             (;)
>         }

>     } {FAIL}

Test Case: 15.8.5-statement-5

> Parenthesized expression must contain expression, not statement

> Expected 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}

Test Case: 15.8.5-statement-6

> Parenthesized expression is not a statement

> Expected 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}

Test Case: 15.8.5-statement-7

> Parenthesized expression is not a statement

> Expected 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}

Test Case: 15.8.5-primary-expression-1

> Parenthesized expression must contain expression

> Expected 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}

Test Case: 15.8.5-primary-expression-2

> Parenthesized expression must contain expression

> Expected 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}

Test Case: 15.8.5-primary-expression-3

> Parenthesized expression must contain expression

> Expected 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}

Test Case: 15.8.5-primary-expression-4

> Parenthesized expression must contain expression

> Expected 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}

Test Case: 15.8.5-primary-expression-5

> Parenthesized expression must contain expression

> Expected 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}

Test Case: 15.8.5-primary-expression-6

> Parenthesized expression must contain expression

> Expected 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}

Test Case: 15.8.5-primary-expression-7

> Parenthesized expression must contain expression

> Expected 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}

Test Case: 15.8.5-this-expression-1

> Parenthesized expression must contain expression

> Expected 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}

Test Case: 15.8.5-this-expression-2

> Parenthesized expression must contain expression

> Expected 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}

Test Case: 15.8.5-this-expression-3

> Parenthesized expression must contain expression

> Expected 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}

Test Case: 15.8.5-this-expression-4

> Parenthesized expression must contain expression

> Expected 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}

Test Case: 15.8.5-creation-expression-1

> Parenthesized expression must contain expression

> Expected 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}

Test Case: 15.8.5-creation-expression-2

> Parenthesized expression must contain expression

> Expected 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}

Test Case: 15.8.5-creation-expression-3

> Parenthesized expression must contain expression

> Expected 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}

Test Case: 15.8.5-creation-expression-4

> Parenthesized expression must contain expression

> Expected 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}

Test Case: 15.8.5-creation-expression-5

> Parenthesized expression must contain expression

> Expected 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}

Test Case: 15.8.5-creation-expression-6

> Parenthesized expression must contain expression

> Expected 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}

Test Case: 15.8.5-creation-expression-7

> Parenthesized expression must contain expression

> Expected 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}

Test Case: 15.8.5-creation-expression-8

> Parenthesized expression must contain expression

> Expected 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}

Test Case: 15.8.5-field-expression-1

> Parenthesized expression must contain expression

> Expected 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}

Test Case: 15.8.5-field-expression-2

> Parenthesized expression must contain expression

> Expected 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}

Test Case: 15.8.5-field-expression-3

> Parenthesized expression must contain expression

> Expected 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}

Test Case: 15.8.5-field-expression-4

> Parenthesized expression must contain expression

> Expected 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}

Test Case: 15.8.5-field-expression-5

> Parenthesized expression must contain expression

> Expected 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}

Test Case: 15.8.5-field-expression-6

> Parenthesized expression must contain expression

> Expected 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}

Test Case: 15.8.5-field-expression-7

> Parenthesized expression must contain expression

> Expected 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}

Test Case: 15.8.5-field-expression-8

> Parenthesized expression must contain expression

> Expected 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}

Test Case: 15.8.5-field-expression-9

> Parenthesized expression must contain expression

> Expected 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}

Test Case: 15.8.5-field-expression-10

> Parenthesized expression must contain expression

> Expected 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}

Test Case: 15.8.5-field-expression-11

> Parenthesized expression must contain expression

> Expected 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}

Test Case: 15.8.5-method-expression-1

> Parenthesized expression must contain expression

> Expected 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}

Test Case: 15.8.5-method-expression-2

> Parenthesized expression must contain expression

> Expected 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}

Test Case: 15.8.5-method-expression-3

> Parenthesized expression must contain expression

> Expected 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}

Test Case: 15.8.5-method-expression-4

> Parenthesized expression must contain expression

> Expected 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}

Test Case: 15.8.5-method-expression-5

> Parenthesized expression must contain expression

> Expected 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}

Test Case: 15.8.5-method-expression-6

> Parenthesized expression must contain expression

> Expected 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}

Test Case: 15.8.5-method-expression-7

> Parenthesized expression must contain expression

> Expected 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}

Test Case: 15.8.5-method-expression-8

> Parenthesized expression must contain expression

> Expected 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}

Test Case: 15.8.5-method-expression-9

> Parenthesized expression must contain expression

> Expected 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}

Test Case: 15.8.5-method-expression-10

> Parenthesized expression must contain expression

> Expected 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}

Test Case: 15.8.5-method-expression11

> Parenthesized expression must contain expression

> Expected 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}

Test Case: 15.8.5-method-expression-12

> Parenthesized expression must contain expression

> Expected 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}

Test Case: 15.8.5-method-expression-13

> Parenthesized expression must contain expression

> Expected 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}

Test Case: 15.8.5-array-expression-1

> Parenthesized expression must contain expression

> Expected 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}

Test Case: 15.8.5-array-expression-2

> Parenthesized expression must contain expression

> Expected 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}

Test Case: 15.8.5-array-expression-3

> Parenthesized expression must contain expression

> Expected 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}

Test Case: 15.8.5-array-expression-4

> Parenthesized expression must contain expression

> Expected 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}

Test Case: 15.8.5-variable-1

> Parenthesized expression may now represent a variable

> Expected 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}

Test Case: 15.8.5-variable-2

> Parenthesized expression may now represent a variable

> Expected 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}

Test Case: 15.8.5-variable-3

> Parenthesized expression may now represent a variable

> Expected 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}

Test Case: 15.8.5-variable-4

> Parenthesized expression may now represent a variable

> Expected 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}

Test Case: 15.8.5-variable-5

> Parenthesized expression may now represent variable in assignment

> Expected 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}

Test Case: 15.8.5-variable-6

> Parenthesized expression may now represent variable in assignment

> Expected 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}

Test Case: 15.8.5-variable-7

> Parenthesized expression may now represent variable in assignment

> Expected 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}

Test Case: 15.8.5-variable-8

> Parenthesized expression may now represent variable in assignment

> Expected 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}

Test Case: 15.8.5-cast-1

> Parenthesized expression must contain expression

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 15.8.5-cast-1 { Parenthesized expression must contain expression } {

>         empty_main T1585c1 {
>             int i = ((int) 1L);
>         }

>     } {PASS}

Test Case: 15.8.5-cast-2

> Parenthesized expression must contain expression

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 15.8.5-cast-2 { Parenthesized expression must contain expression } {

>         empty_main T1585c2 {
>             int i = (int) (1L);
>         }

>     } {PASS}

Test Case: 15.8.5-cast-3

> Parenthesized expression must contain expression

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 15.8.5-cast-3 { Parenthesized expression must contain expression } {

>         empty_main T1585c3 {
>             int i = ((int)) 1L;
>         }

>     } {FAIL}

Test Case: 15.8.5-instanceof-1

> Parenthesized expression must contain expression

> Expected 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}

Test Case: 15.8.5-instanceof-2

> Parenthesized expression must contain expression

> Expected 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}

Test Case: 15.8.5-instanceof-3

> Parenthesized expression must contain expression

> Expected 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}

Test Case: 15.8.5-precedence-1

> Parenthesized expression has highest precedence

> Expected 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}

### 15.9

Directory : `tests/jls/expressions/class-instance-creation`

- 15.9-unqualified-1
- 15.9-unqualified-2

Test Case: 15.9-unqualified-1

> a ClassInstanceCreationExpression that starts with the keyword new is known as an unqualified class instance creation expression

> Expected 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}

Test Case: 15.9-unqualified-2

> an unqualified class instance creation expression can create instances of a toplevel, member, local, or anonymous class

> Expected 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}

### 15.9.1

Directory : `tests/jls/expressions/class-instance-creation/determining-the-class`

- 15.9.1-unqualified-anonymous-1
- 15.9.1-unqualified-anonymous-2
- 15.9.1-unqualified-anonymous-3
- 15.9.1-unqualified-anonymous-4
- 15.9.1-unqualified-anonymous-5
- 15.9.1-unqualified-anonymous-6
- 15.9.1-unqualified-anonymous-7
- 15.9.1-unqualified-anonymous-8
- 15.9.1-unqualified-anonymous-9
- 15.9.1-unqualified-anonymous-10
- 15.9.1-unqualified-anonymous-11
- 15.9.1-unqualified-anonymous-12
- 15.9.1-unqualified-anonymous-13
- 15.9.1-unqualified-anonymous-14
- 15.9.1-unqualified-anonymous-15
- 15.9.1-unqualified-anonymous-16
- 15.9.1-unqualified-anonymous-17
- 15.9.1-unqualified-anonymous-18
- 15.9.1-unqualified-anonymous-19
- 15.9.1-unqualified-anonymous-20
- 15.9.1-unqualified-anonymous-21
- 15.9.1-unqualified-anonymous-22
- 15.9.1-unqualified-anonymous-23
- 15.9.1-unqualified-anonymous-24
- 15.9.1-unqualified-anonymous-25
- 15.9.1-unqualified-anonymous-26
- 15.9.1-unqualified-anonymous-27
- 15.9.1-qualified-anonymous-1
- 15.9.1-qualified-anonymous-2
- 15.9.1-qualified-anonymous-3
- 15.9.1-qualified-anonymous-4
- 15.9.1-qualified-anonymous-5
- 15.9.1-qualified-anonymous-6
- 15.9.1-qualified-anonymous-7
- 15.9.1-qualified-anonymous-8
- 15.9.1-qualified-anonymous-9
- 15.9.1-qualified-anonymous-10
- 15.9.1-qualified-anonymous-11
- 15.9.1-qualified-anonymous-12
- 15.9.1-qualified-anonymous-13
- 15.9.1-qualified-anonymous-14
- 15.9.1-qualified-anonymous-15
- 15.9.1-qualified-anonymous-16
- 15.9.1-qualified-anonymous-17
- 15.9.1-qualified-anonymous-18
- 15.9.1-qualified-anonymous-19
- 15.9.1-qualified-anonymous-20
- 15.9.1-qualified-anonymous-21
- 15.9.1-qualified-anonymous-22
- 15.9.1-qualified-anonymous-23
- 15.9.1-qualified-anonymous-24
- 15.9.1-qualified-anonymous-25
- 15.9.1-qualified-anonymous-26
- 15.9.1-qualified-anonymous-27
- 15.9.1-qualified-anonymous-28
- 15.9.1-qualified-anonymous-29
- 15.9.1-unqualified-concrete-1
- 15.9.1-unqualified-concrete-2
- 15.9.1-unqualified-concrete-3
- 15.9.1-unqualified-concrete-4
- 15.9.1-unqualified-concrete-5
- 15.9.1-unqualified-concrete-6
- 15.9.1-unqualified-concrete-7
- 15.9.1-unqualified-concrete-8
- 15.9.1-unqualified-concrete-9
- 15.9.1-unqualified-concrete-10
- 15.9.1-unqualified-concrete-11
- 15.9.1-unqualified-concrete-12
- 15.9.1-unqualified-concrete-13
- 15.9.1-unqualified-concrete-14
- 15.9.1-unqualified-concrete-15
- 15.9.1-unqualified-concrete-16
- 15.9.1-unqualified-concrete-17
- 15.9.1-qualified-concrete-1
- 15.9.1-qualified-concrete-2
- 15.9.1-qualified-concrete-3
- 15.9.1-qualified-concrete-4
- 15.9.1-qualified-concrete-5
- 15.9.1-qualified-concrete-6
- 15.9.1-qualified-concrete-7
- 15.9.1-qualified-concrete-8
- 15.9.1-qualified-concrete-9
- 15.9.1-qualified-concrete-10
- 15.9.1-qualified-concrete-11
- 15.9.1-qualified-concrete-12
- 15.9.1-qualified-concrete-13
- 15.9.1-qualified-concrete-14
- 15.9.1-qualified-concrete-15
- 15.9.1-qualified-concrete-16
- 15.9.1-qualified-concrete-17
- 15.9.1-qualified-concrete-18
- 15.9.1-qualified-concrete-19
- 15.9.1-qualified-concrete-20
- 15.9.1-qualified-concrete-21
- 15.9.1-qualified-concrete-22
- 15.9.1-qualified-concrete-23
- 15.9.1-qualified-concrete-24
- 15.9.1-qualified-concrete-25
- 15.9.1-qualified-concrete-26

Test Case: 15.9.1-unqualified-anonymous-1

> The ClassOrInterfaceType must be accessible

> Expected 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}

Test Case: 15.9.1-unqualified-anonymous-2

> The ClassOrInterfaceType must be accessible

> Expected 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}

Test Case: 15.9.1-unqualified-anonymous-3

> The ClassOrInterfaceType must be accessible

> Expected 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}

Test Case: 15.9.1-unqualified-anonymous-4

> The ClassOrInterfaceType must be accessible

> Expected 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}

Test Case: 15.9.1-unqualified-anonymous-5

> The ClassOrInterfaceType must be accessible

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 15.9.1-unqualified-anonymous-7

> The ClassOrInterfaceType must be accessible, this inner class is private

> Expected 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}

Test Case: 15.9.1-unqualified-anonymous-8

> The ClassOrInterfaceType must be accessible

> Expected 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}

Test Case: 15.9.1-unqualified-anonymous-9

> The ClassOrInterfaceType must be accessible

> Expected 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}

Test Case: 15.9.1-unqualified-anonymous-10

> The ClassOrInterfaceType must be accessible

> Expected 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}

Test Case: 15.9.1-unqualified-anonymous-11

> The ClassOrInterfaceType must be accessible

> Expected 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}

Test Case: 15.9.1-unqualified-anonymous-12

> The ClassOrInterfaceType must be accessible

> Expected 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}

Test Case: 15.9.1-unqualified-anonymous-13

> The ClassOrInterfaceType must be accessible, this interface has package access

> Expected 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}

Test Case: 15.9.1-unqualified-anonymous-14

> The ClassOrInterfaceType must be accessible

> Expected 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}

Test Case: 15.9.1-unqualified-anonymous-15

> The ClassOrInterfaceType must be accessible

> Expected 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}

Test Case: 15.9.1-unqualified-anonymous-16

> The ClassOrInterfaceType must be accessible

> Expected 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}

Test Case: 15.9.1-unqualified-anonymous-17

> The ClassOrInterfaceType must be accessible

> Expected 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}

Test Case: 15.9.1-unqualified-anonymous-18

> The ClassOrInterfaceType must be accessible

> Expected 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}

Test Case: 15.9.1-unqualified-anonymous-19

> The ClassOrInterfaceType must be accessible

> Expected 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}

Test Case: 15.9.1-unqualified-anonymous-20

> The ClassOrInterfaceType must be accessible, this inner class has private access

> Expected 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}

Test Case: 15.9.1-unqualified-anonymous-21

> Anonymous classes cannot extend final class

> Expected 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}

Test Case: 15.9.1-unqualified-anonymous-22

> Anonymous classes may extend abstract class

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 15.9.1-unqualified-anonymous-24

> The name may not be ambiguous, accessibility means that only one Inner is inherited

> Expected 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}

Test Case: 15.9.1-unqualified-anonymous-25

> The ClassOrInterfaceType must be accessible

> Expected 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}

Test Case: 15.9.1-unqualified-anonymous-26

> The ClassOrInterfaceType must exist

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 15.9.1-unqualified-anonymous-26 { The ClassOrInterfaceType must
>             exist } {

>         empty_class T1591ua26 {
>     	Object o = new UnknownType() {};
>         }

>     } {FAIL}

Test Case: 15.9.1-unqualified-anonymous-27

> The ClassOrInterfaceType must exist

> Expected 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}

Test Case: 15.9.1-qualified-anonymous-1

> The simple name must be an accessible inner class of the qualifier

> Expected 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}

Test Case: 15.9.1-qualified-anonymous-2

> Anonymous classes cannot extend final class

> Expected 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}

Test Case: 15.9.1-qualified-anonymous-3

> Anonymous classes may extend abstract class

> Expected 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}

Test Case: 15.9.1-qualified-anonymous-4

> The simple name must be an accessible inner class of the qualifier

> Expected 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}

Test Case: 15.9.1-qualified-anonymous-5

> The simple name must be an accessible inner class of the qualifier

> Expected 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}

Test Case: 15.9.1-qualified-anonymous-6

> The simple name must be an accessible inner class of the qualifier

> Expected 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}

Test Case: 15.9.1-qualified-anonymous-7

> The simple name must be an accessible inner class of the qualifier

> Expected 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}

Test Case: 15.9.1-qualified-anonymous-8

> The simple name must be an accessible inner class of the qualifier

> Expected 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}

Test Case: 15.9.1-qualified-anonymous-9

> The simple name must be an accessible inner class of the qualifier

> Expected 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}

Test Case: 15.9.1-qualified-anonymous-10

> The simple name must be an accessible inner class of the qualifier

> Expected 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}

Test Case: 15.9.1-qualified-anonymous-11

> The qualified name must be simple

> Expected 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}

Test Case: 15.9.1-qualified-anonymous-12

> The qualified name must be an inner class

> Expected 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}

Test Case: 15.9.1-qualified-anonymous-13

> The qualified name must be an inner class

> Expected 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}

Test Case: 15.9.1-qualified-anonymous-14

> The qualified name must be an inner class

> Expected 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}

Test Case: 15.9.1-qualified-anonymous-15

> The anonymous class extends the inner class of the type of the qualifier

> Expected 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}

Test Case: 15.9.1-qualified-anonymous-16

> The anonymous class extends the inner class of the type of the qualifier

> Expected 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}

Test Case: 15.9.1-qualified-anonymous-17

> The anonymous class extends the inner class of the type of the qualifier

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 15.9.1-qualified-anonymous-19

> The qualifier must be a reference

> Expected 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}

Test Case: 15.9.1-qualified-anonymous-20

> The qualifier must be a reference

> Expected 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}

Test Case: 15.9.1-qualified-anonymous-21

> The qualifier must be a reference

> Expected 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}

Test Case: 15.9.1-qualified-anonymous-22

> The qualified name must be an inner class of the qualifier

> Expected 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}

Test Case: 15.9.1-qualified-anonymous-23

> The ClassOrInterfaceType must be accessible

> Expected 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}

Test Case: 15.9.1-qualified-anonymous-24

> The qualifier must be a primary, not a typename

> Expected 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}

Test Case: 15.9.1-qualified-anonymous-25

> The qualifier must be a primary, not a typename

> Expected 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}

Test Case: 15.9.1-qualified-anonymous-26

> The identifier must not be ambiguous, but it must also name a non-static type

> Expected 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}

Test Case: 15.9.1-qualified-anonymous-27

> The identifier is a typename

> Expected 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}

Test Case: 15.9.1-qualified-anonymous-28

> The ClassOrInterfaceType must exist

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 15.9.1-qualified-anonymous-28 { The ClassOrInterfaceType must
>             exist } {

>         empty_class T1591qa28 {
>     	Object o = "".new UnknownType() {};
>         }

>     } {FAIL}

Test Case: 15.9.1-qualified-anonymous-29

> The ClassOrInterfaceType must exist

> Expected 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}

Test Case: 15.9.1-unqualified-concrete-1

> The ClassOrInterfaceType must be accessible

> Expected 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}

Test Case: 15.9.1-unqualified-concrete-2

> The ClassOrInterfaceType must be accessible

> Expected 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}

Test Case: 15.9.1-unqualified-concrete-3

> The ClassOrInterfaceType must be accessible

> Expected 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}

Test Case: 15.9.1-unqualified-concrete-4

> The ClassOrInterfaceType must be accessible

> Expected 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}

Test Case: 15.9.1-unqualified-concrete-5

> The ClassOrInterfaceType must be accessible

> Expected 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}

Test Case: 15.9.1-unqualified-concrete-6

> The ClassOrInterfaceType must be accessible

> Expected 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}

Test Case: 15.9.1-unqualified-concrete-7

> The ClassOrInterfaceType must be accessible

> Expected 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}

Test Case: 15.9.1-unqualified-concrete-8

> The ClassOrInterfaceType must be accessible

> Expected 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}

Test Case: 15.9.1-unqualified-concrete-9

> The ClassOrInterfaceType must be accessible

> Expected 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}

Test Case: 15.9.1-unqualified-concrete-10

> The ClassOrInterfaceType must be accessible

> Expected 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}

Test Case: 15.9.1-unqualified-concrete-11

> Interface instances cannot be created

> Expected 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}

Test Case: 15.9.1-unqualified-concrete-12

> Concrete classes may be final

> Expected 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}

Test Case: 15.9.1-unqualified-concrete-13

> Concrete classes may not be abstract

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 15.9.1-unqualified-concrete-15

> The name may not be ambiguous, accessibility means that only one Inner is inherited

> Expected 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}

Test Case: 15.9.1-unqualified-concrete-16

> The ClassOrInterfaceType must be accessible

> Expected 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}

Test Case: 15.9.1-unqualified-concrete-17

> The ClassOrInterfaceType must exist

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 15.9.1-unqualified-concrete-17 { The ClassOrInterfaceType must
>             exist } {

>         empty_class T1591uc17 {
>     	Object o = new UnknownType();
>         }

>     } {FAIL}

Test Case: 15.9.1-qualified-concrete-1

> The simple name must be an accessible inner class of the qualifier

> Expected 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}

Test Case: 15.9.1-qualified-concrete-2

> Concrete classes may be final

> Expected 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}

Test Case: 15.9.1-qualified-concrete-3

> Concrete classes may not be abstract

> Expected 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}

Test Case: 15.9.1-qualified-concrete-4

> The simple name must be an accessible inner class of the qualifier

> Expected 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}

Test Case: 15.9.1-qualified-concrete-5

> The simple name must be an accessible inner class of the qualifier

> Expected 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}

Test Case: 15.9.1-qualified-concrete-6

> The simple name must be an accessible inner class of the qualifier

> Expected 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}

Test Case: 15.9.1-qualified-concrete-7

> The simple name must be an accessible inner class of the qualifier

> Expected 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}

Test Case: 15.9.1-qualified-concrete-8

> The simple name must be an accessible inner class of the qualifier

> Expected 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}

Test Case: 15.9.1-qualified-concrete-9

> The simple name must be an accessible inner class of the qualifier

> Expected 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}

Test Case: 15.9.1-qualified-concrete-10

> The simple name must be an accessible inner class of the qualifier

> Expected 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}

Test Case: 15.9.1-qualified-concrete-11

> The qualified name must be simple

> Expected 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}

Test Case: 15.9.1-qualified-concrete-12

> The qualified name must be an inner class

> Expected 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}

Test Case: 15.9.1-qualified-concrete-13

> The qualified name must be an inner class

> Expected 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}

Test Case: 15.9.1-qualified-concrete-14

> The qualified name must be an inner class

> Expected 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}

Test Case: 15.9.1-qualified-concrete-15

> The concrete class extends the inner class of the type of the qualifier

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 15.9.1-qualified-concrete-17

> The qualifier must be a reference

> Expected 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}

Test Case: 15.9.1-qualified-concrete-18

> The qualifier must be a reference

> Expected 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}

Test Case: 15.9.1-qualified-concrete-19

> The qualifier must be a reference

> Expected 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}

Test Case: 15.9.1-qualified-concrete-20

> The qualified name must be an inner class of the qualifier

> Expected 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}

Test Case: 15.9.1-qualified-concrete-21

> The ClassOrInterfaceType must be accessible

> Expected 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}

Test Case: 15.9.1-qualified-concrete-22

> The qualifier must be a primary, not a typename

> Expected 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}

Test Case: 15.9.1-qualified-concrete-23

> The qualifier must be a primary, not a typename

> Expected 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}

Test Case: 15.9.1-qualified-concrete-24

> The identifier must not be ambiguous, but it must also name a non-static type

> Expected 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}

Test Case: 15.9.1-qualified-concrete-25

> The identifier is a typename

> Expected 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}

Test Case: 15.9.1-qualified-concrete-26

> The ClassOrInterfaceType must exist

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 15.9.1-qualified-concrete-26 { The ClassOrInterfaceType must
>             exist } {

>         empty_class T1591qc26 {
>     	Object o = "".new UnknownType();
>         }

>     } {FAIL}

### 15.9.2

Directory : `tests/jls/expressions/class-instance-creation/determining-enclosing-instances`

- 15.9.2-inner-member-1

Test Case: 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

> Expected 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}

### 15.9.3

Directory : `tests/jls/expressions/class-instance-creation/choosing-the-constructor`

- 15.9.3-anonymous-1
- 15.9.3-anonymous-2
- 15.9.3-anonymous-3
- 15.9.3-choosing-1
- 15.9.3-choosing-2
- 15.9.3-choosing-3
- 15.9.3-choosing-4
- 15.9.3-choosing-5
- 15.9.3-choosing-6
- 15.9.3-choosing-7
- 15.9.3-choosing-8

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 15.9.3-choosing-1

> A unique most-specific accessible constructor must exist

> Expected 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}

Test Case: 15.9.3-choosing-2

> A unique most-specific accessible constructor must exist

> Expected 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}

Test Case: 15.9.3-choosing-3

> A unique most-specific accessible constructor must exist

> Expected 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}

Test Case: 15.9.3-choosing-4

> A unique most-specific accessible constructor must exist

> Expected 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}

Test Case: 15.9.3-choosing-5

> A unique most-specific accessible constructor must exist

> Expected 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}

Test Case: 15.9.3-choosing-6

> A unique most-specific accessible constructor must exist

> Expected 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}

Test Case: 15.9.3-choosing-7

> A unique most-specific accessible constructor must exist

> Expected 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}

Test Case: 15.9.3-choosing-8

> A unique most-specific accessible constructor must exist

> Expected 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}

### 15.9.5.1

Directory : `tests/jls/expressions/class-instance-creation/anonymous-class-declarations/anonymous-constructors`

- 15.9.5.1-implicit-1
- 15.9.5.1-superconstructor-1
- 15.9.5.1-superconstructor-2
- 15.9.5.1-superconstructor-3
- 15.9.5.1-superconstructor-4
- 15.9.5.1-superconstructor-5
- 15.9.5.1-superconstructor-6
- 15.9.5.1-superconstructor-7
- 15.9.5.1-superconstructor-8
- 15.9.5.1-superconstructor-9
- 15.9.5.1-exception-1
- 15.9.5.1-exception-2
- 15.9.5.1-exception-3
- 15.9.5.1-exception-4

Test Case: 15.9.5.1-implicit-1

> An anonymous class cannot have an explicit constructor

> Expected 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}

Test Case: 15.9.5.1-superconstructor-1

> An anonymous class is invalid if the superconstructor does not exist

> Expected 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}

Test Case: 15.9.5.1-superconstructor-2

> An anonymous class is invalid if the superconstructor is not accessible

> Expected 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}

Test Case: 15.9.5.1-superconstructor-3

> An anonymous class is invalid if the superconstructor is ambiguous

> Expected 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}

Test Case: 15.9.5.1-superconstructor-4

> Accessibility disambiguates the superconstructor of an anonymous class

> Expected 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}

Test Case: 15.9.5.1-superconstructor-5

> An anonymous class may access a private superconstructor within the same enclosing class

> Expected 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}

Test Case: 15.9.5.1-superconstructor-6

> An anonymous class may access the protected constructor of a class from another package

> Expected 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}

Test Case: 15.9.5.1-superconstructor-7

> An anonymous class may refer to an inaccessible type mentioned as a superconstructor parameter

> Expected 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}

Test Case: 15.9.5.1-superconstructor-8

> A unique most-specific accessible constructor must exist

> Expected 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}

Test Case: 15.9.5.1-superconstructor-9

> A unique most-specific accessible constructor must exist

> Expected 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}

Test Case: 15.9.5.1-exception-1

> An anonymous class constructor legally throws whatever exception the superconstructor does

> Expected 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}

Test Case: 15.9.5.1-exception-2

> An anonymous class constructor legally throws whatever exception the superconstructor does

> Expected 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}

Test Case: 15.9.5.1-exception-3

> An anonymous class constructor legally throws whatever exception an instance initializer throws

> Expected 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}

Test Case: 15.9.5.1-exception-4

> An anonymous class constructor legally throws whatever exception an instance initializer throws

> Expected 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}

### 15.10

Directory : `tests/jls/expressions/array-creation-expressions`

- 15.10-initializer-syntax-1
- 15.10-initializer-syntax-2
- 15.10-initializer-syntax-3
- 15.10-initializer-syntax-4
- 15.10-initializer-syntax-5
- 15.10-initializer-syntax-6
- 15.10-initializer-syntax-7
- 15.10-initializer-type-1
- 15.10-initializer-type-2
- 15.10-initializer-type-3
- 15.10-initializer-type-4
- 15.10-initializer-type-5
- 15.10-initializer-type-6
- 15.10-initializer-type-7
- 15.10-initializer-type-8
- 15.10-initializer-type-9
- 15.10-initializer-type-10
- 15.10-initializer-type-11
- 15.10-initializer-type-12
- 15.10-initializer-type-13
- 15.10-uninitialized-1
- 15.10-uninitialized-2
- 15.10-uninitialized-3
- 15.10-uninitialized-4
- 15.10-uninitialized-5

Test Case: 15.10-initializer-syntax-1

> array initializer may be empty

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 15.10-initializer-syntax-1 { array initializer may be empty } {

>         empty_main T1510is1 {
>             int[] ia = new int[] {};
>         }

>     } {PASS}

Test Case: 15.10-initializer-syntax-2

> array initializer may contain initializers

> Expected 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}

Test Case: 15.10-initializer-syntax-3

> array initializer may contain initializers

> Expected 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}

Test Case: 15.10-initializer-syntax-4

> array initializer may contain concluding comma

> Expected 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}

Test Case: 15.10-initializer-syntax-5

> array initializer may contain concluding comma

> Expected 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}

Test Case: 15.10-initializer-syntax-6

> array initializers may nest

> Expected 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}

Test Case: 15.10-initializer-syntax-7

> array bounds determined automatically when initialized

> Expected 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}

Test Case: 15.10-initializer-type-1

> expressions in array initializer must be assignment compatible with array type

> Expected 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}

Test Case: 15.10-initializer-type-2

> expressions in array initializer must be assignment compatible with array type

> Expected 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}

Test Case: 15.10-initializer-type-3

> expressions in array initializer must be assignment compatible with array type

> Expected 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}

Test Case: 15.10-initializer-type-4

> expressions in array initializer must be assignment compatible with array type

> Expected 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}

Test Case: 15.10-initializer-type-5

> expressions in array initializer must be assignment compatible with array type

> Expected 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}

Test Case: 15.10-initializer-type-6

> expressions in array initializer must be assignment compatible with array type

> Expected 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}

Test Case: 15.10-initializer-type-7

> expressions in array initializer must be assignment compatible with array type

> Expected 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}

Test Case: 15.10-initializer-type-8

> expressions in array initializer must be assignment compatible with array type

> Expected 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}

Test Case: 15.10-initializer-type-9

> expressions in array initializer must be assignment compatible with array type

> Expected 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}

Test Case: 15.10-initializer-type-10

> expressions in array initializer must be assignment compatible with array type

> Expected 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}

Test Case: 15.10-initializer-type-11

> expressions in array initializer must be assignment compatible with array type

> Expected 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}

Test Case: 15.10-initializer-type-12

> expressions in array initializer must be assignment compatible with array type

> Expected 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}

Test Case: 15.10-initializer-type-13

> expressions in array initializer must be assignment compatible with array type

> Expected 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}

Test Case: 15.10-uninitialized-1

> At least one dimension must be specified

> Expected 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}

Test Case: 15.10-uninitialized-2

> Some dimensions may to be specified

> Expected 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}

Test Case: 15.10-uninitialized-3

> All dimensions may to be specified

> Expected 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}

Test Case: 15.10-uninitialized-4

> Trailing dimensions may be specified only when leading ones are

> Expected 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}

Test Case: 15.10-uninitialized-5

> negative constant dimensions are stupid, but legal

> Expected 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}

### 15.11.1

Directory : `tests/jls/expressions/field-access-expressions/using-a-primary`

- 15.11.1-invalid-1
- 15.11.1-ambiguous-1
- 15.11.1-ambiguous-2
- 15.11.1-ambiguous-3
- 15.11.1-ambiguous-4
- 15.11.1-explicit-constructor-1
- 15.11.1-explicit-constructor-2
- 15.11.1-explicit-constructor-3

Test Case: 15.11.1-invalid-1

> Member types are not fields

> Expected 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}

Test Case: 15.11.1-ambiguous-1

> Accessing ambiguous fields is an error

> Expected 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}

Test Case: 15.11.1-ambiguous-2

> There is no ambiguity if one field is not accessible

> Expected 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}

Test Case: 15.11.1-ambiguous-3

> There is no ambiguity if one field is not accessible

> Expected 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}

Test Case: 15.11.1-ambiguous-4

> There is no ambiguity if one field is not accessible

> Expected 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}

Test Case: 15.11.1-explicit-constructor-1

> Cannot access instance fields from this class within an explicit constructor

> Expected 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}

Test Case: 15.11.1-explicit-constructor-2

> Cannot access instance fields from this class within an explicit constructor

> Expected 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}

Test Case: 15.11.1-explicit-constructor-3

> Cannot access instance fields from this class within an explicit constructor

> Expected 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}

### 15.11.2

Directory : `tests/jls/expressions/field-access-expressions/accessing-superclass-members-using-super`

- 15.11.2-syntax-1
- 15.11.2-syntax-2
- 15.11.2-syntax-3
- 15.11.2-syntax-4
- 15.11.2-syntax-5
- 15.11.2-syntax-6
- 15.11.2-syntax-7
- 15.11.2-syntax-8
- 15.11.2-syntax-9
- 15.11.2-syntax-10
- 15.11.2-explicit-constructor-1
- 15.11.2-explicit-constructor-2
- 15.11.2-use-1
- 15.11.2-use-2
- 15.11.2-use-3
- 15.11.2-use-4
- 15.11.2-use-5
- 15.11.2-use-6
- 15.11.2-use-7
- 15.11.2-use-8
- 15.11.2-use-9
- 15.11.2-use-10
- 15.11.2-use-11
- 15.11.2-use-12
- 15.11.2-meaning-1
- 15.11.2-meaning-2
- 15.11.2-meaning-3
- 15.11.2-meaning-4
- 15.11.2-meaning-5
- 15.11.2-meaning-6
- 15.11.2-meaning-7
- 15.11.2-meaning-8
- 15.11.2-meaning-9
- 15.11.2-meaning-10
- 15.11.2-meaning-11
- 15.11.2-meaning-12
- 15.11.2-meaning-13
- 15.11.2-meaning-14
- 15.11.2-meaning-15
- 15.11.2-meaning-16
- 15.11.2-meaning-17

Test Case: 15.11.2-syntax-1

> The type in the qualified super is not obscured

> Expected 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}

Test Case: 15.11.2-syntax-2

> The type in qualified super may not be a primitive type

> Expected 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}

Test Case: 15.11.2-syntax-3

> The type in qualified super may not be an array type

> Expected 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}

Test Case: 15.11.2-syntax-4

> The type in qualified super may not be an array type

> Expected 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}

Test Case: 15.11.2-syntax-5

> The type in qualified super may not be null

> Expected 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}

Test Case: 15.11.2-syntax-6

> The type in qualified super may not be void

> Expected 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}

Test Case: 15.11.2-syntax-7

> The type in qualified super may not be a literal

> Expected 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}

Test Case: 15.11.2-syntax-8

> The type in qualified super may not be a literal

> Expected 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}

Test Case: 15.11.2-syntax-9

> The type in qualified super must enclose the current type

> Expected 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}

Test Case: 15.11.2-syntax-10

> The type in qualified super must enclose the current type

> Expected 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}

Test Case: 15.11.2-explicit-constructor-1

> Cannot access instance fields from this class within an explicit constructor

> Expected 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}

Test Case: 15.11.2-explicit-constructor-2

> Cannot access instance fields from this class within an explicit constructor

> Expected 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}

Test Case: 15.11.2-use-1

> super.field must be in non-static context

> Expected 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}

Test Case: 15.11.2-use-2

> super.field must be in non-static context

> Expected 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}

Test Case: 15.11.2-use-3

> super.field must be in non-static context

> Expected 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}

Test Case: 15.11.2-use-4

> super.field must be in non-static context

> Expected 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}

Test Case: 15.11.2-use-5

> super.field must be in non-static context

> Expected 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}

Test Case: 15.11.2-use-6

> super.field must be in non-static context

> Expected 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}

Test Case: 15.11.2-use-7

> super.field must be in non-static context

> Expected 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}

Test Case: 15.11.2-use-8

> super.field must be in non-static context

> Expected 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}

Test Case: 15.11.2-use-9

> super.field must refer to a single accessible field in the superclass

> Expected 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}

Test Case: 15.11.2-use-10

> super.field must refer to a single accessible field in the superclass

> Expected 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}

Test Case: 15.11.2-use-11

> super.field must refer to a single accessible field in the superclass

> Expected 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}

Test Case: 15.11.2-use-12

> super.field must refer to a single accessible field in the superclass

> Expected 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}

Test Case: 15.11.2-meaning-1

> super.field is (almost) ((S)this).field

> Expected 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}

Test Case: 15.11.2-meaning-2

> super.field is (almost) ((S)this).field

> Expected 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}

Test Case: 15.11.2-meaning-3

> super.field is (almost) ((S)this).field

> Expected 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}

Test Case: 15.11.2-meaning-4

> super.field is (almost) ((S)this).field

> Expected 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}

Test Case: 15.11.2-meaning-5

> super.field is (almost) ((S)this).field

> Expected 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}

Test Case: 15.11.2-meaning-6

> super.field is (almost) ((S)this).field

> Expected 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}

Test Case: 15.11.2-meaning-7

> super.field is (almost) ((S)this).field

> Expected 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}

Test Case: 15.11.2-meaning-8

> T.super.field is (almost) ((S)T.this).field

> Expected 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}

Test Case: 15.11.2-meaning-9

> T.super.field is (almost) ((S)T.this).field

> Expected 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}

Test Case: 15.11.2-meaning-10

> T.super.field is (almost) ((S)T.this).field

> Expected 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}

Test Case: 15.11.2-meaning-11

> T.super.field is (almost) ((S)T.this).field

> Expected 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}

Test Case: 15.11.2-meaning-12

> T.super.field is (almost) ((S)T.this).field

> Expected 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}

Test Case: 15.11.2-meaning-13

> T.super.field is (almost) ((S)T.this).field

> Expected 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}

Test Case: 15.11.2-meaning-14

> T.super.field is (almost) ((S)T.this).field

> Expected 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}

Test Case: 15.11.2-meaning-15

> T.super.field is (almost) ((S)T.this).field

> Expected 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}

Test Case: 15.11.2-meaning-16

> T.super.field is (almost) ((S)T.this).field

> Expected 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}

Test Case: 15.11.2-meaning-17

> T.super.field is (almost) ((S)T.this).field

> Expected 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}

### 15.12.1

Directory : `tests/jls/expressions/method-invocation-expressions/determine-class-or-interface`

- 15.12.1-syntax-1
- 15.12.1-syntax-2
- 15.12.1-syntax-3
- 15.12.1-syntax-4
- 15.12.1-syntax-5
- 15.12.1-syntax-6
- 15.12.1-syntax-7
- 15.12.1-syntax-8
- 15.12.1-syntax-9
- 15.12.1-syntax-10
- 15.12.1-type-1
- 15.12.1-type-2
- 15.12.1-type-3
- 15.12.1-type-4
- 15.12.1-type-5
- 15.12.1-type-6
- 15.12.1-type-7
- 15.12.1-type-8
- 15.12.1-type-9
- 15.12.1-type-10
- 15.12.1-type-11
- 15.12.1-type-12
- 15.12.1-type-13
- 15.12.1-type-14

Test Case: 15.12.1-syntax-1

> The type in the qualified super is not obscured

> Expected 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}

Test Case: 15.12.1-syntax-2

> The type in qualified super may not be a primitive type

> Expected 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}

Test Case: 15.12.1-syntax-3

> The type in qualified super may not be an array type

> Expected 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}

Test Case: 15.12.1-syntax-4

> The type in qualified super may not be an array type

> Expected 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}

Test Case: 15.12.1-syntax-5

> The type in qualified super may not be null

> Expected 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}

Test Case: 15.12.1-syntax-6

> The type in qualified super may not be void

> Expected 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}

Test Case: 15.12.1-syntax-7

> The type in qualified super may not be a literal

> Expected 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}

Test Case: 15.12.1-syntax-8

> The type in qualified super may not be a literal

> Expected 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}

Test Case: 15.12.1-syntax-9

> The type in qualified super must enclose the current type

> Expected 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}

Test Case: 15.12.1-syntax-10

> The type in qualified super must enclose the current type

> Expected 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}

Test Case: 15.12.1-type-1

> The type to search for plain MethodName is the innermost enclosing type which contains a method by that name

> Expected 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}

Test Case: 15.12.1-type-2

> The type to search for plain MethodName is the innermost enclosing type which contains a method by that name

> Expected 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}

Test Case: 15.12.1-type-3

> The type to search for TypeName.MethodName is TypeName, which must be a class

> Expected 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}

Test Case: 15.12.1-type-4

> The type to search for TypeName.MethodName is TypeName, which must be a class

> Expected 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}

Test Case: 15.12.1-type-5

> The type to search for FieldName.MethodName is the compile-time type of FieldName

> Expected 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}

Test Case: 15.12.1-type-6

> The type to search for primary.MethodName is the compile-time type of primary

> Expected 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}

Test Case: 15.12.1-type-7

> The type to search for super.MethodName is the superclass, which must exist

> Expected 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}

Test Case: 15.12.1-type-8

> The type to search for super.MethodName is the superclass, which must exist

> Expected 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}

Test Case: 15.12.1-type-9

> The type to search for super.MethodName is the superclass, which must exist

> Expected 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}

Test Case: 15.12.1-type-10

> The type to search for super.MethodName is the superclass, which must exist

> Expected 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}

Test Case: 15.12.1-type-11

> The type to search for ClassName.super.MethodName is the superclass of ClassName

> Expected 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}

Test Case: 15.12.1-type-12

> The type to search for ClassName.super.MethodName is the superclass of ClassName

> Expected 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}

Test Case: 15.12.1-type-13

> The type to search for ClassName.super.MethodName is the superclass of ClassName

> Expected 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}

Test Case: 15.12.1-type-14

> The type to search for ClassName.super.MethodName is the superclass of ClassName

> Expected 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}

### 15.12.2.1

Directory : `tests/jls/expressions/method-invocation-expressions/determine-method-signature/applicable-and-accessible`

- 15.12.2.1-jls-example-1
- 15.12.2.1-jls-example-2
- 15.12.2.1-accessibility-constructor-1
- 15.12.2.1-accessibility-constructor-2
- 15.12.2.1-accessibility-method-1
- 15.12.2.1-accessibility-method-2
- 15.12.2.1-accessibility-method-3
- 15.12.2.1-accessibility-method-4
- 15.12.2.1-accessibility-method-5
- 15.12.2.1-accessibility-method-6
- 15.12.2.1-accessibility-method-7
- 15.12.2.1-accessibility-method-8

Test Case: 15.12.2.1-jls-example-1

> example code, should fail since two(int) is private

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 15.12.2.1-accessibility-constructor-2

> A private constructor is not accessible

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 15.12.2.1-accessibility-method-2

> A method must be applicable and accessible

> Expected 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}

Test Case: 15.12.2.1-accessibility-method-3

> A method must be applicable and accessible

> Expected 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}

Test Case: 15.12.2.1-accessibility-method-4

> A method must be applicable and accessible

> Expected 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}

Test Case: 15.12.2.1-accessibility-method-5

> A method must be applicable and accessible

> Expected 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}

Test Case: 15.12.2.1-accessibility-method-6

> A method must be applicable and accessible

> Expected 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}

Test Case: 15.12.2.1-accessibility-method-7

> A method must be applicable and accessible

> Expected 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}

Test Case: 15.12.2.1-accessibility-method-8

> A method must be applicable and accessible

> Expected 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}

### 15.12.2.2

Directory : `tests/jls/expressions/method-invocation-expressions/determine-method-signature/choose-most-specific`

- 15.12.2.2-ambiguous-1
- 15.12.2.2-ambiguous-2
- 15.12.2.2-ambiguous-3
- 15.12.2.2-ambiguous-4
- 15.12.2.2-ambiguous-5
- 15.12.2.2-ambiguous-6
- 15.12.2.2-ambiguous-7
- 15.12.2.2-ambiguous-8
- 15.12.2.2-ambiguous-9
- 15.12.2.2-ambiguous-10
- 15.12.2.2-ambiguous-11
- 15.12.2.2-ambiguous-12
- 15.12.2.2-ambiguous-13
- 15.12.2.2-ambiguous-14
- 15.12.2.2-ambiguous-15
- 15.12.2.2-ambiguous-16
- 15.12.2.2-ambiguous-17
- 15.12.2.2-ambiguous-18
- 15.12.2.2-ambiguous-19
- 15.12.2.2-ambiguous-20
- 15.12.2.2-ambiguous-21
- 15.12.2.2-ambiguous-22
- 15.12.2.2-ambiguous-23
- 15.12.2.2-ambiguous-24

Test Case: 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.

> Expected 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}

Test Case: 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.

> Expected 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}

Test Case: 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.

> Expected 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}

Test Case: 15.12.2.2-ambiguous-4

> When multiple maximally specific methods have the same signature, any non-abstract version is chosen

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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.

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 15.12.2.2-ambiguous-23

> The most specific method is chosen, regardless of return type or static considerations

> Expected 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}

Test Case: 15.12.2.2-ambiguous-24

> The most specific method is chosen, regardless of return type or static considerations

> Expected 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}

### 15.12.3

Directory : `tests/jls/expressions/method-invocation-expressions/chosen-method-appropriate`

- 15.12.3-explicit-constructor-1
- 15.12.3-explicit-constructor-2
- 15.12.3-explicit-constructor-3
- 15.12.3-explicit-constructor-4
- 15.12.3-explicit-constructor-5
- 15.12.3-explicit-constructor-6
- 15.12.3-explicit-constructor-7
- 15.12.3-explicit-constructor-8
- 15.12.3-explicit-constructor-9
- 15.12.3-explicit-constructor-10
- 15.12.3-abstract-1
- 15.12.3-abstract-2
- 15.12.3-abstract-3
- 15.12.3-abstract-4
- 15.12.3-abstract-5
- 15.12.3-abstract-6
- 15.12.3-abstract-7
- 15.12.3-abstract-8
- 15.12.3-abstract-9
- 15.12.3-abstract-10
- 15.12.3-abstract-11
- 15.12.3-abstract-12

Test Case: 15.12.3-explicit-constructor-1

> Cannot access instance methods from this class within an explicit constructor

> Expected 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}

Test Case: 15.12.3-explicit-constructor-2

> Cannot access instance methods from this class within an explicit constructor

> Expected 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}

Test Case: 15.12.3-explicit-constructor-3

> Cannot access instance methods from this class within an explicit constructor

> Expected 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}

Test Case: 15.12.3-explicit-constructor-4

> Cannot access instance methods from this class within an explicit constructor

> Expected 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}

Test Case: 15.12.3-explicit-constructor-5

> Cannot access instance methods from this class within an explicit constructor

> Expected 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}

Test Case: 15.12.3-explicit-constructor-6

> Cannot access instance methods from this class within an explicit constructor

> Expected 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}

Test Case: 15.12.3-explicit-constructor-7

> Cannot access instance methods from this class within an explicit constructor

> Expected 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}

Test Case: 15.12.3-explicit-constructor-8

> Cannot access instance methods from this class within an explicit constructor

> Expected 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}

Test Case: 15.12.3-explicit-constructor-9

> Cannot access instance methods from this class within an explicit constructor

> Expected 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}

Test Case: 15.12.3-explicit-constructor-10

> Cannot access instance methods from this class within an explicit constructor

> Expected 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}

Test Case: 15.12.3-abstract-1

> super.abstractmethod() is invalid

> Expected 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}

Test Case: 15.12.3-abstract-2

> super.abstractmethod() is invalid

> Expected 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}

Test Case: 15.12.3-abstract-3

> super.abstractmethod() is invalid

> Expected 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}

Test Case: 15.12.3-abstract-4

> super.abstractmethod() is invalid

> Expected 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}

Test Case: 15.12.3-abstract-5

> super.abstractmethod() is invalid

> Expected 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}

Test Case: 15.12.3-abstract-6

> super.abstractmethod() is invalid

> Expected 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}

Test Case: 15.12.3-abstract-7

> super.abstractmethod() is invalid

> Expected 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}

Test Case: 15.12.3-abstract-8

> super.abstractmethod() is invalid

> Expected 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}

Test Case: 15.12.3-abstract-9

> super.abstractmethod() is invalid

> Expected 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}

Test Case: 15.12.3-abstract-10

> super.abstractmethod() is invalid

> Expected 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}

Test Case: 15.12.3-abstract-11

> super.abstractmethod() is invalid

> Expected 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}

Test Case: 15.12.3-abstract-12

> super.abstractmethod() is invalid

> Expected 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}

### 15.13

Directory : `tests/jls/expressions/array-access-expressions`

- 15.13-anon-1
- 15.13-index-1
- 15.13-index-2
- 15.13-index-3
- 15.13-index-4
- 15.13-index-5
- 15.13-index-6
- 15.13-index-7
- 15.13-index-8
- 15.13-index-9
- 15.13-index-10
- 15.13-reference-1
- 15.13-reference-2
- 15.13-reference-3
- 15.13-reference-4
- 15.13-reference-5
- 15.13-reference-6
- 15.13-reference-7
- 15.13-reference-8
- 15.13-reference-9
- 15.13-reference-10
- 15.13-reference-11
- 15.13-reference-12
- 15.13-reference-13
- 15.13-reference-14
- 15.13-reference-15
- 15.13-final-1
- 15.13-type-1
- 15.13-type-2
- 15.13-type-3

Test Case: 15.13-anon-1

> According to the grammar in Chapter 18, it is also legal to acess the element of an anonymous array

> Expected 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}

Test Case: 15.13-index-1

> negative constant index is stupid, but legal

> Expected 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}

Test Case: 15.13-index-2

> out-of-bound index is legal, even when size and index are constant

> Expected 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}

Test Case: 15.13-index-3

> long index is illegal

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 15.13-index-3 { long index is illegal } {

>         empty_main T1513i3 {
>     	int[] i = { 1 };
>     	i[0L] = 0;
>         }

>     } {FAIL}

Test Case: 15.13-index-4

> float index is illegal

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 15.13-index-4 { float index is illegal } {

>         empty_main T1513i4 {
>     	int[] i = { 1 };
>     	i[0f] = 0;
>         }

>     } {FAIL}

Test Case: 15.13-index-5

> double index is illegal

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 15.13-index-5 { double index is illegal } {

>         empty_main T1513i5 {
>     	int[] i = { 1 };
>     	i[0.] = 0;
>         }

>     } {FAIL}

Test Case: 15.13-index-6

> null index is illegal

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 15.13-index-6 { null index is illegal } {

>         empty_main T1513i6 {
>     	int[] i = { 1 };
>     	i[null] = 0;
>         }

>     } {FAIL}

Test Case: 15.13-index-7

> boolean index is illegal

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 15.13-index-7 { boolean index is illegal } {

>         empty_main T1513i7 {
>     	int[] i = { 1 };
>     	i[false] = 0;
>         }

>     } {FAIL}

Test Case: 15.13-index-8

> Object index is illegal

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 15.13-index-8 { Object index is illegal } {

>         empty_main T1513i8 {
>     	int[] i = { 1 };
>     	i[""] = 0;
>         }

>     } {FAIL}

Test Case: 15.13-index-9

> void index is illegal

> Expected 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}

Test Case: 15.13-index-10

> index is unary promoted to int

> Expected 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}

Test Case: 15.13-reference-1

> reference must be array type

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 15.13-reference-1 { reference must be array type } {

>         empty_main T1513r1 {
>     	1[0]++;
>         }

>     } {FAIL}

Test Case: 15.13-reference-2

> reference must be array type

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 15.13-reference-2 { reference must be array type } {

>         empty_main T1513r2 {
>     	1L[0]++;
>         }

>     } {FAIL}

Test Case: 15.13-reference-3

> reference must be array type

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 15.13-reference-3 { reference must be array type } {

>         empty_main T1513r3 {
>     	1f[0]++;
>         }

>     } {FAIL}

Test Case: 15.13-reference-4

> reference must be array type

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 15.13-reference-4 { reference must be array type } {

>         empty_main T1513r4 {
>     	1.[0]++;
>         }

>     } {FAIL}

Test Case: 15.13-reference-5

> reference must be array type

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 15.13-reference-5 { reference must be array type } {

>         empty_main T1513r5 {
>     	'1'[0]++;
>         }

>     } {FAIL}

Test Case: 15.13-reference-6

> reference must be array type

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 15.13-reference-6 { reference must be array type } {

>         empty_main T1513r6 {
>     	System.out.println()[0]++;
>         }

>     } {FAIL}

Test Case: 15.13-reference-7

> reference must be array type

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 15.13-reference-7 { reference must be array type } {

>         empty_main T1513r7 {
>     	new Object()[0]++;
>         }

>     } {FAIL}

Test Case: 15.13-reference-8

> reference must be array type

> Expected 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}

Test Case: 15.13-reference-9

> reference must be array type

> Expected 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}

Test Case: 15.13-reference-10

> reference must be array type

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 15.13-reference-10 { reference must be array type } {

>         empty_main T1513r10 {
>     	null[0]++;
>         }

>     } {FAIL}

Test Case: 15.13-reference-11

> reference must be array type

> Expected 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}

Test Case: 15.13-reference-12

> reference must be array type

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 15.13-reference-12 { reference must be array type } {

>         empty_main T1513r12 {
>     	(new int[1])[0]++;
>         }

>     } {PASS}

Test Case: 15.13-reference-13

> reference must be array type

> Expected 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}

Test Case: 15.13-reference-14

> reference must be array type

> Expected 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}

Test Case: 15.13-reference-15

> reference must be array type

> Expected 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}

Test Case: 15.13-final-1

> in a final array, array members aren't final

> Expected 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}

Test Case: 15.13-type-1

> the type of an array access expression is the underlying type of the array

> Expected 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}

Test Case: 15.13-type-2

> the type of an array access expression is the underlying type of the array

> Expected 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}

Test Case: 15.13-type-3

> the type of an array access expression is the underlying type of the array

> Expected 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}

### 15.14.1

Directory : `tests/jls/expressions/postfix-expressions/postfix-increment-operator`

- 15.14.1-argument-1
- 15.14.1-argument-2
- 15.14.1-argument-3
- 15.14.1-argument-4
- 15.14.1-argument-5
- 15.14.1-argument-6
- 15.14.1-argument-7
- 15.14.1-argument-8
- 15.14.1-argument-9
- 15.14.1-argument-10
- 15.14.1-type-1
- 15.14.1-type-2
- 15.14.1-type-3
- 15.14.1-type-4
- 15.14.1-type-5
- 15.14.1-type-6
- 15.14.1-type-7
- 15.14.1-result-1
- 15.14.1-result-2
- 15.14.1-final-1
- 15.14.1-final-2
- 15.14.1-final-3

Test Case: 15.14.1-argument-1

> Postfix++ must operate on a numeric variable

> Expected 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}

Test Case: 15.14.1-argument-2

> Postfix++ must operate on a numeric variable

> Expected 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}

Test Case: 15.14.1-argument-3

> Postfix++ must operate on a numeric variable

> Expected 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}

Test Case: 15.14.1-argument-4

> Postfix++ must operate on a numeric variable

> Expected 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}

Test Case: 15.14.1-argument-5

> Postfix++ must operate on a numeric variable

> Expected 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}

Test Case: 15.14.1-argument-6

> Postfix++ must operate on a numeric variable

> Expected 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}

Test Case: 15.14.1-argument-7

> Postfix++ must operate on a numeric variable

> Expected 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}

Test Case: 15.14.1-argument-8

> Postfix++ must operate on a numeric variable

> Expected 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}

Test Case: 15.14.1-argument-9

> Postfix++ cannot operate on final variable

> Expected 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}

Test Case: 15.14.1-argument-10

> Postfix++ must operate on a numeric variable, parenthesis may now surround variables

> Expected 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}

Test Case: 15.14.1-type-1

> Postfix++ operates on all numeric types

> Expected 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}

Test Case: 15.14.1-type-2

> Postfix++ operates on all numeric types

> Expected 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}

Test Case: 15.14.1-type-3

> Postfix++ operates on all numeric types

> Expected 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}

Test Case: 15.14.1-type-4

> Postfix++ operates on all numeric types

> Expected 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}

Test Case: 15.14.1-type-5

> Postfix++ operates on all numeric types

> Expected 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}

Test Case: 15.14.1-type-6

> Postfix++ operates on all numeric types

> Expected 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}

Test Case: 15.14.1-type-7

> Postfix++ operates on all numeric types

> Expected 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}

Test Case: 15.14.1-result-1

> Postfix++ results in a value, not a variable

> Expected 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}

Test Case: 15.14.1-result-2

> Postfix++ results in a value, not a variable

> Expected 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}

Test Case: 15.14.1-final-1

> Postfix++ cannot be applied to a final

> Expected 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}

Test Case: 15.14.1-final-2

> Postfix++ cannot be applied to a final

> Expected 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}

Test Case: 15.14.1-final-3

> Postfix++ cannot be applied to a final

> Expected 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}

### 15.14.2

Directory : `tests/jls/expressions/postfix-expressions/postfix-decrement-operator`

- 15.14.2-argument-1
- 15.14.2-argument-2
- 15.14.2-argument-3
- 15.14.2-argument-4
- 15.14.2-argument-5
- 15.14.2-argument-6
- 15.14.2-argument-7
- 15.14.2-argument-8
- 15.14.2-argument-9
- 15.14.2-argument-10
- 15.14.2-type-1
- 15.14.2-type-2
- 15.14.2-type-3
- 15.14.2-type-4
- 15.14.2-type-5
- 15.14.2-type-6
- 15.14.2-type-7
- 15.14.2-result-1
- 15.14.2-result-2
- 15.14.2-final-1
- 15.14.2-final-2
- 15.14.2-final-3

Test Case: 15.14.2-argument-1

> Postfix-- must operate on a numeric variable

> Expected 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}

Test Case: 15.14.2-argument-2

> Postfix-- must operate on a numeric variable

> Expected 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}

Test Case: 15.14.2-argument-3

> Postfix-- must operate on a numeric variable

> Expected 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}

Test Case: 15.14.2-argument-4

> Postfix-- must operate on a numeric variable

> Expected 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}

Test Case: 15.14.2-argument-5

> Postfix-- must operate on a numeric variable

> Expected 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}

Test Case: 15.14.2-argument-6

> Postfix-- must operate on a numeric variable

> Expected 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}

Test Case: 15.14.2-argument-7

> Postfix-- must operate on a numeric variable

> Expected 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}

Test Case: 15.14.2-argument-8

> Postfix-- must operate on a numeric variable

> Expected 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}

Test Case: 15.14.2-argument-9

> Postfix-- cannot operate on final variable

> Expected 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}

Test Case: 15.14.2-argument-10

> Postfix-- must operate on a numeric variable, parenthesis may now surround variables

> Expected 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}

Test Case: 15.14.2-type-1

> Postfix-- operates on all numeric types

> Expected 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}

Test Case: 15.14.2-type-2

> Postfix-- operates on all numeric types

> Expected 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}

Test Case: 15.14.2-type-3

> Postfix-- operates on all numeric types

> Expected 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}

Test Case: 15.14.2-type-4

> Postfix-- operates on all numeric types

> Expected 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}

Test Case: 15.14.2-type-5

> Postfix-- operates on all numeric types

> Expected 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}

Test Case: 15.14.2-type-6

> Postfix-- operates on all numeric types

> Expected 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}

Test Case: 15.14.2-type-7

> Postfix-- operates on all numeric types

> Expected 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}

Test Case: 15.14.2-result-1

> Postfix-- results in a value, not a variable

> Expected 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}

Test Case: 15.14.2-result-2

> Postfix-- results in a value, not a variable

> Expected 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}

Test Case: 15.14.2-final-1

> Postfix-- cannot be applied to a final

> Expected 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}

Test Case: 15.14.2-final-2

> Postfix-- cannot be applied to a final

> Expected 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}

Test Case: 15.14.2-final-3

> Postfix-- cannot be applied to a final

> Expected 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}

### 15.15

Directory : `tests/jls/expressions/unary-operators`

- 15.15-group-1
- 15.15-precedence-1
- 15.15-precedence-2
- 15.15-precedence-3
- 15.15-precedence-4
- 15.15-precedence-5

Test Case: 15.15-group-1

> Unary operators group right-to-left

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 15.15-group-1 { Unary operators group right-to-left } {

>         constant_expression T15151 {-~0xffffffff == 0}  {~-0xffffffff == 0xfffffffe}

>     } {PASS}

Test Case: 15.15-precedence-1

> Unary operators have higher precedence than multiplicative

> Expected 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}

Test Case: 15.15-precedence-2

> Unary operators have higher precedence than multiplicative

> Expected 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}

Test Case: 15.15-precedence-3

> Unary operators have higher precedence than multiplicative

> Expected 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}

Test Case: 15.15-precedence-4

> Unary operators have higher precedence than multiplicative

> Expected 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}

Test Case: 15.15-precedence-5

> Unary operators have higher precedence than addition, for boolean

> Expected 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}

### 15.15.1

Directory : `tests/jls/expressions/unary-operators/prefix-increment-operator`

- 15.15.1-argument-1
- 15.15.1-argument-2
- 15.15.1-argument-3
- 15.15.1-argument-4
- 15.15.1-argument-5
- 15.15.1-argument-6
- 15.15.1-argument-7
- 15.15.1-argument-8
- 15.15.1-argument-9
- 15.15.1-argument-10
- 15.15.1-type-1
- 15.15.1-type-2
- 15.15.1-type-3
- 15.15.1-type-4
- 15.15.1-type-5
- 15.15.1-type-6
- 15.15.1-type-7
- 15.15.1-result-1
- 15.15.1-result-2
- 15.15.1-final-1
- 15.15.1-final-2
- 15.15.1-final-3

Test Case: 15.15.1-argument-1

> ++Prefix must operate on a numeric variable

> Expected 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}

Test Case: 15.15.1-argument-2

> ++Prefix must operate on a numeric variable

> Expected 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}

Test Case: 15.15.1-argument-3

> ++Prefix must operate on a numeric variable

> Expected 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}

Test Case: 15.15.1-argument-4

> ++Prefix must operate on a numeric variable

> Expected 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}

Test Case: 15.15.1-argument-5

> ++Prefix must operate on a numeric variable

> Expected 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}

Test Case: 15.15.1-argument-6

> ++Prefix must operate on a numeric variable

> Expected 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}

Test Case: 15.15.1-argument-7

> ++Prefix must operate on a numeric variable

> Expected 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}

Test Case: 15.15.1-argument-8

> ++Prefix must operate on a numeric variable

> Expected 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}

Test Case: 15.15.1-argument-9

> ++Prefix cannot operate on final variable

> Expected 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}

Test Case: 15.15.1-argument-10

> ++Prefix must operate on a numeric variable, parenthesis may now surround variables

> Expected 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}

Test Case: 15.15.1-type-1

> ++Prefix operates on all numeric types

> Expected 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}

Test Case: 15.15.1-type-2

> ++Prefix operates on all numeric types

> Expected 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}

Test Case: 15.15.1-type-3

> ++Prefix operates on all numeric types

> Expected 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}

Test Case: 15.15.1-type-4

> ++Prefix operates on all numeric types

> Expected 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}

Test Case: 15.15.1-type-5

> ++Prefix operates on all numeric types

> Expected 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}

Test Case: 15.15.1-type-6

> ++Prefix operates on all numeric types

> Expected 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}

Test Case: 15.15.1-type-7

> ++Prefix operates on all numeric types

> Expected 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}

Test Case: 15.15.1-result-1

> ++Prefix results in a value, not a variable

> Expected 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}

Test Case: 15.15.1-result-2

> ++Prefix results in a value, not a variable

> Expected 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}

Test Case: 15.15.1-final-1

> ++Prefix cannot be applied to a final

> Expected 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}

Test Case: 15.15.1-final-2

> ++Prefix cannot be applied to a final

> Expected 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}

Test Case: 15.15.1-final-3

> ++Prefix cannot be applied to a final

> Expected 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}

### 15.15.2

Directory : `tests/jls/expressions/unary-operators/prefix-decrement-operator`

- 15.15.2-argument-1
- 15.15.2-argument-2
- 15.15.2-argument-3
- 15.15.2-argument-4
- 15.15.2-argument-5
- 15.15.2-argument-6
- 15.15.2-argument-7
- 15.15.2-argument-8
- 15.15.2-argument-9
- 15.15.2-argument-10
- 15.15.2-type-1
- 15.15.2-type-2
- 15.15.2-type-3
- 15.15.2-type-4
- 15.15.2-type-5
- 15.15.2-type-6
- 15.15.2-type-7
- 15.15.2-result-1
- 15.15.2-result-2
- 15.15.2-final-1
- 15.15.2-final-2
- 15.15.2-final-3

Test Case: 15.15.2-argument-1

> --Prefix must operate on a numeric variable

> Expected 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}

Test Case: 15.15.2-argument-2

> --Prefix must operate on a numeric variable

> Expected 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}

Test Case: 15.15.2-argument-3

> --Prefix must operate on a numeric variable

> Expected 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}

Test Case: 15.15.2-argument-4

> --Prefix must operate on a numeric variable

> Expected 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}

Test Case: 15.15.2-argument-5

> --Prefix must operate on a numeric variable

> Expected 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}

Test Case: 15.15.2-argument-6

> --Prefix must operate on a numeric variable

> Expected 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}

Test Case: 15.15.2-argument-7

> --Prefix must operate on a numeric variable

> Expected 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}

Test Case: 15.15.2-argument-8

> --Prefix must operate on a numeric variable

> Expected 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}

Test Case: 15.15.2-argument-9

> --Prefix cannot operate on final variable

> Expected 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}

Test Case: 15.15.2-argument-10

> --Prefix must operate on a numeric variable, parenthesis may now surround variables

> Expected 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}

Test Case: 15.15.2-type-1

> --Prefix operates on all numeric types

> Expected 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}

Test Case: 15.15.2-type-2

> --Prefix operates on all numeric types

> Expected 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}

Test Case: 15.15.2-type-3

> --Prefix operates on all numeric types

> Expected 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}

Test Case: 15.15.2-type-4

> --Prefix operates on all numeric types

> Expected 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}

Test Case: 15.15.2-type-5

> --Prefix operates on all numeric types

> Expected 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}

Test Case: 15.15.2-type-6

> --Prefix operates on all numeric types

> Expected 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}

Test Case: 15.15.2-type-7

> --Prefix operates on all numeric types

> Expected 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}

Test Case: 15.15.2-result-1

> --Prefix results in a value, not a variable

> Expected 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}

Test Case: 15.15.2-result-2

> --Prefix results in a value, not a variable

> Expected 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}

Test Case: 15.15.2-final-1

> --Prefix cannot be applied to a final

> Expected 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}

Test Case: 15.15.2-final-2

> --Prefix cannot be applied to a final

> Expected 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}

Test Case: 15.15.2-final-3

> --Prefix cannot be applied to a final

> Expected 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}

### 15.15.3

Directory : `tests/jls/expressions/unary-operators/unary-plus-operator`

- 15.15.3-type-1
- 15.15.3-type-2
- 15.15.3-type-3
- 15.15.3-type-4
- 15.15.3-type-5
- 15.15.3-type-6
- 15.15.3-type-7
- 15.15.3-type-8
- 15.15.3-type-9
- 15.15.3-type-10
- 15.15.3-type-11
- 15.15.3-type-12

Test Case: 15.15.3-type-1

> + must have numeric operand

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 15.15.3-type-1 { + must have numeric operand } {

>         is_assignable_to T15153t1 Object +null

>     } {FAIL}

Test Case: 15.15.3-type-2

> + must have numeric operand

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 15.15.3-type-2 { + must have numeric operand } {

>         is_assignable_to T15153t2 boolean +true

>     } {FAIL}

Test Case: 15.15.3-type-3

> + must have numeric operand

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 15.15.3-type-3 { + must have numeric operand } {

>         is_assignable_to T15153t3 Object {+(new Object())}

>     } {FAIL}

Test Case: 15.15.3-type-4

> + must have numeric operand

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 15.15.3-type-4 { + must have numeric operand } {

>         is_assignable_to T15153t4 int +System.out.println()

>     } {FAIL}

Test Case: 15.15.3-type-5

> + performs unary promotion

> Expected 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}

Test Case: 15.15.3-type-6

> + must have numeric operand

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 15.15.3-type-6 { + must have numeric operand } {

>         is_assignable_to T15153t6 int +1

>     } {PASS}

Test Case: 15.15.3-type-7

> + must have numeric operand

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 15.15.3-type-7 { + must have numeric operand } {

>         is_assignable_to T15153t7 long +1L

>     } {PASS}

Test Case: 15.15.3-type-8

> + must have numeric operand

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 15.15.3-type-8 { + must have numeric operand } {

>         is_assignable_to T15153t8 float +1f

>     } {PASS}

Test Case: 15.15.3-type-9

> + must have numeric operand

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 15.15.3-type-9 { + must have numeric operand } {

>         is_assignable_to T15153t9 double +1d

>     } {PASS}

Test Case: 15.15.3-type-10

> + must have numeric operand

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 15.15.3-type-10 { + must have numeric operand } {

>         is_assignable_to T15153t10 short +1

>     } {PASS}

Test Case: 15.15.3-type-11

> + must have numeric operand

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 15.15.3-type-11 { + must have numeric operand } {

>         is_assignable_to T15153t11 char +'1'

>     } {PASS}

Test Case: 15.15.3-type-12

> + must have numeric operand

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 15.15.3-type-12 { + must have numeric operand } {

>         is_assignable_to T15153t12 byte +1

>     } {PASS}

### 15.15.4

Directory : `tests/jls/expressions/unary-operators/unary-minus-operator`

- 15.15.4-type-1
- 15.15.4-type-2
- 15.15.4-type-3
- 15.15.4-type-4
- 15.15.4-type-5
- 15.15.4-type-6
- 15.15.4-type-7
- 15.15.4-type-8
- 15.15.4-int-1
- 15.15.4-int-2
- 15.15.4-int-3
- 15.15.4-long-1
- 15.15.4-long-2
- 15.15.4-long-3
- 15.15.4-float-1
- 15.15.4-float-2
- 15.15.4-float-3
- 15.15.4-double-1
- 15.15.4-double-2
- 15.15.4-double-3

Test Case: 15.15.4-type-1

> - must have numeric operand

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 15.15.4-type-1 { - must have numeric operand } {

>         is_assignable_to T15154t1 Object -null

>     } {FAIL}

Test Case: 15.15.4-type-2

> - must have numeric operand

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 15.15.4-type-2 { - must have numeric operand } {

>         is_assignable_to T15154t2 boolean -true

>     } {FAIL}

Test Case: 15.15.4-type-3

> - must have numeric operand

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 15.15.4-type-3 { - must have numeric operand } {

>         is_assignable_to T15154t3 Object {-(new Object())}

>     } {FAIL}

Test Case: 15.15.4-type-4

> - must have numeric operand

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 15.15.4-type-4 { - must have numeric operand } {

>         is_assignable_to T15154t4 int -System.out.println()

>     } {FAIL}

Test Case: 15.15.4-type-5

> - performs unary promotion

> Expected 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}

Test Case: 15.15.4-type-6

> - must have numeric operand

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 15.15.4-type-6 { - must have numeric operand } {

>         is_assignable_to T15154t6 short -1

>     } {PASS}

Test Case: 15.15.4-type-7

> - must have numeric operand

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 15.15.4-type-7 { - must have numeric operand } {

>         is_assignable_to T15154t7 char -(-'1')

>     } {PASS}

Test Case: 15.15.4-type-8

> - must have numeric operand

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 15.15.4-type-8 { - must have numeric operand } {

>         is_assignable_to T15154t8 byte -1

>     } {PASS}

Test Case: 15.15.4-int-1

> -x = ~x+1 for all ints

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 15.15.4-int-1 { -x = ~x+1 for all ints } {

>         constant_expression T15154i1 {-0 == ~0+1}

>     } {PASS}

Test Case: 15.15.4-int-2

> -x = ~x+1 for all ints

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 15.15.4-int-2 { -x = ~x+1 for all ints } {

>         constant_expression T15154i2 {-0xffffffff == ~0xffffffff+1}

>     } {PASS}

Test Case: 15.15.4-int-3

> -MIN_INT is still MIN_INT

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 15.15.4-int-3 { -MIN_INT is still MIN_INT } {

>         constant_expression T15154i3 {-0x80000000 == 0x80000000}

>     } {PASS}

Test Case: 15.15.4-long-1

> -x = ~x+1 for all longs

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 15.15.4-long-1 { -x = ~x+1 for all longs } {

>         constant_expression T15154l1 {-0L == ~0L+1}

>     } {PASS}

Test Case: 15.15.4-long-2

> -x = ~x+1 for all longs

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 15.15.4-long-2 { -x = ~x+1 for all longs } {

>         constant_expression T15154l2 {-0xffffffffffffffffL == ~0xffffffffffffffffL+1}

>     } {PASS}

Test Case: 15.15.4-long-3

> -MIN_LONG is still MIN_LONG

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 15.15.4-long-3 { -MIN_LONG is still MIN_LONG } {

>         constant_expression T15154l3 {-0x8000000000000000L == 0x8000000000000000L}

>     } {PASS}

Test Case: 15.15.4-float-1

> -NaN is still NaN

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 15.15.4-float-1 { -NaN is still NaN } {

>         constant_expression T15154f1 {-Float.NaN != -Float.NaN}

>     } {PASS}

Test Case: 15.15.4-float-2

> - Infinity is Infinity of opposite sign

> Expected 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}

Test Case: 15.15.4-float-3

> - 0.0 is zero of opposite sign

> Expected 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}

Test Case: 15.15.4-double-1

> -NaN is still NaN

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 15.15.4-double-1 { -NaN is still NaN } {

>         constant_expression T15154d1 {-Double.NaN != -Double.NaN}

>     } {PASS}

Test Case: 15.15.4-double-2

> - Infinity is Infinity of opposite sign

> Expected 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}

Test Case: 15.15.4-double-3

> - 0.0 is zero of opposite sign

> Expected 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}

### 15.15.5

Directory : `tests/jls/expressions/unary-operators/bitwise-complement-operator`

- 15.15.5-type-1
- 15.15.5-type-2
- 15.15.5-type-3
- 15.15.5-type-4
- 15.15.5-type-5
- 15.15.5-type-6
- 15.15.5-type-7
- 15.15.5-type-8
- 15.15.5-type-9
- 15.15.5-type-10
- 15.15.5-int-1
- 15.15.5-int-2
- 15.15.5-long-1
- 15.15.5-long-2

Test Case: 15.15.5-type-1

> ~ must have integral operand

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 15.15.5-type-1 { ~ must have integral operand } {

>         is_assignable_to T15155t1 Object ~null

>     } {FAIL}

Test Case: 15.15.5-type-2

> ~ must have integral operand

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 15.15.5-type-2 { ~ must have integral operand } {

>         is_assignable_to T15155t2 boolean ~true

>     } {FAIL}

Test Case: 15.15.5-type-3

> ~ must have integral operand

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 15.15.5-type-3 { ~ must have integral operand } {

>         is_assignable_to T15155t3 Object {~(new Object())}

>     } {FAIL}

Test Case: 15.15.5-type-4

> ~ must have integral operand

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 15.15.5-type-4 { ~ must have integral operand } {

>         is_assignable_to T15155t4 int ~System.out.println()

>     } {FAIL}

Test Case: 15.15.5-type-5

> ~ must have integral operand

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 15.15.5-type-5 { ~ must have integral operand } {

>         is_assignable_to T15155t5 int ~0.0f

>     } {FAIL}

Test Case: 15.15.5-type-6

> ~ must have integral operand

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 15.15.5-type-6 { ~ must have integral operand } {

>         is_assignable_to T15155t6 int ~0.0d

>     } {FAIL}

Test Case: 15.15.5-type-7

> ~ performs unary promotion

> Expected 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}

Test Case: 15.15.5-type-8

> ~ must have integral operand

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 15.15.5-type-8 { ~ must have integral operand } {

>         is_assignable_to T15155t8 short ~1

>     } {PASS}

Test Case: 15.15.5-type-9

> ~ must have integral operand

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 15.15.5-type-9 { ~ must have integral operand } {

>         is_assignable_to T15155t9 char ~(~'1')

>     } {PASS}

Test Case: 15.15.5-type-10

> ~ must have integral operand

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 15.15.5-type-10 { ~ must have integral operand } {

>         is_assignable_to T15155t10 byte ~1

>     } {PASS}

Test Case: 15.15.5-int-1

> ~x = -x-1 for all ints

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 15.15.5-int-1 { ~x = -x-1 for all ints } {

>         constant_expression T15155i1 {~0 == -0-1}

>     } {PASS}

Test Case: 15.15.5-int-2

> ~x = -x-1 for all ints

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 15.15.5-int-2 { ~x = -x-1 for all ints } {

>         constant_expression T15155i2 {~0xffffffff == -0xffffffff-1}

>     } {PASS}

Test Case: 15.15.5-long-1

> ~x = -x-1 for all longs

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 15.15.5-long-1 { ~x = -x-1 for all longs } {

>         constant_expression T15155l1 {~0L == -0L-1}

>     } {PASS}

Test Case: 15.15.5-long-2

> ~x = -x-1 for all longs

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 15.15.5-long-2 { ~x = -x-1 for all longs } {

>         constant_expression T15155l2 {~0xffffffffffffffffL == -0xffffffffffffffffL-1}

>     } {PASS}

### 15.15.6

Directory : `tests/jls/expressions/unary-operators/logical-complement-operator`

- 15.15.6-type-1
- 15.15.6-type-2
- 15.15.6-type-3
- 15.15.6-type-4
- 15.15.6-type-5
- 15.15.6-type-6
- 15.15.6-type-7
- 15.15.6-type-8
- 15.15.6-boolean-1
- 15.15.6-boolean-2

Test Case: 15.15.6-type-1

> ! must have boolean operand

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 15.15.6-type-1 { ! must have boolean operand } {

>         is_assignable_to T15156t1 Object !null

>     } {FAIL}

Test Case: 15.15.6-type-2

> ! must have boolean operand

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 15.15.6-type-2 { ! must have boolean operand } {

>         is_assignable_to T15156t2 Object {!(new Object())}

>     } {FAIL}

Test Case: 15.15.6-type-3

> ! must have boolean operand

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 15.15.6-type-3 { ! must have boolean operand } {

>         is_assignable_to T15156t3 int !System.out.println()

>     } {FAIL}

Test Case: 15.15.6-type-4

> ! must have boolean operand

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 15.15.6-type-4 { ! must have boolean operand } {

>         is_assignable_to T15156t4 int !0.0f

>     } {FAIL}

Test Case: 15.15.6-type-5

> ! must have boolean operand

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 15.15.6-type-5 { ! must have boolean operand } {

>         is_assignable_to T15156t5 int !0.0d

>     } {FAIL}

Test Case: 15.15.6-type-6

> ! must have boolean operand

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 15.15.6-type-6 { ! must have boolean operand } {

>         is_assignable_to T15156t6 short !1

>     } {FAIL}

Test Case: 15.15.6-type-7

> ! must have boolean operand

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 15.15.6-type-7 { ! must have boolean operand } {

>         is_assignable_to T15156t7 char !'1'

>     } {FAIL}

Test Case: 15.15.6-type-8

> ! must have boolean operand

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 15.15.6-type-8 { ! must have boolean operand } {

>         is_assignable_to T15156t8 byte !1

>     } {FAIL}

Test Case: 15.15.6-boolean-1

> ! true is false

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 15.15.6-boolean-1 { ! true is false } {

>         constant_expression T15156b1 {!true == false}

>     } {PASS}

Test Case: 15.15.6-boolean-2

> ! false is true

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 15.15.6-boolean-2 { ! false is true } {

>         constant_expression T15156b2 {!false == true}

>     } {PASS}

### 15.16

Directory : `tests/jls/expressions/cast-expressions`

- 15.16-primitive-1
- 15.16-primitive-2
- 15.16-primitive-3
- 15.16-primitive-4
- 15.16-primitive-5
- 15.16-primitive-6
- 15.16-primitive-7
- 15.16-primitive-8
- 15.16-primitive-9
- 15.16-primitive-10
- 15.16-primitive-11
- 15.16-value-1
- 15.16-value-2
- 15.16-value-3
- 15.16-value-4
- 15.16-array-1
- 15.16-array-2
- 15.16-array-3
- 15.16-array-4
- 15.16-array-5
- 15.16-array-6
- 15.16-array-7
- 15.16-array-8
- 15.16-array-9
- 15.16-array-10
- 15.16-array-11
- 15.16-array-12
- 15.16-array-13
- 15.16-array-14
- 15.16-array-15
- 15.16-ref-1
- 15.16-ref-2
- 15.16-ref-3
- 15.16-ref-4
- 15.16-ref-5
- 15.16-ref-6
- 15.16-ref-7
- 15.16-ref-8
- 15.16-ref-9
- 15.16-semantic-1
- 15.16-semantic-2
- 15.16-semantic-3
- 15.16-semantic-4
- 15.16-semantic-5

Test Case: 15.16-primitive-1

> Except for boolean, (primitive) primitive is always legal

> Expected 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}

Test Case: 15.16-primitive-2

> Except for boolean, (primitive) primitive is always legal

> Expected 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}

Test Case: 15.16-primitive-3

> Except for boolean, (primitive) primitive is always legal

> Expected 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}

Test Case: 15.16-primitive-4

> Except for boolean, (primitive) primitive is always legal

> Expected 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}

Test Case: 15.16-primitive-5

> Except for boolean, (primitive) primitive is always legal

> Expected 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}

Test Case: 15.16-primitive-6

> Except for boolean, (primitive) primitive is always legal

> Expected 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}

Test Case: 15.16-primitive-7

> Except for boolean, (primitive) primitive is always legal

> Expected 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}

Test Case: 15.16-primitive-8

> (primitive) non-primitive is never legal

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 15.16-primitive-8 { (primitive) non-primitive is never legal } {

>         empty_main T1516p8 {
>     	int i = (int) "1";
>         }

>     } {FAIL}

Test Case: 15.16-primitive-9

> (primitive) non-primitive is never legal

> Expected 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}

Test Case: 15.16-primitive-10

> (primitive) non-primitive is never legal

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 15.16-primitive-10 { (primitive) non-primitive is never legal } {

>         empty_main T1516p10 {
>     	int i = (int) null;
>         }

>     } {FAIL}

Test Case: 15.16-primitive-11

> (primitive) non-primitive is never legal

> Expected 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}

Test Case: 15.16-value-1

> casts create values, not variables

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 15.16-value-1 { casts create values, not variables } {

>         empty_main T1516v1 {
>     	int i = 1;
>     	((int) i)++;
>         }

>     } {FAIL}

Test Case: 15.16-value-2

> casts create values, not variables

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 15.16-value-2 { casts create values, not variables } {

>         empty_main T1516v2 {
>     	int i = 1;
>     	++(int) i;
>         }

>     } {FAIL}

Test Case: 15.16-value-3

> casts create values, not variables

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 15.16-value-3 { casts create values, not variables } {

>         empty_main T1516v3 {
>     	int i;
>     	(long) i = 1;
>         }

>     } {FAIL}

Test Case: 15.16-value-4

> casts create values, not variables

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 15.16-value-4 { casts create values, not variables } {

>         empty_main T1516v4 {
>     	int i;
>     	((long) i) = 1;
>         }

>     } {FAIL}

Test Case: 15.16-array-1

> array type casting is legal if a widening or narrowing conversion can be made

> Expected 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}

Test Case: 15.16-array-2

> array type casting is legal if a widening or narrowing conversion can be made

> Expected 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}

Test Case: 15.16-array-3

> array type casting is legal if a widening or narrowing conversion can be made

> Expected 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}

Test Case: 15.16-array-4

> array type casting is legal if a widening or narrowing conversion can be made

> Expected 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}

Test Case: 15.16-array-5

> array type casting is legal if a widening or narrowing conversion can be made

> Expected 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}

Test Case: 15.16-array-6

> array type casting is legal if a widening or narrowing conversion can be made

> Expected 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}

Test Case: 15.16-array-7

> array type casting is legal if a widening or narrowing conversion can be made

> Expected 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}

Test Case: 15.16-array-8

> array type casting is legal if a widening or narrowing conversion can be made

> Expected 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}

Test Case: 15.16-array-9

> array type casting is legal if a widening or narrowing conversion can be made

> Expected 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}

Test Case: 15.16-array-10

> array type casting is legal if a widening or narrowing conversion can be made

> Expected 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}

Test Case: 15.16-array-11

> array type casting is legal if a widening or narrowing conversion can be made

> Expected 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}

Test Case: 15.16-array-12

> array type casting is legal if a widening or narrowing conversion can be made

> Expected 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}

Test Case: 15.16-array-13

> array type casting is legal if a widening or narrowing conversion can be made

> Expected 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}

Test Case: 15.16-array-14

> array type casting is legal if a widening or narrowing conversion can be made

> Expected 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}

Test Case: 15.16-array-15

> array type casting is legal if a widening or narrowing conversion can be made

> Expected 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}

Test Case: 15.16-ref-1

> reference type casting is legal if a widening or narrowing conversion can be made

> Expected 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}

Test Case: 15.16-ref-2

> reference type casting is legal if a widening or narrowing conversion can be made

> Expected 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}

Test Case: 15.16-ref-3

> reference type casting is legal if a widening or narrowing conversion can be made

> Expected 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}

Test Case: 15.16-ref-4

> reference type casting is legal if a widening or narrowing conversion can be made

> Expected 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}

Test Case: 15.16-ref-5

> reference type casting is legal if a widening or narrowing conversion can be made

> Expected 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}

Test Case: 15.16-ref-6

> reference type casting is legal if a widening or narrowing conversion can be made

> Expected 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}

Test Case: 15.16-ref-7

> reference type casting is legal if a widening or narrowing conversion can be made

> Expected 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}

Test Case: 15.16-ref-8

> reference type casting is legal if a widening or narrowing conversion can be made

> Expected 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}

Test Case: 15.16-ref-9

> reference type casting is legal if a widening or narrowing conversion can be made

> Expected 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}

Test Case: 15.16-semantic-1

> To avoid grammar ambiguities, this syntax is accepted; semantics must reject it

> Expected 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}

Test Case: 15.16-semantic-2

> To avoid grammar ambiguities, this syntax is accepted; semantics must reject it

> Expected 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}

Test Case: 15.16-semantic-3

> To avoid grammar ambiguities, this syntax is accepted; semantics must reject it

> Expected 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}

Test Case: 15.16-semantic-4

> To avoid grammar ambiguities, this syntax is accepted; semantics must reject it

> Expected 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}

Test Case: 15.16-semantic-5

> To avoid grammar ambiguities, this syntax is accepted

> Expected 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}

### 15.17

Directory : `tests/jls/expressions/multiplicative-operators`

- 15.17-null-1
- 15.17-null-2
- 15.17-null-3
- 15.17-boolean-1
- 15.17-boolean-2
- 15.17-boolean-3
- 15.17-object-1
- 15.17-object-2
- 15.17-object-3
- 15.17-void-1
- 15.17-void-2
- 15.17-void-3
- 15.17-mult-1
- 15.17-mult-2
- 15.17-mult-3
- 15.17-mult-4
- 15.17-div-1
- 15.17-div-2
- 15.17-div-3
- 15.17-div-4
- 15.17-mod-1
- 15.17-mod-2
- 15.17-mod-3
- 15.17-mod-4
- 15.17-type-1
- 15.17-type-2
- 15.17-type-3
- 15.17-type-4
- 15.17-type-5
- 15.17-type-6
- 15.17-type-7
- 15.17-type-8
- 15.17-type-9
- 15.17-type-10
- 15.17-type-11
- 15.17-type-12
- 15.17-type-13
- 15.17-type-14
- 15.17-type-15
- 15.17-type-16
- 15.17-type-17
- 15.17-type-18

Test Case: 15.17-null-1

> null is not a primitive numeric type

> Expected 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}

Test Case: 15.17-null-2

> null is not a primitive numeric type

> Expected 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}

Test Case: 15.17-null-3

> null is not a primitive numeric type

> Expected 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}

Test Case: 15.17-boolean-1

> boolean is not a primitive numeric type

> Expected 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}

Test Case: 15.17-boolean-2

> boolean is not a primitive numeric type

> Expected 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}

Test Case: 15.17-boolean-3

> boolean is not a primitive numeric type

> Expected 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}

Test Case: 15.17-object-1

> Object is not a primitive numeric type

> Expected 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}

Test Case: 15.17-object-2

> Object is not a primitive numeric type

> Expected 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}

Test Case: 15.17-object-3

> Object is not a primitive numeric type

> Expected 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}

Test Case: 15.17-void-1

> void is not a primitive numeric type

> Expected 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}

Test Case: 15.17-void-2

> void is not a primitive numeric type

> Expected 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}

Test Case: 15.17-void-3

> void is not a primitive numeric type

> Expected 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}

Test Case: 15.17-mult-1

> * is a multiplicative operator

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 15.17-mult-1 { * is a multiplicative operator } {

>         constant_expression T1517mult1 {2*2 == 4}

>     } {PASS}

Test Case: 15.17-mult-2

> * is a multiplicative operator

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 15.17-mult-2 { * is a multiplicative operator } {

>         constant_expression T1517mult2 {2L*2L == 4L}

>     } {PASS}

Test Case: 15.17-mult-3

> * is a multiplicative operator

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 15.17-mult-3 { * is a multiplicative operator } {

>         constant_expression T1517mult3 {2.0F * 2.0F == 4.0F}

>     } {PASS}

Test Case: 15.17-mult-4

> * is a multiplicative operator

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 15.17-mult-4 { * is a multiplicative operator } {

>         constant_expression T1517mult4 {2.0D * 2.0D == 4.0D}

>     } {PASS}

Test Case: 15.17-div-1

> / is a multiplicative operator

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 15.17-div-1 { / is a multiplicative operator } {

>         constant_expression T1517div1 {2/2 == 1}

>     } {PASS}

Test Case: 15.17-div-2

> / is a multiplicative operator

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 15.17-div-2 { / is a multiplicative operator } {

>         constant_expression T1517div2 {2L/2L == 1L}

>     } {PASS}

Test Case: 15.17-div-3

> / is a multiplicative operator

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 15.17-div-3 { / is a multiplicative operator } {

>         constant_expression T1517div3 {2.0F / 2.0F == 1.0F}

>     } {PASS}

Test Case: 15.17-div-4

> / is a multiplicative operator

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 15.17-div-4 { / is a multiplicative operator } {

>         constant_expression T1517div4 {2.0D / 2.0D == 1.0D}

>     } {PASS}

Test Case: 15.17-mod-1

> % is a multiplicative operator

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 15.17-mod-1 { % is a multiplicative operator } {

>         constant_expression T1517mod1 {2%2 == 0}

>     } {PASS}

Test Case: 15.17-mod-2

> % is a multiplicative operator

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 15.17-mod-2 { % is a multiplicative operator } {

>         constant_expression T1517mod2 {2L%2L == 0L}

>     } {PASS}

Test Case: 15.17-mod-3

> % is a multiplicative operator

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 15.17-mod-3 { % is a multiplicative operator } {

>         constant_expression T1517mod3 {2.0F % 2.0F == 0.0F}

>     } {PASS}

Test Case: 15.17-mod-4

> % is a multiplicative operator

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 15.17-mod-4 { % is a multiplicative operator } {

>         constant_expression T1517mod4 {2.0D % 2.0D == 0.0D}

>     } {PASS}

Test Case: 15.17-type-1

> The type of a multiplicative expression is the promoted type of its operands.

> Expected 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}

Test Case: 15.17-type-2

> The type of a multiplicative expression is the promoted type of its operands.

> Expected 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}

Test Case: 15.17-type-3

> The type of a multiplicative expression is the promoted type of its operands.

> Expected 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}

Test Case: 15.17-type-4

> The type of a multiplicative expression is the promoted type of its operands.

> Expected 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}

Test Case: 15.17-type-5

> The type of a multiplicative expression is the promoted type of its operands.

> Expected 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}

Test Case: 15.17-type-6

> The type of a multiplicative expression is the promoted type of its operands.

> Expected 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}

Test Case: 15.17-type-7

> The type of a multiplicative expression is the promoted type of its operands.

> Expected 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}

Test Case: 15.17-type-8

> The type of a multiplicative expression is the promoted type of its operands.

> Expected 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}

Test Case: 15.17-type-9

> The type of a multiplicative expression is the promoted type of its operands.

> Expected 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}

Test Case: 15.17-type-10

> The type of a multiplicative expression is the promoted type of its operands.

> Expected 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}

Test Case: 15.17-type-11

> The type of a multiplicative expression is the promoted type of its operands.

> Expected 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}

Test Case: 15.17-type-12

> The type of a multiplicative expression is the promoted type of its operands.

> Expected 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}

Test Case: 15.17-type-13

> The type of a multiplicative expression is the promoted type of its operands.

> Expected 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}

Test Case: 15.17-type-14

> The type of a multiplicative expression is the promoted type of its operands.

> Expected 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}

Test Case: 15.17-type-15

> The type of a multiplicative expression is the promoted type of its operands.

> Expected 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}

Test Case: 15.17-type-16

> The type of a multiplicative expression is the promoted type of its operands.

> Expected 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}

Test Case: 15.17-type-17

> The type of a multiplicative expression is the promoted type of its operands.

> Expected 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}

Test Case: 15.17-type-18

> 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}

### 15.17.1

Directory : `tests/jls/expressions/multiplicative-operators/multiplication-operator`

- 15.17.1-commute-1
- 15.17.1-commute-2
- 15.17.1-commute-3
- 15.17.1-commute-4
- 15.17.1-assoc-1
- 15.17.1-assoc-2
- 15.17.1-assoc-3
- 15.17.1-assoc-4
- 15.17.1-float-1
- 15.17.1-float-2
- 15.17.1-float-3
- 15.17.1-float-4
- 15.17.1-float-5
- 15.17.1-float-6
- 15.17.1-float-7
- 15.17.1-float-8
- 15.17.1-float-9
- 15.17.1-float-10
- 15.17.1-float-11
- 15.17.1-float-12
- 15.17.1-float-13
- 15.17.1-float-14
- 15.17.1-double-1
- 15.17.1-double-2
- 15.17.1-double-3
- 15.17.1-double-4
- 15.17.1-double-5
- 15.17.1-double-6
- 15.17.1-double-7
- 15.17.1-double-8
- 15.17.1-double-9
- 15.17.1-double-10
- 15.17.1-double-11
- 15.17.1-double-12
- 15.17.1-double-13
- 15.17.1-double-14
- 15.17.1-int-1
- 15.17.1-int-2
- 15.17.1-long-1
- 15.17.1-long-2

Test Case: 15.17.1-commute-1

> side-effect-free multiplication is commutative

> Expected 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}

Test Case: 15.17.1-commute-2

> side-effect-free multiplication is commutative

> Expected 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}

Test Case: 15.17.1-commute-3

> side-effect-free multiplication is commutative

> Expected 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}

Test Case: 15.17.1-commute-4

> side-effect-free multiplication is commutative

> Expected 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}

Test Case: 15.17.1-assoc-1

> integer multiplication is associative when all arguments are of the same type

> Expected 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}

Test Case: 15.17.1-assoc-2

> integer multiplication is not associative when arguments are of different types

> Expected 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}

Test Case: 15.17.1-assoc-3

> floating-point multiplication is not associative

> Expected 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}

Test Case: 15.17.1-assoc-4

> multiplication is left-associative

> Expected 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}

Test Case: 15.17.1-float-1

> NaN * NaN is NaN

> Expected 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}

Test Case: 15.17.1-float-2

> NaN * anything is NaN

> Expected 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}

Test Case: 15.17.1-float-3

> the result is positive in floating-point multiplication if both operands have the same sign

> Expected 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}

Test Case: 15.17.1-float-4

> the result is negative in floating-point multiplication if the operands have opposite sign

> Expected 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}

Test Case: 15.17.1-float-5

> Infinity * 0 is NaN

> Expected 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}

Test Case: 15.17.1-float-6

> Infinity * finite == Infinity of correct sign

> Expected 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}

Test Case: 15.17.1-float-7

> Infinity * Infinity == Infinity of correct sign (Specified in JVMS errata)

> Expected 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}

Test Case: 15.17.1-float-8

> Infinity * Infinity == Infinity of correct sign (Specified in JVMS errata)

> Expected 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}

Test Case: 15.17.1-float-9

> Floating-point * produces Infinity for overflow

> Expected 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}

Test Case: 15.17.1-float-10

> Floating-point * supports gradual underflow

> Expected 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}

Test Case: 15.17.1-float-11

> Floating-point * produces 0 for underflow (check 1/0 to determine sign)

> Expected 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}

Test Case: 15.17.1-float-12

> Floating-point * works even with denorms

> Expected 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}

Test Case: 15.17.1-float-13

> Floating-point * follows round-to-nearest rules

> Expected 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}

Test Case: 15.17.1-float-14

> Floating-point * follows round-to-nearest, even with denorms

> Expected 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}

Test Case: 15.17.1-double-1

> NaN * NaN is NaN

> Expected 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}

Test Case: 15.17.1-double-2

> NaN * anything is NaN

> Expected 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}

Test Case: 15.17.1-double-3

> the result is positive in floating-point multiplication if both operands have the same sign

> Expected 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}

Test Case: 15.17.1-double-4

> the result is negative in floating-point multiplication if the operands have opposite sign

> Expected 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}

Test Case: 15.17.1-double-5

> Infinity * 0 is NaN

> Expected 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}

Test Case: 15.17.1-double-6

> Infinity * finite == Infinity of correct sign

> Expected 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}

Test Case: 15.17.1-double-7

> Infinity * Infinity == Infinity of correct sign (Specified in JVMS errata)

> Expected 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}

Test Case: 15.17.1-double-8

> Infinity * Infinity == Infinity of correct sign (Specified in JVMS errata)

> Expected 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}

Test Case: 15.17.1-double-9

> Floating-point * produces Infinity for overflow

> Expected 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}

Test Case: 15.17.1-double-10

> Floating-point * supports gradual underflow

> Expected 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}

Test Case: 15.17.1-double-11

> Floating-point * produces 0 for underflow (check 1/0 to determine sign)

> Expected 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}

Test Case: 15.17.1-double-12

> Floating-point * works even with denorms

> Expected 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}

Test Case: 15.17.1-double-13

> Floating-point * follows round-to-nearest rules

> Expected 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}

Test Case: 15.17.1-double-14

> Floating-point * follows round-to-nearest, even with denorms, known bug in Sun's javac

> Expected 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}

Test Case: 15.17.1-int-1

> overflow in integer multiplication, simply selects low-order bits, possibly changing sign

> Expected 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}

Test Case: 15.17.1-int-2

> constant expression with int multiplication

> Expected 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}

Test Case: 15.17.1-long-1

> constant expression with long multiplication

> Expected 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}

Test Case: 15.17.1-long-2

> constant expression with long multiplication

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 15.17.1-long-2 { constant expression with long multiplication } {

>         constant_expression T15171l2 {-2L*(1L<<28) == 0xffffffffe0000000L}

>     } {PASS}

### 15.17.2

Directory : `tests/jls/expressions/multiplicative-operators/division-operator`

- 15.17.2-assoc-1
- 15.17.2-assoc-2
- 15.17.2-float-1
- 15.17.2-float-2
- 15.17.2-float-3
- 15.17.2-float-4
- 15.17.2-float-5
- 15.17.2-float-6
- 15.17.2-float-7
- 15.17.2-float-8
- 15.17.2-float-9
- 15.17.2-float-10
- 15.17.2-float-11
- 15.17.2-float-12
- 15.17.2-float-13
- 15.17.2-float-14
- 15.17.2-float-15
- 15.17.2-float-16
- 15.17.2-double-1
- 15.17.2-double-2
- 15.17.2-double-3
- 15.17.2-double-4
- 15.17.2-double-5
- 15.17.2-double-6
- 15.17.2-double-7
- 15.17.2-double-8
- 15.17.2-double-9
- 15.17.2-double-10
- 15.17.2-double-11
- 15.17.2-double-12
- 15.17.2-double-13
- 15.17.2-double-14
- 15.17.2-double-15
- 15.17.2-int-1
- 15.17.2-int-2
- 15.17.2-int-3
- 15.17.2-long-1
- 15.17.2-long-2
- 15.17.2-long-3

Test Case: 15.17.2-assoc-1

> division is left-associative

> Expected 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}

Test Case: 15.17.2-assoc-2

> division is left-associative

> Expected 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}

Test Case: 15.17.2-float-1

> NaN / NaN is NaN

> Expected 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}

Test Case: 15.17.2-float-2

> NaN / anything is NaN

> Expected 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}

Test Case: 15.17.2-float-3

> the result is positive in floating-point division if both operands have the same sign

> Expected 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}

Test Case: 15.17.2-float-4

> the result is negative in floating-point division if the operands have opposite sign

> Expected 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}

Test Case: 15.17.2-float-5

> 0 / 0 is NaN

> Expected 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}

Test Case: 15.17.2-float-6

> Infinity / finite == Infinity of correct sign

> Expected 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}

Test Case: 15.17.2-float-7

> Infinity / Infinity is NaN

> Expected 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}

Test Case: 15.17.2-float-8

> Finite / Infinity == Signed zero (check 1/0 to determine sign)

> Expected 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}

Test Case: 15.17.2-float-9

> Finite / 0 == Signed infinity

> Expected 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}

Test Case: 15.17.2-float-10

> 0 / non-zero Finite == Signed zero (check 1/0 to determine sign)

> Expected 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}

Test Case: 15.17.2-float-11

> Floating-point / produces Infinity for overflow

> Expected 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}

Test Case: 15.17.2-float-12

> Floating-point / supports gradual underflow

> Expected 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}

Test Case: 15.17.2-float-13

> Floating-point / produces 0 for underflow (check 1/0 to determine sign)

> Expected 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}

Test Case: 15.17.2-float-14

> Floating-point / works even with denorms

> Expected 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}

Test Case: 15.17.2-float-15

> Floating-point / follows round-to-nearest rules

> Expected 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}

Test Case: 15.17.2-float-16

> Floating-point constants must be evaluated in strictfp mode

> Expected 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}

Test Case: 15.17.2-double-1

> NaN / NaN is NaN

> Expected 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}

Test Case: 15.17.2-double-2

> NaN / anything is NaN

> Expected 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}

Test Case: 15.17.2-double-3

> the result is positive in floating-point division if both operands have the same sign

> Expected 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}

Test Case: 15.17.2-double-4

> the result is negative in floating-point division if the operands have opposite sign

> Expected 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}

Test Case: 15.17.2-double-5

> 0 / 0 is NaN

> Expected 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}

Test Case: 15.17.2-double-6

> Infinity / finite == Infinity of correct sign

> Expected 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}

Test Case: 15.17.2-double-7

> Infinity / Infinity is NaN

> Expected 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}

Test Case: 15.17.2-double-8

> Finite / Infinity == Signed zero (check 1/0 to determine sign)

> Expected 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}

Test Case: 15.17.2-double-9

> Finite / 0 == Signed infinity

> Expected 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}

Test Case: 15.17.2-double-10

> 0 / non-zero Finite == Signed zero (check 1/0 to determine sign)

> Expected 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}

Test Case: 15.17.2-double-11

> Floating-point / produces Infinity for overflow

> Expected 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}

Test Case: 15.17.2-double-12

> Floating-point / supports gradual underflow

> Expected 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}

Test Case: 15.17.2-double-13

> Floating-point / produces 0 for underflow (check 1/0 to determine sign)

> Expected 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}

Test Case: 15.17.2-double-14

> Floating-point / works even with denorms

> Expected 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}

Test Case: 15.17.2-double-15

> Floating-point / follows round-to-nearest rules

> Expected 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}

Test Case: 15.17.2-int-1

> integer division rounds to 0

> Expected 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}

Test Case: 15.17.2-int-2

> MIN_INT / -1 overflows

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 15.17.2-int-2 { MIN_INT / -1 overflows } {

>         constant_expression T15172i2 {0x80000000 / -1 == 0x80000000}

>     } {PASS}

Test Case: 15.17.2-int-3

> Not a compile-time error to divide by constant integer 0

> Expected 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}

Test Case: 15.17.2-long-1

> integer division rounds to 0

> Expected 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}

Test Case: 15.17.2-long-2

> MIN_LONG / -1 overflows

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 15.17.2-long-2 { MIN_LONG / -1 overflows } {

>         constant_expression T15172l2 {0x8000000000000000L / -1L == 0x8000000000000000L}

>     } {PASS}

Test Case: 15.17.2-long-3

> Not a compile-time error to divide by constant integer 0

> Expected 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}

### 15.17.3

Directory : `tests/jls/expressions/multiplicative-operators/remainder-operator`

- 15.17.3-assoc-1
- 15.17.3-assoc-2
- 15.17.3-float-1
- 15.17.3-float-2
- 15.17.3-float-3
- 15.17.3-float-4
- 15.17.3-float-5
- 15.17.3-float-6
- 15.17.3-float-7
- 15.17.3-float-8
- 15.17.3-float-9
- 15.17.3-float-10
- 15.17.3-float-11
- 15.17.3-float-12
- 15.17.3-float-13
- 15.17.3-float-14
- 15.17.3-double-1
- 15.17.3-double-2
- 15.17.3-double-3
- 15.17.3-double-4
- 15.17.3-double-5
- 15.17.3-double-6
- 15.17.3-double-7
- 15.17.3-double-8
- 15.17.3-double-9
- 15.17.3-double-10
- 15.17.3-double-11
- 15.17.3-double-12
- 15.17.3-double-13
- 15.17.3-double-14
- 15.17.3-int-1
- 15.17.3-int-2
- 15.17.3-int-3
- 15.17.3-int-4
- 15.17.3-long-1
- 15.17.3-long-2
- 15.17.3-long-3
- 15.17.3-long-4

Test Case: 15.17.3-assoc-1

> remainder is left-associative

> Expected 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}

Test Case: 15.17.3-assoc-2

> remainder is left-associative

> Expected 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}

Test Case: 15.17.3-float-1

> NaN % NaN is NaN

> Expected 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}

Test Case: 15.17.3-float-2

> NaN % anything is NaN

> Expected 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}

Test Case: 15.17.3-float-3

> the result is positive in floating-point remainder if the dividend is positive

> Expected 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}

Test Case: 15.17.3-float-4

> the result is negative in floating-point remainder if the dividend is negative

> Expected 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}

Test Case: 15.17.3-float-5

> 0 % 0 is NaN

> Expected 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}

Test Case: 15.17.3-float-6

> Infinity % finite is NaN

> Expected 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}

Test Case: 15.17.3-float-7

> Infinity % Infinity is NaN

> Expected 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}

Test Case: 15.17.3-float-8

> Finite % Infinity == dividend

> Expected 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}

Test Case: 15.17.3-float-9

> Finite % 0 is NaN

> Expected 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}

Test Case: 15.17.3-float-10

> 0 % non-zero Finite == Dividend (check 1/0 to determine sign)

> Expected 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}

Test Case: 15.17.3-float-11

> 0 % Infinity == Dividend (check 1/0 to determine sign)

> Expected 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}

Test Case: 15.17.3-float-12

> Floating-point % cannot overflow

> Expected 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}

Test Case: 15.17.3-float-13

> Floating-point % works even with denorms

> Expected 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}

Test Case: 15.17.3-float-14

> Example cases

> Expected 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}

Test Case: 15.17.3-double-1

> NaN % NaN is NaN

> Expected 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}

Test Case: 15.17.3-double-2

> NaN % anything is NaN

> Expected 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}

Test Case: 15.17.3-double-3

> the result is positive in floating-point remainder if the dividend is positive

> Expected 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}

Test Case: 15.17.3-double-4

> the result is negative in floating-point remainder if the dividend is negative

> Expected 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}

Test Case: 15.17.3-double-5

> 0 % 0 is NaN

> Expected 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}

Test Case: 15.17.3-double-6

> Infinity % finite is NaN

> Expected 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}

Test Case: 15.17.3-double-7

> Infinity % Infinity is NaN

> Expected 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}

Test Case: 15.17.3-double-8

> Finite % Infinity == dividend

> Expected 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}

Test Case: 15.17.3-double-9

> Finite % 0 is NaN

> Expected 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}

Test Case: 15.17.3-double-10

> 0 % non-zero Finite == Dividend (check 1/0 to determine sign)

> Expected 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}

Test Case: 15.17.3-double-11

> 0 % Infinity == Dividend (check 1/0 to determine sign)

> Expected 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}

Test Case: 15.17.3-double-12

> Floating-point % cannot overflow

> Expected 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}

Test Case: 15.17.3-double-13

> Floating-point % works even with denorms

> Expected 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}

Test Case: 15.17.3-double-14

> Example cases

> Expected 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}

Test Case: 15.17.3-int-1

> Example cases

> Expected 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}

Test Case: 15.17.3-int-2

> (a/b)*b+(a%b) == a

> Expected 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}

Test Case: 15.17.3-int-3

> Not a compile-time error to divide by constant integer 0

> Expected 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}

Test Case: 15.17.3-int-4

> MIN_INT % -1 == 0

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 15.17.3-int-4 { MIN_INT % -1 == 0 } {

>         constant_expression T15173i4 {0x80000000 % -1 == 0}

>     } {PASS}

Test Case: 15.17.3-long-1

> Example cases

> Expected 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}

Test Case: 15.17.3-long-2

> (a/b)*b+(a%b) == a

> Expected 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}

Test Case: 15.17.3-long-3

> Not a compile-time error to divide by constant integer 0

> Expected 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}

Test Case: 15.17.3-long-4

> MIN_LONG % -1 == 0

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 15.17.3-long-4 { MIN_LONG % -1 == 0 } {

>         constant_expression T15173l4 {0x8000000000000000L % -1L == 0L}

>     } {PASS}

### 15.18

Directory : `tests/jls/expressions/additive-operators`

- 15.18-null-1
- 15.18-null-2
- 15.18-boolean-1
- 15.18-boolean-2

Test Case: 15.18-null-1

> at least one argument of + should be String, or else both must be primitive numeric type

> Expected 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}

Test Case: 15.18-null-2

> both arguments to - must be of a primitive numeric type

> Expected 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}

Test Case: 15.18-boolean-1

> at least one argument of + should be String, or else both must be primitive numeric type

> Expected 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}

Test Case: 15.18-boolean-2

> both arguments to - must be of a primitive numeric type

> Expected 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}

### 15.18.1

Directory : `tests/jls/expressions/additive-operators/string-concatenation-operator`

- 15.18.1-1
- 15.18.1-2
- 15.18.1-3
- 15.18.1-4
- 15.18.1-5
- 15.18.1-6
- 15.18.1-7
- 15.18.1-float-1
- 15.18.1-float-2
- 15.18.1-float-3
- 15.18.1-float-4
- 15.18.1-float-5
- 15.18.1-float-6
- 15.18.1-float-7
- 15.18.1-float-8
- 15.18.1-float-9
- 15.18.1-float-10
- 15.18.1-float-11
- 15.18.1-float-12
- 15.18.1-double-1
- 15.18.1-double-2
- 15.18.1-double-3
- 15.18.1-double-4
- 15.18.1-double-5
- 15.18.1-double-6
- 15.18.1-double-7
- 15.18.1-double-8
- 15.18.1-double-9
- 15.18.1-double-10
- 15.18.1-double-11
- 15.18.1-double-12
- 15.18.1-double-13
- 15.18.1-boolean-1
- 15.18.1-boolean-2
- 15.18.1-valid-1
- 15.18.1-valid-2
- 15.18.1-valid-3
- 15.18.1-valid-4
- 15.18.1-valid-5
- 15.18.1-valid-6
- 15.18.1-valid-7
- 15.18.1-valid-8
- 15.18.1-valid-9
- 15.18.1-non-const-1
- 15.18.1-non-const-2
- 15.18.1-non-const-3
- 15.18.1-non-const-4
- 15.18.1-non-const-5
- 15.18.1-non-const-6
- 15.18.1-non-const-7
- 15.18.1-non-const-8
- 15.18.1-non-const-9
- 15.18.1-non-const-10

Test Case: 15.18.1-1

> String + requires a String argument

> Expected 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}

Test Case: 15.18.1-2

> (String)null denotes String concatenation

> Expected 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}

Test Case: 15.18.1-3

> (String)null + null denotes String concatenation

> Expected 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}

Test Case: 15.18.1-4

> void + String is invalid

> Expected 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}

Test Case: 15.18.1-5

> + operator should be left-associative

> Expected 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}

Test Case: 15.18.1-6

> + operator and integer constants

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 15.18.1-6 { + operator and integer constants } {

>         constant_expression T151816  {"-12300000" == "" + -12300000}  {"-12300000,-50000000" ==
>                 -12300000 + "," + -50000000}

>     } {PASS}

Test Case: 15.18.1-7

> + operator and long constants

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 15.18.1-7 { + operator and long constants } {

>         constant_expression T151817  {"-12192592592745" == "" + -12192592592745L}  {"-12192592592745,-12192592592745" ==
>                 -12192592592745L + "," + -12192592592745L}

>     } {PASS}

Test Case: 15.18.1-float-1

> convert denormalized float to String

> Expected 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}

Test Case: 15.18.1-float-2

> convert NaN float to String

> Expected 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}

Test Case: 15.18.1-float-3

> convert Infinity float to String

> Expected 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}

Test Case: 15.18.1-float-4

> convert min float to String

> Expected 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}

Test Case: 15.18.1-float-5

> convert max float to String

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 15.18.1-float-7

> conversion of float to String switches from plain to exponent at 1e7

> Expected 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}

Test Case: 15.18.1-float-8

> conversion of float to String switches from plain to exponent at 1e-3. Trailing 0's are not permitted.

> Expected 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}

Test Case: 15.18.1-float-9

> conversion of float to String produces the shortest string that parses back to the same float

> Expected 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}

Test Case: 15.18.1-float-10

> One of the longest possible Strings possible when converting floats

> Expected 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}

Test Case: 15.18.1-float-11

> conversion of float to String prints the closest decimal string to the exact value, even on denorms

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 15.18.1-double-1

> convert denormalized double to String

> Expected 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}

Test Case: 15.18.1-double-2

> convert Nan double to String

> Expected 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}

Test Case: 15.18.1-double-3

> convert Infinity double to String

> Expected 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}

Test Case: 15.18.1-double-4

> convert min double to String

> Expected 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}

Test Case: 15.18.1-double-5

> convert max double to String

> Expected 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}

Test Case: 15.18.1-double-6

> NaN != 12.0

> Expected 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}

Test Case: 15.18.1-double-7

> NaN != 12.0

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 15.18.1-double-9

> conversion of double to String switches from plain to exponent at 1e7

> Expected 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}

Test Case: 15.18.1-double-10

> conversion of double to String switches from plain to exponent at 1e-3. Trailing 0's are not permitted.

> Expected 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}

Test Case: 15.18.1-double-11

> conversion of double to String produces the shortest string that parses back to the same double

> Expected 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}

Test Case: 15.18.1-double-12

> One of the longest possible Strings possible when converting doubles

> Expected 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}

Test Case: 15.18.1-double-13

> conversion of double to String prints the closest decimal string to the exact value, even on denorms

> Expected 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}

Test Case: 15.18.1-boolean-1

> conversion of boolean to String

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 15.18.1-boolean-1 { conversion of boolean to String } {

>         constant_expression T15181b1  {"" + true == "true"}  {"" + false == "false"}

>     } {PASS}

Test Case: 15.18.1-boolean-2

> conversion of boolean to String

> Expected 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}

Test Case: 15.18.1-valid-1

> String + null type is valid

> Expected 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}

Test Case: 15.18.1-valid-2

> String + primitive is valid

> Expected 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}

Test Case: 15.18.1-valid-3

> String + primitive is valid

> Expected 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}

Test Case: 15.18.1-valid-4

> String + primitive is valid

> Expected 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}

Test Case: 15.18.1-valid-5

> String + primitive is valid

> Expected 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}

Test Case: 15.18.1-valid-6

> String + primitive is valid

> Expected 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}

Test Case: 15.18.1-valid-7

> String + primitive is valid

> Expected 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}

Test Case: 15.18.1-valid-8

> String + primitive is valid

> Expected 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}

Test Case: 15.18.1-valid-9

> String + primitive is valid

> Expected 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}

Test Case: 15.18.1-non-const-1

> runtime concatenation

> Expected 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}

Test Case: 15.18.1-non-const-2

> runtime concatenation

> Expected 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}

Test Case: 15.18.1-non-const-3

> runtime concatenation

> Expected 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}

Test Case: 15.18.1-non-const-4

> runtime concatenation

> Expected 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}

Test Case: 15.18.1-non-const-5

> runtime concatenation

> Expected 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}

Test Case: 15.18.1-non-const-6

> runtime concatenation

> Expected 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}

Test Case: 15.18.1-non-const-7

> concatenation of empty string

> Expected 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}

Test Case: 15.18.1-non-const-8

> concatenation of empty string

> Expected 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}

Test Case: 15.18.1-non-const-9

> concatenation of empty string

> Expected 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}

Test Case: 15.18.1-non-const-10

> 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}

### 15.18.2

Directory : `tests/jls/expressions/additive-operators/numeric-types`

- 15.18.2-commute-1
- 15.18.2-commute-2
- 15.18.2-commute-3
- 15.18.2-commute-4
- 15.18.2-assoc-1
- 15.18.2-assoc-2
- 15.18.2-assoc-3
- 15.18.2-assoc-4
- 15.18.2-int-1
- 15.18.2-float-1
- 15.18.2-float-2
- 15.18.2-float-3
- 15.18.2-float-4
- 15.18.2-float-5
- 15.18.2-float-6
- 15.18.2-float-7
- 15.18.2-float-8
- 15.18.2-float-9
- 15.18.2-float-10
- 15.18.2-float-11
- 15.18.2-float-12
- 15.18.2-float-13
- 15.18.2-float-14
- 15.18.2-float-15
- 15.18.2-float-16
- 15.18.2-double-1
- 15.18.2-double-2
- 15.18.2-double-3
- 15.18.2-double-4
- 15.18.2-double-5
- 15.18.2-double-6
- 15.18.2-double-7
- 15.18.2-double-8
- 15.18.2-double-9
- 15.18.2-double-10
- 15.18.2-double-11
- 15.18.2-double-12
- 15.18.2-double-13
- 15.18.2-double-14
- 15.18.2-double-15
- 15.18.2-double-16
- 15.18.2-mixed-1

Test Case: 15.18.2-commute-1

> side-effect-free addition is commutative

> Expected 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}

Test Case: 15.18.2-commute-2

> side-effect-free addition is commutative

> Expected 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}

Test Case: 15.18.2-commute-3

> side-effect-free addition is commutative

> Expected 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}

Test Case: 15.18.2-commute-4

> side-effect-free addition is commutative

> Expected 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}

Test Case: 15.18.2-assoc-1

> integer addition is associative when all arguments are of the same type

> Expected 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}

Test Case: 15.18.2-assoc-2

> integer addition is not associative when arguments are of different types

> Expected 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}

Test Case: 15.18.2-assoc-3

> floating-point addition is not associative

> Expected 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}

Test Case: 15.18.2-assoc-4

> addition is left-associative

> Expected 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}

Test Case: 15.18.2-int-1

> overflow in integer addition simply selects low-order bits, changing sign

> Expected 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}

Test Case: 15.18.2-float-1

> NaN + NaN is NaN

> Expected 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}

Test Case: 15.18.2-float-2

> NaN + anything is NaN

> Expected 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}

Test Case: 15.18.2-float-3

> the result of floating-point addition follows arithmetic sign rules

> Expected 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}

Test Case: 15.18.2-float-4

> the result of floating-point addition follows arithmetic sign rules

> Expected 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}

Test Case: 15.18.2-float-5

> Infinity + 0 = Infinity

> Expected 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}

Test Case: 15.18.2-float-6

> Infinity + finite = Same sign Infinity

> Expected 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}

Test Case: 15.18.2-float-7

> Sum of Infinities of same sign is Infinity

> Expected 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}

Test Case: 15.18.2-float-8

> Sum of Infinities of opposite sign is NaN

> Expected 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}

Test Case: 15.18.2-float-9

> Sum of zeroes of same sign is same zero

> Expected 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}

Test Case: 15.18.2-float-10

> Sum of zeroes of opposite sign is +0

> Expected 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}

Test Case: 15.18.2-float-11

> Sum of oppositely signed floating-point is +0

> Expected 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}

Test Case: 15.18.2-float-12

> 0.0 - x is not negation, for x = 0.0

> Expected 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}

Test Case: 15.18.2-float-13

> a - b == a + (-b)

> Expected 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}

Test Case: 15.18.2-float-14

> Floating-point addition takes place with infinite accuracy, then rounds to nearest

> Expected 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}

Test Case: 15.18.2-float-15

> Floating-point addition takes place with infinite accuracy, then rounds to nearest

> Expected 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}

Test Case: 15.18.2-float-16

> Floating-point addition takes place with infinite accuracy, then rounds to nearest

> Expected 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}

Test Case: 15.18.2-double-1

> NaN + NaN is NaN

> Expected 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}

Test Case: 15.18.2-double-2

> NaN + anything is NaN

> Expected 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}

Test Case: 15.18.2-double-3

> the result of floating-point addition follows arithmetic sign rules

> Expected 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}

Test Case: 15.18.2-double-4

> the result of floating-point addition follows arithmetic sign rules

> Expected 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}

Test Case: 15.18.2-double-5

> Infinity + 0 = Infinity

> Expected 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}

Test Case: 15.18.2-double-6

> Infinity + finite = Same sign Infinity

> Expected 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}

Test Case: 15.18.2-double-7

> Sum of Infinities of same sign is Infinity

> Expected 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}

Test Case: 15.18.2-double-8

> Sum of Infinities of opposite sign is NaN

> Expected 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}

Test Case: 15.18.2-double-9

> Sum of zeroes of same sign is same zero

> Expected 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}

Test Case: 15.18.2-double-10

> Sum of zeroes of opposite sign is +0

> Expected 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}

Test Case: 15.18.2-double-11

> Sum of oppositely signed floating-point is +0

> Expected 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}

Test Case: 15.18.2-double-12

> 0.0 - x is not negation, for x = 0.0

> Expected 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}

Test Case: 15.18.2-double-13

> a - b == a + (-b)

> Expected 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}

Test Case: 15.18.2-double-14

> Floating-point addition takes place with infinite accuracy, then rounds to nearest

> Expected 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}

Test Case: 15.18.2-double-15

> Floating-point addition takes place with infinite accuracy, then rounds to nearest

> Expected 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}

Test Case: 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

> Expected 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 Case: 15.18.2-mixed-1

> Test mixed type addition to 0 for proper optimization - jikes bug 3078

> Expected 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}

### 15.20

Directory : `tests/jls/expressions/relational-operators/type-comparison-operator-instanceof`

- 15.20-2-always-1
- 15.20-2-always-2
- 15.20-2-always-3
- 15.20-2-always-4
- 15.20-2-always-5
- 15.20-2-always-6
- 15.20-2-always-7
- 15.20-2-always-8
- 15.20-2-sometimes-1
- 15.20-2-sometimes-2
- 15.20-2-sometimes-3
- 15.20-2-sometimes-4
- 15.20-2-sometimes-5
- 15.20-2-sometimes-6
- 15.20-2-sometimes-7
- 15.20-2-sometimes-8
- 15.20-2-sometimes-9
- 15.20-2-sometimes-10
- 15.20-2-sometimes-11
- 15.20-2-sometimes-12
- 15.20-2-sometimes-13
- 15.20-2-sometimes-14
- 15.20-2-sometimes-15
- 15.20-2-never-1
- 15.20-2-never-2
- 15.20-2-never-3
- 15.20-2-never-4
- 15.20-2-never-5
- 15.20-2-never-6
- 15.20-2-never-7

Test Case: 15.20-2-always-1

> Always true (but expression is still evaluated)

> Expected 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}

Test Case: 15.20-2-always-2

> Always true (but expression is still evaluated)

> Expected 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}

Test Case: 15.20-2-always-3

> Always true (but expression is still evaluated)

> Expected 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}

Test Case: 15.20-2-always-4

> Always true (but expression is still evaluated)

> Expected 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}

Test Case: 15.20-2-always-5

> Always true (but expression is still evaluated)

> Expected 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}

Test Case: 15.20-2-always-6

> Always true (but expression is still evaluated)

> Expected 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}

Test Case: 15.20-2-always-7

> Always true (but expression is still evaluated)

> Expected 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}

Test Case: 15.20-2-always-8

> Always true (but expression is still evaluated)

> Expected 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}

Test Case: 15.20-2-sometimes-1

> Sometimes true - requires runtime check that reference is non-null and compatible

> Expected 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}

Test Case: 15.20-2-sometimes-2

> Sometimes true - requires runtime check that reference is non-null and compatible

> Expected 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}

Test Case: 15.20-2-sometimes-3

> Sometimes true - requires runtime check that reference is non-null and compatible

> Expected 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}

Test Case: 15.20-2-sometimes-4

> Sometimes true - requires runtime check that reference is non-null and compatible

> Expected 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}

Test Case: 15.20-2-sometimes-5

> Sometimes true - requires runtime check that reference is non-null and compatible

> Expected 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}

Test Case: 15.20-2-sometimes-6

> Sometimes true - requires runtime check that reference is non-null and compatible

> Expected 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}

Test Case: 15.20-2-sometimes-7

> Sometimes true - requires runtime check that reference is non-null and compatible

> Expected 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}

Test Case: 15.20-2-sometimes-8

> Sometimes true - requires runtime check that reference is non-null and compatible

> Expected 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}

Test Case: 15.20-2-sometimes-9

> Sometimes true - requires runtime check that reference is non-null and compatible

> Expected 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}

Test Case: 15.20-2-sometimes-10

> Sometimes true - requires runtime check that reference is non-null and compatible

> Expected 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}

Test Case: 15.20-2-sometimes-11

> Sometimes true - requires runtime check that reference is non-null and compatible

> Expected 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}

Test Case: 15.20-2-sometimes-12

> Sometimes true - requires runtime check that reference is non-null and compatible

> Expected 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}

Test Case: 15.20-2-sometimes-13

> Sometimes true - requires runtime check that reference is non-null and compatible

> Expected 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}

Test Case: 15.20-2-sometimes-14

> Sometimes true - requires runtime check that reference is non-null and compatible

> Expected 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}

Test Case: 15.20-2-sometimes-15

> Sometimes true - requires runtime check that reference is non-null and compatible

> Expected 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}

Test Case: 15.20-2-never-1

> Compile-time error - not cast-compatible

> Expected 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}

Test Case: 15.20-2-never-2

> Compile-time error - not cast-compatible

> Expected 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}

Test Case: 15.20-2-never-3

> Compile-time error - not cast-compatible

> Expected 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}

Test Case: 15.20-2-never-4

> Compile-time error - not cast-compatible

> Expected 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}

Test Case: 15.20-2-never-5

> Compile-time error - not cast-compatible

> Expected 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}

Test Case: 15.20-2-never-6

> Compile-time error - not cast-compatible

> Expected 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}

Test Case: 15.20-2-never-7

> Compile-time error - not cast-compatible

> Expected 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}

### 15.20.2

Directory : `tests/jls/expressions/relational-operators/type-comparison-operator-instanceof`

- 15.20.2-type-1
- 15.20.2-type-2
- 15.20.2-type-3
- 15.20.2-type-4
- 15.20.2-type-5
- 15.20.2-type-6
- 15.20.2-type-7
- 15.20.2-type-8
- 15.20.2-type-9
- 15.20.2-type-10
- 15.20.2-type-11
- 15.20.2-type-12
- 15.20.2-type-13
- 15.20.2-type-14
- 15.20.2-type-15
- 15.20.2-type-16
- 15.20.2-type-17
- 15.20.2-type-18

Test Case: 15.20.2-type-1

> The left side may be null

> Expected 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}

Test Case: 15.20.2-type-2

> The left side may be null

> Expected 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}

Test Case: 15.20.2-type-3

> The left side may be null

> Expected 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}

Test Case: 15.20.2-type-4

> The left side may not be primitive

> Expected 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}

Test Case: 15.20.2-type-5

> The left side may not be primitive

> Expected 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}

Test Case: 15.20.2-type-6

> The left side may not be primitive

> Expected 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}

Test Case: 15.20.2-type-7

> The left side may not be primitive

> Expected 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}

Test Case: 15.20.2-type-8

> The left side may not be primitive

> Expected 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}

Test Case: 15.20.2-type-9

> The left side may not be primitive

> Expected 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}

Test Case: 15.20.2-type-10

> The left side may not be primitive

> Expected 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}

Test Case: 15.20.2-type-11

> The left side may not be primitive

> Expected 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}

Test Case: 15.20.2-type-12

> The left side may not be void

> Expected 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}

Test Case: 15.20.2-type-13

> The left side may not be void

> Expected 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}

Test Case: 15.20.2-type-14

> The left side may be a class literal

> Expected 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}

Test Case: 15.20.2-type-15

> The left side may be a string literal

> Expected 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}

Test Case: 15.20.2-type-16

> The left side may not be a type

> Expected 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}

Test Case: 15.20.2-type-17

> The right side must be a reference type

> Expected 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}

Test Case: 15.20.2-type-18

> The right side must be a reference type

> Expected 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}

### 15.21

Directory : `tests/jls/expressions/equality-operators`

- 15.21-assoc-1
- 15.21-assoc-2
- 15.21-assoc-3
- 15.21-assoc-4
- 15.21-assoc-5
- 15.21-assoc-6
- 15.21-assoc-7
- 15.21-assoc-8
- 15.21-assoc-9
- 15.21-precedence-1
- 15.21-precedence-2
- 15.21-precedence-3
- 15.21-equal-1
- 15.21-equal-2
- 15.21-equal-3
- 15.21-type-1
- 15.21-type-2
- 15.21-type-3
- 15.21-type-4
- 15.21-type-5
- 15.21-type-6
- 15.21-type-7
- 15.21-type-8
- 15.21-type-9
- 15.21-type-10
- 15.21-type-11
- 15.21-type-12
- 15.21-type-13
- 15.21-type-14
- 15.21-type-15
- 15.21-type-16
- 15.21-type-17
- 15.21-type-18
- 15.21-type-19
- 15.21-type-20
- 15.21-type-21
- 15.21-type-22
- 15.21-type-23
- 15.21-type-24
- 15.21-type-25
- 15.21-type-26
- 15.21-type-27
- 15.21-type-28
- 15.21-type-29
- 15.21-type-30
- 15.21-type-31
- 15.21-type-32
- 15.21-type-33
- 15.21-type-34
- 15.21-type-35
- 15.21-type-36
- 15.21-type-37
- 15.21-type-38
- 15.21-type-39
- 15.21-type-40
- 15.21-type-41

Test Case: 15.21-assoc-1

> a==b==c is (a==b)==c, and hence c must be boolean

> Expected 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}

Test Case: 15.21-assoc-2

> a==b==c is (a==b)==c, and hence c must be boolean

> Expected 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}

Test Case: 15.21-assoc-3

> a==b==c is (a==b)==c, and hence c must be boolean

> Expected 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}

Test Case: 15.21-assoc-4

> a==b==c is (a==b)==c, and hence c must be boolean

> Expected 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}

Test Case: 15.21-assoc-5

> a==b==c is (a==b)==c, and hence c must be boolean

> Expected 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}

Test Case: 15.21-assoc-6

> a==b==c is (a==b)==c, and hence c must be boolean

> Expected 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}

Test Case: 15.21-assoc-7

> a==b==c is (a==b)==c, and hence c must be boolean

> Expected 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}

Test Case: 15.21-assoc-8

> a==b==c is (a==b)==c, and hence c must be boolean

> Expected 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}

Test Case: 15.21-assoc-9

> a==b==c is (a==b)==c

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 15.21-assoc-9 { a==b==c is (a==b)==c } {

>         constant_expression T1521a9 {1 == (0 == false)}

>     } {FAIL}

Test Case: 15.21-precedence-1

> == is lower than <

> Expected 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}

Test Case: 15.21-precedence-2

> == is lower than <

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 15.21-precedence-2 { == is lower than < } {

>         constant_expression T1521p2 {1 < (2 == 2) < 3}

>     } {FAIL}

Test Case: 15.21-precedence-3

> == is lower than <

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 15.21-precedence-3 { == is lower than < } {

>         constant_expression T1521p3 {((1 < 2) == 2) < 3}

>     } {FAIL}

Test Case: 15.21-equal-1

> a!=b is !(a==b)

> Expected 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}

Test Case: 15.21-equal-2

> a!=b is !(a==b)

> Expected 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}

Test Case: 15.21-equal-3

> a!=b is !(a==b)

> Expected 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}

Test Case: 15.21-type-1

> in a==b, if a is boolean, b must be too

> Expected 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}

Test Case: 15.21-type-2

> in a==b, if a is boolean, b must be too

> Expected 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}

Test Case: 15.21-type-3

> in a==b, if a is boolean, b must be too

> Expected 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}

Test Case: 15.21-type-4

> in a==b, if a is boolean, b must be too

> Expected 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}

Test Case: 15.21-type-5

> in a==b, if a is boolean, b must be too

> Expected 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}

Test Case: 15.21-type-6

> in a==b, if a is boolean, b must be too

> Expected 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}

Test Case: 15.21-type-7

> in a==b, if a is boolean, b must be too

> Expected 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}

Test Case: 15.21-type-8

> in a==b, if a is boolean, b must be too

> Expected 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}

Test Case: 15.21-type-9

> in a==b, if a is boolean, b must be too

> Expected 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}

Test Case: 15.21-type-10

> in a==b, if a is boolean, b must be too

> Expected 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}

Test Case: 15.21-type-11

> in a==b, if a is numeric, b must be too

> Expected 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}

Test Case: 15.21-type-12

> in a==b, if a is numeric, b must be too

> Expected 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}

Test Case: 15.21-type-13

> in a==b, if a is numeric, b must be too

> Expected 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}

Test Case: 15.21-type-14

> in a==b, if a is numeric, b must be too

> Expected 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}

Test Case: 15.21-type-15

> in a==b, if a is numeric, b must be too

> Expected 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}

Test Case: 15.21-type-16

> in a==b, if a is numeric, b must be too

> Expected 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}

Test Case: 15.21-type-17

> in a==b, if a is numeric, b must be too

> Expected 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}

Test Case: 15.21-type-18

> in a==b, if a is numeric, b must be too

> Expected 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}

Test Case: 15.21-type-19

> in a==b, if a is numeric, b must be too

> Expected 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}

Test Case: 15.21-type-20

> in a==b, if a is numeric, b must be too

> Expected 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}

Test Case: 15.21-type-21

> in a==b, if a is a reference, b must be too

> Expected 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}

Test Case: 15.21-type-22

> in a==b, if a is a reference, b must be too

> Expected 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}

Test Case: 15.21-type-23

> in a==b, if a is a reference, b must be too

> Expected 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}

Test Case: 15.21-type-24

> in a==b, if a is a reference, b must be too

> Expected 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}

Test Case: 15.21-type-25

> in a==b, if a is a reference, b must be too

> Expected 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}

Test Case: 15.21-type-26

> in a==b, if a is a reference, b must be too

> Expected 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}

Test Case: 15.21-type-27

> in a==b, if a is a reference, b must be too

> Expected 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}

Test Case: 15.21-type-28

> in a==b, if a is a reference, b must be too

> Expected 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}

Test Case: 15.21-type-29

> in a==b, if a is a reference, b must be too

> Expected 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}

Test Case: 15.21-type-30

> in a==b, if a is a reference, b must be too

> Expected 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}

Test Case: 15.21-type-31

> in a==b, if a is a reference, b must be too

> Expected 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}

Test Case: 15.21-type-32

> in a==b, if a is a reference, b must be too

> Expected 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}

Test Case: 15.21-type-33

> in a==b, if a is a reference, b must be too

> Expected 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}

Test Case: 15.21-type-34

> in a==b, if a is a reference, b must be too

> Expected 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}

Test Case: 15.21-type-35

> in a==b, if a is a reference, b must be too

> Expected 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}

Test Case: 15.21-type-36

> in a==b, if a is a reference, b must be too

> Expected 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}

Test Case: 15.21-type-37

> in a==b, if a is a reference, b must be too

> Expected 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}

Test Case: 15.21-type-38

> in a==b, if a is a reference, b must be too

> Expected 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}

Test Case: 15.21-type-39

> in a==b, if a is a reference, b must be too

> Expected 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}

Test Case: 15.21-type-40

> in a==b, if a is a reference, b must be too

> Expected 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}

Test Case: 15.21-type-41

> void==void is not valid

> Expected 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}

### 15.21.1

Directory : `tests/jls/expressions/equality-operators/numerical-equality`

- 15.21.1-promote-1
- 15.21.1-promote-2
- 15.21.1-promote-3
- 15.21.1-floating-1
- 15.21.1-floating-2
- 15.21.1-floating-3
- 15.21.1-floating-4
- 15.21.1-floating-5
- 15.21.1-floating-6
- 15.21.1-floating-7
- 15.21.1-floating-8
- 15.21.1-floating-9

Test Case: 15.21.1-promote-1

> Binary promotion is done for numeric ==

> Expected 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}

Test Case: 15.21.1-promote-2

> Binary promotion is done for numeric ==

> Expected 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}

Test Case: 15.21.1-promote-3

> Binary promotion is done for numeric ==

> Expected 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}

Test Case: 15.21.1-floating-1

> In floating point, -0 == 0

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 15.21.1-floating-1 { In floating point, -0 == 0 } {

>         constant_expression T15211f1 {0. == -0.} {!(0. != -0.)}

>     } {PASS}

Test Case: 15.21.1-floating-2

> In floating point, -0 == 0

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 15.21.1-floating-2 { In floating point, -0 == 0 } {

>         constant_expression T15211f2 {0f == -0f} {!(0f != -0f)}

>     } {PASS}

Test Case: 15.21.1-floating-3

> In floating point, NaN is never ==

> Expected 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}

Test Case: 15.21.1-floating-4

> In floating point, NaN is never ==

> Expected 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}

Test Case: 15.21.1-floating-5

> In floating point, NaN is never ==

> Expected 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}

Test Case: 15.21.1-floating-6

> In floating point, NaN is never ==

> Expected 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}

Test Case: 15.21.1-floating-7

> In floating point, NaN is never ==

> Expected 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}

Test Case: 15.21.1-floating-8

> In floating point, infinities compare only to themselves

> Expected 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}

Test Case: 15.21.1-floating-9

> In floating point, infinities compare only to themselves

> Expected 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}

### 15.21.3

Directory : `tests/jls/expressions/equality-operators/reference-equality`

- 15.21.3-type-1
- 15.21.3-type-2
- 15.21.3-type-3
- 15.21.3-type-4
- 15.21.3-type-5
- 15.21.3-type-6
- 15.21.3-type-7
- 15.21.3-type-8
- 15.21.3-type-9
- 15.21.3-type-10
- 15.21.3-type-11

Test Case: 15.21.3-type-1

> In reference equality, the two types must be cast convertible

> Expected 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}

Test Case: 15.21.3-type-2

> In reference equality, the two types must be cast convertible

> Expected 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}

Test Case: 15.21.3-type-3

> In reference equality, the two types must be cast convertible

> Expected 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}

Test Case: 15.21.3-type-4

> In reference equality, the two types must be cast convertible

> Expected 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}

Test Case: 15.21.3-type-5

> In reference equality, the two types must be cast convertible

> Expected 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}

Test Case: 15.21.3-type-6

> In reference equality, the two types must be cast convertible

> Expected 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}

Test Case: 15.21.3-type-7

> In reference equality, the two types must be cast convertible

> Expected 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}

Test Case: 15.21.3-type-8

> In reference equality, the two types must be cast convertible

> Expected 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}

Test Case: 15.21.3-type-9

> In reference equality, the two types must be cast convertible

> Expected 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}

Test Case: 15.21.3-type-10

> In reference equality, the two types must be cast convertible

> Expected 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}

Test Case: 15.21.3-type-11

> In reference equality, the two types must be cast convertible

> Expected 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}

### 15.23

Directory : `tests/jls/expressions/conditional-and-operator`

- 15.23-optimize-1
- 15.23-optimize-2
- 15.23-optimize-3
- 15.23-optimize-4

Test Case: 15.23-optimize-1

> Test that a compiler that optimizes && does so correctly

> Expected 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 Case: 15.23-optimize-2

> Test that a compiler that optimizes && does so correctly

> Expected 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 Case: 15.23-optimize-3

> Test that a compiler that optimizes && does so correctly

> Expected 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 Case: 15.23-optimize-4

> Test that a compiler that optimizes && does so correctly

> Expected 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}

### 15.24

Directory : `tests/jls/expressions/conditional-or-operator`

- 15.24-optimize-1
- 15.24-optimize-2
- 15.24-optimize-3
- 15.24-optimize-4

Test Case: 15.24-optimize-1

> Test that a compiler that optimizes || does so correctly

> Expected 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 Case: 15.24-optimize-2

> Test that a compiler that optimizes || does so correctly

> Expected 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 Case: 15.24-optimize-3

> Test that a compiler that optimizes || does so correctly

> Expected 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 Case: 15.24-optimize-4

> Test that a compiler that optimizes || does so correctly

> Expected 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}

### 15.25

Directory : `tests/jls/expressions/conditional-operator`

- 15.25-basic-1
- 15.25-basic-2
- 15.25-syntax-1
- 15.25-syntax-2
- 15.25-syntax-3
- 15.25-syntax-4
- 15.25-syntax-5
- 15.25-not-boolean-1
- 15.25-not-boolean-2
- 15.25-not-boolean-3
- 15.25-not-boolean-4
- 15.25-not-boolean-5
- 15.25-not-boolean-6
- 15.25-not-boolean-7
- 15.25-not-boolean-8
- 15.25-not-boolean-9
- 15.25-not-boolean-10
- 15.25-not-boolean-11
- 15.25-operand-type-1
- 15.25-operand-type-2
- 15.25-operand-type-3
- 15.25-operand-type-4
- 15.25-operand-type-void-1
- 15.25-operand-type-void-2
- 15.25-operand-type-void-3
- 15.25-operand-type-void-4
- 15.25-operand-type-void-5
- 15.25-byte-operand-type-mismatch-1
- 15.25-byte-operand-type-mismatch-2
- 15.25-byte-operand-type-mismatch-3
- 15.25-byte-operand-type-mismatch-4
- 15.25-byte-operand-type-mismatch-5
- 15.25-byte-operand-type-mismatch-6
- 15.25-byte-operand-type-mismatch-7
- 15.25-byte-operand-type-mismatch-8
- 15.25-byte-operand-type-mismatch-9
- 15.25-byte-operand-type-mismatch-10
- 15.25-byte-operand-type-mismatch-11
- 15.25-byte-operand-type-mismatch-12
- 15.25-short-operand-type-mismatch-1
- 15.25-short-operand-type-mismatch-2
- 15.25-short-operand-type-mismatch-3
- 15.25-short-operand-type-mismatch-4
- 15.25-short-operand-type-mismatch-5
- 15.25-short-operand-type-mismatch-6
- 15.25-short-operand-type-mismatch-7
- 15.25-short-operand-type-mismatch-8
- 15.25-short-operand-type-mismatch-9
- 15.25-short-operand-type-mismatch-10
- 15.25-short-operand-type-mismatch-11
- 15.25-short-operand-type-mismatch-12
- 15.25-char-operand-type-mismatch-1
- 15.25-char-operand-type-mismatch-2
- 15.25-char-operand-type-mismatch-3
- 15.25-char-operand-type-mismatch-4
- 15.25-char-operand-type-mismatch-5
- 15.25-char-operand-type-mismatch-6
- 15.25-char-operand-type-mismatch-7
- 15.25-char-operand-type-mismatch-8
- 15.25-char-operand-type-mismatch-9
- 15.25-char-operand-type-mismatch-10
- 15.25-char-operand-type-mismatch-11
- 15.25-char-operand-type-mismatch-12
- 15.25-operand-type-mismatch-1
- 15.25-operand-type-mismatch-2
- 15.25-operand-type-mismatch-3
- 15.25-operand-type-mismatch-4
- 15.25-operand-type-mismatch-5
- 15.25-operand-type-mismatch-6
- 15.25-operand-type-mismatch-7
- 15.25-operand-type-mismatch-8
- 15.25-operand-type-mismatch-9
- 15.25-operand-type-mismatch-10
- 15.25-operand-type-mismatch-11
- 15.25-error-1

Test Case: 15.25-basic-1

> ?: uses a boolean value to decide which of two other expressions should be evaluated

> Expected 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}

Test Case: 15.25-basic-2

> ?: uses a boolean value to decide which of two other expressions should be evaluated

> Expected 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}

Test Case: 15.25-syntax-1

> conditional operator has three operands

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 15.25-syntax-1 { conditional operator has three operands } {

>         empty_main T1525s1 {String s = false ? : "2";}

>     } {FAIL}

Test Case: 15.25-syntax-2

> conditional operator has three operands

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 15.25-syntax-2 { conditional operator has three operands } {

>         empty_main T1525s2 {String s = false ? "1" : ;}

>     } {FAIL}

Test Case: 15.25-syntax-3

> conditional operator has three operands

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 15.25-syntax-3 { conditional operator has three operands } {

>         empty_main T1525s3 {String s = false ? "1" "2" ;}

>     } {FAIL}

Test Case: 15.25-syntax-4

> conditional operator has three operands

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 15.25-syntax-4 { conditional operator has three operands } {

>         empty_main T1525s4 {String s = ? "1" : "2" ;}

>     } {FAIL}

Test Case: 15.25-syntax-5

> conditional operator has three operands

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 15.25-syntax-5 { conditional operator has three operands } {

>         empty_main T1525s5 {String s = true "1" : "2" ;}

>     } {FAIL}

Test Case: 15.25-not-boolean-1

> first expression must be boolean type

> Expected 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}

Test Case: 15.25-not-boolean-2

> first expression must be boolean type

> Expected 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}

Test Case: 15.25-not-boolean-3

> first expression must be boolean type

> Expected 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}

Test Case: 15.25-not-boolean-4

> first expression must be boolean type

> Expected 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}

Test Case: 15.25-not-boolean-5

> first expression must be boolean type

> Expected 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}

Test Case: 15.25-not-boolean-6

> first expression must be boolean type

> Expected 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}

Test Case: 15.25-not-boolean-7

> first expression must be boolean type

> Expected 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}

Test Case: 15.25-not-boolean-8

> first expression must be boolean type

> Expected 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}

Test Case: 15.25-not-boolean-9

> first expression must be boolean type

> Expected 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}

Test Case: 15.25-not-boolean-10

> first expression must be boolean type

> Expected 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}

Test Case: 15.25-not-boolean-11

> first expression must be boolean type

> Expected 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}

Test Case: 15.25-operand-type-1

> second and third operands may be boolean

> Expected 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}

Test Case: 15.25-operand-type-2

> second and third operands may be null

> Expected 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}

Test Case: 15.25-operand-type-3

> second or third operands may be null

> Expected 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}

Test Case: 15.25-operand-type-4

> second or third operands may be null

> Expected 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}

Test Case: 15.25-operand-type-void-1

> operand may not be void type

> Expected 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}

Test Case: 15.25-operand-type-void-2

> operand may not be void type

> Expected 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}

Test Case: 15.25-operand-type-void-3

> operand may not be void type

> Expected 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}

Test Case: 15.25-operand-type-void-4

> operand may not be void type

> Expected 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}

Test Case: 15.25-operand-type-void-5

> operand may not be void type

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 15.25-operand-type-mismatch-1

> binary numeric promotion is applied to mismatched primitive operand types if no special cases apply

> Expected 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}

Test Case: 15.25-operand-type-mismatch-2

> binary numeric promotion is applied to mismatched primitive operand types if no special cases apply

> Expected 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}

Test Case: 15.25-operand-type-mismatch-3

> binary numeric promotion is applied to mismatched primitive operand types if no special cases apply

> Expected 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}

Test Case: 15.25-operand-type-mismatch-4

> reference operand types must match or they must support assignment conversion

> Expected 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}

Test Case: 15.25-operand-type-mismatch-5

> reference operand types must match or they must support assignment conversion

> Expected 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}

Test Case: 15.25-operand-type-mismatch-6

> primitive and reference types don't mix

> Expected 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}

Test Case: 15.25-operand-type-mismatch-7

> primitive and reference types don't mix

> Expected 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}

Test Case: 15.25-operand-type-mismatch-8

> primitive and reference types don't mix, even in a method invocation

> Expected 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}

Test Case: 15.25-operand-type-mismatch-9

> reference operand types must match or they must support assignment conversion

> Expected 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}

Test Case: 15.25-operand-type-mismatch-10

> reference array types mix iff the component types are assignable

> Expected 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}

Test Case: 15.25-operand-type-mismatch-11

> reference array types mix iff the component types are assignable

> Expected 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}

Test Case: 15.25-error-1

> Check for compiler error optimizing the following conditional operator

> Expected 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}

### 15.26.2

Directory : `tests/jls/expressions/assignment-operators/compound-assignment-operators`

- 15.26.2-string-1
- 15.26.2-string-2
- 15.26.2-string-3
- 15.26.2-string-4
- 15.26.2-string-5
- 15.26.2-string-6
- 15.26.2-mult-1
- 15.26.2-mult-2
- 15.26.2-mult-3
- 15.26.2-mult-4
- 15.26.2-mult-5
- 15.26.2-mult-6
- 15.26.2-mult-7
- 15.26.2-mult-8
- 15.26.2-mult-9
- 15.26.2-mult-10
- 15.26.2-mult-11
- 15.26.2-mult-12
- 15.26.2-mult-13
- 15.26.2-mult-14
- 15.26.2-div-1
- 15.26.2-div-2
- 15.26.2-div-3
- 15.26.2-div-4
- 15.26.2-div-5
- 15.26.2-div-6
- 15.26.2-div-7
- 15.26.2-div-8
- 15.26.2-div-9
- 15.26.2-div-10
- 15.26.2-div-11
- 15.26.2-div-12
- 15.26.2-div-13
- 15.26.2-div-14
- 15.26.2-div-zero-1
- 15.26.2-div-zero-2
- 15.26.2-div-zero-3
- 15.26.2-div-zero-4
- 15.26.2-div-zero-5
- 15.26.2-mod-1
- 15.26.2-mod-2
- 15.26.2-mod-3
- 15.26.2-mod-4
- 15.26.2-mod-5
- 15.26.2-mod-6
- 15.26.2-mod-7
- 15.26.2-mod-8
- 15.26.2-mod-9
- 15.26.2-mod-10
- 15.26.2-mod-11
- 15.26.2-mod-12
- 15.26.2-mod-13
- 15.26.2-mod-14
- 15.26.2-mod-zero-1
- 15.26.2-mod-zero-2
- 15.26.2-mod-zero-3
- 15.26.2-mod-zero-4
- 15.26.2-mod-zero-5
- 15.26.2-add-1
- 15.26.2-add-2
- 15.26.2-add-3
- 15.26.2-add-4
- 15.26.2-add-5
- 15.26.2-add-6
- 15.26.2-add-7
- 15.26.2-add-8
- 15.26.2-add-9
- 15.26.2-add-10
- 15.26.2-add-11
- 15.26.2-add-12
- 15.26.2-add-13
- 15.26.2-add-14
- 15.26.2-sub-1
- 15.26.2-sub-2
- 15.26.2-sub-3
- 15.26.2-sub-4
- 15.26.2-sub-5
- 15.26.2-sub-6
- 15.26.2-sub-7
- 15.26.2-sub-8
- 15.26.2-sub-9
- 15.26.2-sub-10
- 15.26.2-sub-11
- 15.26.2-sub-12
- 15.26.2-sub-13
- 15.26.2-sub-14
- 15.26.2-left-shift-1
- 15.26.2-left-shift-2
- 15.26.2-left-shift-3
- 15.26.2-left-shift-4
- 15.26.2-left-shift-5
- 15.26.2-left-shift-6
- 15.26.2-left-shift-7
- 15.26.2-left-shift-8
- 15.26.2-left-shift-9
- 15.26.2-left-shift-10
- 15.26.2-left-shift-11
- 15.26.2-left-shift-12
- 15.26.2-left-shift-13
- 15.26.2-left-shift-14
- 15.26.2-left-shift-15
- 15.26.2-left-shift-16
- 15.26.2-left-shift-17
- 15.26.2-left-shift-18
- 15.26.2-signed-right-shift-1
- 15.26.2-signed-right-shift-2
- 15.26.2-signed-right-shift-3
- 15.26.2-signed-right-shift-4
- 15.26.2-signed-right-shift-5
- 15.26.2-signed-right-shift-6
- 15.26.2-signed-right-shift-7
- 15.26.2-signed-right-shift-8
- 15.26.2-signed-right-shift-9
- 15.26.2-signed-right-shift-10
- 15.26.2-signed-right-shift-11
- 15.26.2-signed-right-shift-12
- 15.26.2-signed-right-shift-13
- 15.26.2-signed-right-shift-14
- 15.26.2-signed-right-shift-15
- 15.26.2-signed-right-shift-16
- 15.26.2-signed-right-shift-17
- 15.26.2-signed-right-shift-18
- 15.26.2-unsigned-right-shift-1
- 15.26.2-unsigned-right-shift-2
- 15.26.2-unsigned-right-shift-3
- 15.26.2-unsigned-right-shift-4
- 15.26.2-unsigned-right-shift-5
- 15.26.2-unsigned-right-shift-6
- 15.26.2-unsigned-right-shift-7
- 15.26.2-unsigned-right-shift-8
- 15.26.2-unsigned-right-shift-9
- 15.26.2-unsigned-right-shift-10
- 15.26.2-unsigned-right-shift-11
- 15.26.2-unsigned-right-shift-12
- 15.26.2-unsigned-right-shift-13
- 15.26.2-unsigned-right-shift-14
- 15.26.2-unsigned-right-shift-15
- 15.26.2-unsigned-right-shift-16
- 15.26.2-unsigned-right-shift-17
- 15.26.2-unsigned-right-shift-18
- 15.26.2-and-1
- 15.26.2-and-2
- 15.26.2-and-3
- 15.26.2-and-4
- 15.26.2-and-5
- 15.26.2-and-6
- 15.26.2-and-7
- 15.26.2-and-8
- 15.26.2-and-9
- 15.26.2-and-10
- 15.26.2-and-11
- 15.26.2-and-12
- 15.26.2-and-13
- 15.26.2-and-14
- 15.26.2-and-15
- 15.26.2-and-16
- 15.26.2-and-17
- 15.26.2-and-18
- 15.26.2-xor-1
- 15.26.2-xor-2
- 15.26.2-xor-3
- 15.26.2-xor-4
- 15.26.2-xor-5
- 15.26.2-xor-6
- 15.26.2-xor-7
- 15.26.2-xor-8
- 15.26.2-xor-9
- 15.26.2-xor-10
- 15.26.2-xor-11
- 15.26.2-xor-12
- 15.26.2-xor-13
- 15.26.2-xor-14
- 15.26.2-xor-15
- 15.26.2-xor-16
- 15.26.2-xor-17
- 15.26.2-xor-18
- 15.26.2-or-1
- 15.26.2-or-2
- 15.26.2-or-3
- 15.26.2-or-4
- 15.26.2-or-5
- 15.26.2-or-6
- 15.26.2-or-7
- 15.26.2-or-8
- 15.26.2-or-9
- 15.26.2-or-10
- 15.26.2-or-11
- 15.26.2-or-12
- 15.26.2-or-13
- 15.26.2-or-14
- 15.26.2-or-15
- 15.26.2-or-16
- 15.26.2-or-17
- 15.26.2-or-18
- 15.26.2-variable-1
- 15.26.2-variable-2
- 15.26.2-variable-3
- 15.26.2-variable-4
- 15.26.2-variable-5
- 15.26.2-variable-6
- 15.26.2-variable-7
- 15.26.2-variable-8
- 15.26.2-variable-9
- 15.26.2-variable-10
- 15.26.2-variable-11
- 15.26.2-variable-12
- 15.26.2-variable-13
- 15.26.2-variable-14
- 15.26.2-variable-15
- 15.26.2-variable-16
- 15.26.2-variable-17
- 15.26.2-variable-18
- 15.26.2-variable-19
- 15.26.2-variable-20
- 15.26.2-variable-21
- 15.26.2-variable-22
- 15.26.2-variable-23
- 15.26.2-variable-24
- 15.26.2-variable-25
- 15.26.2-variable-26
- 15.26.2-variable-27
- 15.26.2-variable-28
- 15.26.2-variable-29
- 15.26.2-associative-1

Test Case: 15.26.2-string-1

> String += null is valid

> Expected 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}

Test Case: 15.26.2-string-2

> String += void method is invalid

> Expected 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}

Test Case: 15.26.2-string-3

> left-hand side of += should be String

> Expected 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}

Test Case: 15.26.2-string-4

> left-hand side of += should be String

> Expected 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 Case: 15.26.2-string-5

> test String += when right side is not String, jikes bug 3066

> Expected 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 Case: 15.26.2-string-6

> test String += when right side is not String, jikes bug 3066

> Expected 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 Case: 15.26.2-mult-1

> test legal identity *= assignments

> Expected 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 Case: 15.26.2-mult-2

> test illegal *= assignments: boolean argument

> Expected 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 Case: 15.26.2-mult-3

> test illegal *= assignments: void argument

> Expected 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 Case: 15.26.2-mult-4

> test illegal *= assignments: Object argument

> Expected 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 Case: 15.26.2-mult-5

> test illegal *= assignments: String argument

> Expected 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 Case: 15.26.2-mult-6

> test illegal *= assignments: null argument

> Expected 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 Case: 15.26.2-mult-7

> test illegal *= assignments: Object variable

> Expected 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 Case: 15.26.2-mult-8

> test illegal *= assignments: String variable

> Expected 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 Case: 15.26.2-mult-9

> test illegal *= assignments: null variable

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 15.26.2-mult-9 { test illegal *= assignments: null variable } {

>         empty_main T15262mult9 {
>     	null *= 1;
>         }

>     } {FAIL}

Test Case: 15.26.2-mult-10

> test illegal *= assignments: boolean variable

> Expected 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 Case: 15.26.2-mult-11

> test illegal *= assignments: non-variable

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 15.26.2-mult-11 { test illegal *= assignments: non-variable } {

>         empty_main T15262mult11 {
>     	1 *= 1;
>         }

>     } {FAIL}

Test Case: 15.26.2-mult-12

> test illegal *= assignments: parenthesized expressions can now be variables

> Expected 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 Case: 15.26.2-mult-13

> test widening *= assignments

> Expected 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 Case: 15.26.2-mult-14

> test narrowing *= assignments

> Expected 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 Case: 15.26.2-div-1

> test legal identity /= assignments

> Expected 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 Case: 15.26.2-div-2

> test illegal /= assignments: boolean argument

> Expected 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 Case: 15.26.2-div-3

> test illegal /= assignments: void argument

> Expected 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 Case: 15.26.2-div-4

> test illegal /= assignments: Object argument

> Expected 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 Case: 15.26.2-div-5

> test illegal /= assignments: String argument

> Expected 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 Case: 15.26.2-div-6

> test illegal /= assignments: null argument

> Expected 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 Case: 15.26.2-div-7

> test illegal /= assignments: Object variable

> Expected 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 Case: 15.26.2-div-8

> test illegal /= assignments: String variable

> Expected 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 Case: 15.26.2-div-9

> test illegal /= assignments: null variable

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 15.26.2-div-9 { test illegal /= assignments: null variable } {

>         empty_main T15262div9 {
>     	null /= 1;
>         }

>     } {FAIL}

Test Case: 15.26.2-div-10

> test illegal /= assignments: boolean variable

> Expected 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 Case: 15.26.2-div-11

> test illegal /= assignments: non-variable

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 15.26.2-div-11 { test illegal /= assignments: non-variable } {

>         empty_main T15262div11 {
>     	1 /= 1;
>         }

>     } {FAIL}

Test Case: 15.26.2-div-12

> test illegal /= assignments: parenthesized expressions can now be variables

> Expected 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 Case: 15.26.2-div-13

> test widening /= assignments

> Expected 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 Case: 15.26.2-div-14

> test narrowing /= assignments

> Expected 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 Case: 15.26.2-div-zero-1

> test integer /= by integer 0 (warning recommended)

> Expected 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 Case: 15.26.2-div-zero-2

> test integer /= by integer 0 (warning recommended)

> Expected 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 Case: 15.26.2-div-zero-3

> test integer /= by floating 0 (no warning needed)

> Expected 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 Case: 15.26.2-div-zero-4

> test floating /= by integer 0 (no warning needed)

> Expected 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 Case: 15.26.2-div-zero-5

> test floating /= by floating 0 (no warning needed)

> Expected 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 Case: 15.26.2-mod-1

> test legal identity %= assignments

> Expected 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 Case: 15.26.2-mod-2

> test illegal %= assignments: boolean argument

> Expected 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 Case: 15.26.2-mod-3

> test illegal %= assignments: void argument

> Expected 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 Case: 15.26.2-mod-4

> test illegal %= assignments: Object argument

> Expected 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 Case: 15.26.2-mod-5

> test illegal %= assignments: String argument

> Expected 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 Case: 15.26.2-mod-6

> test illegal %= assignments: null argument

> Expected 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 Case: 15.26.2-mod-7

> test illegal %= assignments: Object variable

> Expected 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 Case: 15.26.2-mod-8

> test illegal %= assignments: String variable

> Expected 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 Case: 15.26.2-mod-9

> test illegal %= assignments: null variable

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 15.26.2-mod-9 { test illegal %= assignments: null variable } {

>         empty_main T15262mod9 {
>     	null %= 1;
>         }

>     } {FAIL}

Test Case: 15.26.2-mod-10

> test illegal %= assignments: boolean variable

> Expected 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 Case: 15.26.2-mod-11

> test illegal %= assignments: non-variable

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 15.26.2-mod-11 { test illegal %= assignments: non-variable } {

>         empty_main T15262mod11 {
>     	1 %= 1;
>         }

>     } {FAIL}

Test Case: 15.26.2-mod-12

> test illegal %= assignments: parenthesized expressions can now be variables

> Expected 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 Case: 15.26.2-mod-13

> test widening %= assignments

> Expected 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 Case: 15.26.2-mod-14

> test narrowing %= assignments

> Expected 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 Case: 15.26.2-mod-zero-1

> test integer %= by integer 0 (warning recommended)

> Expected 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 Case: 15.26.2-mod-zero-2

> test integer %= by integer 0 (warning recommended)

> Expected 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 Case: 15.26.2-mod-zero-3

> test integer %= by floating 0 (no warning needed)

> Expected 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 Case: 15.26.2-mod-zero-4

> test floating %= by integer 0 (no warning needed)

> Expected 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 Case: 15.26.2-mod-zero-5

> test floating %= by floating 0 (no warning needed)

> Expected 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 Case: 15.26.2-add-1

> test legal identity += assignments

> Expected 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 Case: 15.26.2-add-2

> test illegal += assignments: boolean argument

> Expected 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 Case: 15.26.2-add-3

> test illegal += assignments: void argument

> Expected 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 Case: 15.26.2-add-4

> test illegal += assignments: Object argument

> Expected 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 Case: 15.26.2-add-5

> test illegal += assignments: String argument

> Expected 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 Case: 15.26.2-add-6

> test illegal += assignments: null argument

> Expected 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 Case: 15.26.2-add-7

> test illegal += assignments: Object variable

> Expected 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}

Test Case: 15.26.2-add-8

> special case: test legal += assignments: String variable

> Expected 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 Case: 15.26.2-add-9

> test illegal += assignments: null variable

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 15.26.2-add-9 { test illegal += assignments: null variable } {

>         empty_main T15262add9 {
>     	null += 1;
>         }

>     } {FAIL}

Test Case: 15.26.2-add-10

> test illegal += assignments: boolean variable

> Expected 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 Case: 15.26.2-add-11

> test illegal += assignments: non-variable

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 15.26.2-add-11 { test illegal += assignments: non-variable } {

>         empty_main T15262add11 {
>     	1 += 1;
>         }

>     } {FAIL}

Test Case: 15.26.2-add-12

> test illegal += assignments: parenthesized expressions can now be variables

> Expected 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 Case: 15.26.2-add-13

> test widening += assignments

> Expected 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 Case: 15.26.2-add-14

> test narrowing += assignments

> Expected 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 Case: 15.26.2-sub-1

> test legal identity -= assignments

> Expected 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 Case: 15.26.2-sub-2

> test illegal -= assignments: boolean argument

> Expected 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 Case: 15.26.2-sub-3

> test illegal -= assignments: void argument

> Expected 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 Case: 15.26.2-sub-4

> test illegal -= assignments: Object argument

> Expected 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 Case: 15.26.2-sub-5

> test illegal -= assignments: String argument

> Expected 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 Case: 15.26.2-sub-6

> test illegal -= assignments: null argument

> Expected 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 Case: 15.26.2-sub-7

> test illegal -= assignments: Object variable

> Expected 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 Case: 15.26.2-sub-8

> test illegal -= assignments: String variable

> Expected 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 Case: 15.26.2-sub-9

> test illegal -= assignments: null variable

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 15.26.2-sub-9 { test illegal -= assignments: null variable } {

>         empty_main T15262sub9 {
>     	null -= 1;
>         }

>     } {FAIL}

Test Case: 15.26.2-sub-10

> test illegal -= assignments: boolean variable

> Expected 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 Case: 15.26.2-sub-11

> test illegal -= assignments: non-variable

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 15.26.2-sub-11 { test illegal -= assignments: non-variable } {

>         empty_main T15262sub11 {
>     	1 -= 1;
>         }

>     } {FAIL}

Test Case: 15.26.2-sub-12

> test illegal -= assignments: parenthesized expressions can now be variables

> Expected 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 Case: 15.26.2-sub-13

> test widening -= assignments

> Expected 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 Case: 15.26.2-sub-14

> test narrowing -= assignments

> Expected 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 Case: 15.26.2-left-shift-1

> test legal identity <<= assignments

> Expected 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 Case: 15.26.2-left-shift-2

> test illegal <<= assignments: boolean argument

> Expected 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 Case: 15.26.2-left-shift-3

> test illegal <<= assignments: void argument

> Expected 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 Case: 15.26.2-left-shift-4

> test illegal <<= assignments: Object argument

> Expected 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 Case: 15.26.2-left-shift-5

> test illegal <<= assignments: String argument

> Expected 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 Case: 15.26.2-left-shift-6

> test illegal <<= assignments: null argument

> Expected 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 Case: 15.26.2-left-shift-7

> test illegal <<= assignments: Object variable

> Expected 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 Case: 15.26.2-left-shift-8

> test illegal <<= assignments: String variable

> Expected 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 Case: 15.26.2-left-shift-9

> test illegal <<= assignments: null variable

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 15.26.2-left-shift-9 { test illegal <<= assignments: null variable } {

>         empty_main T15262ls9 {
>     	null <<= 1;
>         }

>     } {FAIL}

Test Case: 15.26.2-left-shift-10

> test illegal <<= assignments: boolean variable

> Expected 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 Case: 15.26.2-left-shift-11

> test illegal <<= assignments: non-variable

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 15.26.2-left-shift-11 { test illegal <<= assignments: non-variable } {

>         empty_main T15262ls11 {
>     	1 <<= 1;
>         }

>     } {FAIL}

Test Case: 15.26.2-left-shift-12

> test illegal <<= assignments: parenthesized expressions can now be variables

> Expected 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 Case: 15.26.2-left-shift-13

> test widening <<= assignments

> Expected 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 Case: 15.26.2-left-shift-14

> test narrowing <<= assignments

> Expected 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 Case: 15.26.2-left-shift-15

> test illegal <<= assignments: float argument

> Expected 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 Case: 15.26.2-left-shift-16

> test illegal <<= assignments: double argument

> Expected 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 Case: 15.26.2-left-shift-17

> test illegal <<= assignments: float variable

> Expected 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 Case: 15.26.2-left-shift-18

> test illegal <<= assignments: double variable

> Expected 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 Case: 15.26.2-signed-right-shift-1

> test legal identity >>= assignments

> Expected 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 Case: 15.26.2-signed-right-shift-2

> test illegal >>= assignments: boolean argument

> Expected 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 Case: 15.26.2-signed-right-shift-3

> test illegal >>= assignments: void argument

> Expected 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 Case: 15.26.2-signed-right-shift-4

> test illegal >>= assignments: Object argument

> Expected 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 Case: 15.26.2-signed-right-shift-5

> test illegal >>= assignments: String argument

> Expected 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 Case: 15.26.2-signed-right-shift-6

> test illegal >>= assignments: null argument

> Expected 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 Case: 15.26.2-signed-right-shift-7

> test illegal >>= assignments: Object variable

> Expected 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 Case: 15.26.2-signed-right-shift-8

> test illegal >>= assignments: String variable

> Expected 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 Case: 15.26.2-signed-right-shift-9

> test illegal >>= assignments: null variable

> Expected 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 Case: 15.26.2-signed-right-shift-10

> test illegal >>= assignments: boolean variable

> Expected 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 Case: 15.26.2-signed-right-shift-11

> test illegal >>= assignments: non-variable

> Expected 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 Case: 15.26.2-signed-right-shift-12

> test illegal >>= assignments: parenthesized expressions can now be variables

> Expected 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 Case: 15.26.2-signed-right-shift-13

> test widening >>= assignments

> Expected 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 Case: 15.26.2-signed-right-shift-14

> test narrowing >>= assignments

> Expected 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 Case: 15.26.2-signed-right-shift-15

> test illegal >>= assignments: float argument

> Expected 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 Case: 15.26.2-signed-right-shift-16

> test illegal >>= assignments: double argument

> Expected 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 Case: 15.26.2-signed-right-shift-17

> test illegal >>= assignments: float variable

> Expected 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 Case: 15.26.2-signed-right-shift-18

> test illegal >>= assignments: double variable

> Expected 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 Case: 15.26.2-unsigned-right-shift-1

> test legal identity >>>= assignments

> Expected 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 Case: 15.26.2-unsigned-right-shift-2

> test illegal >>>= assignments: boolean argument

> Expected 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 Case: 15.26.2-unsigned-right-shift-3

> test illegal >>>= assignments: void argument

> Expected 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 Case: 15.26.2-unsigned-right-shift-4

> test illegal >>>= assignments: Object argument

> Expected 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 Case: 15.26.2-unsigned-right-shift-5

> test illegal >>>= assignments: String argument

> Expected 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 Case: 15.26.2-unsigned-right-shift-6

> test illegal >>>= assignments: null argument

> Expected 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 Case: 15.26.2-unsigned-right-shift-7

> test illegal >>>= assignments: Object variable

> Expected 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 Case: 15.26.2-unsigned-right-shift-8

> test illegal >>>= assignments: String variable

> Expected 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 Case: 15.26.2-unsigned-right-shift-9

> test illegal >>>= assignments: null variable

> Expected 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 Case: 15.26.2-unsigned-right-shift-10

> test illegal >>>= assignments: boolean variable

> Expected 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 Case: 15.26.2-unsigned-right-shift-11

> test illegal >>>= assignments: non-variable

> Expected 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 Case: 15.26.2-unsigned-right-shift-12

> test illegal >>>= assignments: parenthesized expressions can now be variables

> Expected 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 Case: 15.26.2-unsigned-right-shift-13

> test widening >>>= assignments

> Expected 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 Case: 15.26.2-unsigned-right-shift-14

> test narrowing >>>= assignments

> Expected 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 Case: 15.26.2-unsigned-right-shift-15

> test illegal >>>= assignments: float argument

> Expected 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 Case: 15.26.2-unsigned-right-shift-16

> test illegal >>>= assignments: double argument

> Expected 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 Case: 15.26.2-unsigned-right-shift-17

> test illegal >>>= assignments: float variable

> Expected 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 Case: 15.26.2-unsigned-right-shift-18

> test illegal >>>= assignments: double variable

> Expected 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 Case: 15.26.2-and-1

> test legal identity &= assignments

> Expected 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 Case: 15.26.2-and-2

> test illegal &= assignments: mix int and boolean

> Expected 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 Case: 15.26.2-and-3

> test illegal &= assignments: void argument

> Expected 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 Case: 15.26.2-and-4

> test illegal &= assignments: Object argument

> Expected 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 Case: 15.26.2-and-5

> test illegal &= assignments: String argument

> Expected 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 Case: 15.26.2-and-6

> test illegal &= assignments: null argument

> Expected 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 Case: 15.26.2-and-7

> test illegal &= assignments: Object variable

> Expected 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 Case: 15.26.2-and-8

> test illegal &= assignments: String variable

> Expected 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 Case: 15.26.2-and-9

> test illegal &= assignments: null variable

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 15.26.2-and-9 { test illegal &= assignments: null variable } {

>         empty_main T15262and9 {
>     	null &= 1;
>         }

>     } {FAIL}

Test Case: 15.26.2-and-10

> test illegal &= assignments: mix int and boolean

> Expected 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 Case: 15.26.2-and-11

> test illegal &= assignments: non-variable

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 15.26.2-and-11 { test illegal &= assignments: non-variable } {

>         empty_main T15262and11 {
>     	1 &= 1;
>         }

>     } {FAIL}

Test Case: 15.26.2-and-12

> test illegal &= assignments: parenthesized expressions can now be variables

> Expected 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 Case: 15.26.2-and-13

> test widening &= assignments

> Expected 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 Case: 15.26.2-and-14

> test narrowing &= assignments

> Expected 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 Case: 15.26.2-and-15

> test illegal &= assignments: float argument

> Expected 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 Case: 15.26.2-and-16

> test illegal &= assignments: double argument

> Expected 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 Case: 15.26.2-and-17

> test illegal &= assignments: float variable

> Expected 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 Case: 15.26.2-and-18

> test illegal &= assignments: double variable

> Expected 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 Case: 15.26.2-xor-1

> test legal identity ^= assignments

> Expected 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 Case: 15.26.2-xor-2

> test illegal ^= assignments: mix int and boolean

> Expected 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 Case: 15.26.2-xor-3

> test illegal ^= assignments: void argument

> Expected 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 Case: 15.26.2-xor-4

> test illegal ^= assignments: Object argument

> Expected 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 Case: 15.26.2-xor-5

> test illegal ^= assignments: String argument

> Expected 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 Case: 15.26.2-xor-6

> test illegal ^= assignments: null argument

> Expected 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 Case: 15.26.2-xor-7

> test illegal ^= assignments: Object variable

> Expected 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 Case: 15.26.2-xor-8

> test illegal ^= assignments: String variable

> Expected 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 Case: 15.26.2-xor-9

> test illegal ^= assignments: null variable

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 15.26.2-xor-9 { test illegal ^= assignments: null variable } {

>         empty_main T15262xor9 {
>     	null ^= 1;
>         }

>     } {FAIL}

Test Case: 15.26.2-xor-10

> test illegal ^= assignments: mix int and boolean

> Expected 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 Case: 15.26.2-xor-11

> test illegal ^= assignments: non-variable

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 15.26.2-xor-11 { test illegal ^= assignments: non-variable } {

>         empty_main T15262xor11 {
>     	1 ^= 1;
>         }

>     } {FAIL}

Test Case: 15.26.2-xor-12

> test illegal ^= assignments: parenthesized expressions can now be variables

> Expected 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 Case: 15.26.2-xor-13

> test widening ^= assignments

> Expected 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 Case: 15.26.2-xor-14

> test narrowing ^= assignments

> Expected 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 Case: 15.26.2-xor-15

> test illegal ^= assignments: float argument

> Expected 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 Case: 15.26.2-xor-16

> test illegal ^= assignments: double argument

> Expected 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 Case: 15.26.2-xor-17

> test illegal ^= assignments: float variable

> Expected 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 Case: 15.26.2-xor-18

> test illegal ^= assignments: double variable

> Expected 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 Case: 15.26.2-or-1

> test legal identity |= assignments

> Expected 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 Case: 15.26.2-or-2

> test illegal |= assignments: mix int and boolean

> Expected 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 Case: 15.26.2-or-3

> test illegal |= assignments: void argument

> Expected 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 Case: 15.26.2-or-4

> test illegal |= assignments: Object argument

> Expected 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 Case: 15.26.2-or-5

> test illegal |= assignments: String argument

> Expected 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 Case: 15.26.2-or-6

> test illegal |= assignments: null argument

> Expected 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 Case: 15.26.2-or-7

> test illegal |= assignments: Object variable

> Expected 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 Case: 15.26.2-or-8

> test illegal |= assignments: String variable

> Expected 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 Case: 15.26.2-or-9

> test illegal |= assignments: null variable

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 15.26.2-or-9 { test illegal |= assignments: null variable } {

>         empty_main T15262or9 {
>     	null |= 1;
>         }

>     } {FAIL}

Test Case: 15.26.2-or-10

> test illegal |= assignments: mix int and boolean

> Expected 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 Case: 15.26.2-or-11

> test illegal |= assignments: non-variable

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 15.26.2-or-11 { test illegal |= assignments: non-variable } {

>         empty_main T15262or11 {
>     	1 |= 1;
>         }

>     } {FAIL}

Test Case: 15.26.2-or-12

> test illegal |= assignments: parenthesized expressions can now be variables

> Expected 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 Case: 15.26.2-or-13

> test widening |= assignments

> Expected 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 Case: 15.26.2-or-14

> test narrowing |= assignments

> Expected 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 Case: 15.26.2-or-15

> test illegal |= assignments: float argument

> Expected 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 Case: 15.26.2-or-16

> test illegal |= assignments: double argument

> Expected 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 Case: 15.26.2-or-17

> test illegal |= assignments: float variable

> Expected 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 Case: 15.26.2-or-18

> test illegal |= assignments: double variable

> Expected 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}

Test Case: 15.26.2-variable-1

> the left-hand side must be a variable

> Expected 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}

Test Case: 15.26.2-variable-2

> the left-hand side must be a variable

> Expected 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}

Test Case: 15.26.2-variable-3

> the left-hand side must be a variable

> Expected 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}

Test Case: 15.26.2-variable-4

> the left-hand side must be a variable

> Expected 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}

Test Case: 15.26.2-variable-5

> the left-hand side must be a variable

> Expected 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}

Test Case: 15.26.2-variable-6

> the left-hand side must be a variable

> Expected 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}

Test Case: 15.26.2-variable-7

> the left-hand side must be a variable

> Expected 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}

Test Case: 15.26.2-variable-8

> the left-hand side must be a variable

> Expected 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}

Test Case: 15.26.2-variable-9

> the left-hand side must be a variable

> Expected 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}

Test Case: 15.26.2-variable-10

> the left-hand side must be a variable

> Expected 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}

Test Case: 15.26.2-variable-11

> the left-hand side must be a variable

> Expected 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}

Test Case: 15.26.2-variable-12

> the left-hand side must be a variable

> Expected 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}

Test Case: 15.26.2-variable-13

> the left-hand side must be a variable

> Expected 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}

Test Case: 15.26.2-variable-14

> the left-hand side must be a variable

> Expected 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}

Test Case: 15.26.2-variable-15

> the left-hand side must be a variable

> Expected 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}

Test Case: 15.26.2-variable-16

> the left-hand side must be a variable

> Expected 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}

Test Case: 15.26.2-variable-17

> the left-hand side must be a variable

> Expected 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}

Test Case: 15.26.2-variable-18

> the left-hand side must be a variable

> Expected 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}

Test Case: 15.26.2-variable-19

> the left-hand side must be a variable

> Expected 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}

Test Case: 15.26.2-variable-20

> the left-hand side must be a variable

> Expected 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}

Test Case: 15.26.2-variable-21

> the left-hand side must be a variable

> Expected 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}

Test Case: 15.26.2-variable-22

> the left-hand side must be a variable

> Expected 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}

Test Case: 15.26.2-variable-23

> the left-hand side must be a variable

> Expected 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}

Test Case: 15.26.2-variable-24

> the left-hand side must be a variable

> Expected 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}

Test Case: 15.26.2-variable-25

> the left-hand side must be a variable

> Expected 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}

Test Case: 15.26.2-variable-26

> the left-hand side must be a variable

> Expected 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}

Test Case: 15.26.2-variable-27

> the left-hand side must be a variable

> Expected 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}

Test Case: 15.26.2-variable-28

> the left-hand side must be a variable

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 15.26.2-variable-28 { the left-hand side must be a variable } {

>         empty_main T15262var28 {
>             "" += "oops";
>         }

>     } {FAIL}

Test Case: 15.26.2-variable-29

> the left-hand side must be a variable

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 15.26.2-variable-29 { the left-hand side must be a variable } {

>         empty_main T15262var29 {
>             ("") += "oops";
>         }

>     } {FAIL}

Test Case: 15.26.2-associative-1

> assignment is right-associative

> Expected 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}

### 15.28

Directory : `tests/jls/expressions/constant-expression`

- 15.28-primitive-1
- 15.28-primitive-2
- 15.28-primitive-3
- 15.28-primitive-4
- 15.28-primitive-5
- 15.28-primitive-6
- 15.28-primitive-7
- 15.28-primitive-8
- 15.28-primitive-9
- 15.28-primitive-10
- 15.28-primitive-11
- 15.28-primitive-12
- 15.28-primitive-13
- 15.28-primitive-14
- 15.28-primitive-15
- 15.28-primitive-16
- 15.28-primitive-17
- 15.28-simple-name-1
- 15.28-simple-name-2
- 15.28-simple-name-3
- 15.28-simple-name-4
- 15.28-simple-name-5
- 15.28-simple-name-6
- 15.28-simple-name-7
- 15.28-simple-name-8
- 15.28-simple-name-9
- 15.28-nonconst-simple-name-1
- 15.28-nonconst-simple-name-2
- 15.28-nonconst-simple-name-3
- 15.28-nonconst-simple-name-4
- 15.28-nonconst-simple-name-5
- 15.28-nonconst-simple-name-6
- 15.28-nonconst-simple-name-7
- 15.28-uninitialized-simple-name-1
- 15.28-uninitialized-simple-name-2
- 15.28-uninitialized-simple-name-3
- 15.28-uninitialized-simple-name-4
- 15.28-cast-simple-name-1
- 15.28-cast-simple-name-2
- 15.28-cast-simple-name-3
- 15.28-qualified-name-1
- 15.28-qualified-name-2
- 15.28-qualified-name-3
- 15.28-qualified-name-4
- 15.28-qualified-name-5
- 15.28-qualified-name-6
- 15.28-qualified-name-7
- 15.28-qualified-name-8
- 15.28-qualified-name-9
- 15.28-qualified-name-10
- 15.28-string-1
- 15.28-string-2
- 15.28-string-3
- 15.28-string-4
- 15.28-string-5
- 15.28-string-6
- 15.28-string-7
- 15.28-string-8
- 15.28-string-9
- 15.28-string-10
- 15.28-string-11
- 15.28-string-12
- 15.28-string-13
- 15.28-string-14
- 15.28-string-15
- 15.28-string-16
- 15.28-string-17
- 15.28-string-18
- 15.28-string-19
- 15.28-simple-namestr-1
- 15.28-simple-namestr-2
- 15.28-simple-namestr-3
- 15.28-simple-namestr-4
- 15.28-simple-namestr-5
- 15.28-nonconst-simple-namestr-1
- 15.28-nonconst-simple-namestr-2
- 15.28-nonconst-simple-namestr-3
- 15.28-qualified-namestr-1
- 15.28-qualified-namestr-2
- 15.28-qualified-namestr-3
- 15.28-qualified-namestr-4
- 15.28-qualified-namestr-5
- 15.28-qualified-namestr-6
- 15.28-qualified-namestr-7
- 15.28-qualified-namestr-8
- 15.28-qualified-namestr-9
- 15.28-qualified-namestr-10
- 15.28-notstring-1
- 15.28-notstring-2
- 15.28-notstring-3
- 15.28-notstring-4
- 15.28-null-1
- 15.28-null-2
- 15.28-null-3
- 15.28-null-4
- 15.28-null-5
- 15.28-null-6
- 15.28-null-7
- 15.28-example-1
- 15.28-example-2
- 15.28-instanceof-1
- 15.28-instanceof-2
- 15.28-instanceof-3
- 15.28-instanceof-4
- 15.28-instanceof-5
- 15.28-div0-1
- 15.28-div0-2
- 15.28-div0-3
- 15.28-paren-1

Test Case: 15.28-primitive-1

> literals are constant expressions

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 15.28-primitive-1 { literals are constant expressions } {

>         switch_labels T1528p1 int {case 1: case '1':}

>     } {PASS}

Test Case: 15.28-primitive-2

> literals are constant expressions

> Expected 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}

Test Case: 15.28-primitive-3

> casts can form constant expressions

> Expected 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}

Test Case: 15.28-primitive-4

> Unary +, -, ~, ! form constant expressions

> Expected 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}

Test Case: 15.28-primitive-5

> ++ and -- are not constant expressions

> Expected 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}

Test Case: 15.28-primitive-6

> ++ and -- are not constant expressions

> Expected 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}

Test Case: 15.28-primitive-7

> *, /, and % form constant expressions

> Expected 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}

Test Case: 15.28-primitive-8

> + and - form constant expressions

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 15.28-primitive-8 { + and - form constant expressions } {

>         constant_expression T1528p8 {1 + 2 == 3} {1 - 2 == -1}

>     } {PASS}

Test Case: 15.28-primitive-9

> <<, >>, and >>> form constant expressions

> Expected 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}

Test Case: 15.28-primitive-10

> <, <=, >, and >= form constant expressions

> Expected 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}

Test Case: 15.28-primitive-11

> == and != form constant expressions

> Expected 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}

Test Case: 15.28-primitive-12

> bitwise &, ^, and | form constant expressions

> Expected 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}

Test Case: 15.28-primitive-13

> logical &, ^, and | form constant expressions

> Expected 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}

Test Case: 15.28-primitive-14

> && and || form constant expressions

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 15.28-primitive-14 { && and || form constant expressions } {

>         constant_expression T1528p14 {true && true} {true || false}

>     } {PASS}

Test Case: 15.28-primitive-15

> short-circuited portion of && or || must still be constant expressions

> Expected 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}

Test Case: 15.28-primitive-16

> ?: forms a constant expression

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 15.28-primitive-16 { ?: forms a constant expression } {

>         constant_expression T1528p16 {true ? true : false}

>     } {PASS}

Test Case: 15.28-primitive-17

> unused portion of ?: must still be a constant expression

> Expected 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}

Test Case: 15.28-simple-name-1

> a final variable initialized by a constant expression is a constant expression

> Expected 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}

Test Case: 15.28-simple-name-2

> a final variable initialized by a constant expression is a constant expression

> Expected 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}

Test Case: 15.28-simple-name-3

> a final variable initialized by a constant expression is a constant expression

> Expected 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}

Test Case: 15.28-simple-name-4

> a final variable initialized by a constant expression is a constant expression

> Expected 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}

Test Case: 15.28-simple-name-5

> a final variable initialized by a constant expression is a constant expression

> Expected 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}

Test Case: 15.28-simple-name-6

> a final variable initialized by a constant expression is a constant expression

> Expected 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}

Test Case: 15.28-simple-name-7

> a final variable initialized by a final variable that is initialized by constant expression is a constant expression

> Expected 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}

Test Case: 15.28-simple-name-8

> a final variable initialized by a final variable that is initialized by constant expression is a constant expression

> Expected 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}

Test Case: 15.28-simple-name-9

> a final variable initialized by a final variable that is initialized by constant expression is a constant expression

> Expected 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}

Test Case: 15.28-nonconst-simple-name-1

> a non-final variable initialized by a constant expression is not a constant expression

> Expected 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}

Test Case: 15.28-nonconst-simple-name-2

> a final variable initialized by a non-final variable is not a constant expression

> Expected 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}

Test Case: 15.28-nonconst-simple-name-3

> a final variable initialized by a non-constant expression is not a constant expression

> Expected 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}

Test Case: 15.28-nonconst-simple-name-4

> an argument variable with the final modifier is not a constant expression

> Expected 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}

Test Case: 15.28-nonconst-simple-name-5

> a final variable initialized by an argument variable with the final modifier is not a constant expression

> Expected 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}

Test Case: 15.28-nonconst-simple-name-6

> a final variable initialized by a function invocation is not a constant expression

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 15.28-uninitialized-simple-name-1

> a final variable that does not have an initializer is not a constant expression

> Expected 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}

Test Case: 15.28-uninitialized-simple-name-2

> a final variable that does not have an initializer is not a constant expression

> Expected 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}

Test Case: 15.28-uninitialized-simple-name-3

> a final variable that does not have an initializer is not a constant expression

> Expected 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}

Test Case: 15.28-uninitialized-simple-name-4

> a final variable that does not have an initializer is not a constant expression

> Expected 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}

Test Case: 15.28-cast-simple-name-1

> a final variable initialized by a constant expression and then cast to a primitive is a constant expression

> Expected 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}

Test Case: 15.28-cast-simple-name-2

> a final variable initialized by a constant expression and then cast to a primitive is a constant expression

> Expected 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}

Test Case: 15.28-cast-simple-name-3

> any number of casts can be applied to a constant expression

> Expected 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}

Test Case: 15.28-qualified-name-1

> qualified references of final constant fields are constant

> Expected 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}

Test Case: 15.28-qualified-name-2

> qualified references of final constant fields are constant

> Expected 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}

Test Case: 15.28-qualified-name-3

> qualified references of final constant fields are constant

> Expected 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}

Test Case: 15.28-qualified-name-4

> qualified references of final constant fields are constant

> Expected 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}

Test Case: 15.28-qualified-name-5

> qualified references of final constant fields must fit the form TypeName.Identifier

> Expected 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}

Test Case: 15.28-qualified-name-6

> qualified references of final constant fields must fit the form TypeName.Identifier

> Expected 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}

Test Case: 15.28-qualified-name-7

> qualified references of final constant fields must fit the form TypeName.Identifier

> Expected 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}

Test Case: 15.28-qualified-name-8

> qualified references of final constant fields must fit the form TypeName.Identifier

> Expected 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}

Test Case: 15.28-qualified-name-9

> qualified references of final constant fields must fit the form TypeName.Identifier

> Expected 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}

Test Case: 15.28-qualified-name-10

> qualified references of final constant fields must fit the form TypeName.Identifier

> Expected 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}

Test Case: 15.28-string-1

> literals are constant expressions

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 15.28-string-1 { literals are constant expressions } {

>         constant_expression T1528s1 {"" == ""} {"hello, world" == "hello, world"}

>     } {PASS}

Test Case: 15.28-string-2

> literals are constant expressions

> Expected 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}

Test Case: 15.28-string-3

> casts to type String are constant expressions

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 15.28-string-3 { casts to type String are
>             constant expressions } {

>         constant_expression T1528s3 {(String) "" == ""}

>     } {PASS}

Test Case: 15.28-string-4

> casts to primitive types are constant expressions

> Expected 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}

Test Case: 15.28-string-5

> Unary +, -, ~, ! form constant expressions

> Expected 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}

Test Case: 15.28-string-6

> *, /, and % form constant expressions

> Expected 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}

Test Case: 15.28-string-7

> String + forms constant expressions

> Expected 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}

Test Case: 15.28-string-8

> + and - form constant expressions

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 15.28-string-8 { + and - form constant expressions } {

>         constant_expression T1528s8 {"" + (1 + 2) == "3"}  {"" + (1 - 2) == "-1"}

>     } {PASS}

Test Case: 15.28-string-9

> <<, >>, and >>> form constant expressions

> Expected 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}

Test Case: 15.28-string-10

> <, <=, >, and >= form constant expressions

> Expected 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}

Test Case: 15.28-string-11

> == and != form constant expressions

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 15.28-string-11 { == and != form constant expressions } {

>         constant_expression T1528s11 {"1" == "1"} {"1" != "2"}

>     } {PASS}

Test Case: 15.28-string-12

> bitwise &, ^, and | form constant expressions

> Expected 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}

Test Case: 15.28-string-13

> logical &, ^, and | form constant expressions

> Expected 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}

Test Case: 15.28-string-14

> && and || form constant expressions

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 15.28-string-14 { && and || form constant expressions } {

>         constant_expression T1528s14 {"" + (true && true) == "true"}  {"" + (true || false) == "true"}

>     } {PASS}

Test Case: 15.28-string-15

> ?: forms constant expressions

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 15.28-string-15 { ?: forms constant expressions } {

>         constant_expression T1528s15 {"" + (true ? 1 : 2) == "1"}

>     } {PASS}

Test Case: 15.28-string-16

> ?: forms constant expressions

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test 15.28-string-16 { ?: forms constant expressions } {

>         constant_expression T1528s16 {(true ? "1" : "") == "1"}

>     } {PASS}

Test Case: 15.28-string-17

> ?: forms constant expressions

> Expected 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}

Test Case: 15.28-string-18

> String concatenation form constants

> Expected 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 Case: 15.28-string-19

> test various uses of a constant String expression

> Expected 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}

Test Case: 15.28-simple-namestr-1

> a final variable initialized by a constant expression is a constant expression

> Expected 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}

Test Case: 15.28-simple-namestr-2

> a final variable initialized by a constant expression is a constant expression

> Expected 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}

Test Case: 15.28-simple-namestr-3

> a final variable initialized by a constant expression is a constant expression

> Expected 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}

Test Case: 15.28-simple-namestr-4

> a final variable initialized by a final variable that is initialized by constant expression is a constant expression

> Expected 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 Case: 15.28-simple-namestr-5

> test various uses of a constant String

> Expected 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}

Test Case: 15.28-nonconst-simple-namestr-1

> a non-final variable initialized by a constant expression is not a constant expression

> Expected 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}

Test Case: 15.28-nonconst-simple-namestr-2

> a final variable initialized by a non-final variable is not a constant expression

> Expected 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}

Test Case: 15.28-nonconst-simple-namestr-3

> a final variable initialized by a function invocation is not a constant expression

> Expected 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}

Test Case: 15.28-qualified-namestr-1

> qualified references of final constant fields are constant

> Expected 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}

Test Case: 15.28-qualified-namestr-2

> qualified references of final constant fields are constant

> Expected 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}

Test Case: 15.28-qualified-namestr-3

> qualified references of final constant fields are constant

> Expected 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}

Test Case: 15.28-qualified-namestr-4

> qualified references of final constant fields are constant

> Expected 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}

Test Case: 15.28-qualified-namestr-5

> qualified references of final constant must fit the form TypeName.Identifier

> Expected 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}

Test Case: 15.28-qualified-namestr-6

> qualified references of final constant must fit the form TypeName.Identifier

> Expected 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}

Test Case: 15.28-qualified-namestr-7

> qualified references of final constant must fit the form TypeName.Identifier

> Expected 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}

Test Case: 15.28-qualified-namestr-8

> qualified references of final constant must fit the form TypeName.Identifier

> Expected 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}

Test Case: 15.28-qualified-namestr-9

> qualified references of final constant must fit the form TypeName.Identifier

> Expected 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}

Test Case: 15.28-qualified-namestr-10

> qualified references of final constant must fit the form TypeName.Identifier

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 15.28-notstring-2

> anything other than type String is not a constant expression

> Expected 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}

Test Case: 15.28-notstring-3

> anything other than type String is not a constant expression, casting to String does not help

> Expected 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}

Test Case: 15.28-notstring-4

> anything other than type String is not a constant expression

> Expected 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}

Test Case: 15.28-null-1

> The null literal is NOT a compile-time constant

> Expected 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}

Test Case: 15.28-null-2

> The null literal is NOT a compile-time constant

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 15.28-null-2 { The null literal is NOT a compile-time constant } {

>         constant_expression T1528null2 {null != ""}

>     } {FAIL}

Test Case: 15.28-null-3

> The null literal is NOT a compile-time constant

> Expected 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}

Test Case: 15.28-null-4

> The null literal is NOT a compile-time constant

> Expected 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}

Test Case: 15.28-null-5

> The null literal is NOT a compile-time constant

> Expected 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}

Test Case: 15.28-null-6

> The null literal is NOT a compile-time constant

> Expected 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}

Test Case: 15.28-null-7

> The null literal is NOT a compile-time constant

> Expected 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}

Test Case: 15.28-example-1

> Example constants

> Expected 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}

Test Case: 15.28-example-2

> Example constant

> Expected 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}

Test Case: 15.28-instanceof-1

> The expression argument of instanceof may be constant

> Expected 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}

Test Case: 15.28-instanceof-2

> instanceof does not form a constant expression

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 15.28-instanceof-2 { instanceof does not form a constant expression } {

>         constant_expression T1528i2 {"" instanceof String}

>     } {FAIL}

Test Case: 15.28-instanceof-3

> instanceof does not form a constant expression

> Expected 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}

Test Case: 15.28-instanceof-4

> instanceof does not form a constant expression

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test 15.28-instanceof-4 { instanceof does not form a constant expression } {

>         constant_expression T1528i4 {"" + ("" instanceof String) == "true"}

>     } {FAIL}

Test Case: 15.28-instanceof-5

> use of a constant with instanceof

> Expected 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}

Test Case: 15.28-div0-1

> divide by zero is not a compile time constant because it completes abruptly

> Expected 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}

Test Case: 15.28-div0-2

> divide by zero is not a compile time constant because it completes abruptly

> Expected 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}

Test Case: 15.28-div0-3

> divide by zero is not a compile time constant because it completes abruptly

> Expected 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}

Test Case: 15.28-paren-1

> A parenthesized constant expression is constant

> Expected 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}

### 16

Directory : `tests/jls/definite-assignment`

- 16-static-1
- 16-static-2
- 16-static-3
- 16-instance-1
- 16-instance-2
- 16-instance-3
- 16-instance-4
- 16-instance-5
- 16-instance-6
- 16-instance-7

Test Case: 16-static-1

> A blank final field may only be assigned by simple name

> Expected 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}

Test Case: 16-static-2

> A blank final field may only be assigned by simple name

> Expected 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}

Test Case: 16-static-3

> A blank final field may only be assigned by simple name

> Expected 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}

Test Case: 16-instance-1

> A blank final field may only be assigned by simple name or this.name

> Expected 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}

Test Case: 16-instance-2

> A blank final field may only be assigned by simple name or this.name

> Expected 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}

Test Case: 16-instance-3

> A blank final field may only be assigned by simple name or this.name

> Expected 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}

Test Case: 16-instance-4

> A blank final field may only be assigned by simple name or this.name

> Expected 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}

Test Case: 16-instance-5

> A blank final field may only be assigned by simple name or this.name

> Expected 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}

Test Case: 16-instance-6

> A blank final field may only be assigned by simple name or this.name

> Expected 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}

Test Case: 16-instance-7

> A blank final field may only be assigned by simple name or this.name

> Expected 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}

### 16.1.2

Directory : `tests/jls/definite-assignment/expressions/boolean-conditional-and`

- 16.1.2-definite-assignment-fail-1
- 16.1.2-definite-assignment-fail-2
- 16.1.2-definite-assignment-fail-3
- 16.1.2-definite-assignment-fail-4
- 16.1.2-definite-assignment-fail-5
- 16.1.2-definite-assignment-fail-6
- 16.1.2-definite-assignment-fail-7
- 16.1.2-definite-assignment-pass-1
- 16.1.2-definite-assignment-pass-2
- 16.1.2-definite-assignment-pass-3
- 16.1.2-definite-assignment-pass-4
- 16.1.2-definite-assignment-pass-5
- 16.1.2-definite-assignment-pass-6
- 16.1.2-definite-unassignment-fail-1
- 16.1.2-definite-unassignment-fail-2
- 16.1.2-definite-unassignment-fail-3
- 16.1.2-definite-unassignment-fail-4
- 16.1.2-definite-unassignment-fail-5
- 16.1.2-definite-unassignment-fail-6
- 16.1.2-definite-unassignment-fail-7
- 16.1.2-definite-unassignment-pass-1
- 16.1.2-definite-unassignment-pass-2
- 16.1.2-definite-unassignment-pass-3
- 16.1.2-definite-unassignment-pass-4
- 16.1.2-definite-unassignment-pass-5

Test Case: 16.1.2-definite-assignment-fail-1

> V is DA after a && b when true iff V is DA after b when true

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 16.1.2-definite-assignment-fail-4

> V is DA before a iff V is DA before a && b

> Expected 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}

Test Case: 16.1.2-definite-assignment-fail-5

> V is DA before b iff V is DA after a when true

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 16.1.2-definite-assignment-pass-1

> V is DA after a && b when true iff V is DA after b when true

> Expected 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}

Test Case: 16.1.2-definite-assignment-pass-2

> V is DA after a && b when true iff V is DA after b when true

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 16.1.2-definite-assignment-pass-4

> V is DA before a iff V is DA before a && b

> Expected 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}

Test Case: 16.1.2-definite-assignment-pass-5

> V is DA before b iff V is DA after a when true

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 16.1.2-definite-unassignment-fail-1

> V is DU after a && b when true iff V is DU after b when true

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 16.1.2-definite-unassignment-fail-4

> V is DU before a iff V is DU before a && b

> Expected 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}

Test Case: 16.1.2-definite-unassignment-fail-5

> V is DU before b iff V is DU after a when true

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 16.1.2-definite-unassignment-pass-1

> V is DU after a && b when true iff V is DU after b when true

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 16.1.2-definite-unassignment-pass-3

> V is DU before a iff V is DU before a && b

> Expected 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}

Test Case: 16.1.2-definite-unassignment-pass-4

> V is DU before b iff V is DU after a when true

> Expected 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}

Test Case: 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

> Expected 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}

### 16.1.3

Directory : `tests/jls/definite-assignment/expressions/boolean-conditional-or`

- 16.1.3-definite-assignment-fail-1
- 16.1.3-definite-assignment-fail-2
- 16.1.3-definite-assignment-fail-3
- 16.1.3-definite-assignment-fail-4
- 16.1.3-definite-assignment-fail-5
- 16.1.3-definite-assignment-fail-6
- 16.1.3-definite-assignment-fail-7
- 16.1.3-definite-assignment-pass-1
- 16.1.3-definite-assignment-pass-2
- 16.1.3-definite-assignment-pass-3
- 16.1.3-definite-assignment-pass-4
- 16.1.3-definite-assignment-pass-5
- 16.1.3-definite-assignment-pass-6
- 16.1.3-definite-unassignment-fail-1
- 16.1.3-definite-unassignment-fail-2
- 16.1.3-definite-unassignment-fail-3
- 16.1.3-definite-unassignment-fail-4
- 16.1.3-definite-unassignment-fail-5
- 16.1.3-definite-unassignment-fail-6
- 16.1.3-definite-unassignment-fail-7
- 16.1.3-definite-unassignment-pass-1
- 16.1.3-definite-unassignment-pass-2
- 16.1.3-definite-unassignment-pass-3
- 16.1.3-definite-unassignment-pass-4
- 16.1.3-definite-unassignment-pass-5

Test Case: 16.1.3-definite-assignment-fail-1

> V is DA after a || b when false iff V is DA after b when false

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 16.1.3-definite-assignment-fail-4

> V is DA before a iff V is DA before a || b

> Expected 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}

Test Case: 16.1.3-definite-assignment-fail-5

> V is DA before b iff V is DA after a when false

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 16.1.3-definite-assignment-pass-1

> V is DA after a || b when false iff V is DA after b when false

> Expected 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}

Test Case: 16.1.3-definite-assignment-pass-2

> V is DA after a || b when false iff V is DA after b when false

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 16.1.3-definite-assignment-pass-4

> V is DA before a iff V is DA before a || b

> Expected 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}

Test Case: 16.1.3-definite-assignment-pass-5

> V is DA before b iff V is DA after a when false

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 16.1.3-definite-unassignment-fail-1

> V is DU after a || b when false iff V is DU after b when false

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 16.1.3-definite-unassignment-fail-4

> V is DU before a iff V is DU before a || b

> Expected 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}

Test Case: 16.1.3-definite-unassignment-fail-5

> V is DU before b iff V is DU after a when false

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 16.1.3-definite-unassignment-pass-1

> V is DU after a || b when false iff V is DU after b when false

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 16.1.3-definite-unassignment-pass-3

> V is DU before a iff V is DU before a || b

> Expected 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}

Test Case: 16.1.3-definite-unassignment-pass-4

> V is DU before b iff V is DU after a when false

> Expected 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}

Test Case: 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

> Expected 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}

### 16.1.5

Directory : `tests/jls/definite-assignment/expressions/boolean-conditional-operator`

- 16.1.5-definite-assignment-fail-1
- 16.1.5-definite-assignment-fail-2
- 16.1.5-definite-assignment-fail-3
- 16.1.5-definite-assignment-fail-4
- 16.1.5-definite-assignment-fail-5
- 16.1.5-definite-assignment-fail-6
- 16.1.5-definite-assignment-fail-7
- 16.1.5-definite-assignment-fail-8
- 16.1.5-definite-assignment-fail-9
- 16.1.5-definite-assignment-fail-10
- 16.1.5-definite-assignment-fail-11
- 16.1.5-definite-assignment-fail-12
- 16.1.5-definite-assignment-fail-13
- 16.1.5-definite-assignment-fail-14
- 16.1.5-definite-assignment-pass-1
- 16.1.5-definite-assignment-pass-2
- 16.1.5-definite-assignment-pass-3
- 16.1.5-definite-assignment-pass-4
- 16.1.5-definite-assignment-pass-5
- 16.1.5-definite-assignment-pass-6
- 16.1.5-definite-assignment-pass-7
- 16.1.5-definite-assignment-pass-8
- 16.1.5-definite-assignment-pass-9
- 16.1.5-definite-assignment-pass-10
- 16.1.5-definite-assignment-pass-11
- 16.1.5-definite-assignment-pass-12
- 16.1.5-definite-assignment-pass-13
- 16.1.5-definite-assignment-pass-14
- 16.1.5-definite-assignment-pass-15
- 16.1.5-definite-assignment-pass-16
- 16.1.5-definite-assignment-pass-17
- 16.1.5-definite-assignment-pass-18
- 16.1.5-definite-assignment-pass-19
- 16.1.5-definite-assignment-pass-20
- 16.1.5-definite-assignment-pass-21
- 16.1.5-definite-assignment-pass-22
- 16.1.5-definite-assignment-pass-23
- 16.1.5-definite-assignment-pass-24
- 16.1.5-definite-assignment-pass-25
- 16.1.5-definite-assignment-pass-26
- 16.1.5-definite-assignment-pass-27
- 16.1.5-definite-assignment-pass-28
- 16.1.5-definite-assignment-pass-29
- 16.1.5-definite-assignment-pass-30
- 16.1.5-definite-assignment-pass-31
- 16.1.5-definite-assignment-pass-32
- 16.1.5-definite-assignment-pass-33
- 16.1.5-definite-assignment-pass-34
- 16.1.5-definite-assignment-pass-35
- 16.1.5-definite-assignment-pass-36
- 16.1.5-definite-unassignment-fail-1
- 16.1.5-definite-unassignment-fail-2
- 16.1.5-definite-unassignment-fail-3
- 16.1.5-definite-unassignment-fail-4
- 16.1.5-definite-unassignment-fail-5
- 16.1.5-definite-unassignment-fail-6
- 16.1.5-definite-unassignment-fail-7
- 16.1.5-definite-unassignment-pass-1
- 16.1.5-definite-unassignment-pass-2
- 16.1.5-definite-unassignment-pass-3
- 16.1.5-definite-unassignment-pass-4
- 16.1.5-definite-unassignment-pass-5
- 16.1.5-definite-unassignment-pass-6
- 16.1.5-definite-unassignment-pass-7
- 16.1.5-not-assignable-1
- 16.1.5-not-assignable-2
- 16.1.5-not-assignable-3
- 16.1.5-not-assignable-4
- 16.1.5-not-assignable-5
- 16.1.5-not-assignable-6
- 16.1.5-not-assignable-7
- 16.1.5-not-assignable-8
- 16.1.5-not-assignable-9
- 16.1.5-not-assignable-10
- 16.1.5-not-assignable-11
- 16.1.5-not-assignable-12

Test Case: 16.1.5-definite-assignment-fail-1

> V is DA before a iff V is DA before boolean a?b:c

> Expected 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}

Test Case: 16.1.5-definite-assignment-fail-2

> V is DA before b iff V is DA after a when true

> Expected 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}

Test Case: 16.1.5-definite-assignment-fail-3

> V is DA before b iff V is DA after a when true

> Expected 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}

Test Case: 16.1.5-definite-assignment-fail-4

> V is DA before c iff V is DA after a when false

> Expected 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}

Test Case: 16.1.5-definite-assignment-fail-5

> V is DA before c iff V is DA after a when false

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 16.1.5-definite-assignment-pass-1

> V is DA before a iff V is DA before boolean a?b:c

> Expected 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}

Test Case: 16.1.5-definite-assignment-pass-2

> V is DA before b iff V is DA after a when true

> Expected 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}

Test Case: 16.1.5-definite-assignment-pass-3

> V is DA before b iff V is DA after a when true

> Expected 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}

Test Case: 16.1.5-definite-assignment-pass-4

> V is DA before b iff V is DA after a when true

> Expected 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}

Test Case: 16.1.5-definite-assignment-pass-5

> V is DA before b iff V is DA after a when true

> Expected 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}

Test Case: 16.1.5-definite-assignment-pass-6

> V is DA before c iff V is DA after a when false

> Expected 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}

Test Case: 16.1.5-definite-assignment-pass-7

> V is DA before c iff V is DA after a when false

> Expected 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}

Test Case: 16.1.5-definite-assignment-pass-8

> V is DA before c iff V is DA after a when false

> Expected 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}

Test Case: 16.1.5-definite-assignment-pass-9

> V is DA before c iff V is DA after a when false

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 16.1.5-definite-unassignment-fail-1

> V is DU before a iff V is DU before boolean a?b:c

> Expected 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}

Test Case: 16.1.5-definite-unassignment-fail-2

> V is DU before b iff V is DU after a when true

> Expected 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}

Test Case: 16.1.5-definite-unassignment-fail-3

> V is DU before b iff V is DU after a when true

> Expected 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}

Test Case: 16.1.5-definite-unassignment-fail-4

> V is DU before b iff V is DU after a when true

> Expected 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}

Test Case: 16.1.5-definite-unassignment-fail-5

> V is DU before c iff V is DU after a when false

> Expected 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}

Test Case: 16.1.5-definite-unassignment-fail-6

> V is DU before c iff V is DU after a when false

> Expected 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}

Test Case: 16.1.5-definite-unassignment-fail-7

> V is DU before c iff V is DU after a when false

> Expected 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}

Test Case: 16.1.5-definite-unassignment-pass-1

> V is DU before a iff V is DU before boolean a?b:c

> Expected 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}

Test Case: 16.1.5-definite-unassignment-pass-2

> V is DU before b iff V is DU after a when true

> Expected 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}

Test Case: 16.1.5-definite-unassignment-pass-3

> V is DU before b iff V is DU after a when true

> Expected 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}

Test Case: 16.1.5-definite-unassignment-pass-4

> V is DU before b iff V is DU after a when true

> Expected 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}

Test Case: 16.1.5-definite-unassignment-pass-5

> V is DU before c iff V is DU after a when false

> Expected 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}

Test Case: 16.1.5-definite-unassignment-pass-6

> V is DU before c iff V is DU after a when false

> Expected 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}

Test Case: 16.1.5-definite-unassignment-pass-7

> V is DU before c iff V is DU after a when false

> Expected 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}

Test Case: 16.1.5-not-assignable-1

> DU only applies to blank finals; initialized fields cannot be assigned

> Expected 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}

Test Case: 16.1.5-not-assignable-2

> DU only applies to blank finals; initialized fields cannot be assigned

> Expected 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}

Test Case: 16.1.5-not-assignable-3

> DU only applies to blank finals; initialized fields cannot be assigned

> Expected 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}

Test Case: 16.1.5-not-assignable-4

> DU only applies to blank finals; initialized fields cannot be assigned

> Expected 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}

Test Case: 16.1.5-not-assignable-5

> DU only applies to blank finals; initialized fields cannot be assigned

> Expected 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}

Test Case: 16.1.5-not-assignable-6

> DU only applies to blank finals; initialized fields cannot be assigned

> Expected 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}

Test Case: 16.1.5-not-assignable-7

> DU only applies to blank finals; initialized fields cannot be assigned

> Expected 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}

Test Case: 16.1.5-not-assignable-8

> DU only applies to blank finals; initialized fields cannot be assigned

> Expected 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}

Test Case: 16.1.5-not-assignable-9

> Blank final fields cannot be assigned outside constructor/initializer.

> Expected 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}

Test Case: 16.1.5-not-assignable-10

> Blank final fields cannot be assigned outside constructor/initializer.

> Expected 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}

Test Case: 16.1.5-not-assignable-11

> Blank final fields cannot be assigned outside constructor/initializer.

> Expected 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}

Test Case: 16.1.5-not-assignable-12

> 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}

### 16.1.7

Directory : `tests/jls/definite-assignment/expressions/assignment-expressions`

- 16.1.7-compound-assign-1
- 16.1.7-compound-assign-2
- 16.1.7-compound-assign-3
- 16.1.7-compound-assign-4
- 16.1.7-simple-definite-assignment-fail-1
- 16.1.7-simple-definite-assignment-fail-2
- 16.1.7-simple-definite-assignment-fail-3
- 16.1.7-simple-definite-assignment-fail-4
- 16.1.7-simple-definite-assignment-fail-5
- 16.1.7-simple-definite-assignment-fail-6
- 16.1.7-simple-definite-assignment-fail-7
- 16.1.7-simple-definite-assignment-fail-8
- 16.1.7-simple-definite-assignment-fail-9
- 16.1.7-compound-definite-assignment-fail-1
- 16.1.7-compound-definite-assignment-fail-2
- 16.1.7-compound-definite-assignment-fail-3
- 16.1.7-compound-definite-assignment-fail-4
- 16.1.7-compound-definite-assignment-fail-5
- 16.1.7-compound-definite-assignment-fail-6
- 16.1.7-compound-definite-assignment-fail-7
- 16.1.7-compound-definite-assignment-fail-8
- 16.1.7-compound-definite-assignment-fail-9
- 16.1.7-compound-definite-assignment-fail-10
- 16.1.7-compound-definite-assignment-fail-11
- 16.1.7-simple-definite-assignment-pass-1
- 16.1.7-simple-definite-assignment-pass-2
- 16.1.7-simple-definite-assignment-pass-3
- 16.1.7-simple-definite-assignment-pass-4
- 16.1.7-simple-definite-assignment-pass-5
- 16.1.7-simple-definite-assignment-pass-6
- 16.1.7-simple-definite-assignment-pass-7
- 16.1.7-simple-definite-assignment-pass-8
- 16.1.7-simple-definite-assignment-pass-9
- 16.1.7-compound-definite-assignment-pass-1
- 16.1.7-compound-definite-assignment-pass-2
- 16.1.7-compound-definite-assignment-pass-3
- 16.1.7-compound-definite-assignment-pass-4
- 16.1.7-compound-definite-assignment-pass-5
- 16.1.7-compound-definite-assignment-pass-6
- 16.1.7-compound-definite-assignment-pass-7
- 16.1.7-compound-definite-assignment-pass-8
- 16.1.7-compound-definite-assignment-pass-9
- 16.1.7-compound-definite-assignment-pass-10
- 16.1.7-simple-definite-unassignment-fail-1
- 16.1.7-simple-definite-unassignment-fail-2
- 16.1.7-simple-definite-unassignment-fail-3
- 16.1.7-simple-definite-unassignment-fail-4
- 16.1.7-simple-definite-unassignment-fail-5
- 16.1.7-simple-definite-unassignment-fail-6
- 16.1.7-simple-definite-unassignment-fail-7
- 16.1.7-simple-definite-unassignment-fail-8
- 16.1.7-simple-definite-unassignment-fail-9
- 16.1.7-simple-definite-unassignment-fail-10
- 16.1.7-compound-definite-unassignment-fail-1
- 16.1.7-compound-definite-unassignment-fail-2
- 16.1.7-compound-definite-unassignment-fail-3
- 16.1.7-compound-definite-unassignment-fail-4
- 16.1.7-compound-definite-unassignment-fail-5
- 16.1.7-compound-definite-unassignment-fail-6
- 16.1.7-compound-definite-unassignment-fail-7
- 16.1.7-compound-definite-unassignment-fail-8
- 16.1.7-compound-definite-unassignment-fail-9
- 16.1.7-compound-definite-unassignment-fail-10
- 16.1.7-simple-definite-unassignment-pass-1
- 16.1.7-simple-definite-unassignment-pass-2
- 16.1.7-simple-definite-unassignment-pass-3
- 16.1.7-simple-definite-unassignment-pass-4
- 16.1.7-simple-definite-unassignment-pass-5
- 16.1.7-simple-definite-unassignment-pass-6
- 16.1.7-simple-definite-unassignment-pass-7
- 16.1.7-simple-definite-unassignment-pass-8
- 16.1.7-compound-definite-unassignment-pass-1
- 16.1.7-compound-definite-unassignment-pass-2
- 16.1.7-compound-definite-unassignment-pass-3
- 16.1.7-compound-definite-unassignment-pass-4
- 16.1.7-compound-definite-unassignment-pass-5
- 16.1.7-compound-definite-unassignment-pass-6
- 16.1.7-compound-definite-unassignment-pass-7
- 16.1.7-compound-definite-unassignment-pass-8

Test Case: 16.1.7-compound-assign-1

> final variables cannot be assigned with compound assignment

> Expected 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}

Test Case: 16.1.7-compound-assign-2

> final variables cannot be assigned with compound assignment

> Expected 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}

Test Case: 16.1.7-compound-assign-3

> final variables cannot be assigned with compound assignment

> Expected 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}

Test Case: 16.1.7-compound-assign-4

> final variables cannot be assigned with compound assignment

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 16.1.7-simple-definite-assignment-fail-3

> V is DA before the subexpressions of a iff V is DA before a=b

> Expected 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}

Test Case: 16.1.7-simple-definite-assignment-fail-4

> V is DA before the subexpressions of a iff V is DA before a=b

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 16.1.7-simple-definite-assignment-fail-8

> V is DA after boolean a=b when true iff V is DA after a=b

> Expected 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}

Test Case: 16.1.7-simple-definite-assignment-fail-9

> V is DA after boolean a=b when false iff V is DA after a=b

> Expected 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}

Test Case: 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

> 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}

Test Case: 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

> 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}

Test Case: 16.1.7-compound-definite-assignment-fail-3

> V is DA before the subexpressions of a iff V is DA before a=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}

Test Case: 16.1.7-compound-definite-assignment-fail-4

> V is DA before the subexpressions of a iff V is DA before a=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}

Test Case: 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

> 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}

Test Case: 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

> 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}

Test Case: 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

> 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}

Test Case: 16.1.7-compound-definite-assignment-fail-8

> V is DA after boolean a=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}

Test Case: 16.1.7-compound-definite-assignment-fail-9

> V is DA after boolean a=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}

Test Case: 16.1.7-compound-definite-assignment-fail-10

> V must be DA before a if V is a in a=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}

Test Case: 16.1.7-compound-definite-assignment-fail-11

> V must be DA before a if V is a in a=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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 16.1.7-simple-definite-assignment-pass-3

> V is DA before the subexpressions of a iff V is DA before a=b

> Expected 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}

Test Case: 16.1.7-simple-definite-assignment-pass-4

> V is DA before the subexpressions of a iff V is DA before a=b

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 16.1.7-simple-definite-assignment-pass-8

> V is DA after boolean a=b when true iff V is DA after a=b

> Expected 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}

Test Case: 16.1.7-simple-definite-assignment-pass-9

> V is DA after boolean a=b when false iff V is DA after a=b

> Expected 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}

Test Case: 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

> 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}

Test Case: 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

> 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}

Test Case: 16.1.7-compound-definite-assignment-pass-3

> V is DA before the subexpressions of a iff V is DA before a=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}

Test Case: 16.1.7-compound-definite-assignment-pass-4

> V is DA before the subexpressions of a iff V is DA before a=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}

Test Case: 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

> 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}

Test Case: 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

> 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}

Test Case: 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

> 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}

Test Case: 16.1.7-compound-definite-assignment-pass-8

> V is DA after boolean a=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}

Test Case: 16.1.7-compound-definite-assignment-pass-9

> V is DA after boolean a=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}

Test Case: 16.1.7-compound-definite-assignment-pass-10

> V must be DA before a if V is a in a=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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 16.1.7-simple-definite-unassignment-fail-3

> V is DU before the subexpressions of a iff V is DU before a=b

> Expected 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}

Test Case: 16.1.7-simple-definite-unassignment-fail-4

> V is DU before the subexpressions of a iff V is DU before a=b

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 16.1.7-simple-definite-unassignment-fail-8

> V is DU after boolean a=b when true iff V is DU after a=b

> Expected 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}

Test Case: 16.1.7-simple-definite-unassignment-fail-9

> V is DU after boolean a=b when false iff V is DU after a=b

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> 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}

Test Case: 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

> 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}

Test Case: 16.1.7-compound-definite-unassignment-fail-3

> V is DU before the subexpressions of a iff V is DU before a=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}

Test Case: 16.1.7-compound-definite-unassignment-fail-4

> V is DU before the subexpressions of a iff V is DU before a=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}

Test Case: 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

> 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}

Test Case: 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

> 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}

Test Case: 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

> 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}

Test Case: 16.1.7-compound-definite-unassignment-fail-8

> V is DU after boolean a=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}

Test Case: 16.1.7-compound-definite-unassignment-fail-9

> V is DU after boolean a=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}

Test Case: 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

> 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}

Test Case: 16.1.7-simple-definite-unassignment-pass-1

> a blank final V must be DU before a=b if V is a

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 16.1.7-simple-definite-unassignment-pass-3

> V is DU before the subexpressions of a iff V is DU before a=b

> Expected 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}

Test Case: 16.1.7-simple-definite-unassignment-pass-4

> V is DU before the subexpressions of a iff V is DU before a=b

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 16.1.7-simple-definite-unassignment-pass-6

> V is DU after boolean a=b when true iff V is DU after a=b

> Expected 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}

Test Case: 16.1.7-simple-definite-unassignment-pass-7

> V is DU after boolean a=b when false iff V is DU after a=b

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 16.1.7-compound-definite-unassignment-pass-1

> a blank final V must be DU before a=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}

Test Case: 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

> 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}

Test Case: 16.1.7-compound-definite-unassignment-pass-3

> V is DU before the subexpressions of a iff V is DU before a=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}

Test Case: 16.1.7-compound-definite-unassignment-pass-4

> V is DU before the subexpressions of a iff V is DU before a=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}

Test Case: 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

> 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}

Test Case: 16.1.7-compound-definite-unassignment-pass-6

> V is DU after boolean a=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}

Test Case: 16.1.7-compound-definite-unassignment-pass-7

> V is DU after boolean a=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}

Test Case: 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

> 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}

### 16.1.8

Directory : `tests/jls/definite-assignment/expressions/operators-increment-and-decrement`

- 16.1.8-definite-unassign-fail-1
- 16.1.8-definite-unassign-fail-2
- 16.1.8-definite-unassign-fail-3
- 16.1.8-definite-unassign-fail-4
- 16.1.8-definite-unassign-fail-5
- 16.1.8-definite-unassign-fail-6
- 16.1.8-definite-unassign-fail-7
- 16.1.8-definite-unassign-fail-8
- 16.1.8-definite-unassign-fail-9
- 16.1.8-definite-unassign-fail-10
- 16.1.8-definite-unassign-fail-11
- 16.1.8-definite-unassign-fail-12
- 16.1.8-definite-assign-pass-1
- 16.1.8-definite-assign-pass-2
- 16.1.8-definite-assign-pass-3
- 16.1.8-definite-assign-pass-4
- 16.1.8-definite-assign-pass-5
- 16.1.8-definite-assign-pass-6
- 16.1.8-definite-assign-pass-7
- 16.1.8-definite-assign-pass-8
- 16.1.8-definite-assign-pass-9
- 16.1.8-definite-assign-pass-10
- 16.1.8-definite-assign-pass-11
- 16.1.8-definite-assign-pass-12
- 16.1.8-definite-assign-fail-1
- 16.1.8-definite-assign-fail-2
- 16.1.8-definite-assign-fail-3
- 16.1.8-definite-assign-fail-4
- 16.1.8-definite-assign-fail-5
- 16.1.8-definite-assign-fail-6
- 16.1.8-definite-assign-fail-7
- 16.1.8-definite-assign-fail-8
- 16.1.8-definite-assign-fail-9
- 16.1.8-definite-assign-fail-10
- 16.1.8-definite-assign-fail-11
- 16.1.8-definite-assign-fail-12

Test Case: 16.1.8-definite-unassign-fail-1

> ++ and -- cannot be applied to final variables

> Expected 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}

Test Case: 16.1.8-definite-unassign-fail-2

> ++ and -- cannot be applied to final variables

> Expected 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}

Test Case: 16.1.8-definite-unassign-fail-3

> ++ and -- cannot be applied to final variables

> Expected 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}

Test Case: 16.1.8-definite-unassign-fail-4

> ++ and -- cannot be applied to final variables

> Expected 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}

Test Case: 16.1.8-definite-unassign-fail-5

> v is DU after a++ iff v is DU after a

> Expected 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}

Test Case: 16.1.8-definite-unassign-fail-6

> v is DU after a++ iff v is DU after a

> Expected 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}

Test Case: 16.1.8-definite-unassign-fail-7

> v is DU after a++ iff v is DU after a

> Expected 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}

Test Case: 16.1.8-definite-unassign-fail-8

> v is DU after a++ iff v is DU after a

> Expected 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}

Test Case: 16.1.8-definite-unassign-fail-9

> v is DU after a++ iff v is DU after a

> Expected 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}

Test Case: 16.1.8-definite-unassign-fail-10

> v is DU after a++ iff v is DU after a

> Expected 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}

Test Case: 16.1.8-definite-unassign-fail-11

> v is DU after a++ iff v is DU after a

> Expected 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}

Test Case: 16.1.8-definite-unassign-fail-12

> v is DU after a++ iff v is DU after a

> Expected 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}

Test Case: 16.1.8-definite-assign-pass-1

> v is DA after a++ iff a is v or v is DA after a

> Expected 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}

Test Case: 16.1.8-definite-assign-pass-2

> v is DA after a++ iff a is v or v is DA after a

> Expected 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}

Test Case: 16.1.8-definite-assign-pass-3

> v is DA after a++ iff a is v or v is DA after a

> Expected 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}

Test Case: 16.1.8-definite-assign-pass-4

> v is DA after a++ iff a is v or v is DA after a

> Expected 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}

Test Case: 16.1.8-definite-assign-pass-5

> v is DA after a++ iff a is v or v is DA after a

> Expected 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}

Test Case: 16.1.8-definite-assign-pass-6

> v is DA after a++ iff a is v or v is DA after a

> Expected 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}

Test Case: 16.1.8-definite-assign-pass-7

> v is DA after a++ iff a is v or v is DA after a

> Expected 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}

Test Case: 16.1.8-definite-assign-pass-8

> v is DA after a++ iff a is v or v is DA after a

> Expected 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}

Test Case: 16.1.8-definite-assign-pass-9

> v is DA after a++ iff a is v or v is DA after a

> Expected 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}

Test Case: 16.1.8-definite-assign-pass-10

> v is DA after a++ iff a is v or v is DA after a

> Expected 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}

Test Case: 16.1.8-definite-assign-pass-11

> v is DA after a++ iff a is v or v is DA after a

> Expected 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}

Test Case: 16.1.8-definite-assign-pass-12

> v is DA after a++ iff a is v or v is DA after a

> Expected 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}

Test Case: 16.1.8-definite-assign-fail-1

> v is DA before a iff v is DA before a++

> Expected 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}

Test Case: 16.1.8-definite-assign-fail-2

> v is DA before a iff v is DA before a++

> Expected 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}

Test Case: 16.1.8-definite-assign-fail-3

> v is DA before a iff v is DA before a++

> Expected 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}

Test Case: 16.1.8-definite-assign-fail-4

> v is DA before a iff v is DA before a++

> Expected 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}

Test Case: 16.1.8-definite-assign-fail-5

> v is DA before a iff v is DA before a++

> Expected 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}

Test Case: 16.1.8-definite-assign-fail-6

> v is DA before a iff v is DA before a++

> Expected 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}

Test Case: 16.1.8-definite-assign-fail-7

> v is DA before a iff v is DA before a++

> Expected 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}

Test Case: 16.1.8-definite-assign-fail-8

> v is DA before a iff v is DA before a++

> Expected 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}

Test Case: 16.1.8-definite-assign-fail-9

> v is DA before a iff v is DA before a++

> Expected 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}

Test Case: 16.1.8-definite-assign-fail-10

> v is DA before a iff v is DA before a++

> Expected 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}

Test Case: 16.1.8-definite-assign-fail-11

> v is DA before a iff v is DA before a++

> Expected 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}

Test Case: 16.1.8-definite-assign-fail-12

> 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}

### 16.2.3

Directory : `tests/jls/definite-assignment/statements/local-class-declaration-statements`

- 16.2.3-switch-1

Test Case: 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

> Expected 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}

### 16.2.5

Directory : `tests/jls/definite-assignment/statements/labeled-statements`

- 16.2.5-definite-unassign-pass-1
- 16.2.5-definite-unassign-pass-2
- 16.2.5-definite-unassign-pass-3
- 16.2.5-definite-unassign-pass-4
- 16.2.5-definite-unassign-fail-1
- 16.2.5-definite-assign-pass-1
- 16.2.5-definite-assign-pass-2
- 16.2.5-definite-assign-pass-3
- 16.2.5-definite-assign-pass-4
- 16.2.5-definite-assign-fail-1
- 16.2.5-definite-assign-fail-2

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

### 16.2.7

Directory : `tests/jls/definite-assignment/statements/if-statements`

- 16.2.7-final-1
- 16.2.7-final-2
- 16.2.7-final-3
- 16.2.7-final-4
- 16.2.7-final-5
- 16.2.7-final-6
- 16.2.7-scope-1
- 16.2.7-scope-2

Test Case: 16.2.7-final-1

> A blank final initialized inside an if (true) block is definitely assigned.

> Expected 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}

Test Case: 16.2.7-final-2

> A blank final initialized inside an if (false) block is not definitely assigned.

> Expected 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}

Test Case: 16.2.7-final-3

> A final variable must be definitely unassigned if it is to be assigned inside an if (true) block.

> Expected 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}

Test Case: 16.2.7-final-4

> A final variable must be definitely unassigned if it is to be assigned inside an if (false) block.

> Expected 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}

Test Case: 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.

> Expected 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}

Test Case: 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.

> Expected 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}

Test Case: 16.2.7-scope-1

> A final variable in one scope should not effect a final variable in the enclosing scope

> Expected 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}

Test Case: 16.2.7-scope-2

> A final variable in one scope should not effect a final variable in the enclosing scope

> Expected 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}

### 16.2.8

Directory : `tests/jls/definite-assignment/statements/switch-statements`

- 16.2.8-final-1
- 16.2.8-final-2
- 16.2.8-final-3
- 16.2.8-final-4
- 16.2.8-final-5
- 16.2.8-final-6
- 16.2.8-unassigned-1
- 16.2.8-unassigned-2
- 16.2.8-unassigned-3
- 16.2.8-unassigned-4
- 16.2.8-unassigned-5
- 16.2.8-unassigned-6
- 16.2.8-unassigned-7
- 16.2.8-unassigned-8

Test Case: 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

> Expected 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}

Test Case: 16.2.8-final-2

> A blank final may be assigned in different block statement groups, provided it not assigned twice

> Expected 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}

Test Case: 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.

> Expected 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}

Test Case: 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.

> Expected 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}

Test Case: 16.2.8-final-5

> A final variable declared with a constant initializer qualifies as a constant, and may be used as a label

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 16.2.8-unassigned-1

> A variable must have been assigned in each switch block if it is going to be accessed

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 16.2.8-unassigned-6

> A variable within a switch statement must be assigned before use within any swith block

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 16.2.8-unassigned-8

> v is DU if it is DU before breaks which exit the switch

> Expected 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}

### 16.2.9

Directory : `tests/jls/definite-assignment/statements/while-statements`

- 16.2.9-definite-unassign-pass-1
- 16.2.9-definite-unassign-pass-2
- 16.2.9-definite-unassign-pass-3
- 16.2.9-definite-unassign-pass-4
- 16.2.9-definite-unassign-pass-5
- 16.2.9-definite-unassign-pass-6
- 16.2.9-definite-unassign-pass-7
- 16.2.9-definite-unassign-pass-8
- 16.2.9-definite-unassign-pass-9
- 16.2.9-definite-unassign-pass-10
- 16.2.9-definite-unassign-fail-1
- 16.2.9-definite-unassign-fail-2
- 16.2.9-definite-unassign-fail-3
- 16.2.9-definite-unassign-fail-4
- 16.2.9-definite-unassign-fail-5
- 16.2.9-definite-unassign-fail-6
- 16.2.9-definite-unassign-fail-7
- 16.2.9-definite-unassign-fail-8
- 16.2.9-definite-assign-pass-1
- 16.2.9-definite-assign-pass-2
- 16.2.9-definite-assign-pass-3
- 16.2.9-definite-assign-fail-1
- 16.2.9-definite-assign-fail-2
- 16.2.9-definite-assign-fail-3

Test Case: 16.2.9-definite-unassign-pass-1

> v is DU after the while if it is DU before every break which exits the while

> Expected 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}

Test Case: 16.2.9-definite-unassign-pass-2

> v is DU before the condition if it is DU before every continue which exits the statement

> Expected 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}

Test Case: 16.2.9-definite-unassign-pass-3

> v may be reachably assigned in loop only once unless loop can't repeat

> Expected 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}

Test Case: 16.2.9-definite-unassign-pass-4

> v may be reachably assigned in loop only once unless loop can't repeat

> Expected 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}

Test Case: 16.2.9-definite-unassign-pass-5

> v may be reachably assigned in loop only once unless loop can't repeat

> Expected 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}

Test Case: 16.2.9-definite-unassign-pass-6

> v may be reachably assigned in loop only once unless loop can't repeat

> Expected 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}

Test Case: 16.2.9-definite-unassign-pass-7

> v may be reachably assigned in loop only once unless loop can't repeat

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 16.2.9-definite-unassign-pass-9

> variables declared in a loop may be assigned in the loop

> Expected 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}

Test Case: 16.2.9-definite-unassign-pass-10

> variables declared in a loop may be assigned in the loop

> Expected 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}

Test Case: 16.2.9-definite-unassign-fail-1

> v may be reachably assigned in loop only once unless loop can't repeat

> Expected 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}

Test Case: 16.2.9-definite-unassign-fail-2

> v may be reachably assigned in loop only once unless loop can't repeat

> Expected 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}

Test Case: 16.2.9-definite-unassign-fail-3

> v may be reachably assigned in loop only once unless loop can't repeat

> Expected 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}

Test Case: 16.2.9-definite-unassign-fail-4

> v may be reachably assigned in loop only once unless loop can't repeat

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 16.2.9-definite-unassign-fail-8

> v is DU before S iff V is DU after e when true

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

### 16.2.10

Directory : `tests/jls/definite-assignment/statements/do-statements`

- 16.2.10-definite-unassign-pass-1
- 16.2.10-definite-unassign-pass-2
- 16.2.10-definite-unassign-pass-3
- 16.2.10-definite-unassign-pass-4
- 16.2.10-definite-unassign-pass-5
- 16.2.10-definite-unassign-pass-6
- 16.2.10-definite-unassign-pass-7
- 16.2.10-definite-unassign-pass-8
- 16.2.10-definite-unassign-pass-9
- 16.2.10-definite-unassign-pass-10
- 16.2.10-definite-unassign-pass-11
- 16.2.10-definite-unassign-fail-1
- 16.2.10-definite-unassign-fail-2
- 16.2.10-definite-unassign-fail-3
- 16.2.10-definite-unassign-fail-4
- 16.2.10-definite-unassign-fail-5
- 16.2.10-definite-unassign-fail-6
- 16.2.10-definite-unassign-fail-7
- 16.2.10-definite-unassign-fail-8
- 16.2.10-definite-unassign-fail-9
- 16.2.10-definite-unassign-fail-10
- 16.2.10-definite-unassign-fail-11
- 16.2.10-definite-assign-pass-1
- 16.2.10-definite-assign-pass-2
- 16.2.10-definite-assign-pass-3
- 16.2.10-definite-assign-pass-4
- 16.2.10-definite-assign-pass-5
- 16.2.10-definite-assign-fail-1
- 16.2.10-definite-assign-fail-2

Test Case: 16.2.10-definite-unassign-pass-1

> v is DU after the do if it is DU before every break which exits the do

> Expected 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}

Test Case: 16.2.10-definite-unassign-pass-2

> v is DU before the condition if it is DU before every continue which exits the statement

> Expected 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}

Test Case: 16.2.10-definite-unassign-pass-3

> v may be reachably assigned in loop only once unless loop can't repeat

> Expected 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}

Test Case: 16.2.10-definite-unassign-pass-4

> v may be reachably assigned in loop only once unless loop can't repeat

> Expected 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}

Test Case: 16.2.10-definite-unassign-pass-5

> v may be reachably assigned in loop only once unless loop can't repeat

> Expected 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}

Test Case: 16.2.10-definite-unassign-pass-6

> v may be reachably assigned in loop only once unless loop can't repeat

> Expected 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}

Test Case: 16.2.10-definite-unassign-pass-7

> v may be reachably assigned in loop only once unless loop can't repeat

> Expected 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}

Test Case: 16.2.10-definite-unassign-pass-8

> v may be reachably assigned in loop only once unless loop can't repeat

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 16.2.10-definite-unassign-pass-10

> variables declared in a loop may be assigned in the loop

> Expected 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}

Test Case: 16.2.10-definite-unassign-pass-11

> variables declared in a loop may be assigned in the loop

> Expected 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}

Test Case: 16.2.10-definite-unassign-fail-1

> v may be reachably assigned in loop only once unless loop can't repeat

> Expected 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}

Test Case: 16.2.10-definite-unassign-fail-2

> v may be reachably assigned in loop only once unless loop can't repeat

> Expected 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}

Test Case: 16.2.10-definite-unassign-fail-3

> v may be reachably assigned in loop only once unless loop can't repeat

> Expected 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}

Test Case: 16.2.10-definite-unassign-fail-4

> v may be reachably assigned in loop only once unless loop can't repeat

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

### 16.2.11

Directory : `tests/jls/definite-assignment/statements/for-statements`

- 16.2.11-definite-unassign-pass-1
- 16.2.11-definite-unassign-pass-2
- 16.2.11-definite-unassign-pass-3
- 16.2.11-definite-unassign-pass-4
- 16.2.11-definite-unassign-pass-5
- 16.2.11-definite-unassign-pass-6
- 16.2.11-definite-unassign-pass-7
- 16.2.11-definite-unassign-pass-8
- 16.2.11-definite-unassign-pass-9
- 16.2.11-definite-unassign-pass-10
- 16.2.11-definite-unassign-pass-11
- 16.2.11-definite-unassign-fail-1
- 16.2.11-definite-unassign-fail-2
- 16.2.11-definite-unassign-fail-3
- 16.2.11-definite-unassign-fail-4
- 16.2.11-definite-unassign-fail-5
- 16.2.11-definite-unassign-fail-6
- 16.2.11-definite-unassign-fail-7
- 16.2.11-definite-unassign-fail-8
- 16.2.11-definite-unassign-fail-9
- 16.2.11-definite-unassign-fail-10
- 16.2.11-definite-unassign-fail-11
- 16.2.11-definite-unassign-fail-12
- 16.2.11-definite-assign-pass-1
- 16.2.11-definite-assign-pass-2
- 16.2.11-definite-assign-pass-3
- 16.2.11-definite-assign-fail-1
- 16.2.11-definite-assign-fail-2
- 16.2.11-definite-assign-fail-3
- 16.2.11-definite-assign-fail-4

Test Case: 16.2.11-definite-unassign-pass-1

> v is DU after the for if it is DU before every break which exits the for

> Expected 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}

Test Case: 16.2.11-definite-unassign-pass-2

> v is DU before the condition if it is DU before every continue which exits the statement

> Expected 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}

Test Case: 16.2.11-definite-unassign-pass-3

> v may be reachably assigned in loop only once unless loop can't repeat

> Expected 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}

Test Case: 16.2.11-definite-unassign-pass-4

> v may be reachably assigned in loop only once unless loop can't repeat

> Expected 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}

Test Case: 16.2.11-definite-unassign-pass-5

> v may be reachably assigned in loop only once unless loop can't repeat

> Expected 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}

Test Case: 16.2.11-definite-unassign-pass-6

> v may be reachably assigned in loop only once unless loop can't repeat

> Expected 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}

Test Case: 16.2.11-definite-unassign-pass-7

> v may be reachably assigned in loop only once unless loop can't repeat

> Expected 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}

Test Case: 16.2.11-definite-unassign-pass-8

> v may be reachably assigned in loop only once unless loop can't repeat

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 16.2.11-definite-unassign-pass-10

> variables declared in a loop may be assigned in the loop

> Expected 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}

Test Case: 16.2.11-definite-unassign-pass-11

> variables declared in a loop may be assigned in the loop

> Expected 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}

Test Case: 16.2.11-definite-unassign-fail-1

> v may be reachably assigned in loop only once unless loop can't repeat

> Expected 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}

Test Case: 16.2.11-definite-unassign-fail-2

> v may be reachably assigned in loop only once unless loop can't repeat

> Expected 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}

Test Case: 16.2.11-definite-unassign-fail-3

> v may be reachably assigned in loop only once unless loop can't repeat

> Expected 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}

Test Case: 16.2.11-definite-unassign-fail-4

> v may be reachably assigned in loop only once unless loop can't repeat

> Expected 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}

Test Case: 16.2.11-definite-unassign-fail-5

> v may be reachably assigned in loop only once unless loop can't repeat

> Expected 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}

Test Case: 16.2.11-definite-unassign-fail-6

> v may be reachably assigned in loop only once unless loop can't repeat

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 16.2.11-definite-unassign-fail-12

> v is DU before S iff V is DU after the (possibly implicit) condition when true

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

### 16.2.14

Directory : `tests/jls/definite-assignment/statements/try-statements`

- 16.2.14-definite-unassign-fail-1
- 16.2.14-definite-unassign-fail-2
- 16.2.14-definite-unassign-fail-3
- 16.2.14-definite-unassign-fail-4
- 16.2.14-definite-unassign-fail-5
- 16.2.14-definite-unassign-fail-6
- 16.2.14-definite-unassign-fail-7
- 16.2.14-definite-unassign-fail-8
- 16.2.14-definite-unassign-fail-9
- 16.2.14-definite-unassign-fail-10
- 16.2.14-definite-unassign-fail-11
- 16.2.14-definite-unassign-fail-12
- 16.2.14-definite-unassign-fail-13
- 16.2.14-definite-unassign-fail-14
- 16.2.14-definite-unassign-fail-15
- 16.2.14-definite-unassign-fail-16

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 16.2.14-definite-unassign-fail-9

> the DA/DU status before a break is dependent on a finally that completes normally

> Expected 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}

Test Case: 16.2.14-definite-unassign-fail-10

> the DA/DU status before a break is dependent on a finally that completes normally

> Expected 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}

Test Case: 16.2.14-definite-unassign-fail-11

> the DA/DU status before a break is dependent on a finally that completes normally

> Expected 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}

Test Case: 16.2.14-definite-unassign-fail-12

> the DA/DU status before a break is dependent on a finally that completes normally

> Expected 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}

Test Case: 16.2.14-definite-unassign-fail-13

> the DA/DU status before a break is dependent on a finally that completes normally

> Expected 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}

Test Case: 16.2.14-definite-unassign-fail-14

> the DA/DU status before a continue is dependent on a finally that completes normally

> Expected 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}

Test Case: 16.2.14-definite-unassign-fail-15

> the DA/DU status before a continue is dependent on a finally that completes normally

> Expected 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}

Test Case: 16.2.14-definite-unassign-fail-16

> the DA/DU status before a continue is dependent on a finally that completes normally

> Expected 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}

### 16.5

Directory : `tests/jls/definite-assignment/anonymous-classes`

- 16.5-anonymous-1
- 16.5-anonymous-2
- 16.5-anonymous-3

Test Case: 16.5-anonymous-1

> V is DA before an anonymous class iff V is DA after the class instance creation expression

> Expected 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}

Test Case: 16.5-anonymous-2

> V is DA before an anonymous class iff V is DA after the class instance creation expression

> Expected 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}

Test Case: 16.5-anonymous-3

> V is DA before an anonymous class iff V is DA after the class instance creation expression

> Expected 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}

### 16.8

Directory : `tests/jls/definite-assignment/constructors-and-instance-initializers`

- 16.8-constructor-1
- 16.8-constructor-2
- 16.8-constructor-3
- 16.8-constructor-4
- 16.8-constructor-5
- 16.8-constructor-6
- 16.8-constructor-7
- 16.8-constructor-8
- 16.8-constructor-9
- 16.8-parameter-1
- 16.8-parameter-2
- 16.8-parameter-3

Test Case: 16.8-constructor-1

> A blank final instance variable is DA after alternate constructor invocation

> Expected 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}

Test Case: 16.8-constructor-2

> A blank final instance variable is DA after alternate constructor invocation

> Expected 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}

Test Case: 16.8-constructor-3

> A blank final instance variable is DA after superconstructor if it is DA after initializers

> Expected 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}

Test Case: 16.8-constructor-4

> A blank final instance variable is DA after superconstructor if it is DA after initializers

> Expected 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}

Test Case: 16.8-constructor-5

> A blank final instance variable is DA after superconstructor if it is DA after initializers

> Expected 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}

Test Case: 16.8-constructor-6

> A blank final must be DU before assignment in an instance initializer

> Expected 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}

Test Case: 16.8-constructor-7

> A blank final must be DU before assignment in an instance initializer

> Expected 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}

Test Case: 16.8-constructor-8

> A blank final must be DU before assignment in a constructor

> Expected 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}

Test Case: 16.8-constructor-9

> A blank final must be DA after every constructor

> Expected 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}

Test Case: 16.8-parameter-1

> Final parameters may not be assigned in a constructor

> Expected 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}

Test Case: 16.8-parameter-2

> Final parameters may not be assigned in a constructor

> Expected 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}

Test Case: 16.8-parameter-3

> Final parameters may not be assigned in a constructor

> Expected 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}

### try-statement

Directory : `tests/jls/blocks-and-statements/try-statement`

- 14.19.exception-1
- 14.19.exception-2
- 14.19.exception-3
- 14.19.exception-4
- 14.19.exception-5
- 14.19.exception-6
- 14.19.exception-7
- 14.19.exception-8
- 14.19.exception-9
- 14.19.exception-10
- 14.19.exception-11
- 14.19.exception-12
- 14.19.exception-13
- 14.19.exception-14
- 14.19.exception-15
- 14.19.exception-16
- 14.19.exception-17
- 14.19.exception-18
- 14.19.exception-19
- 14.19.exception-20
- 14.19.exception-21
- 14.19.exception-22
- 14.19.exception-23
- 14.19.exception-24

Test Case: 14.19.exception-1

> checked exceptions must be caught or declared

> Expected 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}

Test Case: 14.19.exception-2

> checked exceptions must be caught or declared

> Expected 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}

Test Case: 14.19.exception-3

> checked exceptions must be caught or declared

> Expected 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}

Test Case: 14.19.exception-4

> checked exceptions must be caught or declared

> Expected 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}

Test Case: 14.19.exception-5

> checked exceptions must be caught or declared

> Expected 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}

Test Case: 14.19.exception-6

> checked exceptions must be caught or declared

> Expected 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}

Test Case: 14.19.exception-7

> checked exceptions must be caught or declared

> Expected 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}

Test Case: 14.19.exception-8

> checked exceptions must be caught or declared

> Expected 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}

Test Case: 14.19.exception-9

> checked exceptions must be caught or declared

> Expected 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}

Test Case: 14.19.exception-10

> checked exceptions must be caught or declared

> Expected 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}

Test Case: 14.19.exception-11

> checked exceptions must be caught or declared

> Expected 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}

Test Case: 14.19.exception-12

> checked exceptions must be caught or declared

> Expected 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}

Test Case: 14.19.exception-13

> checked exceptions must be caught or declared

> Expected 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}

Test Case: 14.19.exception-14

> checked exceptions must be caught or declared

> Expected 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}

Test Case: 14.19.exception-15

> checked exceptions must be caught or declared

> Expected 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}

Test Case: 14.19.exception-16

> checked exceptions must be caught or declared

> Expected 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}

Test Case: 14.19.exception-17

> checked exceptions must be caught or declared

> Expected 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}

Test Case: 14.19.exception-18

> checked exceptions must be caught or declared

> Expected 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}

Test Case: 14.19.exception-19

> checked exceptions must be caught or declared

> Expected 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}

Test Case: 14.19.exception-20

> checked exceptions must be caught or declared

> Expected 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}

Test Case: 14.19.exception-21

> checked exceptions must be caught or declared

> Expected 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}

Test Case: 14.19.exception-22

> checked exceptions must be caught or declared

> Expected 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}

Test Case: 14.19.exception-23

> checked exceptions must be caught or declared

> Expected 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}

Test Case: 14.19.exception-24

> checked exceptions must be caught or declared

> Expected 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}

### runtime tests

### 3.10.1

Directory : `tests/runtime/jls/lexical-structure/literals/integer-literals`

- 3.10.1-runtime-endianness-1

Test Case: 3.10.1-runtime-endianness-1

> Detect if endianness is wrong

> Expected 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}

### 3.10.2

Directory : `tests/runtime/jls/lexical-structure/literals/floating-point-literals`

- 3.10.2-runtime-endianness-1

Test Case: 3.10.2-runtime-endianness-1

> Detect if endianness is backward

> Expected 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}

### 3.10.4

Directory : `tests/runtime/jls/lexical-structure/literals/character-literals`

- 3.10.4-runtime-coalescense-1

Test Case: 3.10.4-runtime-coalescense-1

> 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}

### 3.10.5

Directory : `tests/runtime/jls/lexical-structure/literals/string-literals`

- 3.10.5-runtime-1

Test Case: 3.10.5-runtime-1

> Compile-time constant string expressions, and String.intern(), are == String objects

> Expected 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}

### 4.10

Directory : `tests/runtime/jvms/class-file-format/limitations`

- 4.10-jvms-runtime-1

Test Case: 4.10-jvms-runtime-1

> Check that all the jvms tests that should compile actually produce valid class files

> Expected 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 }

### 6.6.1

Directory : `tests/runtime/jls/classes/constructor-declarations/constructor-access`

- 6.6.1-runtime-privateconstructor-1

Test Case: 6.6.1-runtime-privateconstructor-1

> Private constructors are accessible from within the body of the top level class that encloses the constructor

> Expected 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}

### 8.1.2

Directory : `tests/runtime/jls/classes/class-declaration/inner-classes-and-enclosing-instances`

- 8.1.2-runtime-1

Test Case: 8.1.2-runtime-1

> Stress test of accessing a final local variable through 2 layers of nested local/anonymous classes

> Expected 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}

### 8.3

Directory : `tests/runtime/jls/classes/field-declarations`

- 8.3-runtime-1

Test Case: 8.3-runtime-1

> Test access to an accessible, but non-inherited, private field

> Expected 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}

### 8.4.6

Directory : `tests/runtime/jls/classes/method-declarations/inheritance-overriding-and-hiding`

- 8.4.6-runtime-miranda-1

Test Case: 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)

> 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}

### 8.4.6.4

Directory : `tests/runtime/jls/classes/method-declarations/inheritance-overriding-and-hiding`

- 8.4.6.4-multiple-runtime-1

Test Case: 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

> Expected 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}

### 8.8.3

Directory : `tests/runtime/jls/classes/constructor-declarations/constructor-modifiers`

- 8.8.3-runtime-inner-1
- 8.8.3-runtime-inner-2
- 8.8.3-runtime-inner-3
- 8.8.3-runtime-inner-4

Test Case: 8.8.3-runtime-inner-1

> no modifier for inner class constructor

> Expected 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}

Test Case: 8.8.3-runtime-inner-2

> modifier for inner class constructor

> Expected 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}

Test Case: 8.8.3-runtime-inner-3

> modifier for inner class constructor

> Expected 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}

Test Case: 8.8.3-runtime-inner-4

> modifier for inner class constructor

> Expected 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}

### 8.8.5

Directory : `tests/runtime/jls/classes/constructor-declarations/constructor-body`

- 8.8.5-runtime-inner-1
- 8.8.5-runtime-inner-2
- 8.8.5-runtime-inner-3
- 8.8.5-runtime-inner-4

Test Case: 8.8.5-runtime-inner-1

> invoke ctor of inner class

> Expected 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}

Test Case: 8.8.5-runtime-inner-2

> invoke ctor of inner class

> Expected 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}

Test Case: 8.8.5-runtime-inner-3

> invoke ctor of inner class

> Expected 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}

Test Case: 8.8.5-runtime-inner-4

> invoke ctor of inner class

> Expected 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}

### 8.8.7

Directory : `tests/runtime/jls/classes/constructor-declarations/default-constructor`

- 8.8.7-runtime-default-1
- 8.8.7-runtime-default-2
- 8.8.7-runtime-default-3
- 8.8.7-runtime-accessible-default-1

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 8.8.7-runtime-accessible-default-1

> The private superconstructor is accessible by default constructors contained in the same class

> Expected 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}

### 12.4.1

Directory : `tests/runtime/jls/execution/initialization-of-classes-and-interfaces/when-initialization-occurs`

- 12.4.1-runtime-1
- 12.4.1-runtime-2
- 12.4.1-runtime-3
- 12.4.1-runtime-4

Test Case: 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

> Expected 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}

Test Case: 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.

> Expected 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}

Test Case: 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.

> Expected 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}

Test Case: 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.

> 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}

### 12.4.2

Directory : `tests/runtime/jls/execution/initialization-of-classes-and-interfaces/detailed-initialization-procedure`

- 12.4.2-runtime-1

Test Case: 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

> Expected 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}

### 12.5

Directory : `tests/runtime/jls/execution/creation-of-new-class-instances`

- 12.5-runtime-1
- 12.5-runtime-2
- 12.5-runtime-3

Test Case: 12.5-runtime-1

> Variable initializers are executed after the explicit or implicit superclass constructor, but before all other statements of the constructor

> Expected 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}

Test Case: 12.5-runtime-2

> Example in JLS

> Expected 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}

Test Case: 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

> Expected 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}

### 13.1

Directory : `tests/runtime/jls/binary-compatibility/form-of-binary`

- 13.1-runtime-constant-1
- 13.1-runtime-constant-2
- 13.1-runtime-constant-3
- 13.1-runtime-field-1

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 13.1-runtime-field-1

> A field reference must include the (implicit) qualifier of the expression it was in

> Expected 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}

### 14

Directory : `tests/runtime/jls/blocks-and-statements`

- 14-runtime-jump-1
- 14-runtime-jump-2

Test Case: 14-runtime-jump-1

> 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-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}

Test Case: 14-runtime-jump-2

> 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}

### 14.3

Directory : `tests/runtime/jls/blocks-and-statements/local-class-declarations`

- 14.3-1-runtime-1
- 14.3-1-runtime-2

Test Case: 14.3-1-runtime-1

> local classes are never implicitly static, even in a static context

> Expected 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}

Test Case: 14.3-1-runtime-2

> local class names must not flatten to the same name as an anonymous class

> Expected 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}

### 14.3.1

Directory : `tests/runtime/jls/blocks-and-statements/local-class-declarations`

- 14.3.1-runtime-3

Test Case: 14.3.1-runtime-3

> test use of shadowed local variables in local class

> Expected 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}

### 14.9.1

Directory : `tests/runtime/jls/blocks-and-statements/if-statement/if-then-statement`

- 14.9.1-runtime-1
- 14.9.1-runtime-2

Test Case: 14.9.1-runtime-1

> Tests that compiler does not over-optimize, as reported in jikes bug 2982

> Expected 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}

Test Case: 14.9.1-runtime-2

> Tests that compiler does not over-optimize, as reported in jikes bug 2895

> Expected 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}

### 14.9.2

Directory : `tests/runtime/jls/blocks-and-statements/if-statement/if-then-else-statement`

- 14.9.2-runtime-1

Test Case: 14.9.2-runtime-1

> Test optimization of if-then-else statements

> Expected 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}

### 14.10

Directory : `tests/runtime/jls/blocks-and-statements/switch-statement`

- 14.10-runtime-verifier-1
- 14.10-runtime-verifier-2
- 14.10-runtime-fallthrough-1
- 14.10-runtime-fallthrough-2
- 14.10-runtime-break-1
- 14.10-runtime-break-2

Test Case: 14.10-runtime-verifier-1

> runtime switch test for values between 0x7ffffff0 and 0x7fffffff

> Expected 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}

Test Case: 14.10-runtime-verifier-2

> runtime switch test exposes bug in javac when variable declaration occurs in dead code

> Expected 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;}

Test Case: 14.10-runtime-fallthrough-1

> runtime test for fallthrough of cases

> Expected 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
>     }

Test Case: 14.10-runtime-fallthrough-2

> runtime test for break stopping fallthrough

> Expected 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 Case: 14.10-runtime-break-1

> test optimization of switch statement, jikes bug 3113

> Expected 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 Case: 14.10-runtime-break-2

> test optimization of switch statement, jikes bug 3212

> Expected 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}

### 14.11

Directory : `tests/runtime/jls/blocks-and-statements/while-statement`

- 14.11-runtime-1

Test Case: 14.11-runtime-1

> Test optimization of loops, from jikes bug 3084

> Expected 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}

### 14.12

Directory : `tests/runtime/jls/blocks-and-statements/do-statement`

- 14.12-runtime-1

Test Case: 14.12-runtime-1

> Test optimization of do-while loops

> Expected 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}

### 14.13

Directory : `tests/runtime/jls/blocks-and-statements/for-statement`

- 14.13-runtime-1

Test Case: 14.13-runtime-1

> Test optimization of for loops

> Expected 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}

### 14.14

Directory : `tests/runtime/jls/blocks-and-statements/break-statement`

- 14.14-runtime-jump-1

Test Case: 14.14-runtime-jump-1

> test of wide jump in break

> Expected 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}

### 14.18

Directory : `tests/runtime/jls/blocks-and-statements/synchronized-statement`

- 14.18-runtime-1

Test Case: 14.18-runtime-1

> Test compilation of synchronized

> Expected 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}

### 14.19.1

Directory : `tests/runtime/jls/blocks-and-statements/try-statement/try-catch`

- 14.19.1-runtime-1
- 14.19.1-runtime-2
- 14.19.1-runtime-3

Test Case: 14.19.1-runtime-1

> Test evaluation of try-catch blocks, with synchronized statement

> Expected 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 Case: 14.19.1-runtime-2

> Test evaluation of try-catch blocks, with synchronized statement

> Expected 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}

Test Case: 14.19.1-runtime-3

> Evaluation of empty try-block is legal, even though it is a no-op

> Expected 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}

### 14.19.2

Directory : `tests/runtime/jls/blocks-and-statements/try-statement/try-catch-finally`

- 14.19.2-runtime-try-1
- 14.19.2-runtime-jump-1
- 14.19.2-runtime-2

Test Case: 14.19.2-runtime-try-1

> runtime try catch finally test with synchronize statement

> Expected 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 Case: 14.19.2-runtime-jump-1

> test of jsr_w

> Expected 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 Case: 14.19.2-runtime-2

> Test evaluation of try-finally blocks, with synchronized statement

> Expected 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}

### 15.8.4

Directory : `tests/runtime/jls/expressions/primary-expressions/qualified-this`

- 15.8.4-runtime-1

Test Case: 15.8.4-runtime-1

> Qualified this refers to the lexically enclosing instance

> Expected 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}

### 15.9

Directory : `tests/runtime/jls/expressions/class-instance-creation`

- 15.9-runtime-numcalls-1

Test Case: 15.9-runtime-numcalls-1

> Check the number of times a constructor is called from a class instance creation expression

> Expected 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}

### 15.9.4

Directory : `tests/runtime/jls/expressions/class-instance-creation/run-time-evaluation`

- 15.9.4-runtime-creation-1
- 15.9.4-runtime-creation-2
- 15.9.4-runtime-creation-3
- 15.9.4-runtime-creation-4
- 15.9.4-runtime-creation-5

Test Case: 15.9.4-runtime-creation-1

> A null qualifier must throw a NullPointerException before anything else happens

> Expected 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}

Test Case: 15.9.4-runtime-creation-2

> OutOfMemoryError precedes argument evaluation - example in 15.9.6

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 15.9.4-runtime-creation-4

> Instance initializers are called in textual order after superconstructor

> Expected 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}

Test Case: 15.9.4-runtime-creation-5

> A null qualifier must throw a NullPointerException before anything else happens

> Expected 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}

### 15.11.1

Directory : `tests/runtime/jls/expressions/field-access-expressions/using-a-primary`

- 15.11.1-runtime-static-1
- 15.11.1-runtime-static-2
- 15.11.1-runtime-static-3

Test Case: 15.11.1-runtime-static-1

> The Primary qualifier of a static field reference must be evaluated, then discarded

> Expected 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 }

Test Case: 15.11.1-runtime-static-2

> The Primary qualifier of a static field reference may complete abruptly, before anything else

> Expected 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}

Test Case: 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

> Expected 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}

### 15.11.2

Directory : `tests/runtime/jls/expressions/field-access-expressions/accessing-superclass-members-using-super`

- 15.11.2-runtime-1
- 15.11.2-runtime-2

Test Case: 15.11.2-runtime-1

> Accessor methods are sometimes required to get at protected fields inherited in enclosing class

> Expected 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}

Test Case: 15.11.2-runtime-2

> Accessor methods are sometimes required to write to protected fields inherited in enclosing class

> Expected 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}

### 15.12.3

Directory : `tests/runtime/jls/expressions/method-invocation-expressions/chosen-method-appropriate`

- 15.12.3-runtime-mode-1
- 15.12.3-runtime-mode-2
- 15.12.3-runtime-mode-3
- 15.12.3-runtime-mode-4
- 15.12.3-runtime-mode-5
- 15.12.3-runtime-mode-6

Test Case: 15.12.3-runtime-mode-1

> The invocation mode of a non-static, non-private method is virtual

> Expected 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}

Test Case: 15.12.3-runtime-mode-2

> The invocation mode of a static method is static

> Expected 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}

Test Case: 15.12.3-runtime-mode-3

> The invocation mode of a private method is private

> Expected 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}

Test Case: 15.12.3-runtime-mode-4

> The invocation mode of an instance method called with super is super

> Expected 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 }

Test Case: 15.12.3-runtime-mode-5

> The invocation mode of a method called on an interface is interface

> Expected 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}

Test Case: 15.12.3-runtime-mode-6

> The invocation mode of a non-static, non-private method is virtual

> Expected 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}

### 15.12.4.1

Directory : `tests/runtime/jls/expressions/method-invocation-expressions/runtime-evaluation/compute-target-reference`

- 15.12.4.1-runtime-static-1
- 15.12.4.1-runtime-static-2
- 15.12.4.1-runtime-static-3
- 15.12.4.1-runtime-super-1
- 15.12.4.1-runtime-super-2

Test Case: 15.12.4.1-runtime-static-1

> The Primary qualifier of a static method invocation must be evaluated, then discarded

> Expected 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 }

Test Case: 15.12.4.1-runtime-static-2

> The Primary qualifier of a static method invocation may complete abruptly, before anything else

> Expected 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}

Test Case: 15.12.4.1-runtime-static-3

> The Primary qualifier of a static method is discarded

> Expected 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}

Test Case: 15.12.4.1-runtime-super-1

> Accessor methods are sometimes required to get at protected methods inherited in enclosing class

> Expected 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}

Test Case: 15.12.4.1-runtime-super-2

> Accessor methods are required to get at enclosing instance methods invoked via classname.super

> Expected 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 }

### 15.13.2

Directory : `tests/runtime/jls/expressions/array-access-expressions/examples`

- 15.13.2-runtime-example-1
- 15.13.2-runtime-example-2
- 15.13.2-runtime-example-3
- 15.13.2-runtime-example-4

Test Case: 15.13.2-runtime-example-1

> JLS example

> Expected 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}

Test Case: 15.13.2-runtime-example-2

> JLS example

> Expected 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}

Test Case: 15.13.2-runtime-example-3

> JLS example

> Expected 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}

Test Case: 15.13.2-runtime-example-4

> JLS example

> Expected 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}

### 15.14

Directory : `tests/runtime/jls/expressions/postfix-expressions`

- 15.14-runtime-1
- 15.14-runtime-2
- 15.14-runtime-3
- 15.14-runtime-4

Test Case: 15.14-runtime-1

> Postfix ops have higher precedence than prefix

> Expected 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}

Test Case: 15.14-runtime-2

> Postfix ops have higher precedence than prefix

> Expected 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 Case: 15.14-runtime-3

> Test postfix operation

> Expected 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 Case: 15.14-runtime-4

> Test postfix operation

> Expected 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}

### 15.15

Directory : `tests/runtime/jls/expressions/unary-operators`

- 15.15-runtime-1
- 15.15-runtime-2
- 15.15-runtime-3
- 15.15-runtime-4

Test Case: 15.15-runtime-1

> Prefix ops have higher precedence than multiplicative

> Expected 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}

Test Case: 15.15-runtime-2

> Prefix ops have higher precedence than multiplicative

> Expected 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 Case: 15.15-runtime-3

> Test prefix operation

> Expected 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 Case: 15.15-runtime-4

> Test prefix operation

> Expected 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}

### 15.18.1.1

Directory : `tests/runtime/jls/expressions/additive-operators/string-conversion`

- 15.18.1.1-runtime-1
- 15.18.1.1-runtime-2
- 15.18.1.1-runtime-3

Test Case: 15.18.1.1-runtime-1

> "" + char[] should behave the same as char[].toString()

> Expected 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}

Test Case: 15.18.1.1-runtime-2

> "" + char[] should behave the same as char[].toString()

> Expected 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}

Test Case: 15.18.1.1-runtime-3

> "" + (int)char

> Expected 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}

### 15.20

Directory : `tests/runtime/jls/expressions/relational-operators/type-comparison-operator-instanceof`

- 15.20-2-runtime-1
- 15.20-2-runtime-2

Test Case: 15.20-2-runtime-1

> Test side-effects of compile-time known comparisons

> Expected 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 Case: 15.20-2-runtime-2

> Test side-effects of compile-time known comparisons

> Expected 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}

### 15.21.3

Directory : `tests/runtime/jls/expressions/equality-operators/reference-equality`

- 15.21.3-runtime-1
- 15.21.3-runtime-2

Test Case: 15.21.3-runtime-1

> Test (non)equality

> Expected 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}

Test Case: 15.21.3-runtime-2

> Strings are == only if they are same reference, and not because they have same contents

> Expected 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}

### 15.25

Directory : `tests/runtime/jls/expressions/conditional-operator`

- 15.25-runtime-1
- 15.25-runtime-2
- 15.25-runtime-3
- 15.25-runtime-4
- 15.25-runtime-5
- 15.25-runtime-6
- 15.25-runtime-7
- 15.25-runtime-8

Test Case: 15.25-runtime-1

> Test optimization in ?:

> Expected 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 Case: 15.25-runtime-2

> Test optimization in ?:

> Expected 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 Case: 15.25-runtime-3

> Test optimization in ?:

> Expected 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 Case: 15.25-runtime-4

> Test optimization in ?:

> Expected 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 Case: 15.25-runtime-5

> Test optimization in ?:

> Expected 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 Case: 15.25-runtime-6

> Test side effects in ?:

> Expected 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 Case: 15.25-runtime-7

> Test boolean ?:

> Expected 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 Case: 15.25-runtime-8

> 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}

### 15.26.1

Directory : `tests/runtime/jls/expressions/assignment-operators/simple-assignment-operator`

- 15.26.1-runtime-1

Test Case: 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

> Expected 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}

### 15.26.2

Directory : `tests/runtime/jls/expressions/assignment-operators/compound-assignment-operators`

- 15.26.2-runtime-1
- 15.26.2-runtime-2

Test Case: 15.26.2-runtime-1

> String += char[] should do same as s += char[].toString()

> Expected 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}

Test Case: 15.26.2-runtime-2

> 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}

### 15.28

Directory : `tests/runtime/jls/expressions/constant-expression`

- 15.28-runtime-constant-1
- 15.28-runtime-constant-2
- 15.28-runtime-constant-3
- 15.28-runtime-constant-4
- 15.28-runtime-constant-5

Test Case: 15.28-runtime-constant-1

> Constant string expressions must be compiled inline, including method returns

> Expected 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}

Test Case: 15.28-runtime-constant-2

> Constant string expressions must be compiled inline, including method call qualifiers

> Expected 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}

Test Case: 15.28-runtime-constant-3

> Constant string expressions must be compiled inline, including synchronized monitors

> Expected 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 Case: 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

> Expected 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}

Test Case: 15.28-runtime-constant-5

> Division by integer 0 is not a constant, but must evaulate at runtime to an exception

> Expected 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}

### 16.5

Directory : `tests/runtime/jls/definite-assignment/anonymous-classes`

- 16.5-runtime-1
- 16.5-runtime-2
- 16.5-runtime-3
- 16.5-runtime-4
- 16.5-runtime-5

Test Case: 16.5-runtime-1

> Test access of definitely assigned local variable in an anonymous class

> Expected 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 Case: 16.5-runtime-2

> Test access of definitely assigned local variable in an anonymous class

> Expected 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 Case: 16.5-runtime-3

> Test access of definitely assigned local variable in an anonymous class

> Expected 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 Case: 16.5-runtime-4

> Test access of definitely assigned local variable in an anonymous class

> Expected 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 Case: 16.5-runtime-5

> Test access of definitely assigned local variable in an anonymous class

> Expected 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}

### 41.3

Directory : `tests/runtime/non-jls/assert`

- non-jls-jsr41.3-runtime-1
- non-jls-jsr41.3-runtime-2

Test Case: non-jls-jsr41.3-runtime-1

> Asserts must be enabled before class is initialized

> Expected 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 }

Test Case: non-jls-jsr41.3-runtime-2

> Asserts do not cause class initialization

> Expected 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}

### non-jls tests

### 41.2

Directory : `tests/non-jls/assert/syntax`

- non-jls-jsr41.2-syntax-1
- non-jls-jsr41.2-syntax-2
- non-jls-jsr41.2-syntax-3
- non-jls-jsr41.2-syntax-4
- non-jls-jsr41.2-syntax-5
- non-jls-jsr41.2-syntax-6
- non-jls-jsr41.2-syntax-7
- non-jls-jsr41.2-syntax-8
- non-jls-jsr41.2-syntax-9
- non-jls-jsr41.2-syntax-10
- non-jls-jsr41.2-syntax-11
- non-jls-jsr41.2-syntax-12
- non-jls-jsr41.2-syntax-13
- non-jls-jsr41.2-syntax-14
- non-jls-jsr41.2-syntax-15
- non-jls-jsr41.2-syntax-16
- non-jls-jsr41.2-syntax-17
- non-jls-jsr41.2-syntax-18
- non-jls-jsr41.2-syntax-19
- non-jls-jsr41.2-syntax-20
- non-jls-jsr41.2-syntax-21
- non-jls-jsr41.2-syntax-22
- non-jls-jsr41.2-nesting-1
- non-jls-jsr41.2-nesting-2
- non-jls-jsr41.2-nesting-3
- non-jls-jsr41.2-nesting-4
- non-jls-jsr41.2-clash-1

Test Case: non-jls-jsr41.2-syntax-1

> the one-argument form of assert

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test non-jls-jsr41.2-syntax-1 { the one-argument form of
>             assert } {

>         empty_main T412s1 {
>     	assert false;
>         }

>     } {PASS}

Test Case: non-jls-jsr41.2-syntax-2

> the one-argument form of assert must have a boolean condition

> Expected 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}

Test Case: non-jls-jsr41.2-syntax-3

> the one-argument form of assert must have a boolean condition

> Expected 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}

Test Case: non-jls-jsr41.2-syntax-4

> the one-argument form of assert must have a boolean condition

> Expected 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}

Test Case: non-jls-jsr41.2-syntax-5

> the one-argument form of assert must have a boolean condition

> Expected 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}

Test Case: non-jls-jsr41.2-syntax-6

> the two-argument form of assert

> Expected 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}

Test Case: non-jls-jsr41.2-syntax-7

> in the two-argument form of assert, the first argument must be boolean

> Expected 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}

Test Case: non-jls-jsr41.2-syntax-8

> in the two-argument form of assert, the first argument must be boolean

> Expected 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}

Test Case: non-jls-jsr41.2-syntax-9

> in the two-argument form of assert, the first argument must be boolean

> Expected 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}

Test Case: non-jls-jsr41.2-syntax-10

> in the two-argument form of assert, the first argument must be boolean

> Expected 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}

Test Case: non-jls-jsr41.2-syntax-11

> in the two-argument form of assert, the second argument may be anything but void

> Expected 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}

Test Case: non-jls-jsr41.2-syntax-12

> in the two-argument form of assert, the second argument may be anything but void

> Expected 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}

Test Case: non-jls-jsr41.2-syntax-13

> in the two-argument form of assert, the second argument may be anything but void

> Expected 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}

Test Case: non-jls-jsr41.2-syntax-14

> in the two-argument form of assert, the second argument may be anything but void

> Expected 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}

Test Case: non-jls-jsr41.2-syntax-15

> in the two-argument form of assert, the second argument may be anything but void

> Expected 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}

Test Case: non-jls-jsr41.2-syntax-16

> in the two-argument form of assert, the second argument may be anything but void

> Expected 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}

Test Case: non-jls-jsr41.2-syntax-17

> in the two-argument form of assert, the second argument may be anything but void

> Expected 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}

Test Case: non-jls-jsr41.2-syntax-18

> in the two-argument form of assert, the second argument may be anything but void

> Expected 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}

Test Case: non-jls-jsr41.2-syntax-19

> in the two-argument form of assert, the second argument may be anything but void

> Expected 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}

Test Case: non-jls-jsr41.2-syntax-20

> in the two-argument form of assert, the second argument may be anything but void

> Expected 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}

Test Case: non-jls-jsr41.2-syntax-21

> in the two-argument form of assert, the second argument may be anything but void

> Expected 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}

Test Case: non-jls-jsr41.2-syntax-22

> in the two-argument form of assert, the second argument may be anything but void

> Expected 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}

Test Case: 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.

> Expected 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}

Test Case: non-jls-jsr41.2-nesting-2

> The four legal uses of : nested in one statement

> Expected 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}

Test Case: non-jls-jsr41.2-nesting-3

> The arguments of assert may be any expression

> Expected 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}

Test Case: non-jls-jsr41.2-nesting-4

> The arguments of assert may be any expression (see Sun bug 4446137 for this example)

> Expected 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}

Test Case: 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...)

> 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}

### 41.4

Directory : `tests/non-jls/assert/definite-assignment`

- non-jls-jsr41.4-definite-assignment-fail-1
- non-jls-jsr41.4-definite-assignment-fail-2
- non-jls-jsr41.4-definite-assignment-fail-3
- non-jls-jsr41.4-definite-assignment-fail-4
- non-jls-jsr41.4-definite-assignment-fail-5
- non-jls-jsr41.4-definite-assignment-fail-6
- non-jls-jsr41.4-definite-assignment-fail-7
- non-jls-jsr41.4-definite-assignment-fail-8
- non-jls-jsr41.4-definite-assignment-fail-9
- non-jls-jsr41.4-definite-assignment-fail-10
- non-jls-jsr41.4-definite-assignment-fail-11
- non-jls-jsr41.4-definite-assignment-fail-12
- non-jls-jsr41.4-definite-assignment-fail-13
- non-jls-jsr41.4-definite-assignment-pass-1
- non-jls-jsr41.4-definite-assignment-pass-2
- non-jls-jsr41.4-definite-assignment-pass-3
- non-jls-jsr41.4-definite-assignment-pass-4
- non-jls-jsr41.4-definite-assignment-pass-5
- non-jls-jsr41.4-definite-assignment-pass-6
- non-jls-jsr41.4-definite-assignment-pass-7
- non-jls-jsr41.4-definite-assignment-pass-8
- non-jls-jsr41.4-definite-assignment-pass-9
- non-jls-jsr41.4-definite-assignment-pass-10
- non-jls-jsr41.4-definite-assignment-pass-11
- non-jls-jsr41.4-definite-assignment-pass-12
- non-jls-jsr41.4-definite-unassignment-fail-1
- non-jls-jsr41.4-definite-unassignment-fail-2
- non-jls-jsr41.4-definite-unassignment-fail-3
- non-jls-jsr41.4-definite-unassignment-fail-4
- non-jls-jsr41.4-definite-unassignment-fail-5
- non-jls-jsr41.4-definite-unassignment-fail-6
- non-jls-jsr41.4-definite-unassignment-fail-7
- non-jls-jsr41.4-definite-unassignment-fail-8
- non-jls-jsr41.4-definite-unassignment-fail-9
- non-jls-jsr41.4-definite-unassignment-fail-10
- non-jls-jsr41.4-definite-unassignment-fail-11
- non-jls-jsr41.4-definite-unassignment-fail-12
- non-jls-jsr41.4-definite-unassignment-fail-13
- non-jls-jsr41.4-definite-unassignment-fail-14
- non-jls-jsr41.4-definite-unassignment-fail-15
- non-jls-jsr41.4-definite-unassignment-fail-16
- non-jls-jsr41.4-definite-unassignment-fail-17
- non-jls-jsr41.4-definite-unassignment-fail-18
- non-jls-jsr41.4-definite-unassignment-fail-19
- non-jls-jsr41.4-definite-unassignment-fail-20
- non-jls-jsr41.4-definite-unassignment-fail-21
- non-jls-jsr41.4-definite-unassignment-fail-22
- non-jls-jsr41.4-definite-unassignment-fail-23
- non-jls-jsr41.4-definite-unassignment-fail-24
- non-jls-jsr41.4-definite-unassignment-pass-1
- non-jls-jsr41.4-definite-unassignment-pass-2
- non-jls-jsr41.4-definite-unassignment-pass-3
- non-jls-jsr41.4-definite-unassignment-pass-4
- non-jls-jsr41.4-definite-unassignment-pass-5
- non-jls-jsr41.4-definite-unassignment-pass-6
- non-jls-jsr41.4-definite-unassignment-pass-7
- non-jls-jsr41.4-definite-unassignment-pass-8
- non-jls-jsr41.4-definite-unassignment-pass-9
- non-jls-jsr41.4-definite-unassignment-pass-10
- non-jls-jsr41.4-definite-unassignment-try-1
- non-jls-jsr41.4-definite-unassignment-try-2
- non-jls-jsr41.4-definite-unassignment-try-3
- non-jls-jsr41.4-definite-unassignment-try-4
- non-jls-jsr41.4-definite-unassignment-try-5
- non-jls-jsr41.4-definite-unassignment-try-6
- non-jls-jsr41.4-definite-unassignment-try-7
- non-jls-jsr41.4-definite-unassignment-try-8
- non-jls-jsr41.4-definite-unassignment-try-9
- non-jls-jsr41.4-definite-unassignment-try-10
- non-jls-jsr41.4-definite-unassignment-try-11
- non-jls-jsr41.4-definite-unassignment-try-12
- non-jls-jsr41.4-loop-1
- non-jls-jsr41.4-loop-2
- non-jls-jsr41.4-loop-3
- non-jls-jsr41.4-loop-4
- non-jls-jsr41.4-loop-5
- non-jls-jsr41.4-loop-6
- non-jls-jsr41.4-loop-7
- non-jls-jsr41.4-loop-8
- non-jls-jsr41.4-loop-9
- non-jls-jsr41.4-loop-10
- non-jls-jsr41.4-loop-11
- non-jls-jsr41.4-loop-12
- non-jls-jsr41.4-loop-13
- non-jls-jsr41.4-loop-14
- non-jls-jsr41.4-loop-15
- non-jls-jsr41.4-loop-16
- non-jls-jsr41.4-loop-17
- non-jls-jsr41.4-loop-18
- non-jls-jsr41.4-reachability-1
- non-jls-jsr41.4-reachability-2
- non-jls-jsr41.4-reachability-3
- non-jls-jsr41.4-reachability-4
- non-jls-jsr41.4-reachability-5

Test Case: non-jls-jsr41.4-definite-assignment-fail-1

> V is DA before Expression1 iff V is DA before the assert

> Expected 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}

Test Case: non-jls-jsr41.4-definite-assignment-fail-2

> V is DA before Expression2 iff V is DA after Expression1 when false

> Expected 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}

Test Case: non-jls-jsr41.4-definite-assignment-fail-3

> V is DA before Expression2 iff V is DA after Expression1 when false

> Expected 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}

Test Case: non-jls-jsr41.4-definite-assignment-fail-4

> V is DA after the assert iff V is DA before the assert

> Expected 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}

Test Case: non-jls-jsr41.4-definite-assignment-fail-5

> V is DA after the assert iff V is DA before the assert

> Expected 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}

Test Case: non-jls-jsr41.4-definite-assignment-fail-6

> V is DA after the assert iff V is DA before the assert

> Expected 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}

Test Case: non-jls-jsr41.4-definite-assignment-fail-7

> V is DA after the assert iff V is DA before the assert

> Expected 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}

Test Case: non-jls-jsr41.4-definite-assignment-fail-8

> V is DA after the assert iff V is DA before the assert

> Expected 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}

Test Case: non-jls-jsr41.4-definite-assignment-fail-9

> V is DA after the assert iff V is DA before the assert

> Expected 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}

Test Case: non-jls-jsr41.4-definite-assignment-fail-10

> V is DA after the assert iff V is DA before the assert

> Expected 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}

Test Case: non-jls-jsr41.4-definite-assignment-fail-11

> V is DA after the assert iff V is DA before the assert

> Expected 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}

Test Case: non-jls-jsr41.4-definite-assignment-fail-12

> V is DA after the assert iff V is DA before the assert

> Expected 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}

Test Case: non-jls-jsr41.4-definite-assignment-fail-13

> V is DA after the assert iff V is DA before the assert

> Expected 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}

Test Case: non-jls-jsr41.4-definite-assignment-pass-1

> V is DA before Expression1 iff V is DA before the assert

> Expected 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}

Test Case: non-jls-jsr41.4-definite-assignment-pass-2

> V is DA before Expression2 iff V is DA after Expression1 when false

> Expected 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}

Test Case: non-jls-jsr41.4-definite-assignment-pass-3

> V is DA before Expression2 iff V is DA after Expression1 when false

> Expected 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}

Test Case: non-jls-jsr41.4-definite-assignment-pass-4

> V is DA before Expression2 iff V is DA after Expression1 when false

> Expected 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}

Test Case: non-jls-jsr41.4-definite-assignment-pass-5

> V is DA before Expression2 iff V is DA after Expression1 when false

> Expected 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}

Test Case: non-jls-jsr41.4-definite-assignment-pass-6

> V is DA before Expression2 iff V is DA after Expression1 when false

> Expected 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}

Test Case: non-jls-jsr41.4-definite-assignment-pass-7

> V is DA before Expression2 iff V is DA after Expression1 when false

> Expected 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}

Test Case: non-jls-jsr41.4-definite-assignment-pass-8

> V is DA before Expression2 iff V is DA after Expression1 when false

> Expected 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}

Test Case: non-jls-jsr41.4-definite-assignment-pass-9

> V is DA after the assert iff V is DA before the assert

> Expected 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}

Test Case: non-jls-jsr41.4-definite-assignment-pass-10

> V is DA after the assert iff V is DA before the assert

> Expected 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}

Test Case: non-jls-jsr41.4-definite-assignment-pass-11

> V is DA after the assert iff V is DA before the assert

> Expected 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}

Test Case: non-jls-jsr41.4-definite-assignment-pass-12

> V is DA after the assert iff V is DA before the assert

> Expected 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}

Test Case: non-jls-jsr41.4-definite-unassignment-fail-1

> V is DU before Expression1 iff V is DU before the assert

> Expected 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}

Test Case: non-jls-jsr41.4-definite-unassignment-fail-2

> V is DU before Expression2 iff V is DU after Expression1 when false

> Expected 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}

Test Case: non-jls-jsr41.4-definite-unassignment-fail-3

> V is DU before Expression2 iff V is DU after Expression1 when false

> Expected 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}

Test Case: non-jls-jsr41.4-definite-unassignment-fail-4

> V is DU before Expression2 iff V is DU after Expression1 when false

> Expected 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}

Test Case: non-jls-jsr41.4-definite-unassignment-fail-5

> V is DU before Expression2 iff V is DU after Expression1 when false

> Expected 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}

Test Case: non-jls-jsr41.4-definite-unassignment-fail-6

> V is DU before Expression2 iff V is DU after Expression1 when false

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: non-jls-jsr41.4-definite-unassignment-fail-19

> DU only applies to blank finals. Initialized finals cannot be assigned.

> Expected 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}

Test Case: non-jls-jsr41.4-definite-unassignment-fail-20

> DU only applies to blank finals. Initialized finals cannot be assigned.

> Expected 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}

Test Case: non-jls-jsr41.4-definite-unassignment-fail-21

> DU only applies to blank finals. Initialized finals cannot be assigned.

> Expected 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}

Test Case: non-jls-jsr41.4-definite-unassignment-fail-22

> DU only applies to blank finals. Initialized finals cannot be assigned.

> Expected 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}

Test Case: non-jls-jsr41.4-definite-unassignment-fail-23

> Blank final fields cannot be assigned outside constructor/initializer.

> Expected 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}

Test Case: non-jls-jsr41.4-definite-unassignment-fail-24

> Blank final fields cannot be assigned outside constructor/initializer.

> Expected 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}

Test Case: non-jls-jsr41.4-definite-unassignment-pass-1

> V is DU before Expression1 iff V is DU before the assert

> Expected 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}

Test Case: non-jls-jsr41.4-definite-unassignment-pass-2

> V is DU before Expression2 iff V is DU after Expression1 when false

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: non-jls-jsr41.4-loop-1

> v must not be multiply assigned in loops

> Expected 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}

Test Case: non-jls-jsr41.4-loop-2

> v must not be multiply assigned in loops

> Expected 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}

Test Case: non-jls-jsr41.4-loop-3

> v must not be multiply assigned in loops

> Expected 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}

Test Case: non-jls-jsr41.4-loop-4

> v must not be multiply assigned in loops

> Expected 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}

Test Case: non-jls-jsr41.4-loop-5

> v must not be multiply assigned in loops

> Expected 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}

Test Case: non-jls-jsr41.4-loop-6

> v must not be multiply assigned in loops

> Expected 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}

Test Case: non-jls-jsr41.4-loop-7

> v must not be multiply assigned in loops

> Expected 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}

Test Case: non-jls-jsr41.4-loop-8

> v must not be multiply assigned in loops

> Expected 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}

Test Case: non-jls-jsr41.4-loop-9

> v must not be multiply assigned in loops

> Expected 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}

Test Case: non-jls-jsr41.4-loop-10

> v must not be multiply assigned in loops

> Expected 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}

Test Case: non-jls-jsr41.4-loop-11

> v must not be multiply assigned in loops

> Expected 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}

Test Case: non-jls-jsr41.4-loop-12

> v must not be multiply assigned in loops

> Expected 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}

Test Case: non-jls-jsr41.4-loop-13

> v must not be multiply assigned in loops

> Expected 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}

Test Case: non-jls-jsr41.4-loop-14

> v must not be multiply assigned in loops

> Expected 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}

Test Case: non-jls-jsr41.4-loop-15

> v must not be multiply assigned in loops

> Expected 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}

Test Case: non-jls-jsr41.4-loop-16

> v must not be multiply assigned in loops

> Expected 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}

Test Case: non-jls-jsr41.4-loop-17

> v must not be multiply assigned in loops

> Expected 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}

Test Case: non-jls-jsr41.4-loop-18

> v must not be multiply assigned in loops

> Expected 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}

Test Case: non-jls-jsr41.4-reachability-1

> an assert can complete normally iff it is reachable

> Expected 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}

Test Case: non-jls-jsr41.4-reachability-2

> an assert can complete normally iff it is reachable

> Expected 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}

Test Case: non-jls-jsr41.4-reachability-3

> an assert can complete normally iff it is reachable, but non-void methods cannot complete normally

> Expected 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}

Test Case: non-jls-jsr41.4-reachability-4

> an assert can complete normally iff it is reachable, but non-void methods cannot complete normally

> Expected 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}

Test Case: non-jls-jsr41.4-reachability-5

> an assert must be reachable

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test non-jls-jsr41.4-reachability-5 { an assert must be
>             reachable } {

>         empty_main T414r5 {
>     	return;
>     	assert false;
>         }

>     } {FAIL}

### argument-expansion

Directory : `tests/non-jls/argument-expansion`

- non-jls-argument-expansion-1
- non-jls-argument-expansion-2
- non-jls-argument-expansion-3
- non-jls-argument-expansion-4
- non-jls-argument-expansion-5
- non-jls-argument-expansion-6
- non-jls-argument-expansion-7
- non-jls-argument-expansion-8
- non-jls-argument-expansion-9
- non-jls-argument-expansion-10
- non-jls-argument-expansion-11
- non-jls-argument-expansion-12
- non-jls-argument-expansion-13
- non-jls-argument-expansion-error-1
- non-jls-argument-expansion-error-2
- non-jls-argument-expansion-error-3
- non-jls-argument-expansion-tokens-1
- non-jls-argument-expansion-tokens-2
- non-jls-argument-expansion-tokens-3
- non-jls-argument-expansion-tokens-4
- non-jls-argument-expansion-tokens-5
- non-jls-argument-expansion-tokens-6

Test Case: non-jls-argument-expansion-1

> Under Windows, the compiler should expand command line arguments

> Expected 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}

Test Case: non-jls-argument-expansion-2

> The @ symbol indicates that the compiler should read file names from the given file

> Expected 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}

Test Case: non-jls-argument-expansion-3

> EOL chars in @ file argument

> Expected 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}

Test Case: non-jls-argument-expansion-4

> EOL chars in @ file argument

> Expected 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}

Test Case: non-jls-argument-expansion-5

> EOL chars in @ file argument

> Expected 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}

Test Case: non-jls-argument-expansion-6

> Empty line in @ file argument

> Expected 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}

Test Case: non-jls-argument-expansion-7

> Spaces in a @ argument file should not cause the compile to fail

> Expected 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}

Test Case: non-jls-argument-expansion-8

> Tabs in a @ argument file should not cause the compile to fail

> Expected 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}

Test Case: non-jls-argument-expansion-9

> Tabs and spaces in a @ argument file should not cause the compile to fail

> Expected 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}

Test Case: non-jls-argument-expansion-10

> Tabs and spaces in empty line of a @ argument should be ignored

> Expected 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}

Test Case: non-jls-argument-expansion-11

> Expand empty @ argument. this will terminate without doing anything for JDK 1.3 compatibility

> Expected 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}

Test Case: non-jls-argument-expansion-12

> Expand empty @ argument

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test non-jls-argument-expansion-12 { Expand empty @ argument
>         } {

>         saveas list12 "\n\n"
>         compile @list12

>     } {PASS}

Test Case: non-jls-argument-expansion-13

> Expand empty @ argument

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test non-jls-argument-expansion-13 { Expand empty @ argument
>         } {

>         saveas list13 ""
>         compile C1.java @list13

>     } {PASS}

Test Case: non-jls-argument-expansion-error-1

> Error: Same class compiled twice

> Expected 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}

Test Case: non-jls-argument-expansion-error-2

> Error: Same class compiled twice

> Expected 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}

Test Case: non-jls-argument-expansion-error-3

> Error: @ file does not exist

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test non-jls-argument-expansion-error-3 { Error: @ file does not exist
>         } {

>         compile @notthere

>     } {FAIL}

Test Case: non-jls-argument-expansion-tokens-1

> Two files on the same line are NOT parsed as two tokens

> Expected 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}

Test Case: non-jls-argument-expansion-tokens-2

> A file name surrounded by double quotes is valid

> Expected 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}

Test Case: non-jls-argument-expansion-tokens-3

> A empty file name is not valid

> Expected Result: FAIL

> Regression Test: ``

>     tcltest::test non-jls-argument-expansion-tokens-3 { A empty
>         file name is not valid } {

>         saveas tokens3 "\"\""
>         compile @tokens3

>     } {FAIL}

Test Case: non-jls-argument-expansion-tokens-4

> A file name the contains a space surrounded by double quotes is valid

> Expected 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}

Test Case: non-jls-argument-expansion-tokens-5

> A file name the contains a space surrounded by double quotes is valid

> Expected 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}

Test Case: non-jls-argument-expansion-tokens-6

> @ files may not invoke other @ files

> Expected 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}

### encoding

Directory : `tests/non-jls/encoding`

- non-jls-encoding-1
- non-jls-encoding-2
- non-jls-encoding-3
- non-jls-encoding-4
- non-jls-encoding-5
- non-jls-encoding-6
- non-jls-invalid-encoding-1

Test Case: non-jls-encoding-1

> works with the cp437 encoding

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test non-jls-encoding-1 { works with the
>             cp437 encoding } {

>         constant_encoded_expression E1 cp437  \x84 {\u00e4}

>     } {PASS}

Test Case: non-jls-encoding-2

> same character in utf-8

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: non-jls-encoding-4

> same character in utf-8

> Expected 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}

Test Case: non-jls-encoding-5

> 65533 (FFFD) is the last symbol in "Specials" category

> Expected 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}

Test Case: non-jls-encoding-6

> Latin small letter e with acute (233) is in the Latin-1 Suppliment

> Expected 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}

Test Case: non-jls-invalid-encoding-1

> Unknown encoding

> Expected 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}

### random-crashers

Directory : `tests/non-jls/random-crashers`

- non-jls-random-crashers-1

Test Case: non-jls-random-crashers-1

> crash

> Expected 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}

### zip

Directory : `tests/non-jls/zip`

- non-jls-zip-1
- non-jls-zip-2
- non-jls-zip-3
- non-jls-zip-4

Test Case: non-jls-zip-1

> Load .class file from zip without comment

> Expected 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}

Test Case: non-jls-zip-2

> Load .class file from zip with comment

> Expected 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}

Test Case: non-jls-zip-3

> Load .class file from a compressed zip

> Expected 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}

Test Case: non-jls-zip-4

> ignore zip file that does not exist

> Expected 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}

### gcj tests

### gcj

Directory : `tests/gcj`

- gcj-PR198

Test Case: gcj-PR198

> test case for gcj PR198

> Expected Result: PASS

> Regression Test: ``

>     tcltest::test gcj-PR198 { test case for gcj PR198 } {

>       compile PR198.java

>     } {PASS}

### jikes tests

### 3.1

Directory : `tests/jikes/jls/lexical-structure/unicode`

- 3.1-jikes-comments-non-ascii-1
- 3.1-jikes-identifier-non-ascii-1
- 3.1-jikes-character-literal-non-ascii-1
- 3.1-jikes-string-literal-non-ascii-1
- 3.1-jikes-non-ascii-1

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 3.1-jikes-non-ascii-1

> 0xF7 returns false for Character.isJavaIdentifierStart() so it is not a valid identifier

> Expected 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}

### 3.10.4

Directory : `tests/jikes/jls/lexical-structure/literals/character-literals`

- 3.10.4-jikes-non-ascii-1
- 3.10.4-jikes-non-ascii-2

Test Case: 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.

> Expected 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}

Test Case: 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.

> 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}

### 7.5.2

Directory : `tests/jikes/jls/packages/import-declarations/type-import-on-demand-declaration`

- 7.5.2-jikes-package-not-found-1

Test Case: 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

> Expected 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}

### 8.3.2

Directory : `tests/jikes/jls/classes/field-declarations/initialization-of-fields`

- 8.3.2-jikes-message-1

Test Case: 8.3.2-jikes-message-1

> jikes should not report incompatible types when the initializer already has an error

> Expected 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}

### 8.4.5

Directory : `tests/jikes/jls/classes/method-declarations/method-body`

- 8.4.5-jikes-1

Test Case: 8.4.5-jikes-1

> see if jikes output is mangled by a typo in src/error.cpp

> Expected 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}

### 8.8.5.1

Directory : `tests/jikes/jls/classes/constructor-declarations/constructor-body/explicit-constructor-invocations`

- 8.8.5.1-jikes-before-block-statements-1
- 8.8.5.1-jikes-before-block-statements-2

Test Case: 8.8.5.1-jikes-before-block-statements-1

> An ExplicitConstructorInvocation must appear before the optional BlockStatements

> Expected 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}

Test Case: 8.8.5.1-jikes-before-block-statements-2

> An ExplicitConstructorInvocation must appear before the optional BlockStatements

> Expected 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}

### 14.7

Directory : `tests/jikes/jls/blocks-and-statements/labeled-statements`

- 14.7-jikes-message-1

Test Case: 14.7-jikes-message-1

> Some versions of jikes grabbed the wrong label in the error message

> Expected 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}

### 14.19

Directory : `tests/jikes/jls/blocks-and-statements/try-statement`

- 14.19-jikes-message-1

Test Case: 14.19-jikes-message-1

> Some versions of jikes turned a bad catch into Error, causing spurious warnings about subsequent catches of Error

> Expected 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}

### 14.20

Directory : `tests/jikes/jls/blocks-and-statements/unreachable-statements`

- 14.20-jikes-message-1
- 14.20-jikes-message-2
- 14.20-jikes-message-3

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

### jikes

Directory : `tests/jikes`

- jikes-1
- jikes-3

Test Case: jikes-1

> jikes should fail but not core dump on this dependency

> Expected 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}

Test Case: jikes-3

> jikes should fail but not core dump on illegal import from anonymous package

> Expected 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}

### jvms tests

### 4.7.10

Directory : `tests/jvms/class-file-format/attributes/deprecated-attribute`

- 4.7.10-jvms-class-1
- 4.7.10-jvms-class-2
- 4.7.10-jvms-class-3
- 4.7.10-jvms-class-4
- 4.7.10-jvms-class-5
- 4.7.10-jvms-class-6
- 4.7.10-jvms-class-7
- 4.7.10-jvms-class-8
- 4.7.10-jvms-class-9
- 4.7.10-jvms-class-10
- 4.7.10-jvms-class-11
- 4.7.10-jvms-class-12
- 4.7.10-jvms-class-13
- 4.7.10-jvms-class-14
- 4.7.10-jvms-class-15
- 4.7.10-jvms-class-16
- 4.7.10-jvms-class-17
- 4.7.10-jvms-class-18
- 4.7.10-jvms-class-19
- 4.7.10-jvms-method-1
- 4.7.10-jvms-method-2
- 4.7.10-jvms-method-3
- 4.7.10-jvms-method-4
- 4.7.10-jvms-method-5
- 4.7.10-jvms-method-6
- 4.7.10-jvms-method-7
- 4.7.10-jvms-method-8
- 4.7.10-jvms-method-9
- 4.7.10-jvms-method-10
- 4.7.10-jvms-method-11
- 4.7.10-jvms-method-12
- 4.7.10-jvms-constructor-1
- 4.7.10-jvms-constructor-2
- 4.7.10-jvms-constructor-3
- 4.7.10-jvms-constructor-4
- 4.7.10-jvms-constructor-5
- 4.7.10-jvms-constructor-6
- 4.7.10-jvms-constructor-7
- 4.7.10-jvms-constructor-8
- 4.7.10-jvms-constructor-9
- 4.7.10-jvms-constructor-10
- 4.7.10-jvms-constructor-11
- 4.7.10-jvms-constructor-12
- 4.7.10-jvms-constructor-13
- 4.7.10-jvms-constructor-14
- 4.7.10-jvms-field-1
- 4.7.10-jvms-field-2
- 4.7.10-jvms-field-3
- 4.7.10-jvms-field-4
- 4.7.10-jvms-field-5
- 4.7.10-jvms-field-6
- 4.7.10-jvms-field-7
- 4.7.10-jvms-field-8
- 4.7.10-jvms-field-9
- 4.7.10-jvms-field-10
- 4.7.10-jvms-field-11
- 4.7.10-jvms-field-12
- 4.7.10-jvms-field-13
- 4.7.10-jvms-lex-1
- 4.7.10-jvms-lex-2
- 4.7.10-jvms-lex-3
- 4.7.10-jvms-lex-4
- 4.7.10-jvms-lex-5
- 4.7.10-jvms-lex-6
- 4.7.10-jvms-lex-7
- 4.7.10-jvms-lex-8
- 4.7.10-jvms-lex-9
- 4.7.10-jvms-lex-10

Test Case: 4.7.10-jvms-class-1

> Test that a class can be deprecated

> Expected 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 Case: 4.7.10-jvms-class-2

> Test that a class can be deprecated

> Expected 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 Case: 4.7.10-jvms-class-3

> Test that a class can be deprecated

> Expected 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 Case: 4.7.10-jvms-class-4

> Test that a class can be deprecated

> Expected 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 Case: 4.7.10-jvms-class-5

> Test that a class can be deprecated

> Expected 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 Case: 4.7.10-jvms-class-6

> Test that a class can be deprecated

> Expected 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 Case: 4.7.10-jvms-class-7

> Test that a class can be deprecated

> Expected 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 Case: 4.7.10-jvms-class-8

> Test that a class can be deprecated

> Expected 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 Case: 4.7.10-jvms-class-9

> Test that a class can be deprecated

> Expected 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 Case: 4.7.10-jvms-class-10

> Test that a class can be deprecated

> Expected 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 Case: 4.7.10-jvms-class-11

> Test that a class can be deprecated

> Expected 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 Case: 4.7.10-jvms-class-12

> Test that a class can be deprecated

> Expected 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 Case: 4.7.10-jvms-class-13

> Test that a class can be deprecated

> Expected 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 Case: 4.7.10-jvms-class-14

> Test that a class can be deprecated

> Expected 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 Case: 4.7.10-jvms-class-15

> Test that a class can be deprecated

> Expected 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 Case: 4.7.10-jvms-class-16

> Test that a class can be deprecated

> Expected 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 Case: 4.7.10-jvms-class-17

> Test that a class can be deprecated

> Expected 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 Case: 4.7.10-jvms-class-18

> Test that a class can be deprecated

> Expected 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 Case: 4.7.10-jvms-class-19

> Test that a class can be deprecated

> Expected 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 Case: 4.7.10-jvms-method-1

> Test that a method can be deprecated

> Expected 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 Case: 4.7.10-jvms-method-2

> Test that a method can be deprecated

> Expected 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 Case: 4.7.10-jvms-method-3

> Test that a method can be deprecated

> Expected 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 Case: 4.7.10-jvms-method-4

> Test that a method can be deprecated

> Expected 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 Case: 4.7.10-jvms-method-5

> Test that a method can be deprecated

> Expected 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 Case: 4.7.10-jvms-method-6

> Test that a method can be deprecated

> Expected 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 Case: 4.7.10-jvms-method-7

> Test that a method can be deprecated

> Expected 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 Case: 4.7.10-jvms-method-8

> Test that a method can be deprecated

> Expected 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 Case: 4.7.10-jvms-method-9

> Test that a method can be deprecated

> Expected 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 Case: 4.7.10-jvms-method-10

> Test that a method can be deprecated

> Expected 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 Case: 4.7.10-jvms-method-11

> Test that a method can be deprecated

> Expected 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 Case: 4.7.10-jvms-method-12

> Test that a method can be deprecated

> Expected 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 Case: 4.7.10-jvms-constructor-1

> Test that a constructor can be deprecated

> Expected 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 Case: 4.7.10-jvms-constructor-2

> Test that a constructor can be deprecated

> Expected 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 Case: 4.7.10-jvms-constructor-3

> Test that a constructor can be deprecated

> Expected 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 Case: 4.7.10-jvms-constructor-4

> Test that a constructor can be deprecated

> Expected 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 Case: 4.7.10-jvms-constructor-5

> Test that a constructor can be deprecated

> Expected 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 Case: 4.7.10-jvms-constructor-6

> Test that a constructor can be deprecated

> Expected 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 Case: 4.7.10-jvms-constructor-7

> Test that a constructor can be deprecated

> Expected 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 Case: 4.7.10-jvms-constructor-8

> Test that a constructor can be deprecated

> Expected 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 Case: 4.7.10-jvms-constructor-9

> Test that a constructor can be deprecated

> Expected 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 Case: 4.7.10-jvms-constructor-10

> Test that a constructor can be deprecated

> Expected 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 Case: 4.7.10-jvms-constructor-11

> Test that a constructor can be deprecated

> Expected 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 Case: 4.7.10-jvms-constructor-12

> Test that a constructor can be deprecated

> Expected 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 Case: 4.7.10-jvms-constructor-13

> Test that a constructor can be deprecated

> Expected 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 Case: 4.7.10-jvms-constructor-14

> Test that a constructor can be deprecated

> Expected 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 Case: 4.7.10-jvms-field-1

> Test that a field can be deprecated

> Expected 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 Case: 4.7.10-jvms-field-2

> Test that a field can be deprecated

> Expected 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 Case: 4.7.10-jvms-field-3

> Test that a field can be deprecated

> Expected 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 Case: 4.7.10-jvms-field-4

> Test that a field can be deprecated

> Expected 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 Case: 4.7.10-jvms-field-5

> Test that a field can be deprecated

> Expected 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 Case: 4.7.10-jvms-field-6

> Test that a field can be deprecated

> Expected 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 Case: 4.7.10-jvms-field-7

> Test that a field can be deprecated

> Expected 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 Case: 4.7.10-jvms-field-8

> Test that a field can be deprecated

> Expected 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 Case: 4.7.10-jvms-field-9

> Test that a field can be deprecated

> Expected 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 Case: 4.7.10-jvms-field-10

> Test that a field can be deprecated

> Expected 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 Case: 4.7.10-jvms-field-11

> Test that a field can be deprecated

> Expected 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 Case: 4.7.10-jvms-field-12

> Test that a field can be deprecated

> Expected 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 Case: 4.7.10-jvms-field-13

> Test that a field can be deprecated

> Expected 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 Case: 4.7.10-jvms-lex-1

> Test lexing of deprecated

> Expected 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 Case: 4.7.10-jvms-lex-2

> Test lexing of deprecated

> Expected 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 Case: 4.7.10-jvms-lex-3

> Test lexing of deprecated

> Expected 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 Case: 4.7.10-jvms-lex-4

> Test lexing of deprecated

> Expected 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 Case: 4.7.10-jvms-lex-5

> Test lexing of deprecated

> Expected 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 Case: 4.7.10-jvms-lex-6

> Test lexing of deprecated

> Expected 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 Case: 4.7.10-jvms-lex-7

> Test lexing of deprecated

> Expected 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 Case: 4.7.10-jvms-lex-8

> Test lexing of deprecated

> Expected 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 Case: 4.7.10-jvms-lex-9

> Test lexing of deprecated

> Expected 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 Case: 4.7.10-jvms-lex-10

> Test lexing of deprecated

> Expected 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}

### 4.10

Directory : `tests/jvms/class-file-format/limitations`

- 4.10-jvms-1
- 4.10-jvms-2
- 4.10-jvms-3
- 4.10-jvms-4
- 4.10-jvms-5
- 4.10-jvms-6
- 4.10-jvms-7
- 4.10-jvms-8
- 4.10-jvms-9
- 4.10-jvms-10
- 4.10-jvms-11
- 4.10-jvms-12
- 4.10-jvms-13
- 4.10-jvms-14
- 4.10-jvms-15
- 4.10-jvms-16
- 4.10-jvms-17
- 4.10-jvms-18
- 4.10-jvms-19
- 4.10-jvms-20
- 4.10-jvms-21
- 4.10-jvms-22
- 4.10-jvms-23

Test Case: 4.10-jvms-1

> A class can have at most 65535 entries in the constant pool

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 4.10-jvms-4

> A single class can have at most 65535 member variables, although more than that can be inherited

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 4.10-jvms-6

> A single class can have at most 65535 member variables, although more than that can be inherited

> Expected 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}

Test Case: 4.10-jvms-7

> A method can have at most 255 parameters

> Expected 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}

Test Case: 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

> Expected 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}

Test Case: 4.10-jvms-9

> A method can have at most 255 parameters. This limit is reduced to 127 doubles or longs in interface methods

> Expected 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}

Test Case: 4.10-jvms-10

> The number of dimensions in an array is limited to 255.

> Expected 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}

Test Case: 4.10-jvms-11

> The number of dimensions in an array is limited to 255.

> Expected 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}

Test Case: 4.10-jvms-12

> The number of dimensions in an array is limited to 255.

> Expected 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}

Test Case: 4.10-jvms-13

> The number of dimensions in an array is limited to 255.

> Expected 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}

Test Case: 4.10-jvms-14

> The number of dimensions in an array is limited to 255.

> Expected 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}

Test Case: 4.10-jvms-15

> The number of dimensions in an array is limited to 255.

> Expected 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}

Test Case: 4.10-jvms-16

> The number of dimensions in an array is limited to 255.

> Expected 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}

Test Case: 4.10-jvms-17

> The number of dimensions in an array is limited to 255.

> Expected 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}

Test Case: 4.10-jvms-18

> Strings that occupy more than 65535 UTF8 bytes do not fit in the constant pool

> Expected 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}

Test Case: 4.10-jvms-19

> Strings that occupy more than 0xffff UTF8 bytes cannot be constant, according to JVMS.

> Expected 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}

Test Case: 4.10-jvms-20

> Strings that occupy more than 65535 UTF8 bytes do not fit in the constant pool

> Expected 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}

Test Case: 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

> 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}

Test Case: 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

> Expected 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}

Test Case: 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

> Expected 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}

### Index of all 4744 tests

- 3.2-invalid-1
- 3.2-invalid-2
- 3.2-invalid-3
- 3.2-invalid-4
- 3.2-invalid-5
- 3.2-invalid-6
- 3.2-invalid-7
- 3.2-invalid-8
- 3.2-invalid-9
- 3.2-invalid-10
- 3.2-invalid-11
- 3.2-invalid-12
- 3.2-invalid-13
- 3.2-invalid-14
- 3.2-invalid-15
- 3.2-invalid-16
- 3.2-invalid-17
- 3.2-invalid-18
- 3.2-invalid-19
- 3.2-invalid-20
- 3.2-invalid-21
- 3.2-invalid-22
- 3.2-invalid-23
- 3.2-invalid-24
- 3.2-invalid-25
- 3.2-valid-1
- 3.2-valid-2
- 3.2-valid-3
- 3.3-invalid-1
- 3.3-invalid-2
- 3.3-invalid-3
- 3.3-invalid-4
- 3.3-invalid-5
- 3.3-invalid-6
- 3.3-invalid-7
- 3.3-invalid-8
- 3.3-valid-1
- 3.3-valid-2
- 3.3-valid-3
- 3.3-valid-4
- 3.3-valid-5
- 3.4-sanity-1
- 3.4-valid-1
- 3.4-valid-2
- 3.4-valid-3
- 3.4-valid-4
- 3.4-valid-5
- 3.4-valid-6
- 3.4-valid-7
- 3.4-valid-8
- 3.4-valid-9
- 3.4-valid-10
- 3.4-valid-11
- 3.4-valid-12
- 3.4-valid-13
- 3.4-valid-14
- 3.4-valid-15
- 3.4-valid-16
- 3.4-valid-17
- 3.4-valid-18
- 3.4-valid-19
- 3.4-valid-20
- 3.4-valid-21
- 3.4-valid-22
- 3.4-valid-23
- 3.4-valid-24
- 3.4-valid-25
- 3.4-valid-26
- 3.4-valid-27
- 3.4-valid-28
- 3.4-valid-29
- 3.4-valid-30
- 3.4-valid-31
- 3.4-valid-32
- 3.4-valid-33
- 3.4-valid-34
- 3.4-valid-35
- 3.4-line-number-1
- 3.4-line-number-2
- 3.4-line-number-3
- 3.4-line-number-4
- 3.4-line-number-5
- 3.4-line-number-6
- 3.4-line-number-7
- 3.4-line-number-8
- 3.4-line-number-9
- 3.4-line-number-10
- 3.4-line-number-11
- 3.4-line-number-12
- 3.4-line-number-13
- 3.4-line-number-14
- 3.4-line-number-15
- 3.4-line-number-16
- 3.4-line-number-17
- 3.4-line-number-18
- 3.4-line-number-19
- 3.4-line-number-20
- 3.4-line-number-21
- 3.4-line-number-22
- 3.4-line-number-23
- 3.4-line-number-24
- 3.4-line-number-25
- 3.5-1
- 3.5-2
- 3.5-3
- 3.5-4
- 3.5-5
- 3.5-6
- 3.5-7
- 3.5-8
- 3.5-9
- 3.5-10
- 3.5-11
- 3.5-12
- 3.5-13
- 3.5-14
- 3.5-15
- 3.5-16
- 3.5-17
- 3.6-invalid-1
- 3.6-invalid-2
- 3.6-invalid-3
- 3.6-invalid-4
- 3.6-invalid-5
- 3.6-invalid-6
- 3.6-invalid-7
- 3.6-invalid-8
- 3.6-invalid-9
- 3.6-invalid-10
- 3.6-invalid-11
- 3.6-invalid-12
- 3.6-invalid-13
- 3.6-invalid-14
- 3.6-valid-1
- 3.6-valid-2
- 3.6-valid-3
- 3.6-valid-4
- 3.6-valid-5
- 3.6-valid-6
- 3.6-valid-7
- 3.6-valid-8
- 3.6-valid-9
- 3.6-valid-10
- 3.6-valid-11
- 3.6-valid-12
- 3.7-1
- 3.7-2
- 3.7-3
- 3.7-4
- 3.7-5
- 3.7-6
- 3.7-7
- 3.7-8
- 3.7-9
- 3.7-10
- 3.7-11
- 3.7-12
- 3.7-13
- 3.7-14
- 3.7-15
- 3.7-16
- 3.7-17
- 3.7-18
- 3.7-19
- 3.7-20
- 3.7-21
- 3.7-22
- 3.7-23
- 3.7-24
- 3.7-25
- 3.7-26
- 3.7-27
- 3.7-28
- 3.7-29
- 3.7-30
- 3.7-31
- 3.7-32
- 3.7-33
- 3.7-34
- 3.7-35
- 3.7-36
- 3.7-37
- 3.7-38
- 3.7-39
- 3.7-line-number-1
- 3.7-line-number-2
- 3.7-line-number-3
- 3.7-line-number-4
- 3.7-line-number-5
- 3.7-line-number-6
- 3.7-line-number-7
- 3.7-line-number-8
- 3.7-line-number-9
- 3.7-line-number-10
- 3.7-line-number-11
- 3.7-line-number-12
- 3.7-line-number-13
- 3.7-line-number-14
- 3.8-invalid-1
- 3.8-invalid-2
- 3.8-invalid-3
- 3.8-invalid-4
- 3.8-invalid-5
- 3.8-invalid-6
- 3.8-invalid-7
- 3.8-invalid-8
- 3.8-invalid-9
- 3.8-valid-1
- 3.8-valid-2
- 3.8-valid-3
- 3.8-valid-4
- 3.8-valid-5
- 3.8-valid-6
- 3.8-valid-7
- 3.8-valid-8
- 3.8-valid-9
- 3.8-valid-10
- 3.8-valid-11
- 3.8-valid-12
- 3.8-ignorable-1
- 3.8-ignorable-2
- 3.9-1
- 3.9-2
- 3.9-3
- 3.9-4
- 3.9-5
- 3.9-6
- 3.9-7
- 3.9-8
- 3.9-9
- 3.9-10
- 3.9-11
- 3.9-12
- 3.9-13
- 3.9-14
- 3.9-15
- 3.9-16
- 3.9-17
- 3.9-18
- 3.9-19
- 3.9-20
- 3.9-21
- 3.9-22
- 3.9-23
- 3.9-24
- 3.9-25
- 3.9-26
- 3.9-27
- 3.9-28
- 3.9-29
- 3.9-30
- 3.9-31
- 3.9-32
- 3.9-33
- 3.9-34
- 3.9-35
- 3.9-36
- 3.9-37
- 3.9-38
- 3.9-39
- 3.9-40
- 3.9-41
- 3.9-42
- 3.9-43
- 3.9-44
- 3.9-45
- 3.9-46
- 3.9-47
- 3.9-48
- 3.9-valid-1
- 3.9-valid-2
- 3.9-valid-3
- 3.9-valid-4
- 3.9-valid-5
- 3.9-valid-6
- 3.9-valid-7
- 3.9-valid-8
- 3.9-valid-9
- 3.9-valid-10
- 3.9-valid-11
- 3.9-valid-12
- 3.9-valid-13
- 3.9-valid-14
- 3.9-valid-15
- 3.9-valid-16
- 3.9-valid-17
- 3.9-valid-18
- 3.9-valid-19
- 3.9-valid-20
- 3.9-valid-21
- 3.9-valid-22
- 3.9-valid-23
- 3.9-valid-24
- 3.9-valid-25
- 3.9-valid-26
- 3.9-valid-27
- 3.9-valid-28
- 3.9-valid-29
- 3.10.1-invalid-1
- 3.10.1-invalid-2
- 3.10.1-invalid-3
- 3.10.1-invalid-4
- 3.10.1-invalid-5
- 3.10.1-invalid-6
- 3.10.1-invalid-7
- 3.10.1-invalid-8
- 3.10.1-invalid-9
- 3.10.1-invalid-10
- 3.10.1-invalid-11
- 3.10.1-invalid-12
- 3.10.1-invalid-13
- 3.10.1-valid-1
- 3.10.1-valid-2
- 3.10.1-valid-3
- 3.10.1-valid-4
- 3.10.1-valid-5
- 3.10.1-valid-6
- 3.10.1-valid-7
- 3.10.1-valid-8
- 3.10.1-valid-9
- 3.10.1-valid-10
- 3.10.1-valid-11
- 3.10.1-valid-12
- 3.10.1-valid-13
- 3.10.1-valid-14
- 3.10.2-invalid-1
- 3.10.2-invalid-2
- 3.10.2-invalid-3
- 3.10.2-invalid-4
- 3.10.2-invalid-5
- 3.10.2-invalid-6
- 3.10.2-invalid-7
- 3.10.2-invalid-8
- 3.10.2-invalid-9
- 3.10.2-invalid-10
- 3.10.2-invalid-11
- 3.10.2-round-1
- 3.10.2-round-2
- 3.10.2-round-3
- 3.10.2-round-4
- 3.10.2-round-5
- 3.10.2-round-6
- 3.10.2-round-7
- 3.10.2-round-8
- 3.10.2-round-9
- 3.10.2-round-10
- 3.10.2-round-11
- 3.10.2-round-12
- 3.10.2-float-1
- 3.10.2-float-2
- 3.10.2-float-3
- 3.10.2-float-4
- 3.10.2-float-5
- 3.10.2-float-6
- 3.10.2-float-7
- 3.10.2-float-8
- 3.10.2-float-9
- 3.10.2-float-10
- 3.10.2-float-11
- 3.10.2-float-12
- 3.10.2-float-13
- 3.10.2-float-14
- 3.10.2-float-15
- 3.10.2-float-16
- 3.10.2-double-1
- 3.10.2-double-2
- 3.10.2-double-3
- 3.10.2-double-4
- 3.10.2-double-5
- 3.10.2-double-6
- 3.10.2-double-7
- 3.10.2-double-8
- 3.10.2-double-9
- 3.10.2-double-10
- 3.10.2-double-11
- 3.10.2-double-12
- 3.10.2-double-13
- 3.10.2-double-14
- 3.10.2-double-15
- 3.10.2-double-16
- 3.10.2-double-17
- 3.10.4-invalid-1
- 3.10.4-invalid-2
- 3.10.4-invalid-3
- 3.10.4-invalid-4
- 3.10.4-invalid-5
- 3.10.4-invalid-6
- 3.10.4-invalid-7
- 3.10.4-invalid-8
- 3.10.4-invalid-9
- 3.10.4-invalid-10
- 3.10.4-invalid-11
- 3.10.4-invalid-12
- 3.10.4-invalid-13
- 3.10.4-invalid-14
- 3.10.4-invalid-15
- 3.10.4-invalid-16
- 3.10.4-invalid-17
- 3.10.4-valid-1
- 3.10.4-valid-2
- 3.10.4-valid-3
- 3.10.4-valid-4
- 3.10.4-valid-5
- 3.10.4-valid-6
- 3.10.4-valid-7
- 3.10.4-valid-8
- 3.10.4-valid-9
- 3.10.4-valid-10
- 3.10.4-valid-11
- 3.10.4-valid-12
- 3.10.4-valid-13
- 3.10.4-valid-14
- 3.10.5-invalid-1
- 3.10.5-invalid-2
- 3.10.5-invalid-3
- 3.10.5-invalid-4
- 3.10.5-invalid-5
- 3.10.5-invalid-6
- 3.10.5-invalid-7
- 3.10.5-invalid-8
- 3.10.5-invalid-9
- 3.10.5-invalid-10
- 3.10.5-invalid-11
- 3.10.5-invalid-12
- 3.10.5-invalid-13
- 3.10.5-valid-1
- 3.10.5-valid-2
- 3.10.5-valid-3
- 3.10.5-valid-4
- 3.10.5-valid-5
- 3.10.5-valid-6
- 3.10.5-valid-7
- 3.10.5-valid-8
- 3.10.5-valid-9
- 3.10.5-valid-10
- 3.10.5-valid-11
- 3.10.5-valid-12
- 3.10.5-valid-13
- 3.10.5-valid-14
- 3.10.7-invalid-1
- 3.10.7-invalid-2
- 3.10.7-invalid-3
- 3.10.7-invalid-4
- 3.10.7-invalid-5
- 3.10.7-invalid-6
- 3.10.7-invalid-7
- 3.10.7-invalid-8
- 3.10.7-invalid-9
- 3.10.7-invalid-10
- 3.10.7-invalid-11
- 3.10.7-invalid-12
- 3.10.7-invalid-13
- 3.10.7-invalid-14
- 3.10.7-invalid-15
- 3.10.7-invalid-16
- 3.10.7-valid-1
- 3.10.7-valid-2
- 3.10.7-valid-3
- 3.10.7-valid-4
- 3.10.7-valid-5
- 3.10.7-valid-6
- 3.10.7-valid-7
- 3.10.7-valid-8
- 3.10.7-valid-9
- 3.10.7-valid-10
- 3.10.7-valid-11
- 3.10.7-valid-12
- 3.10.7-valid-13
- 3.10.7-valid-14
- 3.10.7-valid-15
- 3.10.7-valid-16
- 3.10.7-valid-17
- 4.5.4-instance-1
- 4.5.4-instance-2
- 4.5.4-instance-3
- 4.5.4-instance-4
- 4.5.4-instance-5
- 4.5.4-instance-6
- 4.5.4-instance-7
- 4.5.4-instance-8
- 4.5.4-instance-9
- 4.5.4-instance-10
- 4.5.4-static-1
- 4.5.4-static-2
- 4.5.4-static-3
- 4.5.4-static-4
- 4.5.4-static-5
- 4.5.4-static-6
- 4.5.4-reference-1
- 4.5.4-reference-2
- 4.5.4-9
- 4.5.4-10
- 4.5.4-local-1
- 4.5.4-local-2
- 4.5.4-local-3
- 4.5.4-parameter-1
- 4.5.4-parameter-2
- 4.5.4-parameter-3
- 5.1.1-primitive-1
- 5.1.1-primitive-2
- 5.1.1-primitive-3
- 5.1.1-primitive-4
- 5.1.1-primitive-5
- 5.1.1-primitive-6
- 5.1.1-primitive-7
- 5.1.1-primitive-8
- 5.1.1-reference-1
- 5.1.1-reference-2
- 5.1.1-reference-3
- 5.1.1-reference-4
- 5.1.1-reference-5
- 5.1.1-null-1
- 5.1.2-bts-1
- 5.1.2-bts-2
- 5.1.2-bts-3
- 5.1.2-bts-4
- 5.1.2-bts-5
- 5.1.2-bti-1
- 5.1.2-bti-2
- 5.1.2-bti-3
- 5.1.2-bti-4
- 5.1.2-bti-5
- 5.1.2-btl-1
- 5.1.2-btl-2
- 5.1.2-btl-3
- 5.1.2-btl-4
- 5.1.2-btl-5
- 5.1.2-btf-1
- 5.1.2-btf-2
- 5.1.2-btf-3
- 5.1.2-btf-4
- 5.1.2-btf-5
- 5.1.2-btd-1
- 5.1.2-btd-2
- 5.1.2-btd-3
- 5.1.2-btd-4
- 5.1.2-btd-5
- 5.1.2-sti-1
- 5.1.2-sti-2
- 5.1.2-sti-3
- 5.1.2-sti-4
- 5.1.2-sti-5
- 5.1.2-stl-1
- 5.1.2-stl-2
- 5.1.2-stl-3
- 5.1.2-stl-4
- 5.1.2-stl-5
- 5.1.2-stf-1
- 5.1.2-stf-2
- 5.1.2-stf-3
- 5.1.2-stf-4
- 5.1.2-stf-5
- 5.1.2-std-1
- 5.1.2-std-2
- 5.1.2-std-3
- 5.1.2-std-4
- 5.1.2-std-5
- 5.1.2-cti-1
- 5.1.2-cti-2
- 5.1.2-cti-3
- 5.1.2-cti-4
- 5.1.2-cti-5
- 5.1.2-cti-6
- 5.1.2-cti-7
- 5.1.2-cti-8
- 5.1.2-cti-9
- 5.1.2-ctl-1
- 5.1.2-ctl-2
- 5.1.2-ctl-3
- 5.1.2-ctl-4
- 5.1.2-ctl-5
- 5.1.2-ctl-6
- 5.1.2-ctl-7
- 5.1.2-ctl-8
- 5.1.2-ctl-9
- 5.1.2-ctf-1
- 5.1.2-ctf-2
- 5.1.2-ctf-3
- 5.1.2-ctf-4
- 5.1.2-ctf-5
- 5.1.2-ctf-6
- 5.1.2-ctf-7
- 5.1.2-ctf-8
- 5.1.2-ctf-9
- 5.1.2-ctd-1
- 5.1.2-ctd-2
- 5.1.2-ctd-3
- 5.1.2-ctd-4
- 5.1.2-ctd-5
- 5.1.2-ctd-6
- 5.1.2-ctd-7
- 5.1.2-ctd-8
- 5.1.2-ctd-9
- 5.1.2-itl-1
- 5.1.2-itl-2
- 5.1.2-itl-3
- 5.1.2-itl-4
- 5.1.2-itl-5
- 5.1.2-itf-1
- 5.1.2-itf-2
- 5.1.2-itf-3
- 5.1.2-itf-4
- 5.1.2-itf-5
- 5.1.2-itf-6
- 5.1.2-itf-7
- 5.1.2-itf-8
- 5.1.2-itf-9
- 5.1.2-itd-1
- 5.1.2-itd-2
- 5.1.2-itd-3
- 5.1.2-itd-4
- 5.1.2-itd-5
- 5.1.2-ltf-1
- 5.1.2-ltf-2
- 5.1.2-ltf-3
- 5.1.2-ltf-4
- 5.1.2-ltf-5
- 5.1.2-ltf-6
- 5.1.2-ltf-7
- 5.1.2-ltf-8
- 5.1.2-ltf-9
- 5.1.2-ltf-10
- 5.1.2-ltf-11
- 5.1.2-ltf-12
- 5.1.2-ltd-1
- 5.1.2-ltd-2
- 5.1.2-ltd-3
- 5.1.2-ltd-4
- 5.1.2-ltd-5
- 5.1.2-ltd-6
- 5.1.2-ltd-7
- 5.1.2-ltd-8
- 5.1.2-ltd-9
- 5.1.2-ftd-1
- 5.1.2-ftd-2
- 5.1.2-ftd-3
- 5.1.2-ftd-4
- 5.1.2-ftd-5
- 5.1.2-ftd-6
- 5.1.2-ftd-7
- 5.1.2-ftd-8
- 5.1.2-ftd-9
- 5.1.3-nan-1
- 5.1.3-nan-2
- 5.1.3-nan-3
- 5.1.3-nan-4
- 5.1.3-nan-5
- 5.1.3-dtf-1
- 5.1.3-dtf-2
- 5.1.3-dtf-3
- 5.1.3-dtf-4
- 5.1.3-dtf-5
- 5.1.3-dtf-6
- 5.1.3-dtf-7
- 5.1.3-dtl-1
- 5.1.3-dtl-2
- 5.1.3-dtl-3
- 5.1.3-dtl-4
- 5.1.3-dti-1
- 5.1.3-dti-2
- 5.1.3-dti-3
- 5.1.3-dti-4
- 5.1.3-ftl-1
- 5.1.3-ftl-2
- 5.1.3-ftl-3
- 5.1.3-ftl-4
- 5.1.3-fti-1
- 5.1.3-fti-2
- 5.1.3-fti-3
- 5.1.3-fti-4
- 5.2-byte-identity-1
- 5.2-byte-widening-1
- 5.2-byte-widening-2
- 5.2-byte-widening-3
- 5.2-byte-widening-4
- 5.2-byte-widening-5
- 5.2-byte-narrowing-1
- 5.2-byte-narrowing-error-1
- 5.2-byte-narrowing-error-2
- 5.2-short-identity-1
- 5.2-short-widening-1
- 5.2-short-widening-2
- 5.2-short-widening-3
- 5.2-short-widening-4
- 5.2-short-narrowing-1
- 5.2-short-narrowing-2
- 5.2-short-narrowing-error-1
- 5.2-short-narrowing-error-2
- 5.2-short-narrowing-error-3
- 5.2-char-identity-1
- 5.2-char-widening-1
- 5.2-char-widening-2
- 5.2-char-widening-3
- 5.2-char-widening-4
- 5.2-char-narrowing-1
- 5.2-char-narrowing-2
- 5.2-char-narrowing-error-1
- 5.2-char-narrowing-error-2
- 5.2-char-narrowing-error-3
- 5.2-int-identity-1
- 5.2-int-widening-1
- 5.2-int-widening-2
- 5.2-int-widening-3
- 5.2-int-narrowing-1
- 5.2-int-narrowing-2
- 5.2-int-narrowing-3
- 5.2-int-narrowing-error-1
- 5.2-int-narrowing-error-2
- 5.2-int-narrowing-error-3
- 5.2-int-narrowing-error-4
- 5.2-long-identity-1
- 5.2-long-widening-1
- 5.2-long-widening-2
- 5.2-long-narrowing-error-1
- 5.2-long-narrowing-error-2
- 5.2-long-narrowing-error-3
- 5.2-long-narrowing-error-4
- 5.2-float-identity-1
- 5.2-float-widening-1
- 5.2-float-narrowing-error-1
- 5.2-float-narrowing-error-2
- 5.2-float-narrowing-error-3
- 5.2-float-narrowing-error-4
- 5.2-float-narrowing-error-5
- 5.2-double-identity-1
- 5.2-double-narrowing-error-1
- 5.2-double-narrowing-error-2
- 5.2-double-narrowing-error-3
- 5.2-double-narrowing-error-4
- 5.2-double-narrowing-error-5
- 5.2-double-narrowing-error-6
- 5.2-boolean-identity-1
- 5.2-boolean-error-1
- 5.2-reference-identity-1
- 5.2-reference-widening-1
- 5.2-reference-widening-2
- 5.2-reference-error-1
- 5.2-reference-error-2
- 5.2-reference-error-3
- 5.2-interface-identity-1
- 5.2-interface-widening-1
- 5.2-interface-widening-2
- 5.2-interface-error-1
- 5.2-interface-error-2
- 5.2-interface-error-3
- 5.2-array-identity-1
- 5.2-array-widening-1
- 5.2-array-widening-2
- 5.2-array-error-1
- 5.2-array-error-2
- 5.2-array-error-3
- 5.2-array-error-4
- 5.2-array-error-5
- 6.2-identifier-1
- 6.2-identifier-2
- 6.2-identifier-3
- 6.2-identifier-4
- 6.2-identifier-5
- 6.2-identifier-6
- 6.2-identifier-7
- 6.2-identifier-8
- 6.2-identifier-9
- 6.2-identifier-10
- 6.2-identifier-11
- 6.2-example-1
- 6.2-example-2
- 6.3-1
- 6.3-2
- 6.3-3
- 6.3-4
- 6.4.1-class-member-1
- 6.4.2-1
- 6.4.2-2
- 6.4.3-1
- 6.4.3-2
- 6.4.4-1
- 6.4.4-2
- 6.4.4-3
- 6.5.1-type-1
- 6.5.1-type-2
- 6.5.1-type-3
- 6.5.1-type-4
- 6.5.1-type-5
- 6.5.1-type-6
- 6.5.1-type-7
- 6.5.1-type-8
- 6.5.1-type-9
- 6.5.1-type-10
- 6.5.1-type-11
- 6.5.1-type-12
- 6.5.1-type-13
- 6.5.1-type-14
- 6.5.1-type-15
- 6.5.1-type-16
- 6.5.1-type-17
- 6.5.1-type-18
- 6.5.1-type-19
- 6.5.1-typeorpackage-1
- 6.5.1-typeorpackage-2
- 6.5.2-simple-1
- 6.5.2-simple-2
- 6.5.2-simple-3
- 6.5.2-simple-4
- 6.5.2-simple-5
- 6.5.2-simple-6
- 6.5.2-qualified-1
- 6.5.2-qualified-2
- 6.5.2-qualified-3
- 6.5.2-qualified-4
- 6.5.2-qualified-5
- 6.5.2-qualified-6
- 6.5.2-qualified-7
- 6.5.2-qualified-8
- 6.5.2-qualified-9
- 6.5.2-qualified-10
- 6.5.2-qualified-11
- 6.5.2-qualified-12
- 6.5.2-example-1
- 6.5.3.1-simple-1
- 6.5.3.1-simple-2
- 6.5.3.2-qualified-1
- 6.5.3.2-qualified-2
- 6.5.3.2-qualified-3
- 6.5.4.1-simple-1
- 6.5.4.1-simple-2
- 6.5.4.1-simple-3
- 6.5.4.1-simple-4
- 6.5.4.1-simple-5
- 6.5.4.1-simple-6
- 6.5.4.1-simple-7
- 6.5.4.1-simple-8
- 6.5.4.1-simple-9
- 6.5.4.1-simple-10
- 6.5.4.1-simple-11
- 6.5.4.2-qualified-1
- 6.5.4.2-qualified-2
- 6.5.4.2-qualified-3
- 6.5.4.2-qualified-4
- 6.5.4.2-qualified-5
- 6.5.4.2-qualified-6
- 6.5.5.1-nested-1
- 6.5.5.1-nested-2
- 6.5.5.1-nested-3
- 6.5.5.1-nested-4
- 6.5.5.1-nested-5
- 6.5.5.1-nested-6
- 6.5.5.1-nested-7
- 6.5.5.1-nested-8
- 6.5.5.1-nested-9
- 6.5.5.1-nested-10
- 6.5.5.1-nested-11
- 6.5.5.1-nested-12
- 6.5.5.1-nested-13
- 6.5.5.1-nested-14
- 6.5.5.1-nested-15
- 6.5.5.1-nested-16
- 6.5.5.1-nested-17
- 6.5.5.1-nested-18
- 6.5.5.1-nested-19
- 6.5.5.1-nested-20
- 6.5.5.1-nested-21
- 6.5.5.1-nested-22
- 6.5.5.1-nested-23
- 6.5.5.1-import-1
- 6.5.5.1-import-2
- 6.5.5.1-import-3
- 6.5.5.1-import-4
- 6.5.5.2-package-1
- 6.5.5.2-package-2
- 6.5.5.2-package-3
- 6.5.5.2-package-4
- 6.5.5.2-type-1
- 6.5.5.2-type-2
- 6.5.5.2-type-3
- 6.5.5.2-type-4
- 6.5.5.2-type-5
- 6.5.5.2-type-6
- 6.5.5.2-type-7
- 6.5.5.2-type-8
- 6.5.5.2-example-1
- 6.5.6.1-local-1
- 6.5.6.1-local-2
- 6.5.6.1-local-3
- 6.5.6.1-local-4
- 6.5.6.1-local-5
- 6.5.6.1-field-1
- 6.5.6.1-field-2
- 6.5.6.1-field-3
- 6.5.6.1-field-4
- 6.5.6.1-field-5
- 6.5.6.1-field-6
- 6.5.6.1-field-7
- 6.5.6.1-field-8
- 6.5.6.1-instance-1
- 6.5.6.1-instance-2
- 6.5.6.1-instance-3
- 6.5.6.1-instance-4
- 6.5.6.1-instance-5
- 6.5.6.1-explicit-constructor-1
- 6.5.6.1-explicit-constructor-2
- 6.5.6.1-explicit-constructor-3
- 6.5.6.1-explicit-constructor-4
- 6.5.6.1-explicit-constructor-5
- 6.5.6.1-example-1
- 6.5.6.1-example-2
- 6.5.6.2-package-1
- 6.5.6.2-package-2
- 6.5.6.2-type-1
- 6.5.6.2-type-2
- 6.5.6.2-type-3
- 6.5.6.2-type-4
- 6.5.6.2-type-5
- 6.5.6.2-type-6
- 6.5.6.2-type-7
- 6.5.6.2-type-8
- 6.5.6.2-type-9
- 6.5.6.2-type-10
- 6.5.6.2-expression-1
- 6.5.6.2-expression-2
- 6.5.6.2-expression-3
- 6.5.6.2-expression-4
- 6.5.6.2-expression-5
- 6.5.6.2-expression-6
- 6.5.6.2-expression-7
- 6.5.6.2-expression-8
- 6.5.7.1-simple-1
- 6.5.7.1-simple-2
- 6.5.7.2-package-1
- 6.5.7.2-package-2
- 6.5.7.2-type-1
- 6.5.7.2-type-2
- 6.5.7.2-type-3
- 6.5.7.2-expression-1
- 6.5.7.2-expression-2
- 6.5.7.2-expression-3
- 6.6.1-1
- 6.6.1-2
- 6.6.1-3
- 6.6.1-4
- 6.6.1-5
- 6.6.1-6
- 6.6.1-7
- 6.6.1-8
- 6.6.1-9
- 6.6.1-10
- 6.6.1-11
- 6.6.1-12
- 6.6.1-13
- 6.6.1-14
- 6.6.1-15
- 6.6.1-16
- 6.6.1-17
- 6.6.1-array-1
- 6.6.1-array-2
- 6.6.1-array-3
- 6.6.1-array-4
- 6.6.1-array-5
- 6.6.1-array-6
- 6.6.1-array-7
- 6.6.1-array-8
- 6.6.1-array-9
- 6.6.1-array-10
- 6.6.1-array-11
- 6.6.1-array-12
- 6.6.1-array-13
- 6.6.1-array-14
- 6.6.1-array-15
- 6.6.1-array-16
- 6.6.1-array-17
- 6.6.1-array-18
- 6.6.1-array-19
- 6.6.1-array-20
- 6.6.1-array-21
- 6.6.1-array-22
- 6.6.1-array-23
- 6.6.1-array-24
- 6.6.1-array-25
- 6.6.1-array-26
- 6.6.1-array-27
- 6.6.1-array-28
- 6.6.1-array-29
- 6.6.1-array-30
- 6.6.1-array-31
- 6.6.1-array-32
- 6.6.1-array-33
- 6.6.1-array-34
- 6.6.1-array-35
- 6.6.1-array-36
- 6.6.2.1-protected-static-field-1
- 6.6.2.1-protected-static-field-2
- 6.6.2.1-protected-static-field-3
- 6.6.2.1-protected-static-field-4
- 6.6.2.1-protected-static-field-5
- 6.6.2.1-protected-static-field-6
- 6.6.2.1-protected-static-field-7
- 6.6.2.1-protected-static-field-8
- 6.6.2.1-protected-instance-field-1
- 6.6.2.1-protected-instance-field-2
- 6.6.2.1-protected-instance-field-3
- 6.6.2.1-protected-instance-field-4
- 6.6.2.1-protected-instance-field-5
- 6.6.2.1-protected-instance-field-6
- 6.6.2.1-protected-instance-field-7
- 6.6.2.1-protected-instance-field-8
- 6.6.2.1-protected-static-method-1
- 6.6.2.1-protected-static-method-2
- 6.6.2.1-protected-static-method-3
- 6.6.2.1-protected-static-method-4
- 6.6.2.1-protected-static-method-5
- 6.6.2.1-protected-static-method-6
- 6.6.2.1-protected-static-method-7
- 6.6.2.1-protected-static-method-8
- 6.6.2.1-protected-instance-method-1
- 6.6.2.1-protected-instance-method-2
- 6.6.2.1-protected-instance-method-3
- 6.6.2.1-protected-instance-method-4
- 6.6.2.1-protected-instance-method-5
- 6.6.2.1-protected-instance-method-6
- 6.6.2.1-protected-instance-method-7
- 6.6.2.1-protected-instance-method-8
- 6.6.2.1-protected-type-1
- 6.6.2.1-protected-type-2
- 6.6.2.1-protected-type-3
- 6.6.2.1-protected-type-4
- 6.6.2.1-protected-type-5
- 6.6.2.1-protected-type-6
- 6.6.2.1-protected-type-7
- 6.6.2.1-protected-type-8
- 6.6.2.2-protected-superctor-1
- 6.6.2.2-protected-superctor-2
- 6.6.2.2-protected-superctor-3
- 6.6.2.2-protected-superctor-4
- 6.6.2.2-protected-superctor-5
- 6.6.2.2-protected-creation-1
- 6.6.2.2-protected-creation-2
- 6.6.2.2-protected-creation-3
- 7.1-unnamed-1
- 7.1-unnamed-2
- 7.1-unnamed-3
- 7.1-unnamed-4
- 7.1-named-1
- 7.1-named-2
- 7.1-named-3
- 7.1-named-4
- 7.1-named-5
- 7.1-named-6
- 7.1-named-7
- 7.3-1
- 7.3-2
- 7.3-3
- 7.3-4
- 7.3-5
- 7.3-6
- 7.3-7
- 7.3-8
- 7.3-9
- 7.3-10
- 7.3-11
- 7.3-12
- 7.3-13
- 7.4.1-1
- 7.4.2-1
- 7.4.2-2
- 7.4.2-3
- 7.4.2-subpackage-1
- 7.4.2-subpackage-2
- 7.5.1-1
- 7.5.1-2
- 7.5.1-3
- 7.5.1-4
- 7.5.1-canonical-1
- 7.5.1-canonical-2
- 7.5.1-canonical-3
- 7.5.1-accessible-1
- 7.5.1-accessible-2
- 7.5.1-accessible-3
- 7.5.1-accessible-4
- 7.5.1-accessible-5
- 7.5.1-shadow-1
- 7.5.1-shadow-2
- 7.5.1-duplicate-1
- 7.5.1-duplicate-2
- 7.5.1-duplicate-3
- 7.5.1-duplicate-4
- 7.5.1-subpackage-1
- 7.5.2-1
- 7.5.2-unnamed-1
- 7.5.2-canonical-1
- 7.5.2-canonical-2
- 7.5.2-canonical-3
- 7.5.2-canonical-4
- 7.5.2-accessible-1
- 7.5.2-accessible-2
- 7.5.2-accessible-3
- 7.5.2-accessible-4
- 7.5.2-accessible-5
- 7.5.2-duplicate-1
- 7.5.2-duplicate-2
- 7.5.2-duplicate-3
- 7.5.2-duplicate-4
- 7.5.2-inherited-1
- 7.5.3-automatic-1
- 7.5.3-automatic-2
- 7.5.4-example-1
- 7.6-syntax-1
- 7.6-syntax-2
- 7.6-syntax-3
- 7.6-scope-1
- 7.6-scope-2
- 7.6-scope-3
- 7.6-scope-4
- 7.6-name-1
- 7.6-name-2
- 7.6-name-3
- 7.6-optional-restrictions-1
- 7.6-modifiers-1
- 7.6-modifiers-2
- 7.6-modifiers-3
- 7.6-unnamed-scope-1
- 7.6-unnamed-scope-2
- 7.6-unnamed-scope-3
- 8.1-enclosing-1
- 8.1-enclosing-2
- 8.1-enclosing-3
- 8.1-enclosing-4
- 8.1-enclosing-5
- 8.1-enclosing-6
- 8.1-enclosing-7
- 8.1-enclosing-8
- 8.1.1-valid-modifier-1
- 8.1.1-valid-modifier-2
- 8.1.1-valid-modifier-3
- 8.1.1-valid-modifier-4
- 8.1.1-duplicate-modifier-1
- 8.1.1-duplicate-modifier-2
- 8.1.1-duplicate-modifier-3
- 8.1.1-duplicate-modifier-4
- 8.1.1.1-1
- 8.1.1.1-2
- 8.1.1.1-3
- 8.1.1.1-4
- 8.1.1.1-5
- 8.1.1.1-6
- 8.1.1.1-7
- 8.1.1.1-8
- 8.1.1.1-9
- 8.1.1.1-10
- 8.1.1.1-11
- 8.1.1.1-12
- 8.1.1.1-default-abstract-1
- 8.1.1.1-default-abstract-2
- 8.1.1.1-default-abstract-3
- 8.1.1.1-default-abstract-4
- 8.1.1.1-default-abstract-5
- 8.1.1.1-default-abstract-6
- 8.1.1.1-default-abstract-7
- 8.1.1.1-default-abstract-8
- 8.1.1.1-default-abstract-9
- 8.1.1.1-default-abstract-10
- 8.1.1.1-default-abstract-11
- 8.1.1.1-default-abstract-12
- 8.1.1.1-default-abstract-13
- 8.1.1.1-default-abstract-14
- 8.1.1.1-default-abstract-15
- 8.1.1.1-default-abstract-16
- 8.1.1.1-default-abstract-17
- 8.1.1.1-default-abstract-18
- 8.1.1.1-default-abstract-19
- 8.1.1.1-default-abstract-20
- 8.1.1.1-default-abstract-21
- 8.1.1.1-default-abstract-22
- 8.1.1.1-default-abstract-23
- 8.1.1.1-default-abstract-24
- 8.1.1.1-default-abstract-25
- 8.1.1.2-conflicting-modifier-1
- 8.1.1.2-invalid-subclass-1
- 8.1.1.2-invalid-subclass-2
- 8.1.2-static-1
- 8.1.2-static-2
- 8.1.2-static-3
- 8.1.2-static-4
- 8.1.2-static-5
- 8.1.2-static-6
- 8.1.2-static-7
- 8.1.2-static-8
- 8.1.2-static-9
- 8.1.2-static-10
- 8.1.2-static-11
- 8.1.2-static-12
- 8.1.2-static-13
- 8.1.2-static-14
- 8.1.2-static-15
- 8.1.2-static-16
- 8.1.2-static-17
- 8.1.2-enclosing-1
- 8.1.2-enclosing-2
- 8.1.2-enclosing-3
- 8.1.2-enclosing-4
- 8.1.2-enclosing-5
- 8.1.3-circular-1
- 8.1.3-circular-2
- 8.1.3-circular-3
- 8.1.3-circular-4
- 8.1.3-circular-5
- 8.1.3-circular-6
- 8.1.3-non-circular-1
- 8.1.3-object-1
- 8.1.3-object-2
- 8.1.3-object-3
- 8.1.3-object-4
- 8.1.3-superclass-1
- 8.1.3-superclass-2
- 8.1.3-superclass-3
- 8.1.3-superclass-4
- 8.1.3-superclass-5
- 8.1.3-superclass-6
- 8.1.3-superclass-7
- 8.1.3-superclass-8
- 8.1.3-superclass-9
- 8.1.3-superclass-10
- 8.1.3-superclass-11
- 8.1.3-superclass-12
- 8.1.3-superclass-13
- 8.1.4-object-1
- 8.1.4-superinterface-1
- 8.1.4-superinterface-2
- 8.1.4-superinterface-3
- 8.1.4-superinterface-4
- 8.1.4-superinterface-5
- 8.1.4-superinterface-6
- 8.1.4-superinterface-7
- 8.1.4-superinterface-8
- 8.1.4-superinterface-9
- 8.1.4-superinterface-10
- 8.1.4-superinterface-11
- 8.1.4-duplicate-1
- 8.1.4-duplicate-2
- 8.1.4-duplicate-3
- 8.1.4-duplicate-4
- 8.1.4-abstract-1
- 8.1.4-abstract-2
- 8.1.4-abstract-3
- 8.1.4-abstract-4
- 8.1.4-conflict-1
- 8.1.4-conflict-2
- 8.1.4-conflict-3
- 8.2-accessibility-inherited-member-1
- 8.2-accessibility-inherited-member-2
- 8.2-accessibility-inherited-member-3
- 8.2-accessibility-inherited-member-4
- 8.2-accessibility-inherited-member-5
- 8.2-accessibility-inherited-member-6
- 8.2-accessibility-inherited-member-7
- 8.2-accessibility-inherited-member-8
- 8.2-constructor-not-inherited-1
- 8.3-inheritance-1
- 8.3-inheritance-2
- 8.3-inheritance-3
- 8.3-inheritance-4
- 8.3-inheritance-5
- 8.3-inheritance-6
- 8.3-inheritance-7
- 8.3-inheritance-8
- 8.3-inheritance-9
- 8.3-name-1
- 8.3-name-2
- 8.3-hiding-1
- 8.3-hiding-2
- 8.3-hiding-3
- 8.3-hiding-4
- 8.3.1-access-1
- 8.3.1-access-2
- 8.3.1-access-3
- 8.3.1-access-4
- 8.3.1-access-5
- 8.3.1-access-6
- 8.3.1-access-7
- 8.3.1-access-8
- 8.3.1-access-9
- 8.3.1-access-10
- 8.3.1-access-11
- 8.3.1-access-12
- 8.3.1-access-13
- 8.3.1-static-1
- 8.3.1-static-2
- 8.3.1-static-3
- 8.3.1-static-4
- 8.3.1-static-5
- 8.3.1-static-6
- 8.3.1-static-7
- 8.3.1-static-8
- 8.3.1-static-9
- 8.3.1-static-10
- 8.3.1-static-11
- 8.3.1-static-12
- 8.3.1-static-13
- 8.3.1-static-14
- 8.3.1-final-1
- 8.3.1-final-2
- 8.3.1-final-3
- 8.3.1-final-4
- 8.3.1-final-5
- 8.3.1-final-6
- 8.3.1-final-7
- 8.3.1-final-8
- 8.3.1-final-9
- 8.3.1-final-10
- 8.3.1-final-11
- 8.3.1-final-12
- 8.3.1-transient-1
- 8.3.1-transient-2
- 8.3.1-transient-3
- 8.3.1-transient-4
- 8.3.1-transient-5
- 8.3.1-transient-6
- 8.3.1-transient-7
- 8.3.1-transient-8
- 8.3.1-transient-9
- 8.3.1-transient-10
- 8.3.1-volatile-1
- 8.3.1-volatile-2
- 8.3.1-volatile-3
- 8.3.1-volatile-4
- 8.3.1-volatile-5
- 8.3.1-volatile-6
- 8.3.1-volatile-7
- 8.3.1-volatile-8
- 8.3.1-big-1
- 8.3.1-big-2
- 8.3.1-big-3
- 8.3.1-bad-1
- 8.3.1-bad-2
- 8.3.1-bad-3
- 8.3.1-bad-4
- 8.3.1.1-valid-modifier-1
- 8.3.1.1-valid-modifier-2
- 8.3.1.1-valid-modifier-3
- 8.3.1.1-valid-modifier-4
- 8.3.1.1-valid-modifier-5
- 8.3.1.1-valid-modifier-6
- 8.3.1.1-other-1
- 8.3.1.1-other-2
- 8.3.1.2-final-1
- 8.3.1.2-final-2
- 8.3.1.2-final-3
- 8.3.1.2-final-4
- 8.3.1.2-final-5
- 8.3.1.2-final-6
- 8.3.1.2-final-7
- 8.3.1.2-final-8
- 8.3.1.2-final-9
- 8.3.1.2-final-10
- 8.3.1.2-final-11
- 8.3.1.2-final-12
- 8.3.1.2-final-13
- 8.3.1.2-final-14
- 8.3.1.2-final-15
- 8.3.1.2-final-16
- 8.3.1.2-final-17
- 8.3.1.2-final-18
- 8.3.1.2-final-19
- 8.3.1.2-final-20
- 8.3.1.2-final-21
- 8.3.1.2-final-22
- 8.3.1.2-final-23
- 8.3.1.2-final-24
- 8.3.1.2-final-25
- 8.3.1.2-final-26
- 8.3.1.2-final-27
- 8.3.1.2-final-28
- 8.3.1.2-final-29
- 8.3.2-abrupt-1
- 8.3.2-abrupt-2
- 8.3.2-abrupt-3
- 8.3.2-abrupt-4
- 8.3.2-abrupt-5
- 8.3.2-abrupt-6
- 8.3.2-abrupt-7
- 8.3.2-abrupt-8
- 8.3.2.1-this-1
- 8.3.2.1-this-2
- 8.3.2.1-this-3
- 8.3.2.1-super-1
- 8.3.2.1-super-2
- 8.3.2.2-static-1
- 8.3.2.2-this-1
- 8.3.2.2-this-2
- 8.3.2.2-this-3
- 8.3.2.2-super-1
- 8.3.2.2-super-2
- 8.3.2.3-illegal-forward-instance-1
- 8.3.2.3-illegal-forward-instance-2
- 8.3.2.3-illegal-forward-instance-3
- 8.3.2.3-illegal-forward-instance-4
- 8.3.2.3-illegal-forward-instance-5
- 8.3.2.3-illegal-forward-instance-6
- 8.3.2.3-illegal-forward-instance-7
- 8.3.2.3-illegal-forward-instance-8
- 8.3.2.3-illegal-forward-instance-9
- 8.3.2.3-legal-forward-instance-1
- 8.3.2.3-legal-forward-instance-2
- 8.3.2.3-legal-forward-instance-3
- 8.3.2.3-legal-forward-instance-4
- 8.3.2.3-legal-forward-instance-5
- 8.3.2.3-legal-forward-instance-6
- 8.3.2.3-legal-forward-instance-7
- 8.3.2.3-legal-forward-instance-8
- 8.3.2.3-legal-forward-instance-9
- 8.3.2.3-legal-forward-instance-10
- 8.3.2.3-legal-forward-instance-11
- 8.3.2.3-legal-forward-instance-12
- 8.3.2.3-illegal-forward-static-1
- 8.3.2.3-illegal-forward-static-2
- 8.3.2.3-illegal-forward-static-3
- 8.3.2.3-illegal-forward-static-4
- 8.3.2.3-illegal-forward-static-5
- 8.3.2.3-illegal-forward-static-6
- 8.3.2.3-illegal-forward-static-7
- 8.3.2.3-illegal-forward-static-8
- 8.3.2.3-illegal-forward-static-9
- 8.3.2.3-illegal-forward-static-10
- 8.3.2.3-legal-forward-static-1
- 8.3.2.3-legal-forward-static-2
- 8.3.2.3-legal-forward-static-3
- 8.3.2.3-legal-forward-static-4
- 8.3.2.3-legal-forward-static-5
- 8.3.2.3-legal-forward-static-6
- 8.3.2.3-legal-forward-static-7
- 8.3.2.3-legal-forward-static-8
- 8.3.2.3-legal-forward-static-9
- 8.3.2.3-legal-forward-static-10
- 8.4.3-access-1
- 8.4.3-access-2
- 8.4.3-access-3
- 8.4.3-access-4
- 8.4.3-access-5
- 8.4.3-access-6
- 8.4.3-access-7
- 8.4.3-access-8
- 8.4.3-access-9
- 8.4.3-access-10
- 8.4.3-access-11
- 8.4.3-access-12
- 8.4.3-access-13
- 8.4.3-abstract-1
- 8.4.3-abstract-2
- 8.4.3-abstract-3
- 8.4.3-abstract-4
- 8.4.3-abstract-5
- 8.4.3-abstract-6
- 8.4.3-abstract-7
- 8.4.3-abstract-8
- 8.4.3-abstract-9
- 8.4.3-abstract-10
- 8.4.3-abstract-11
- 8.4.3-abstract-12
- 8.4.3-abstract-13
- 8.4.3-abstract-14
- 8.4.3-abstract-15
- 8.4.3-abstract-16
- 8.4.3-abstract-17
- 8.4.3-abstract-18
- 8.4.3-static-1
- 8.4.3-static-2
- 8.4.3-static-3
- 8.4.3-static-4
- 8.4.3-static-5
- 8.4.3-static-6
- 8.4.3-static-7
- 8.4.3-static-8
- 8.4.3-static-9
- 8.4.3-static-10
- 8.4.3-static-11
- 8.4.3-static-12
- 8.4.3-static-13
- 8.4.3-static-14
- 8.4.3-static-15
- 8.4.3-static-16
- 8.4.3-final-1
- 8.4.3-final-2
- 8.4.3-final-3
- 8.4.3-final-4
- 8.4.3-final-5
- 8.4.3-final-6
- 8.4.3-final-7
- 8.4.3-final-8
- 8.4.3-final-9
- 8.4.3-final-10
- 8.4.3-final-11
- 8.4.3-final-12
- 8.4.3-final-13
- 8.4.3-final-14
- 8.4.3-final-15
- 8.4.3-synchronized-1
- 8.4.3-synchronized-2
- 8.4.3-synchronized-3
- 8.4.3-synchronized-4
- 8.4.3-synchronized-5
- 8.4.3-synchronized-6
- 8.4.3-synchronized-7
- 8.4.3-synchronized-8
- 8.4.3-synchronized-9
- 8.4.3-synchronized-10
- 8.4.3-synchronized-11
- 8.4.3-synchronized-12
- 8.4.3-native-1
- 8.4.3-native-2
- 8.4.3-native-3
- 8.4.3-native-4
- 8.4.3-native-5
- 8.4.3-native-6
- 8.4.3-native-7
- 8.4.3-native-8
- 8.4.3-native-9
- 8.4.3-native-10
- 8.4.3-strictfp-1
- 8.4.3-strictfp-2
- 8.4.3-strictfp-3
- 8.4.3-strictfp-4
- 8.4.3-strictfp-5
- 8.4.3-strictfp-6
- 8.4.3-strictfp-7
- 8.4.3-strictfp-8
- 8.4.3-strictfp-9
- 8.4.3-big-1
- 8.4.3-big-2
- 8.4.3-big-3
- 8.4.3-bad-1
- 8.4.3-bad-2
- 8.4.5-1
- 8.4.5-2
- 8.4.5-3
- 8.4.5-4
- 8.4.5-5
- 8.4.5-6
- 8.4.5-7
- 8.4.5-8
- 8.4.5-9
- 8.4.5-10
- 8.4.5-11
- 8.4.6-miranda-1
- 8.4.6-miranda-2
- 8.4.6-miranda-3
- 8.4.6-miranda-4
- 8.4.6-inheritance-1
- 8.4.6-inheritance-2
- 8.4.6-inheritance-3
- 8.4.6-inheritance-4
- 8.4.6-inheritance-5
- 8.4.6-inheritance-6
- 8.4.6.1-override-1
- 8.4.6.1-override-2
- 8.4.6.1-override-3
- 8.4.6.1-override-4
- 8.4.6.1-override-5
- 8.4.6.1-override-6
- 8.4.6.2-hiding-1
- 8.4.6.2-hiding-2
- 8.4.6.2-hiding-3
- 8.4.6.2-hiding-4
- 8.4.6.2-hiding-5
- 8.4.6.2-hiding-6
- 8.4.6.3-modifier-1
- 8.4.6.3-modifier-2
- 8.4.6.3-modifier-3
- 8.4.6.3-modifier-4
- 8.4.6.3-modifier-5
- 8.4.6.3-modifier-6
- 8.4.6.3-modifier-7
- 8.4.6.3-modifier-8
- 8.4.6.3-modifier-9
- 8.4.6.3-modifier-10
- 8.4.6.3-modifier-11
- 8.4.6.3-modifier-12
- 8.4.6.3-modifier-13
- 8.4.6.3-modifier-14
- 8.4.6.3-private-1
- 8.4.6.3-default-1
- 8.4.6.3-default-2
- 8.4.6.3-default-3
- 8.4.6.3-default-4
- 8.4.6.3-default-5
- 8.4.6.3-default-6
- 8.4.6.3-default-7
- 8.4.6.3-default-8
- 8.4.6.3-default-9
- 8.4.6.3-default-10
- 8.4.6.3-default-11
- 8.4.6.3-default-12
- 8.4.6.3-default-13
- 8.4.6.3-default-14
- 8.4.6.3-signature-1
- 8.4.6.3-signature-2
- 8.4.6.3-signature-3
- 8.4.6.3-signature-4
- 8.4.6.3-signature-5
- 8.4.6.3-signature-6
- 8.4.6.3-signature-7
- 8.4.6.3-signature-8
- 8.4.6.3-signature-9
- 8.4.6.3-signature-10
- 8.4.6.3-signature-11
- 8.4.6.3-signature-12
- 8.4.6.3-signature-13
- 8.4.6.3-signature-14
- 8.4.6.3-signature-15
- 8.4.6.3-signature-16
- 8.4.6.4-multiple-1
- 8.4.6.4-multiple-2
- 8.4.6.4-multiple-3
- 8.4.6.4-multiple-4
- 8.4.6.4-multiple-5
- 8.4.6.4-multiple-6
- 8.4.6.4-multiple-7
- 8.4.6.4-multiple-8
- 8.4.6.4-multiple-9
- 8.4.6.4-multiple-10
- 8.4.6.4-multiple-11
- 8.4.6.4-abstract-1
- 8.4.6.4-abstract-2
- 8.4.6.4-abstract-3
- 8.4.6.4-abstract-4
- 8.4.6.4-abstract-5
- 8.4.6.4-abstract-6
- 8.4.6.4-abstract-7
- 8.4.6.4-abstract-8
- 8.4.6.4-abstract-9
- 8.4.6.4-abstract-10
- 8.5-inheritance-1
- 8.5-inheritance-2
- 8.5-inheritance-3
- 8.5-inheritance-4
- 8.5-inheritance-5
- 8.5-inheritance-6
- 8.5-name-1
- 8.5-hiding-1
- 8.5-hiding-2
- 8.5-hiding-3
- 8.5-hiding-4
- 8.5.1-valid-modifier-1
- 8.5.1-valid-modifier-2
- 8.5.1-valid-modifier-3
- 8.5.1-valid-modifier-4
- 8.5.1-valid-modifier-5
- 8.5.1-duplicate-modifier-1
- 8.5.1-duplicate-modifier-2
- 8.5.1-duplicate-modifier-3
- 8.5.1-conflicting-modifier-1
- 8.5.1-conflicting-modifier-2
- 8.5.1-conflicting-modifier-3
- 8.5.1-conflicting-modifier-4
- 8.5.1-conflicting-modifier-5
- 8.5.1-conflicting-modifier-6
- 8.5.2-static-member-usage-1
- 8.5.2-static-member-usage-2
- 8.5.2-non-static-member-usage-1
- 8.5.2-non-static-member-usage-2
- 8.5.2-accessible-static-member-usage-1
- 8.5.2-accessible-static-member-usage-2
- 8.5.2-inherited-non-static-member-usage-1
- 8.5.2-inherited-non-static-member-usage-2
- 8.5.2-accessible-inherited-non-static-member-usage-1
- 8.5.2-accessible-inherited-non-static-member-usage-2
- 8.6-checked-exception-1
- 8.6-checked-exception-2
- 8.6-checked-exception-3
- 8.6-checked-exception-4
- 8.6-checked-exception-5
- 8.6-checked-exception-6
- 8.6-checked-exception-7
- 8.6-checked-exception-8
- 8.6-checked-exception-9
- 8.6-checked-exception-10
- 8.6-checked-exception-11
- 8.6-checked-exception-12
- 8.6-complete-1
- 8.6-complete-2
- 8.6-complete-3
- 8.6-complete-4
- 8.6-complete-5
- 8.6-complete-6
- 8.6-return-1
- 8.6-return-2
- 8.6-return-3
- 8.6-return-4
- 8.6-this-1
- 8.6-super-1
- 8.6-modifier-1
- 8.6-modifier-2
- 8.6-modifier-3
- 8.6-modifier-4
- 8.6-modifier-5
- 8.6-modifier-6
- 8.6-modifier-7
- 8.6-modifier-8
- 8.6-modifier-9
- 8.6-modifier-10
- 8.7-checked-exception-1
- 8.7-checked-exception-2
- 8.7-checked-exception-3
- 8.7-complete-1
- 8.7-complete-2
- 8.7-complete-3
- 8.7-complete-4
- 8.7-return-1
- 8.7-return-2
- 8.7-return-3
- 8.7-return-4
- 8.7-this-1
- 8.7-this-2
- 8.7-super-1
- 8.7-modifier-1
- 8.7-modifier-2
- 8.7-modifier-3
- 8.7-modifier-4
- 8.7-modifier-5
- 8.7-modifier-6
- 8.7-modifier-7
- 8.7-modifier-8
- 8.7-modifier-9
- 8.7-modifier-10
- 8.7-modifier-11
- 8.7-modifier-12
- 8.7-modifier-13
- 8.7-modifier-14
- 8.7-modifier-15
- 8.7-modifier-16
- 8.7-modifier-17
- 8.7-modifier-18
- 8.7-modifier-19
- 8.7-modifier-20
- 8.7-modifier-21
- 8.8-simpletypename-1
- 8.8-simpletypename-2
- 8.8-simpletypename-3
- 8.8-simpletypename-4
- 8.8-example-1
- 8.8.1-formal-parameters-1
- 8.8.1-formal-parameters-2
- 8.8.1-formal-parameters-3
- 8.8.1-formal-parameters-4
- 8.8.1-formal-parameters-5
- 8.8.1-formal-parameters-6
- 8.8.1-invalid-formal-parameters-1
- 8.8.1-invalid-formal-parameters-2
- 8.8.1-invalid-formal-parameters-3
- 8.8.1-invalid-formal-parameters-4
- 8.8.2-signature-1
- 8.8.2-invalid-signature-1
- 8.8.3-modifiers-1
- 8.8.3-modifiers-2
- 8.8.3-modifiers-3
- 8.8.3-duplicate-modifiers-1
- 8.8.3-duplicate-modifiers-2
- 8.8.3-duplicate-modifiers-3
- 8.8.3-multiple-modifiers-1
- 8.8.3-multiple-modifiers-2
- 8.8.3-multiple-modifiers-3
- 8.8.3-multiple-modifiers-4
- 8.8.3-multiple-modifiers-5
- 8.8.3-multiple-modifiers-6
- 8.8.3-invalid-modifiers-1
- 8.8.3-invalid-modifiers-2
- 8.8.3-invalid-modifiers-3
- 8.8.3-invalid-modifiers-4
- 8.8.3-invalid-modifiers-5
- 8.8.3-invalid-modifiers-6
- 8.8.5-return-statement-1
- 8.8.5-return-statement-2
- 8.8.5-example-1
- 8.8.5.1-before-block-statements-this-1
- 8.8.5.1-before-block-statements-this-2
- 8.8.5.1-before-block-statements-this-3
- 8.8.5.1-before-block-statements-super-1
- 8.8.5.1-before-block-statements-super-2
- 8.8.5.1-before-block-statements-super-3
- 8.8.5.1-multiple-this-invocations-1
- 8.8.5.1-multiple-this-invocations-2
- 8.8.5.1-multiple-this-invocations-3
- 8.8.5.1-accessible-implicit-super-invocation-1
- 8.8.5.1-accessible-implicit-super-invocation-2
- 8.8.5.1-accessible-implicit-super-invocation-3
- 8.8.5.1-accessible-explicit-super-invocation-1
- 8.8.5.1-accessible-explicit-super-invocation-2
- 8.8.5.1-accessible-explicit-super-invocation-3
- 8.8.5.1-accessible-explicit-super-invocation-args-1
- 8.8.5.1-accessible-explicit-super-invocation-args-2
- 8.8.5.1-accessible-explicit-super-invocation-args-3
- 8.8.5.1-accessible-explicit-super-invocation-args-4
- 8.8.5.1-accessible-explicit-super-invocation-args-5
- 8.8.5.1-inaccessible-implicit-super-invocation-1
- 8.8.5.1-inaccessible-explicit-super-invocation-1
- 8.8.5.1-inaccessible-explicit-super-invocation-args-1
- 8.8.5.1-inaccessible-explicit-super-invocation-args-2
- 8.8.5.1-example-1
- 8.8.5.1-example-2
- 8.8.5.1-example-3
- 8.8.5.1-example-4
- 8.8.5.1-ambiguous-super-1
- 8.8.5.1-ambiguous-super-2
- 8.8.5.1-ambiguous-super-3
- 8.8.5.1-ambiguous-super-4
- 8.8.5.1-ambiguous-super-5
- 8.8.5.1-alternate-constructor-invocation-1
- 8.8.5.1-alternate-constructor-invocation-2
- 8.8.5.1-alternate-constructor-invocation-3
- 8.8.5.1-ambiguous-this-1
- 8.8.5.1-ambiguous-this-2
- 8.8.5.1-ambiguous-this-3
- 8.8.5.1-qualified-1
- 8.8.5.1-qualified-2
- 8.8.5.1-qualified-3
- 8.8.5.1-qualified-4
- 8.8.5.1-qualified-5
- 8.8.5.1-qualified-6
- 8.8.5.1-qualified-7
- 8.8.5.1-qualified-8
- 8.8.5.1-qualified-9
- 8.8.5.1-qualified-10
- 8.8.5.1-qualified-11
- 8.8.5.1-qualified-12
- 8.8.5.1-qualified-13
- 8.8.5.1-qualified-14
- 8.8.5.1-qualified-15
- 8.8.5.1-qualified-16
- 8.8.5.1-qualified-17
- 8.8.5.1-qualified-18
- 8.8.6-overloaded-1
- 8.8.7-default-1
- 8.8.7-default-2
- 8.8.7-throws-1
- 8.8.7-inaccessible-default-constructor-toplevel-1
- 8.8.7-inaccessible-default-constructor-toplevel-2
- 8.8.7-accessible-default-constructor-inner-1
- 8.8.7-accessible-default-constructor-inner-2
- 8.8.7-accessible-default-constructor-inner-3
- 8.8.7-accessible-default-constructor-inner-4
- 8.8.7-accessible-default-constructor-inner-5
- 8.8.7-accessible-default-constructor-inner-6
- 8.8.7-accessible-default-constructor-inner-7
- 8.8.7-accessible-default-constructor-inner-8
- 8.8.7-accessible-default-constructor-inner-9
- 8.8.7-accessible-default-constructor-inner-10
- 8.8.7-accessible-default-constructor-inner-11
- 8.8.7-accessible-default-constructor-inner-12
- 8.8.7-accessible-default-constructor-inner-13
- 8.8.7-accessible-default-constructor-inner-14
- 8.8.7-accessible-default-constructor-inner-15
- 8.8.7-accessible-default-constructor-inner-16
- 8.8.7-accessible-default-constructor-inner-17
- 8.8.7-accessible-default-constructor-inner-18
- 8.8.7-accessible-default-constructor-inner-19
- 8.8.7-accessible-default-constructor-inner-20
- 8.8.7-accessible-default-constructor-inner-21
- 8.8.7-accessible-default-constructor-inner-22
- 8.8.7-accessible-default-constructor-inner-23
- 8.8.7-accessible-default-constructor-inner-24
- 8.8.7-accessible-default-constructor-inner-25
- 8.8.7-accessible-default-constructor-inner-26
- 8.8.7-accessible-default-constructor-inner-27
- 8.8.7-accessible-default-constructor-inner-28
- 8.8.7-accessible-default-constructor-inner-29
- 9.1-enclosing-1
- 9.1-enclosing-2
- 9.1-enclosing-3
- 9.1-enclosing-4
- 9.1.1-1
- 9.1.1-2
- 9.1.1-3
- 9.1.1-4
- 9.1.1-5
- 9.1.1-6
- 9.1.1-7
- 9.1.1-8
- 9.1.1-9
- 9.1.1-10
- 9.1.1-11
- 9.1.1-12
- 9.1.1-13
- 9.1.1-14
- 9.1.1-15
- 9.1.1-16
- 9.1.1-17
- 9.1.1-in-class-1
- 9.1.1-in-class-2
- 9.1.1-in-class-3
- 9.1.1-in-class-4
- 9.1.1-in-class-5
- 9.1.1-in-class-6
- 9.1.1-in-class-7
- 9.1.1-in-class-8
- 9.1.1-in-class-9
- 9.1.1-in-class-10
- 9.1.1-in-class-11
- 9.1.1-in-class-12
- 9.1.1-in-class-13
- 9.1.1-in-class-14
- 9.1.1-in-class-15
- 9.1.1-in-class-16
- 9.1.1-in-class-17
- 9.1.1-in-class-18
- 9.1.1-in-class-19
- 9.1.1-in-class-20
- 9.1.1-in-class-21
- 9.1.1-in-class-22
- 9.1.1-in-class-23
- 9.1.1-in-class-24
- 9.1.1-in-class-25
- 9.1.1-in-interface-1
- 9.1.1-in-interface-2
- 9.1.1-in-interface-3
- 9.1.1-in-interface-4
- 9.1.1-in-interface-5
- 9.1.1-in-interface-6
- 9.1.1-in-interface-7
- 9.1.1-in-interface-8
- 9.1.1-in-interface-9
- 9.1.1-in-interface-10
- 9.1.1-in-interface-11
- 9.1.1-in-interface-12
- 9.1.1-in-interface-13
- 9.1.1-in-interface-14
- 9.1.1-in-interface-15
- 9.1.1-in-interface-16
- 9.1.1-in-interface-17
- 9.1.1.1-1
- 9.1.1.1-2
- 9.1.1.1-3
- 9.1.2-accessible-1
- 9.1.2-accessible-2
- 9.1.2-accessible-3
- 9.1.2-accessible-4
- 9.1.2-accessible-5
- 9.1.2-accessible-6
- 9.1.2-interface-1
- 9.1.2-interface-2
- 9.1.2-interface-3
- 9.1.2-interface-4
- 9.1.2-interface-5
- 9.1.2-interface-6
- 9.1.2-circular-1
- 9.1.2-circular-2
- 9.1.2-circular-3
- 9.1.2-circular-4
- 9.1.2-circular-5
- 9.1.2-unique-1
- 9.1.2-unique-2
- 9.1.2-unique-3
- 9.1.2-unique-4
- 9.1.2-supertype-1
- 9.1.3-body-1
- 9.1.3-body-2
- 9.1.3-body-3
- 9.1.3-body-4
- 9.1.3-body-5
- 9.1.3-body-6
- 9.1.3-body-7
- 9.1.3-body-8
- 9.2-implicit-1
- 9.2-implicit-2
- 9.2-implicit-3
- 9.2-implicit-4
- 9.2-implicit-5
- 9.2-implicit-6
- 9.2-implicit-7
- 9.2-implicit-8
- 9.2-implicit-9
- 9.2-implicit-10
- 9.2-implicit-11
- 9.2-implicit-12
- 9.2-implicit-13
- 9.2-implicit-14
- 9.2-implicit-15
- 9.2-implicit-16
- 9.2-implicit-17
- 9.2-implicit-18
- 9.2-implicit-19
- 9.3-modifier-1
- 9.3-modifier-2
- 9.3-modifier-3
- 9.3-modifier-4
- 9.3-modifier-5
- 9.3-modifier-6
- 9.3-modifier-7
- 9.3-modifier-8
- 9.3-modifier-9
- 9.3-modifier-10
- 9.3-modifier-11
- 9.3-modifier-12
- 9.3-modifier-13
- 9.3-modifier-14
- 9.3-modifier-15
- 9.3-modifier-16
- 9.3-modifier-17
- 9.3-modifier-18
- 9.3-modifier-19
- 9.3-conflict-1
- 9.3-conflict-2
- 9.3-conflict-3
- 9.3-conflict-4
- 9.3.1-init-1
- 9.3.1-init-2
- 9.3.1-init-3
- 9.3.1-init-4
- 9.3.1-init-5
- 9.3.1-init-6
- 9.3.1-illegal-forward-1
- 9.3.1-illegal-forward-2
- 9.3.1-legal-forward-1
- 9.3.1-legal-forward-2
- 9.4-modifier-1
- 9.4-modifier-2
- 9.4-modifier-3
- 9.4-modifier-4
- 9.4-modifier-5
- 9.4-modifier-6
- 9.4-modifier-7
- 9.4-modifier-8
- 9.4-modifier-9
- 9.4-modifier-10
- 9.4-modifier-11
- 9.4-modifier-12
- 9.4-modifier-13
- 9.4-modifier-14
- 9.4-modifier-15
- 9.4-conflict-1
- 9.4-conflict-2
- 9.4-conflict-3
- 9.4-conflict-4
- 9.4-abstract-1
- 9.4.1-conflict-1
- 9.4.1-conflict-2
- 9.4.1-conflict-3
- 9.4.1-conflict-4
- 9.4.1-override-1
- 9.4.1-override-2
- 9.4.2-overload-1
- 9.4.2-overload-2
- 10.6-syntax-1
- 10.6-syntax-2
- 10.6-syntax-3
- 10.6-syntax-4
- 10.6-syntax-5
- 10.6-syntax-6
- 10.6-type-1
- 10.6-type-2
- 10.6-type-3
- 10.6-type-4
- 10.6-type-5
- 10.6-type-6
- 10.6-type-7
- 10.6-type-8
- 10.6-type-9
- 10.6-type-10
- 10.6-type-11
- 10.6-type-12
- 10.6-type-13
- 13.1-constructor-1
- 13.1-covariance-1
- 13.1-covariance-2
- 13.1-covariance-3
- 14.3-1
- 14.3-scope-1
- 14.3-scope-2
- 14.3-scope-3
- 14.3-scope-4
- 14.3-scope-5
- 14.3-scope-6
- 14.3-scope-7
- 14.3-scope-8
- 14.3-scope-9
- 14.3-scope-10
- 14.3-scope-11
- 14.4.2-valid-scope-1
- 14.4.2-valid-scope-2
- 14.4.2-valid-scope-3
- 14.4.2-valid-scope-4
- 14.4.2-valid-scope-5
- 14.4.2-valid-scope-6
- 14.4.2-valid-scope-7
- 14.4.2-valid-scope-8
- 14.4.2-invalid-scope-1
- 14.4.2-invalid-scope-2
- 14.4.2-invalid-scope-3
- 14.4.2-invalid-scope-4
- 14.4.2-invalid-scope-5
- 14.4.2-invalid-scope-6
- 14.4.2-shadow-1
- 14.4.2-shadow-2
- 14.4.2-shadow-3
- 14.4.2-shadow-4
- 14.4.2-shadow-5
- 14.4.2-shadow-6
- 14.4.2-shadow-7
- 14.4.2-shadow-8
- 14.4.2-shadow-9
- 14.7-scope-1
- 14.7-shadow-1
- 14.7-shadow-2
- 14.7-shadow-3
- 14.7-same-1
- 14.7-same-2
- 14.7-same-3
- 14.7-same-4
- 14.7-same-5
- 14.7-same-6
- 14.7-same-7
- 14.7-enclosed-1
- 14.7-enclosed-2
- 14.7-enclosed-3
- 14.7-enclosed-4
- 14.7-enclosed-5
- 14.7-ident-1
- 14.7-ident-2
- 14.7-ident-3
- 14.7-ident-4
- 14.7-ident-5
- 14.7-ident-6
- 14.9-invalid-syntax-1
- 14.9-invalid-syntax-2
- 14.9-invalid-syntax-3
- 14.9-invalid-syntax-4
- 14.9-expression-evaluation-1
- 14.9-expression-evaluation-2
- 14.9-expression-evaluation-3
- 14.9-expression-evaluation-4
- 14.9-expression-evaluation-5
- 14.9-expression-evaluation-6
- 14.9-expression-evaluation-7
- 14.9-expression-evaluation-8
- 14.9-expression-evaluation-9
- 14.9-expression-evaluation-10
- 14.9-expression-evaluation-11
- 14.9-expression-evaluation-12
- 14.9-expression-evaluation-13
- 14.9-expression-evaluation-14
- 14.9-expression-evaluation-15
- 14.9-expression-evaluation-16
- 14.9-expression-evaluation-17
- 14.9-expression-evaluation-18
- 14.9-expression-evaluation-19
- 14.10-invalid-syntax-1
- 14.10-invalid-syntax-2
- 14.10-invalid-syntax-3
- 14.10-invalid-syntax-4
- 14.10-invalid-syntax-5
- 14.10-valid-1
- 14.10-valid-2
- 14.10-invalid-type-1
- 14.10-invalid-type-2
- 14.10-invalid-type-3
- 14.10-invalid-type-4
- 14.10-invalid-type-5
- 14.10-invalid-type-6
- 14.10-valid-type-1
- 14.10-valid-type-2
- 14.10-valid-type-3
- 14.10-valid-type-4
- 14.10-switchlabel-1
- 14.10-switchlabel-2
- 14.10-switchlabel-3
- 14.10-assignable-1
- 14.10-assignable-2
- 14.10-assignable-3
- 14.10-assignable-4
- 14.10-assignable-5
- 14.10-assignable-6
- 14.10-assignable-7
- 14.10-assignable-8
- 14.10-assignable-9
- 14.10-assignable-10
- 14.10-assignable-11
- 14.10-assignable-12
- 14.10-duplicate-1
- 14.10-duplicate-2
- 14.10-duplicate-3
- 14.10-duplicate-4
- 14.10-abrupt-completion-1
- 14.10-abrupt-completion-2
- 14.10-exhaustion-1
- 14.10-exhaustion-2
- 14.10-example-1
- 14.14-plain-1
- 14.14-plain-2
- 14.14-plain-3
- 14.14-plain-4
- 14.14-plain-5
- 14.14-plain-6
- 14.14-plain-7
- 14.14-plain-8
- 14.14-plain-9
- 14.14-nonlocal-1
- 14.14-try-1
- 14.14-label-1
- 14.14-label-2
- 14.14-label-3
- 14.14-label-4
- 14.14-label-5
- 14.14-label-6
- 14.14-label-7
- 14.14-label-8
- 14.14-label-9
- 14.14-label-10
- 14.14-label-11
- 14.14-label-12
- 14.14-label-13
- 14.14-arg-1
- 14.14-arg-2
- 14.14-arg-3
- 14.14-arg-4
- 14.15-plain-1
- 14.15-plain-2
- 14.15-plain-3
- 14.15-plain-4
- 14.15-plain-5
- 14.15-plain-6
- 14.15-plain-7
- 14.15-plain-8
- 14.15-nonlocal-1
- 14.15-try-1
- 14.15-label-1
- 14.15-label-2
- 14.15-label-3
- 14.15-label-4
- 14.15-label-5
- 14.15-label-6
- 14.15-label-7
- 14.15-label-8
- 14.15-label-9
- 14.15-label-10
- 14.15-label-11
- 14.15-nonlocal-2
- 14.15-try-2
- 14.15-arg-1
- 14.15-arg-2
- 14.15-arg-3
- 14.15-arg-4
- 14.18-expression-1
- 14.18-expression-2
- 14.18-expression-3
- 14.18-expression-4
- 14.18-expression-5
- 14.18-expression-6
- 14.18-expression-7
- 14.18-syntax-1
- 14.18-syntax-2
- 14.18-syntax-3
- 14.18-syntax-4
- 14.18-lock-1
- 14.18-lock-2
- 14.18-lock-3
- 14.19-shadow-1
- 14.19-shadow-2
- 14.19-shadow-3
- 14.19-shadow-4
- 14.19-shadow-5
- 14.19-shadow-6
- 14.19-shadow-7
- 14.19-shadow-8
- 14.19-shadow-9
- 14.19-shadow-10
- 14.19-shadow-11
- 14.19-shadow-12
- 14.19-shadow-13
- 14.19-shadow-14
- 14.19-shadow-15
- 14.19-syntax-1
- 14.19-syntax-2
- 14.19-syntax-3
- 14.19-syntax-4
- 14.19-syntax-5
- 14.19-syntax-6
- 14.19-syntax-7
- 14.19-syntax-8
- 14.19-syntax-9
- 14.19-syntax-10
- 14.19-syntax-11
- 14.19-syntax-12
- 14.19-syntax-13
- 14.19-syntax-14
- 14.19-syntax-15
- 14.19-syntax-16
- 14.19-syntax-17
- 14.19-syntax-18
- 14.19-syntax-19
- 14.19-syntax-20
- 14.19-type-1
- 14.19-type-2
- 14.19-type-3
- 14.19-type-4
- 14.19-type-5
- 14.20-valid-1
- 14.20-block-1
- 14.20-block-2
- 14.20-block-3
- 14.20-block-4
- 14.20-block-5
- 14.20-block-6
- 14.20-block-7
- 14.20-block-8
- 14.20-block-9
- 14.20-block-10
- 14.20-block-11
- 14.20-local-1
- 14.20-local-2
- 14.20-local-3
- 14.20-local-4
- 14.20-empty-1
- 14.20-label-1
- 14.20-label-2
- 14.20-label-3
- 14.20-label-4
- 14.20-label-5
- 14.20-label-6
- 14.20-label-7
- 14.20-label-8
- 14.20-label-9
- 14.20-label-10
- 14.20-label-11
- 14.20-label-12
- 14.20-label-13
- 14.20-label-14
- 14.20-label-15
- 14.20-expression-1
- 14.20-expression-2
- 14.20-switch-1
- 14.20-switch-2
- 14.20-switch-3
- 14.20-switch-4
- 14.20-switch-5
- 14.20-switch-6
- 14.20-switch-7
- 14.20-switch-8
- 14.20-switch-9
- 14.20-switch-10
- 14.20-switch-11
- 14.20-switch-12
- 14.20-switch-13
- 14.20-switch-14
- 14.20-switch-15
- 14.20-switch-16
- 14.20-switch-17
- 14.20-switch-18
- 14.20-switch-19
- 14.20-switch-20
- 14.20-switch-21
- 14.20-switch-22
- 14.20-switch-23
- 14.20-switch-24
- 14.20-while-1
- 14.20-while-2
- 14.20-while-3
- 14.20-while-4
- 14.20-while-5
- 14.20-while-6
- 14.20-while-7
- 14.20-while-8
- 14.20-while-9
- 14.20-while-10
- 14.20-while-11
- 14.20-while-12
- 14.20-while-13
- 14.20-while-14
- 14.20-while-15
- 14.20-while-16
- 14.20-while-17
- 14.20-while-18
- 14.20-while-19
- 14.20-do-1
- 14.20-do-2
- 14.20-do-3
- 14.20-do-4
- 14.20-do-5
- 14.20-do-6
- 14.20-do-7
- 14.20-do-8
- 14.20-do-9
- 14.20-do-10
- 14.20-do-11
- 14.20-do-12
- 14.20-do-13
- 14.20-do-14
- 14.20-do-15
- 14.20-do-16
- 14.20-do-17
- 14.20-do-18
- 14.20-do-19
- 14.20-do-20
- 14.20-do-21
- 14.20-do-22
- 14.20-do-23
- 14.20-do-24
- 14.20-do-25
- 14.20-do-26
- 14.20-do-27
- 14.20-do-28
- 14.20-do-29
- 14.20-do-30
- 14.20-do-31
- 14.20-do-32
- 14.20-do-33
- 14.20-do-34
- 14.20-for-1
- 14.20-for-2
- 14.20-for-3
- 14.20-for-4
- 14.20-for-5
- 14.20-for-6
- 14.20-for-7
- 14.20-for-8
- 14.20-for-9
- 14.20-for-10
- 14.20-for-11
- 14.20-for-12
- 14.20-for-13
- 14.20-for-14
- 14.20-for-15
- 14.20-for-16
- 14.20-for-17
- 14.20-for-18
- 14.20-for-19
- 14.20-for-20
- 14.20-for-21
- 14.20-for-22
- 14.20-abrupt-1
- 14.20-abrupt-2
- 14.20-abrupt-3
- 14.20-abrupt-4
- 14.20-abrupt-5
- 14.20-abrupt-6
- 14.20-abrupt-7
- 14.20-abrupt-8
- 14.20-abrupt-9
- 14.20-abrupt-10
- 14.20-abrupt-11
- 14.20-abrupt-12
- 14.20-abrupt-13
- 14.20-abrupt-14
- 14.20-abrupt-15
- 14.20-abrupt-16
- 14.20-synchronized-1
- 14.20-synchronized-2
- 14.20-synchronized-3
- 14.20-synchronized-4
- 14.20-synchronized-5
- 14.20-try-1
- 14.20-try-2
- 14.20-try-3
- 14.20-try-4
- 14.20-try-5
- 14.20-try-6
- 14.20-try-7
- 14.20-try-8
- 14.20-try-9
- 14.20-try-10
- 14.20-try-11
- 14.20-try-12
- 14.20-try-13
- 14.20-try-14
- 14.20-try-15
- 14.20-try-16
- 14.20-try-17
- 14.20-try-18
- 14.20-try-19
- 14.20-try-20
- 14.20-try-21
- 14.20-try-22
- 14.20-try-23
- 14.20-try-24
- 14.20-try-25
- 14.20-try-26
- 14.20-try-27
- 14.20-try-28
- 14.20-try-29
- 14.20-try-30
- 14.20-try-31
- 14.20-try-32
- 14.20-try-33
- 14.20-try-34
- 14.20-try-35
- 14.20-try-36
- 14.20-try-37
- 14.20-catch-1
- 14.20-catch-2
- 14.20-catch-3
- 14.20-catch-4
- 14.20-catch-5
- 14.20-catch-6
- 14.20-catch-7
- 14.20-catch-8
- 14.20-catch-9
- 14.20-catch-10
- 14.20-catch-11
- 14.20-catch-12
- 14.20-catch-13
- 14.20-catch-14
- 14.20-catch-15
- 14.20-catch-16
- 14.20-catch-17
- 14.20-catch-18
- 14.20-catch-19
- 14.20-catch-20
- 14.20-catch-21
- 14.20-catch-22
- 14.20-catch-23
- 14.20-catch-24
- 14.20-if-1
- 14.20-if-2
- 14.20-if-3
- 14.20-if-4
- 14.20-if-5
- 14.20-if-6
- 14.20-if-7
- 14.20-if-8
- 14.20-for-update-1
- 15.8.2-type-1
- 15.8.2-type-2
- 15.8.2-type-3
- 15.8.2-type-4
- 15.8.2-type-5
- 15.8.2-type-6
- 15.8.2-type-7
- 15.8.2-type-8
- 15.8.2-type-9
- 15.8.2-type-10
- 15.8.2-type-11
- 15.8.2-type-12
- 15.8.2-type-13
- 15.8.2-type-14
- 15.8.2-primary-1
- 15.8.2-primary-2
- 15.8.2-syntax-1
- 15.8.2-syntax-2
- 15.8.2-syntax-3
- 15.8.2-syntax-4
- 15.8.2-syntax-5
- 15.8.2-syntax-6
- 15.8.2-syntax-7
- 15.8.2-syntax-8
- 15.8.2-synthetic-1
- 15.8.2-synthetic-2
- 15.8.2-synthetic-3
- 15.8.2-synthetic-4
- 15.8.4-static-1
- 15.8.4-static-2
- 15.8.4-name-1
- 15.8.4-name-2
- 15.8.4-name-3
- 15.8.4-syntax-1
- 15.8.4-syntax-2
- 15.8.4-syntax-3
- 15.8.4-syntax-4
- 15.8.4-syntax-5
- 15.8.4-syntax-6
- 15.8.5-statement-1
- 15.8.5-statement-2
- 15.8.5-statement-3
- 15.8.5-statement-4
- 15.8.5-statement-5
- 15.8.5-statement-6
- 15.8.5-statement-7
- 15.8.5-primary-expression-1
- 15.8.5-primary-expression-2
- 15.8.5-primary-expression-3
- 15.8.5-primary-expression-4
- 15.8.5-primary-expression-5
- 15.8.5-primary-expression-6
- 15.8.5-primary-expression-7
- 15.8.5-this-expression-1
- 15.8.5-this-expression-2
- 15.8.5-this-expression-3
- 15.8.5-this-expression-4
- 15.8.5-creation-expression-1
- 15.8.5-creation-expression-2
- 15.8.5-creation-expression-3
- 15.8.5-creation-expression-4
- 15.8.5-creation-expression-5
- 15.8.5-creation-expression-6
- 15.8.5-creation-expression-7
- 15.8.5-creation-expression-8
- 15.8.5-field-expression-1
- 15.8.5-field-expression-2
- 15.8.5-field-expression-3
- 15.8.5-field-expression-4
- 15.8.5-field-expression-5
- 15.8.5-field-expression-6
- 15.8.5-field-expression-7
- 15.8.5-field-expression-8
- 15.8.5-field-expression-9
- 15.8.5-field-expression-10
- 15.8.5-field-expression-11
- 15.8.5-method-expression-1
- 15.8.5-method-expression-2
- 15.8.5-method-expression-3
- 15.8.5-method-expression-4
- 15.8.5-method-expression-5
- 15.8.5-method-expression-6
- 15.8.5-method-expression-7
- 15.8.5-method-expression-8
- 15.8.5-method-expression-9
- 15.8.5-method-expression-10
- 15.8.5-method-expression11
- 15.8.5-method-expression-12
- 15.8.5-method-expression-13
- 15.8.5-array-expression-1
- 15.8.5-array-expression-2
- 15.8.5-array-expression-3
- 15.8.5-array-expression-4
- 15.8.5-variable-1
- 15.8.5-variable-2
- 15.8.5-variable-3
- 15.8.5-variable-4
- 15.8.5-variable-5
- 15.8.5-variable-6
- 15.8.5-variable-7
- 15.8.5-variable-8
- 15.8.5-cast-1
- 15.8.5-cast-2
- 15.8.5-cast-3
- 15.8.5-instanceof-1
- 15.8.5-instanceof-2
- 15.8.5-instanceof-3
- 15.8.5-precedence-1
- 15.9-unqualified-1
- 15.9-unqualified-2
- 15.9.1-unqualified-anonymous-1
- 15.9.1-unqualified-anonymous-2
- 15.9.1-unqualified-anonymous-3
- 15.9.1-unqualified-anonymous-4
- 15.9.1-unqualified-anonymous-5
- 15.9.1-unqualified-anonymous-6
- 15.9.1-unqualified-anonymous-7
- 15.9.1-unqualified-anonymous-8
- 15.9.1-unqualified-anonymous-9
- 15.9.1-unqualified-anonymous-10
- 15.9.1-unqualified-anonymous-11
- 15.9.1-unqualified-anonymous-12
- 15.9.1-unqualified-anonymous-13
- 15.9.1-unqualified-anonymous-14
- 15.9.1-unqualified-anonymous-15
- 15.9.1-unqualified-anonymous-16
- 15.9.1-unqualified-anonymous-17
- 15.9.1-unqualified-anonymous-18
- 15.9.1-unqualified-anonymous-19
- 15.9.1-unqualified-anonymous-20
- 15.9.1-unqualified-anonymous-21
- 15.9.1-unqualified-anonymous-22
- 15.9.1-unqualified-anonymous-23
- 15.9.1-unqualified-anonymous-24
- 15.9.1-unqualified-anonymous-25
- 15.9.1-unqualified-anonymous-26
- 15.9.1-unqualified-anonymous-27
- 15.9.1-qualified-anonymous-1
- 15.9.1-qualified-anonymous-2
- 15.9.1-qualified-anonymous-3
- 15.9.1-qualified-anonymous-4
- 15.9.1-qualified-anonymous-5
- 15.9.1-qualified-anonymous-6
- 15.9.1-qualified-anonymous-7
- 15.9.1-qualified-anonymous-8
- 15.9.1-qualified-anonymous-9
- 15.9.1-qualified-anonymous-10
- 15.9.1-qualified-anonymous-11
- 15.9.1-qualified-anonymous-12
- 15.9.1-qualified-anonymous-13
- 15.9.1-qualified-anonymous-14
- 15.9.1-qualified-anonymous-15
- 15.9.1-qualified-anonymous-16
- 15.9.1-qualified-anonymous-17
- 15.9.1-qualified-anonymous-18
- 15.9.1-qualified-anonymous-19
- 15.9.1-qualified-anonymous-20
- 15.9.1-qualified-anonymous-21
- 15.9.1-qualified-anonymous-22
- 15.9.1-qualified-anonymous-23
- 15.9.1-qualified-anonymous-24
- 15.9.1-qualified-anonymous-25
- 15.9.1-qualified-anonymous-26
- 15.9.1-qualified-anonymous-27
- 15.9.1-qualified-anonymous-28
- 15.9.1-qualified-anonymous-29
- 15.9.1-unqualified-concrete-1
- 15.9.1-unqualified-concrete-2
- 15.9.1-unqualified-concrete-3
- 15.9.1-unqualified-concrete-4
- 15.9.1-unqualified-concrete-5
- 15.9.1-unqualified-concrete-6
- 15.9.1-unqualified-concrete-7
- 15.9.1-unqualified-concrete-8
- 15.9.1-unqualified-concrete-9
- 15.9.1-unqualified-concrete-10
- 15.9.1-unqualified-concrete-11
- 15.9.1-unqualified-concrete-12
- 15.9.1-unqualified-concrete-13
- 15.9.1-unqualified-concrete-14
- 15.9.1-unqualified-concrete-15
- 15.9.1-unqualified-concrete-16
- 15.9.1-unqualified-concrete-17
- 15.9.1-qualified-concrete-1
- 15.9.1-qualified-concrete-2
- 15.9.1-qualified-concrete-3
- 15.9.1-qualified-concrete-4
- 15.9.1-qualified-concrete-5
- 15.9.1-qualified-concrete-6
- 15.9.1-qualified-concrete-7
- 15.9.1-qualified-concrete-8
- 15.9.1-qualified-concrete-9
- 15.9.1-qualified-concrete-10
- 15.9.1-qualified-concrete-11
- 15.9.1-qualified-concrete-12
- 15.9.1-qualified-concrete-13
- 15.9.1-qualified-concrete-14
- 15.9.1-qualified-concrete-15
- 15.9.1-qualified-concrete-16
- 15.9.1-qualified-concrete-17
- 15.9.1-qualified-concrete-18
- 15.9.1-qualified-concrete-19
- 15.9.1-qualified-concrete-20
- 15.9.1-qualified-concrete-21
- 15.9.1-qualified-concrete-22
- 15.9.1-qualified-concrete-23
- 15.9.1-qualified-concrete-24
- 15.9.1-qualified-concrete-25
- 15.9.1-qualified-concrete-26
- 15.9.2-inner-member-1
- 15.9.3-anonymous-1
- 15.9.3-anonymous-2
- 15.9.3-anonymous-3
- 15.9.3-choosing-1
- 15.9.3-choosing-2
- 15.9.3-choosing-3
- 15.9.3-choosing-4
- 15.9.3-choosing-5
- 15.9.3-choosing-6
- 15.9.3-choosing-7
- 15.9.3-choosing-8
- 15.9.5.1-implicit-1
- 15.9.5.1-superconstructor-1
- 15.9.5.1-superconstructor-2
- 15.9.5.1-superconstructor-3
- 15.9.5.1-superconstructor-4
- 15.9.5.1-superconstructor-5
- 15.9.5.1-superconstructor-6
- 15.9.5.1-superconstructor-7
- 15.9.5.1-superconstructor-8
- 15.9.5.1-superconstructor-9
- 15.9.5.1-exception-1
- 15.9.5.1-exception-2
- 15.9.5.1-exception-3
- 15.9.5.1-exception-4
- 15.10-initializer-syntax-1
- 15.10-initializer-syntax-2
- 15.10-initializer-syntax-3
- 15.10-initializer-syntax-4
- 15.10-initializer-syntax-5
- 15.10-initializer-syntax-6
- 15.10-initializer-syntax-7
- 15.10-initializer-type-1
- 15.10-initializer-type-2
- 15.10-initializer-type-3
- 15.10-initializer-type-4
- 15.10-initializer-type-5
- 15.10-initializer-type-6
- 15.10-initializer-type-7
- 15.10-initializer-type-8
- 15.10-initializer-type-9
- 15.10-initializer-type-10
- 15.10-initializer-type-11
- 15.10-initializer-type-12
- 15.10-initializer-type-13
- 15.10-uninitialized-1
- 15.10-uninitialized-2
- 15.10-uninitialized-3
- 15.10-uninitialized-4
- 15.10-uninitialized-5
- 15.11.1-invalid-1
- 15.11.1-ambiguous-1
- 15.11.1-ambiguous-2
- 15.11.1-ambiguous-3
- 15.11.1-ambiguous-4
- 15.11.1-explicit-constructor-1
- 15.11.1-explicit-constructor-2
- 15.11.1-explicit-constructor-3
- 15.11.2-syntax-1
- 15.11.2-syntax-2
- 15.11.2-syntax-3
- 15.11.2-syntax-4
- 15.11.2-syntax-5
- 15.11.2-syntax-6
- 15.11.2-syntax-7
- 15.11.2-syntax-8
- 15.11.2-syntax-9
- 15.11.2-syntax-10
- 15.11.2-explicit-constructor-1
- 15.11.2-explicit-constructor-2
- 15.11.2-use-1
- 15.11.2-use-2
- 15.11.2-use-3
- 15.11.2-use-4
- 15.11.2-use-5
- 15.11.2-use-6
- 15.11.2-use-7
- 15.11.2-use-8
- 15.11.2-use-9
- 15.11.2-use-10
- 15.11.2-use-11
- 15.11.2-use-12
- 15.11.2-meaning-1
- 15.11.2-meaning-2
- 15.11.2-meaning-3
- 15.11.2-meaning-4
- 15.11.2-meaning-5
- 15.11.2-meaning-6
- 15.11.2-meaning-7
- 15.11.2-meaning-8
- 15.11.2-meaning-9
- 15.11.2-meaning-10
- 15.11.2-meaning-11
- 15.11.2-meaning-12
- 15.11.2-meaning-13
- 15.11.2-meaning-14
- 15.11.2-meaning-15
- 15.11.2-meaning-16
- 15.11.2-meaning-17
- 15.12.1-syntax-1
- 15.12.1-syntax-2
- 15.12.1-syntax-3
- 15.12.1-syntax-4
- 15.12.1-syntax-5
- 15.12.1-syntax-6
- 15.12.1-syntax-7
- 15.12.1-syntax-8
- 15.12.1-syntax-9
- 15.12.1-syntax-10
- 15.12.1-type-1
- 15.12.1-type-2
- 15.12.1-type-3
- 15.12.1-type-4
- 15.12.1-type-5
- 15.12.1-type-6
- 15.12.1-type-7
- 15.12.1-type-8
- 15.12.1-type-9
- 15.12.1-type-10
- 15.12.1-type-11
- 15.12.1-type-12
- 15.12.1-type-13
- 15.12.1-type-14
- 15.12.2.1-jls-example-1
- 15.12.2.1-jls-example-2
- 15.12.2.1-accessibility-constructor-1
- 15.12.2.1-accessibility-constructor-2
- 15.12.2.1-accessibility-method-1
- 15.12.2.1-accessibility-method-2
- 15.12.2.1-accessibility-method-3
- 15.12.2.1-accessibility-method-4
- 15.12.2.1-accessibility-method-5
- 15.12.2.1-accessibility-method-6
- 15.12.2.1-accessibility-method-7
- 15.12.2.1-accessibility-method-8
- 15.12.2.2-ambiguous-1
- 15.12.2.2-ambiguous-2
- 15.12.2.2-ambiguous-3
- 15.12.2.2-ambiguous-4
- 15.12.2.2-ambiguous-5
- 15.12.2.2-ambiguous-6
- 15.12.2.2-ambiguous-7
- 15.12.2.2-ambiguous-8
- 15.12.2.2-ambiguous-9
- 15.12.2.2-ambiguous-10
- 15.12.2.2-ambiguous-11
- 15.12.2.2-ambiguous-12
- 15.12.2.2-ambiguous-13
- 15.12.2.2-ambiguous-14
- 15.12.2.2-ambiguous-15
- 15.12.2.2-ambiguous-16
- 15.12.2.2-ambiguous-17
- 15.12.2.2-ambiguous-18
- 15.12.2.2-ambiguous-19
- 15.12.2.2-ambiguous-20
- 15.12.2.2-ambiguous-21
- 15.12.2.2-ambiguous-22
- 15.12.2.2-ambiguous-23
- 15.12.2.2-ambiguous-24
- 15.12.3-explicit-constructor-1
- 15.12.3-explicit-constructor-2
- 15.12.3-explicit-constructor-3
- 15.12.3-explicit-constructor-4
- 15.12.3-explicit-constructor-5
- 15.12.3-explicit-constructor-6
- 15.12.3-explicit-constructor-7
- 15.12.3-explicit-constructor-8
- 15.12.3-explicit-constructor-9
- 15.12.3-explicit-constructor-10
- 15.12.3-abstract-1
- 15.12.3-abstract-2
- 15.12.3-abstract-3
- 15.12.3-abstract-4
- 15.12.3-abstract-5
- 15.12.3-abstract-6
- 15.12.3-abstract-7
- 15.12.3-abstract-8
- 15.12.3-abstract-9
- 15.12.3-abstract-10
- 15.12.3-abstract-11
- 15.12.3-abstract-12
- 15.13-anon-1
- 15.13-index-1
- 15.13-index-2
- 15.13-index-3
- 15.13-index-4
- 15.13-index-5
- 15.13-index-6
- 15.13-index-7
- 15.13-index-8
- 15.13-index-9
- 15.13-index-10
- 15.13-reference-1
- 15.13-reference-2
- 15.13-reference-3
- 15.13-reference-4
- 15.13-reference-5
- 15.13-reference-6
- 15.13-reference-7
- 15.13-reference-8
- 15.13-reference-9
- 15.13-reference-10
- 15.13-reference-11
- 15.13-reference-12
- 15.13-reference-13
- 15.13-reference-14
- 15.13-reference-15
- 15.13-final-1
- 15.13-type-1
- 15.13-type-2
- 15.13-type-3
- 15.14.1-argument-1
- 15.14.1-argument-2
- 15.14.1-argument-3
- 15.14.1-argument-4
- 15.14.1-argument-5
- 15.14.1-argument-6
- 15.14.1-argument-7
- 15.14.1-argument-8
- 15.14.1-argument-9
- 15.14.1-argument-10
- 15.14.1-type-1
- 15.14.1-type-2
- 15.14.1-type-3
- 15.14.1-type-4
- 15.14.1-type-5
- 15.14.1-type-6
- 15.14.1-type-7
- 15.14.1-result-1
- 15.14.1-result-2
- 15.14.1-final-1
- 15.14.1-final-2
- 15.14.1-final-3
- 15.14.2-argument-1
- 15.14.2-argument-2
- 15.14.2-argument-3
- 15.14.2-argument-4
- 15.14.2-argument-5
- 15.14.2-argument-6
- 15.14.2-argument-7
- 15.14.2-argument-8
- 15.14.2-argument-9
- 15.14.2-argument-10
- 15.14.2-type-1
- 15.14.2-type-2
- 15.14.2-type-3
- 15.14.2-type-4
- 15.14.2-type-5
- 15.14.2-type-6
- 15.14.2-type-7
- 15.14.2-result-1
- 15.14.2-result-2
- 15.14.2-final-1
- 15.14.2-final-2
- 15.14.2-final-3
- 15.15-group-1
- 15.15-precedence-1
- 15.15-precedence-2
- 15.15-precedence-3
- 15.15-precedence-4
- 15.15-precedence-5
- 15.15.1-argument-1
- 15.15.1-argument-2
- 15.15.1-argument-3
- 15.15.1-argument-4
- 15.15.1-argument-5
- 15.15.1-argument-6
- 15.15.1-argument-7
- 15.15.1-argument-8
- 15.15.1-argument-9
- 15.15.1-argument-10
- 15.15.1-type-1
- 15.15.1-type-2
- 15.15.1-type-3
- 15.15.1-type-4
- 15.15.1-type-5
- 15.15.1-type-6
- 15.15.1-type-7
- 15.15.1-result-1
- 15.15.1-result-2
- 15.15.1-final-1
- 15.15.1-final-2
- 15.15.1-final-3
- 15.15.2-argument-1
- 15.15.2-argument-2
- 15.15.2-argument-3
- 15.15.2-argument-4
- 15.15.2-argument-5
- 15.15.2-argument-6
- 15.15.2-argument-7
- 15.15.2-argument-8
- 15.15.2-argument-9
- 15.15.2-argument-10
- 15.15.2-type-1
- 15.15.2-type-2
- 15.15.2-type-3
- 15.15.2-type-4
- 15.15.2-type-5
- 15.15.2-type-6
- 15.15.2-type-7
- 15.15.2-result-1
- 15.15.2-result-2
- 15.15.2-final-1
- 15.15.2-final-2
- 15.15.2-final-3
- 15.15.3-type-1
- 15.15.3-type-2
- 15.15.3-type-3
- 15.15.3-type-4
- 15.15.3-type-5
- 15.15.3-type-6
- 15.15.3-type-7
- 15.15.3-type-8
- 15.15.3-type-9
- 15.15.3-type-10
- 15.15.3-type-11
- 15.15.3-type-12
- 15.15.4-type-1
- 15.15.4-type-2
- 15.15.4-type-3
- 15.15.4-type-4
- 15.15.4-type-5
- 15.15.4-type-6
- 15.15.4-type-7
- 15.15.4-type-8
- 15.15.4-int-1
- 15.15.4-int-2
- 15.15.4-int-3
- 15.15.4-long-1
- 15.15.4-long-2
- 15.15.4-long-3
- 15.15.4-float-1
- 15.15.4-float-2
- 15.15.4-float-3
- 15.15.4-double-1
- 15.15.4-double-2
- 15.15.4-double-3
- 15.15.5-type-1
- 15.15.5-type-2
- 15.15.5-type-3
- 15.15.5-type-4
- 15.15.5-type-5
- 15.15.5-type-6
- 15.15.5-type-7
- 15.15.5-type-8
- 15.15.5-type-9
- 15.15.5-type-10
- 15.15.5-int-1
- 15.15.5-int-2
- 15.15.5-long-1
- 15.15.5-long-2
- 15.15.6-type-1
- 15.15.6-type-2
- 15.15.6-type-3
- 15.15.6-type-4
- 15.15.6-type-5
- 15.15.6-type-6
- 15.15.6-type-7
- 15.15.6-type-8
- 15.15.6-boolean-1
- 15.15.6-boolean-2
- 15.16-primitive-1
- 15.16-primitive-2
- 15.16-primitive-3
- 15.16-primitive-4
- 15.16-primitive-5
- 15.16-primitive-6
- 15.16-primitive-7
- 15.16-primitive-8
- 15.16-primitive-9
- 15.16-primitive-10
- 15.16-primitive-11
- 15.16-value-1
- 15.16-value-2
- 15.16-value-3
- 15.16-value-4
- 15.16-array-1
- 15.16-array-2
- 15.16-array-3
- 15.16-array-4
- 15.16-array-5
- 15.16-array-6
- 15.16-array-7
- 15.16-array-8
- 15.16-array-9
- 15.16-array-10
- 15.16-array-11
- 15.16-array-12
- 15.16-array-13
- 15.16-array-14
- 15.16-array-15
- 15.16-ref-1
- 15.16-ref-2
- 15.16-ref-3
- 15.16-ref-4
- 15.16-ref-5
- 15.16-ref-6
- 15.16-ref-7
- 15.16-ref-8
- 15.16-ref-9
- 15.16-semantic-1
- 15.16-semantic-2
- 15.16-semantic-3
- 15.16-semantic-4
- 15.16-semantic-5
- 15.17-null-1
- 15.17-null-2
- 15.17-null-3
- 15.17-boolean-1
- 15.17-boolean-2
- 15.17-boolean-3
- 15.17-object-1
- 15.17-object-2
- 15.17-object-3
- 15.17-void-1
- 15.17-void-2
- 15.17-void-3
- 15.17-mult-1
- 15.17-mult-2
- 15.17-mult-3
- 15.17-mult-4
- 15.17-div-1
- 15.17-div-2
- 15.17-div-3
- 15.17-div-4
- 15.17-mod-1
- 15.17-mod-2
- 15.17-mod-3
- 15.17-mod-4
- 15.17-type-1
- 15.17-type-2
- 15.17-type-3
- 15.17-type-4
- 15.17-type-5
- 15.17-type-6
- 15.17-type-7
- 15.17-type-8
- 15.17-type-9
- 15.17-type-10
- 15.17-type-11
- 15.17-type-12
- 15.17-type-13
- 15.17-type-14
- 15.17-type-15
- 15.17-type-16
- 15.17-type-17
- 15.17-type-18
- 15.17.1-commute-1
- 15.17.1-commute-2
- 15.17.1-commute-3
- 15.17.1-commute-4
- 15.17.1-assoc-1
- 15.17.1-assoc-2
- 15.17.1-assoc-3
- 15.17.1-assoc-4
- 15.17.1-float-1
- 15.17.1-float-2
- 15.17.1-float-3
- 15.17.1-float-4
- 15.17.1-float-5
- 15.17.1-float-6
- 15.17.1-float-7
- 15.17.1-float-8
- 15.17.1-float-9
- 15.17.1-float-10
- 15.17.1-float-11
- 15.17.1-float-12
- 15.17.1-float-13
- 15.17.1-float-14
- 15.17.1-double-1
- 15.17.1-double-2
- 15.17.1-double-3
- 15.17.1-double-4
- 15.17.1-double-5
- 15.17.1-double-6
- 15.17.1-double-7
- 15.17.1-double-8
- 15.17.1-double-9
- 15.17.1-double-10
- 15.17.1-double-11
- 15.17.1-double-12
- 15.17.1-double-13
- 15.17.1-double-14
- 15.17.1-int-1
- 15.17.1-int-2
- 15.17.1-long-1
- 15.17.1-long-2
- 15.17.2-assoc-1
- 15.17.2-assoc-2
- 15.17.2-float-1
- 15.17.2-float-2
- 15.17.2-float-3
- 15.17.2-float-4
- 15.17.2-float-5
- 15.17.2-float-6
- 15.17.2-float-7
- 15.17.2-float-8
- 15.17.2-float-9
- 15.17.2-float-10
- 15.17.2-float-11
- 15.17.2-float-12
- 15.17.2-float-13
- 15.17.2-float-14
- 15.17.2-float-15
- 15.17.2-float-16
- 15.17.2-double-1
- 15.17.2-double-2
- 15.17.2-double-3
- 15.17.2-double-4
- 15.17.2-double-5
- 15.17.2-double-6
- 15.17.2-double-7
- 15.17.2-double-8
- 15.17.2-double-9
- 15.17.2-double-10
- 15.17.2-double-11
- 15.17.2-double-12
- 15.17.2-double-13
- 15.17.2-double-14
- 15.17.2-double-15
- 15.17.2-int-1
- 15.17.2-int-2
- 15.17.2-int-3
- 15.17.2-long-1
- 15.17.2-long-2
- 15.17.2-long-3
- 15.17.3-assoc-1
- 15.17.3-assoc-2
- 15.17.3-float-1
- 15.17.3-float-2
- 15.17.3-float-3
- 15.17.3-float-4
- 15.17.3-float-5
- 15.17.3-float-6
- 15.17.3-float-7
- 15.17.3-float-8
- 15.17.3-float-9
- 15.17.3-float-10
- 15.17.3-float-11
- 15.17.3-float-12
- 15.17.3-float-13
- 15.17.3-float-14
- 15.17.3-double-1
- 15.17.3-double-2
- 15.17.3-double-3
- 15.17.3-double-4
- 15.17.3-double-5
- 15.17.3-double-6
- 15.17.3-double-7
- 15.17.3-double-8
- 15.17.3-double-9
- 15.17.3-double-10
- 15.17.3-double-11
- 15.17.3-double-12
- 15.17.3-double-13
- 15.17.3-double-14
- 15.17.3-int-1
- 15.17.3-int-2
- 15.17.3-int-3
- 15.17.3-int-4
- 15.17.3-long-1
- 15.17.3-long-2
- 15.17.3-long-3
- 15.17.3-long-4
- 15.18-null-1
- 15.18-null-2
- 15.18-boolean-1
- 15.18-boolean-2
- 15.18.1-1
- 15.18.1-2
- 15.18.1-3
- 15.18.1-4
- 15.18.1-5
- 15.18.1-6
- 15.18.1-7
- 15.18.1-float-1
- 15.18.1-float-2
- 15.18.1-float-3
- 15.18.1-float-4
- 15.18.1-float-5
- 15.18.1-float-6
- 15.18.1-float-7
- 15.18.1-float-8
- 15.18.1-float-9
- 15.18.1-float-10
- 15.18.1-float-11
- 15.18.1-float-12
- 15.18.1-double-1
- 15.18.1-double-2
- 15.18.1-double-3
- 15.18.1-double-4
- 15.18.1-double-5
- 15.18.1-double-6
- 15.18.1-double-7
- 15.18.1-double-8
- 15.18.1-double-9
- 15.18.1-double-10
- 15.18.1-double-11
- 15.18.1-double-12
- 15.18.1-double-13
- 15.18.1-boolean-1
- 15.18.1-boolean-2
- 15.18.1-valid-1
- 15.18.1-valid-2
- 15.18.1-valid-3
- 15.18.1-valid-4
- 15.18.1-valid-5
- 15.18.1-valid-6
- 15.18.1-valid-7
- 15.18.1-valid-8
- 15.18.1-valid-9
- 15.18.1-non-const-1
- 15.18.1-non-const-2
- 15.18.1-non-const-3
- 15.18.1-non-const-4
- 15.18.1-non-const-5
- 15.18.1-non-const-6
- 15.18.1-non-const-7
- 15.18.1-non-const-8
- 15.18.1-non-const-9
- 15.18.1-non-const-10
- 15.18.2-commute-1
- 15.18.2-commute-2
- 15.18.2-commute-3
- 15.18.2-commute-4
- 15.18.2-assoc-1
- 15.18.2-assoc-2
- 15.18.2-assoc-3
- 15.18.2-assoc-4
- 15.18.2-int-1
- 15.18.2-float-1
- 15.18.2-float-2
- 15.18.2-float-3
- 15.18.2-float-4
- 15.18.2-float-5
- 15.18.2-float-6
- 15.18.2-float-7
- 15.18.2-float-8
- 15.18.2-float-9
- 15.18.2-float-10
- 15.18.2-float-11
- 15.18.2-float-12
- 15.18.2-float-13
- 15.18.2-float-14
- 15.18.2-float-15
- 15.18.2-float-16
- 15.18.2-double-1
- 15.18.2-double-2
- 15.18.2-double-3
- 15.18.2-double-4
- 15.18.2-double-5
- 15.18.2-double-6
- 15.18.2-double-7
- 15.18.2-double-8
- 15.18.2-double-9
- 15.18.2-double-10
- 15.18.2-double-11
- 15.18.2-double-12
- 15.18.2-double-13
- 15.18.2-double-14
- 15.18.2-double-15
- 15.18.2-double-16
- 15.18.2-mixed-1
- 15.20-2-always-1
- 15.20-2-always-2
- 15.20-2-always-3
- 15.20-2-always-4
- 15.20-2-always-5
- 15.20-2-always-6
- 15.20-2-always-7
- 15.20-2-always-8
- 15.20-2-sometimes-1
- 15.20-2-sometimes-2
- 15.20-2-sometimes-3
- 15.20-2-sometimes-4
- 15.20-2-sometimes-5
- 15.20-2-sometimes-6
- 15.20-2-sometimes-7
- 15.20-2-sometimes-8
- 15.20-2-sometimes-9
- 15.20-2-sometimes-10
- 15.20-2-sometimes-11
- 15.20-2-sometimes-12
- 15.20-2-sometimes-13
- 15.20-2-sometimes-14
- 15.20-2-sometimes-15
- 15.20-2-never-1
- 15.20-2-never-2
- 15.20-2-never-3
- 15.20-2-never-4
- 15.20-2-never-5
- 15.20-2-never-6
- 15.20-2-never-7
- 15.20.2-type-1
- 15.20.2-type-2
- 15.20.2-type-3
- 15.20.2-type-4
- 15.20.2-type-5
- 15.20.2-type-6
- 15.20.2-type-7
- 15.20.2-type-8
- 15.20.2-type-9
- 15.20.2-type-10
- 15.20.2-type-11
- 15.20.2-type-12
- 15.20.2-type-13
- 15.20.2-type-14
- 15.20.2-type-15
- 15.20.2-type-16
- 15.20.2-type-17
- 15.20.2-type-18
- 15.21-assoc-1
- 15.21-assoc-2
- 15.21-assoc-3
- 15.21-assoc-4
- 15.21-assoc-5
- 15.21-assoc-6
- 15.21-assoc-7
- 15.21-assoc-8
- 15.21-assoc-9
- 15.21-precedence-1
- 15.21-precedence-2
- 15.21-precedence-3
- 15.21-equal-1
- 15.21-equal-2
- 15.21-equal-3
- 15.21-type-1
- 15.21-type-2
- 15.21-type-3
- 15.21-type-4
- 15.21-type-5
- 15.21-type-6
- 15.21-type-7
- 15.21-type-8
- 15.21-type-9
- 15.21-type-10
- 15.21-type-11
- 15.21-type-12
- 15.21-type-13
- 15.21-type-14
- 15.21-type-15
- 15.21-type-16
- 15.21-type-17
- 15.21-type-18
- 15.21-type-19
- 15.21-type-20
- 15.21-type-21
- 15.21-type-22
- 15.21-type-23
- 15.21-type-24
- 15.21-type-25
- 15.21-type-26
- 15.21-type-27
- 15.21-type-28
- 15.21-type-29
- 15.21-type-30
- 15.21-type-31
- 15.21-type-32
- 15.21-type-33
- 15.21-type-34
- 15.21-type-35
- 15.21-type-36
- 15.21-type-37
- 15.21-type-38
- 15.21-type-39
- 15.21-type-40
- 15.21-type-41
- 15.21.1-promote-1
- 15.21.1-promote-2
- 15.21.1-promote-3
- 15.21.1-floating-1
- 15.21.1-floating-2
- 15.21.1-floating-3
- 15.21.1-floating-4
- 15.21.1-floating-5
- 15.21.1-floating-6
- 15.21.1-floating-7
- 15.21.1-floating-8
- 15.21.1-floating-9
- 15.21.3-type-1
- 15.21.3-type-2
- 15.21.3-type-3
- 15.21.3-type-4
- 15.21.3-type-5
- 15.21.3-type-6
- 15.21.3-type-7
- 15.21.3-type-8
- 15.21.3-type-9
- 15.21.3-type-10
- 15.21.3-type-11
- 15.23-optimize-1
- 15.23-optimize-2
- 15.23-optimize-3
- 15.23-optimize-4
- 15.24-optimize-1
- 15.24-optimize-2
- 15.24-optimize-3
- 15.24-optimize-4
- 15.25-basic-1
- 15.25-basic-2
- 15.25-syntax-1
- 15.25-syntax-2
- 15.25-syntax-3
- 15.25-syntax-4
- 15.25-syntax-5
- 15.25-not-boolean-1
- 15.25-not-boolean-2
- 15.25-not-boolean-3
- 15.25-not-boolean-4
- 15.25-not-boolean-5
- 15.25-not-boolean-6
- 15.25-not-boolean-7
- 15.25-not-boolean-8
- 15.25-not-boolean-9
- 15.25-not-boolean-10
- 15.25-not-boolean-11
- 15.25-operand-type-1
- 15.25-operand-type-2
- 15.25-operand-type-3
- 15.25-operand-type-4
- 15.25-operand-type-void-1
- 15.25-operand-type-void-2
- 15.25-operand-type-void-3
- 15.25-operand-type-void-4
- 15.25-operand-type-void-5
- 15.25-byte-operand-type-mismatch-1
- 15.25-byte-operand-type-mismatch-2
- 15.25-byte-operand-type-mismatch-3
- 15.25-byte-operand-type-mismatch-4
- 15.25-byte-operand-type-mismatch-5
- 15.25-byte-operand-type-mismatch-6
- 15.25-byte-operand-type-mismatch-7
- 15.25-byte-operand-type-mismatch-8
- 15.25-byte-operand-type-mismatch-9
- 15.25-byte-operand-type-mismatch-10
- 15.25-byte-operand-type-mismatch-11
- 15.25-byte-operand-type-mismatch-12
- 15.25-short-operand-type-mismatch-1
- 15.25-short-operand-type-mismatch-2
- 15.25-short-operand-type-mismatch-3
- 15.25-short-operand-type-mismatch-4
- 15.25-short-operand-type-mismatch-5
- 15.25-short-operand-type-mismatch-6
- 15.25-short-operand-type-mismatch-7
- 15.25-short-operand-type-mismatch-8
- 15.25-short-operand-type-mismatch-9
- 15.25-short-operand-type-mismatch-10
- 15.25-short-operand-type-mismatch-11
- 15.25-short-operand-type-mismatch-12
- 15.25-char-operand-type-mismatch-1
- 15.25-char-operand-type-mismatch-2
- 15.25-char-operand-type-mismatch-3
- 15.25-char-operand-type-mismatch-4
- 15.25-char-operand-type-mismatch-5
- 15.25-char-operand-type-mismatch-6
- 15.25-char-operand-type-mismatch-7
- 15.25-char-operand-type-mismatch-8
- 15.25-char-operand-type-mismatch-9
- 15.25-char-operand-type-mismatch-10
- 15.25-char-operand-type-mismatch-11
- 15.25-char-operand-type-mismatch-12
- 15.25-operand-type-mismatch-1
- 15.25-operand-type-mismatch-2
- 15.25-operand-type-mismatch-3
- 15.25-operand-type-mismatch-4
- 15.25-operand-type-mismatch-5
- 15.25-operand-type-mismatch-6
- 15.25-operand-type-mismatch-7
- 15.25-operand-type-mismatch-8
- 15.25-operand-type-mismatch-9
- 15.25-operand-type-mismatch-10
- 15.25-operand-type-mismatch-11
- 15.25-error-1
- 15.26.2-string-1
- 15.26.2-string-2
- 15.26.2-string-3
- 15.26.2-string-4
- 15.26.2-string-5
- 15.26.2-string-6
- 15.26.2-mult-1
- 15.26.2-mult-2
- 15.26.2-mult-3
- 15.26.2-mult-4
- 15.26.2-mult-5
- 15.26.2-mult-6
- 15.26.2-mult-7
- 15.26.2-mult-8
- 15.26.2-mult-9
- 15.26.2-mult-10
- 15.26.2-mult-11
- 15.26.2-mult-12
- 15.26.2-mult-13
- 15.26.2-mult-14
- 15.26.2-div-1
- 15.26.2-div-2
- 15.26.2-div-3
- 15.26.2-div-4
- 15.26.2-div-5
- 15.26.2-div-6
- 15.26.2-div-7
- 15.26.2-div-8
- 15.26.2-div-9
- 15.26.2-div-10
- 15.26.2-div-11
- 15.26.2-div-12
- 15.26.2-div-13
- 15.26.2-div-14
- 15.26.2-div-zero-1
- 15.26.2-div-zero-2
- 15.26.2-div-zero-3
- 15.26.2-div-zero-4
- 15.26.2-div-zero-5
- 15.26.2-mod-1
- 15.26.2-mod-2
- 15.26.2-mod-3
- 15.26.2-mod-4
- 15.26.2-mod-5
- 15.26.2-mod-6
- 15.26.2-mod-7
- 15.26.2-mod-8
- 15.26.2-mod-9
- 15.26.2-mod-10
- 15.26.2-mod-11
- 15.26.2-mod-12
- 15.26.2-mod-13
- 15.26.2-mod-14
- 15.26.2-mod-zero-1
- 15.26.2-mod-zero-2
- 15.26.2-mod-zero-3
- 15.26.2-mod-zero-4
- 15.26.2-mod-zero-5
- 15.26.2-add-1
- 15.26.2-add-2
- 15.26.2-add-3
- 15.26.2-add-4
- 15.26.2-add-5
- 15.26.2-add-6
- 15.26.2-add-7
- 15.26.2-add-8
- 15.26.2-add-9
- 15.26.2-add-10
- 15.26.2-add-11
- 15.26.2-add-12
- 15.26.2-add-13
- 15.26.2-add-14
- 15.26.2-sub-1
- 15.26.2-sub-2
- 15.26.2-sub-3
- 15.26.2-sub-4
- 15.26.2-sub-5
- 15.26.2-sub-6
- 15.26.2-sub-7
- 15.26.2-sub-8
- 15.26.2-sub-9
- 15.26.2-sub-10
- 15.26.2-sub-11
- 15.26.2-sub-12
- 15.26.2-sub-13
- 15.26.2-sub-14
- 15.26.2-left-shift-1
- 15.26.2-left-shift-2
- 15.26.2-left-shift-3
- 15.26.2-left-shift-4
- 15.26.2-left-shift-5
- 15.26.2-left-shift-6
- 15.26.2-left-shift-7
- 15.26.2-left-shift-8
- 15.26.2-left-shift-9
- 15.26.2-left-shift-10
- 15.26.2-left-shift-11
- 15.26.2-left-shift-12
- 15.26.2-left-shift-13
- 15.26.2-left-shift-14
- 15.26.2-left-shift-15
- 15.26.2-left-shift-16
- 15.26.2-left-shift-17
- 15.26.2-left-shift-18
- 15.26.2-signed-right-shift-1
- 15.26.2-signed-right-shift-2
- 15.26.2-signed-right-shift-3
- 15.26.2-signed-right-shift-4
- 15.26.2-signed-right-shift-5
- 15.26.2-signed-right-shift-6
- 15.26.2-signed-right-shift-7
- 15.26.2-signed-right-shift-8
- 15.26.2-signed-right-shift-9
- 15.26.2-signed-right-shift-10
- 15.26.2-signed-right-shift-11
- 15.26.2-signed-right-shift-12
- 15.26.2-signed-right-shift-13
- 15.26.2-signed-right-shift-14
- 15.26.2-signed-right-shift-15
- 15.26.2-signed-right-shift-16
- 15.26.2-signed-right-shift-17
- 15.26.2-signed-right-shift-18
- 15.26.2-unsigned-right-shift-1
- 15.26.2-unsigned-right-shift-2
- 15.26.2-unsigned-right-shift-3
- 15.26.2-unsigned-right-shift-4
- 15.26.2-unsigned-right-shift-5
- 15.26.2-unsigned-right-shift-6
- 15.26.2-unsigned-right-shift-7
- 15.26.2-unsigned-right-shift-8
- 15.26.2-unsigned-right-shift-9
- 15.26.2-unsigned-right-shift-10
- 15.26.2-unsigned-right-shift-11
- 15.26.2-unsigned-right-shift-12
- 15.26.2-unsigned-right-shift-13
- 15.26.2-unsigned-right-shift-14
- 15.26.2-unsigned-right-shift-15
- 15.26.2-unsigned-right-shift-16
- 15.26.2-unsigned-right-shift-17
- 15.26.2-unsigned-right-shift-18
- 15.26.2-and-1
- 15.26.2-and-2
- 15.26.2-and-3
- 15.26.2-and-4
- 15.26.2-and-5
- 15.26.2-and-6
- 15.26.2-and-7
- 15.26.2-and-8
- 15.26.2-and-9
- 15.26.2-and-10
- 15.26.2-and-11
- 15.26.2-and-12
- 15.26.2-and-13
- 15.26.2-and-14
- 15.26.2-and-15
- 15.26.2-and-16
- 15.26.2-and-17
- 15.26.2-and-18
- 15.26.2-xor-1
- 15.26.2-xor-2
- 15.26.2-xor-3
- 15.26.2-xor-4
- 15.26.2-xor-5
- 15.26.2-xor-6
- 15.26.2-xor-7
- 15.26.2-xor-8
- 15.26.2-xor-9
- 15.26.2-xor-10
- 15.26.2-xor-11
- 15.26.2-xor-12
- 15.26.2-xor-13
- 15.26.2-xor-14
- 15.26.2-xor-15
- 15.26.2-xor-16
- 15.26.2-xor-17
- 15.26.2-xor-18
- 15.26.2-or-1
- 15.26.2-or-2
- 15.26.2-or-3
- 15.26.2-or-4
- 15.26.2-or-5
- 15.26.2-or-6
- 15.26.2-or-7
- 15.26.2-or-8
- 15.26.2-or-9
- 15.26.2-or-10
- 15.26.2-or-11
- 15.26.2-or-12
- 15.26.2-or-13
- 15.26.2-or-14
- 15.26.2-or-15
- 15.26.2-or-16
- 15.26.2-or-17
- 15.26.2-or-18
- 15.26.2-variable-1
- 15.26.2-variable-2
- 15.26.2-variable-3
- 15.26.2-variable-4
- 15.26.2-variable-5
- 15.26.2-variable-6
- 15.26.2-variable-7
- 15.26.2-variable-8
- 15.26.2-variable-9
- 15.26.2-variable-10
- 15.26.2-variable-11
- 15.26.2-variable-12
- 15.26.2-variable-13
- 15.26.2-variable-14
- 15.26.2-variable-15
- 15.26.2-variable-16
- 15.26.2-variable-17
- 15.26.2-variable-18
- 15.26.2-variable-19
- 15.26.2-variable-20
- 15.26.2-variable-21
- 15.26.2-variable-22
- 15.26.2-variable-23
- 15.26.2-variable-24
- 15.26.2-variable-25
- 15.26.2-variable-26
- 15.26.2-variable-27
- 15.26.2-variable-28
- 15.26.2-variable-29
- 15.26.2-associative-1
- 15.28-primitive-1
- 15.28-primitive-2
- 15.28-primitive-3
- 15.28-primitive-4
- 15.28-primitive-5
- 15.28-primitive-6
- 15.28-primitive-7
- 15.28-primitive-8
- 15.28-primitive-9
- 15.28-primitive-10
- 15.28-primitive-11
- 15.28-primitive-12
- 15.28-primitive-13
- 15.28-primitive-14
- 15.28-primitive-15
- 15.28-primitive-16
- 15.28-primitive-17
- 15.28-simple-name-1
- 15.28-simple-name-2
- 15.28-simple-name-3
- 15.28-simple-name-4
- 15.28-simple-name-5
- 15.28-simple-name-6
- 15.28-simple-name-7
- 15.28-simple-name-8
- 15.28-simple-name-9
- 15.28-nonconst-simple-name-1
- 15.28-nonconst-simple-name-2
- 15.28-nonconst-simple-name-3
- 15.28-nonconst-simple-name-4
- 15.28-nonconst-simple-name-5
- 15.28-nonconst-simple-name-6
- 15.28-nonconst-simple-name-7
- 15.28-uninitialized-simple-name-1
- 15.28-uninitialized-simple-name-2
- 15.28-uninitialized-simple-name-3
- 15.28-uninitialized-simple-name-4
- 15.28-cast-simple-name-1
- 15.28-cast-simple-name-2
- 15.28-cast-simple-name-3
- 15.28-qualified-name-1
- 15.28-qualified-name-2
- 15.28-qualified-name-3
- 15.28-qualified-name-4
- 15.28-qualified-name-5
- 15.28-qualified-name-6
- 15.28-qualified-name-7
- 15.28-qualified-name-8
- 15.28-qualified-name-9
- 15.28-qualified-name-10
- 15.28-string-1
- 15.28-string-2
- 15.28-string-3
- 15.28-string-4
- 15.28-string-5
- 15.28-string-6
- 15.28-string-7
- 15.28-string-8
- 15.28-string-9
- 15.28-string-10
- 15.28-string-11
- 15.28-string-12
- 15.28-string-13
- 15.28-string-14
- 15.28-string-15
- 15.28-string-16
- 15.28-string-17
- 15.28-string-18
- 15.28-string-19
- 15.28-simple-namestr-1
- 15.28-simple-namestr-2
- 15.28-simple-namestr-3
- 15.28-simple-namestr-4
- 15.28-simple-namestr-5
- 15.28-nonconst-simple-namestr-1
- 15.28-nonconst-simple-namestr-2
- 15.28-nonconst-simple-namestr-3
- 15.28-qualified-namestr-1
- 15.28-qualified-namestr-2
- 15.28-qualified-namestr-3
- 15.28-qualified-namestr-4
- 15.28-qualified-namestr-5
- 15.28-qualified-namestr-6
- 15.28-qualified-namestr-7
- 15.28-qualified-namestr-8
- 15.28-qualified-namestr-9
- 15.28-qualified-namestr-10
- 15.28-notstring-1
- 15.28-notstring-2
- 15.28-notstring-3
- 15.28-notstring-4
- 15.28-null-1
- 15.28-null-2
- 15.28-null-3
- 15.28-null-4
- 15.28-null-5
- 15.28-null-6
- 15.28-null-7
- 15.28-example-1
- 15.28-example-2
- 15.28-instanceof-1
- 15.28-instanceof-2
- 15.28-instanceof-3
- 15.28-instanceof-4
- 15.28-instanceof-5
- 15.28-div0-1
- 15.28-div0-2
- 15.28-div0-3
- 15.28-paren-1
- 16-static-1
- 16-static-2
- 16-static-3
- 16-instance-1
- 16-instance-2
- 16-instance-3
- 16-instance-4
- 16-instance-5
- 16-instance-6
- 16-instance-7
- 16.1.2-definite-assignment-fail-1
- 16.1.2-definite-assignment-fail-2
- 16.1.2-definite-assignment-fail-3
- 16.1.2-definite-assignment-fail-4
- 16.1.2-definite-assignment-fail-5
- 16.1.2-definite-assignment-fail-6
- 16.1.2-definite-assignment-fail-7
- 16.1.2-definite-assignment-pass-1
- 16.1.2-definite-assignment-pass-2
- 16.1.2-definite-assignment-pass-3
- 16.1.2-definite-assignment-pass-4
- 16.1.2-definite-assignment-pass-5
- 16.1.2-definite-assignment-pass-6
- 16.1.2-definite-unassignment-fail-1
- 16.1.2-definite-unassignment-fail-2
- 16.1.2-definite-unassignment-fail-3
- 16.1.2-definite-unassignment-fail-4
- 16.1.2-definite-unassignment-fail-5
- 16.1.2-definite-unassignment-fail-6
- 16.1.2-definite-unassignment-fail-7
- 16.1.2-definite-unassignment-pass-1
- 16.1.2-definite-unassignment-pass-2
- 16.1.2-definite-unassignment-pass-3
- 16.1.2-definite-unassignment-pass-4
- 16.1.2-definite-unassignment-pass-5
- 16.1.3-definite-assignment-fail-1
- 16.1.3-definite-assignment-fail-2
- 16.1.3-definite-assignment-fail-3
- 16.1.3-definite-assignment-fail-4
- 16.1.3-definite-assignment-fail-5
- 16.1.3-definite-assignment-fail-6
- 16.1.3-definite-assignment-fail-7
- 16.1.3-definite-assignment-pass-1
- 16.1.3-definite-assignment-pass-2
- 16.1.3-definite-assignment-pass-3
- 16.1.3-definite-assignment-pass-4
- 16.1.3-definite-assignment-pass-5
- 16.1.3-definite-assignment-pass-6
- 16.1.3-definite-unassignment-fail-1
- 16.1.3-definite-unassignment-fail-2
- 16.1.3-definite-unassignment-fail-3
- 16.1.3-definite-unassignment-fail-4
- 16.1.3-definite-unassignment-fail-5
- 16.1.3-definite-unassignment-fail-6
- 16.1.3-definite-unassignment-fail-7
- 16.1.3-definite-unassignment-pass-1
- 16.1.3-definite-unassignment-pass-2
- 16.1.3-definite-unassignment-pass-3
- 16.1.3-definite-unassignment-pass-4
- 16.1.3-definite-unassignment-pass-5
- 16.1.5-definite-assignment-fail-1
- 16.1.5-definite-assignment-fail-2
- 16.1.5-definite-assignment-fail-3
- 16.1.5-definite-assignment-fail-4
- 16.1.5-definite-assignment-fail-5
- 16.1.5-definite-assignment-fail-6
- 16.1.5-definite-assignment-fail-7
- 16.1.5-definite-assignment-fail-8
- 16.1.5-definite-assignment-fail-9
- 16.1.5-definite-assignment-fail-10
- 16.1.5-definite-assignment-fail-11
- 16.1.5-definite-assignment-fail-12
- 16.1.5-definite-assignment-fail-13
- 16.1.5-definite-assignment-fail-14
- 16.1.5-definite-assignment-pass-1
- 16.1.5-definite-assignment-pass-2
- 16.1.5-definite-assignment-pass-3
- 16.1.5-definite-assignment-pass-4
- 16.1.5-definite-assignment-pass-5
- 16.1.5-definite-assignment-pass-6
- 16.1.5-definite-assignment-pass-7
- 16.1.5-definite-assignment-pass-8
- 16.1.5-definite-assignment-pass-9
- 16.1.5-definite-assignment-pass-10
- 16.1.5-definite-assignment-pass-11
- 16.1.5-definite-assignment-pass-12
- 16.1.5-definite-assignment-pass-13
- 16.1.5-definite-assignment-pass-14
- 16.1.5-definite-assignment-pass-15
- 16.1.5-definite-assignment-pass-16
- 16.1.5-definite-assignment-pass-17
- 16.1.5-definite-assignment-pass-18
- 16.1.5-definite-assignment-pass-19
- 16.1.5-definite-assignment-pass-20
- 16.1.5-definite-assignment-pass-21
- 16.1.5-definite-assignment-pass-22
- 16.1.5-definite-assignment-pass-23
- 16.1.5-definite-assignment-pass-24
- 16.1.5-definite-assignment-pass-25
- 16.1.5-definite-assignment-pass-26
- 16.1.5-definite-assignment-pass-27
- 16.1.5-definite-assignment-pass-28
- 16.1.5-definite-assignment-pass-29
- 16.1.5-definite-assignment-pass-30
- 16.1.5-definite-assignment-pass-31
- 16.1.5-definite-assignment-pass-32
- 16.1.5-definite-assignment-pass-33
- 16.1.5-definite-assignment-pass-34
- 16.1.5-definite-assignment-pass-35
- 16.1.5-definite-assignment-pass-36
- 16.1.5-definite-unassignment-fail-1
- 16.1.5-definite-unassignment-fail-2
- 16.1.5-definite-unassignment-fail-3
- 16.1.5-definite-unassignment-fail-4
- 16.1.5-definite-unassignment-fail-5
- 16.1.5-definite-unassignment-fail-6
- 16.1.5-definite-unassignment-fail-7
- 16.1.5-definite-unassignment-pass-1
- 16.1.5-definite-unassignment-pass-2
- 16.1.5-definite-unassignment-pass-3
- 16.1.5-definite-unassignment-pass-4
- 16.1.5-definite-unassignment-pass-5
- 16.1.5-definite-unassignment-pass-6
- 16.1.5-definite-unassignment-pass-7
- 16.1.5-not-assignable-1
- 16.1.5-not-assignable-2
- 16.1.5-not-assignable-3
- 16.1.5-not-assignable-4
- 16.1.5-not-assignable-5
- 16.1.5-not-assignable-6
- 16.1.5-not-assignable-7
- 16.1.5-not-assignable-8
- 16.1.5-not-assignable-9
- 16.1.5-not-assignable-10
- 16.1.5-not-assignable-11
- 16.1.5-not-assignable-12
- 16.1.7-compound-assign-1
- 16.1.7-compound-assign-2
- 16.1.7-compound-assign-3
- 16.1.7-compound-assign-4
- 16.1.7-simple-definite-assignment-fail-1
- 16.1.7-simple-definite-assignment-fail-2
- 16.1.7-simple-definite-assignment-fail-3
- 16.1.7-simple-definite-assignment-fail-4
- 16.1.7-simple-definite-assignment-fail-5
- 16.1.7-simple-definite-assignment-fail-6
- 16.1.7-simple-definite-assignment-fail-7
- 16.1.7-simple-definite-assignment-fail-8
- 16.1.7-simple-definite-assignment-fail-9
- 16.1.7-compound-definite-assignment-fail-1
- 16.1.7-compound-definite-assignment-fail-2
- 16.1.7-compound-definite-assignment-fail-3
- 16.1.7-compound-definite-assignment-fail-4
- 16.1.7-compound-definite-assignment-fail-5
- 16.1.7-compound-definite-assignment-fail-6
- 16.1.7-compound-definite-assignment-fail-7
- 16.1.7-compound-definite-assignment-fail-8
- 16.1.7-compound-definite-assignment-fail-9
- 16.1.7-compound-definite-assignment-fail-10
- 16.1.7-compound-definite-assignment-fail-11
- 16.1.7-simple-definite-assignment-pass-1
- 16.1.7-simple-definite-assignment-pass-2
- 16.1.7-simple-definite-assignment-pass-3
- 16.1.7-simple-definite-assignment-pass-4
- 16.1.7-simple-definite-assignment-pass-5
- 16.1.7-simple-definite-assignment-pass-6
- 16.1.7-simple-definite-assignment-pass-7
- 16.1.7-simple-definite-assignment-pass-8
- 16.1.7-simple-definite-assignment-pass-9
- 16.1.7-compound-definite-assignment-pass-1
- 16.1.7-compound-definite-assignment-pass-2
- 16.1.7-compound-definite-assignment-pass-3
- 16.1.7-compound-definite-assignment-pass-4
- 16.1.7-compound-definite-assignment-pass-5
- 16.1.7-compound-definite-assignment-pass-6
- 16.1.7-compound-definite-assignment-pass-7
- 16.1.7-compound-definite-assignment-pass-8
- 16.1.7-compound-definite-assignment-pass-9
- 16.1.7-compound-definite-assignment-pass-10
- 16.1.7-simple-definite-unassignment-fail-1
- 16.1.7-simple-definite-unassignment-fail-2
- 16.1.7-simple-definite-unassignment-fail-3
- 16.1.7-simple-definite-unassignment-fail-4
- 16.1.7-simple-definite-unassignment-fail-5
- 16.1.7-simple-definite-unassignment-fail-6
- 16.1.7-simple-definite-unassignment-fail-7
- 16.1.7-simple-definite-unassignment-fail-8
- 16.1.7-simple-definite-unassignment-fail-9
- 16.1.7-simple-definite-unassignment-fail-10
- 16.1.7-compound-definite-unassignment-fail-1
- 16.1.7-compound-definite-unassignment-fail-2
- 16.1.7-compound-definite-unassignment-fail-3
- 16.1.7-compound-definite-unassignment-fail-4
- 16.1.7-compound-definite-unassignment-fail-5
- 16.1.7-compound-definite-unassignment-fail-6
- 16.1.7-compound-definite-unassignment-fail-7
- 16.1.7-compound-definite-unassignment-fail-8
- 16.1.7-compound-definite-unassignment-fail-9
- 16.1.7-compound-definite-unassignment-fail-10
- 16.1.7-simple-definite-unassignment-pass-1
- 16.1.7-simple-definite-unassignment-pass-2
- 16.1.7-simple-definite-unassignment-pass-3
- 16.1.7-simple-definite-unassignment-pass-4
- 16.1.7-simple-definite-unassignment-pass-5
- 16.1.7-simple-definite-unassignment-pass-6
- 16.1.7-simple-definite-unassignment-pass-7
- 16.1.7-simple-definite-unassignment-pass-8
- 16.1.7-compound-definite-unassignment-pass-1
- 16.1.7-compound-definite-unassignment-pass-2
- 16.1.7-compound-definite-unassignment-pass-3
- 16.1.7-compound-definite-unassignment-pass-4
- 16.1.7-compound-definite-unassignment-pass-5
- 16.1.7-compound-definite-unassignment-pass-6
- 16.1.7-compound-definite-unassignment-pass-7
- 16.1.7-compound-definite-unassignment-pass-8
- 16.1.8-definite-unassign-fail-1
- 16.1.8-definite-unassign-fail-2
- 16.1.8-definite-unassign-fail-3
- 16.1.8-definite-unassign-fail-4
- 16.1.8-definite-unassign-fail-5
- 16.1.8-definite-unassign-fail-6
- 16.1.8-definite-unassign-fail-7
- 16.1.8-definite-unassign-fail-8
- 16.1.8-definite-unassign-fail-9
- 16.1.8-definite-unassign-fail-10
- 16.1.8-definite-unassign-fail-11
- 16.1.8-definite-unassign-fail-12
- 16.1.8-definite-assign-pass-1
- 16.1.8-definite-assign-pass-2
- 16.1.8-definite-assign-pass-3
- 16.1.8-definite-assign-pass-4
- 16.1.8-definite-assign-pass-5
- 16.1.8-definite-assign-pass-6
- 16.1.8-definite-assign-pass-7
- 16.1.8-definite-assign-pass-8
- 16.1.8-definite-assign-pass-9
- 16.1.8-definite-assign-pass-10
- 16.1.8-definite-assign-pass-11
- 16.1.8-definite-assign-pass-12
- 16.1.8-definite-assign-fail-1
- 16.1.8-definite-assign-fail-2
- 16.1.8-definite-assign-fail-3
- 16.1.8-definite-assign-fail-4
- 16.1.8-definite-assign-fail-5
- 16.1.8-definite-assign-fail-6
- 16.1.8-definite-assign-fail-7
- 16.1.8-definite-assign-fail-8
- 16.1.8-definite-assign-fail-9
- 16.1.8-definite-assign-fail-10
- 16.1.8-definite-assign-fail-11
- 16.1.8-definite-assign-fail-12
- 16.2.3-switch-1
- 16.2.5-definite-unassign-pass-1
- 16.2.5-definite-unassign-pass-2
- 16.2.5-definite-unassign-pass-3
- 16.2.5-definite-unassign-pass-4
- 16.2.5-definite-unassign-fail-1
- 16.2.5-definite-assign-pass-1
- 16.2.5-definite-assign-pass-2
- 16.2.5-definite-assign-pass-3
- 16.2.5-definite-assign-pass-4
- 16.2.5-definite-assign-fail-1
- 16.2.5-definite-assign-fail-2
- 16.2.7-final-1
- 16.2.7-final-2
- 16.2.7-final-3
- 16.2.7-final-4
- 16.2.7-final-5
- 16.2.7-final-6
- 16.2.7-scope-1
- 16.2.7-scope-2
- 16.2.8-final-1
- 16.2.8-final-2
- 16.2.8-final-3
- 16.2.8-final-4
- 16.2.8-final-5
- 16.2.8-final-6
- 16.2.8-unassigned-1
- 16.2.8-unassigned-2
- 16.2.8-unassigned-3
- 16.2.8-unassigned-4
- 16.2.8-unassigned-5
- 16.2.8-unassigned-6
- 16.2.8-unassigned-7
- 16.2.8-unassigned-8
- 16.2.9-definite-unassign-pass-1
- 16.2.9-definite-unassign-pass-2
- 16.2.9-definite-unassign-pass-3
- 16.2.9-definite-unassign-pass-4
- 16.2.9-definite-unassign-pass-5
- 16.2.9-definite-unassign-pass-6
- 16.2.9-definite-unassign-pass-7
- 16.2.9-definite-unassign-pass-8
- 16.2.9-definite-unassign-pass-9
- 16.2.9-definite-unassign-pass-10
- 16.2.9-definite-unassign-fail-1
- 16.2.9-definite-unassign-fail-2
- 16.2.9-definite-unassign-fail-3
- 16.2.9-definite-unassign-fail-4
- 16.2.9-definite-unassign-fail-5
- 16.2.9-definite-unassign-fail-6
- 16.2.9-definite-unassign-fail-7
- 16.2.9-definite-unassign-fail-8
- 16.2.9-definite-assign-pass-1
- 16.2.9-definite-assign-pass-2
- 16.2.9-definite-assign-pass-3
- 16.2.9-definite-assign-fail-1
- 16.2.9-definite-assign-fail-2
- 16.2.9-definite-assign-fail-3
- 16.2.10-definite-unassign-pass-1
- 16.2.10-definite-unassign-pass-2
- 16.2.10-definite-unassign-pass-3
- 16.2.10-definite-unassign-pass-4
- 16.2.10-definite-unassign-pass-5
- 16.2.10-definite-unassign-pass-6
- 16.2.10-definite-unassign-pass-7
- 16.2.10-definite-unassign-pass-8
- 16.2.10-definite-unassign-pass-9
- 16.2.10-definite-unassign-pass-10
- 16.2.10-definite-unassign-pass-11
- 16.2.10-definite-unassign-fail-1
- 16.2.10-definite-unassign-fail-2
- 16.2.10-definite-unassign-fail-3
- 16.2.10-definite-unassign-fail-4
- 16.2.10-definite-unassign-fail-5
- 16.2.10-definite-unassign-fail-6
- 16.2.10-definite-unassign-fail-7
- 16.2.10-definite-unassign-fail-8
- 16.2.10-definite-unassign-fail-9
- 16.2.10-definite-unassign-fail-10
- 16.2.10-definite-unassign-fail-11
- 16.2.10-definite-assign-pass-1
- 16.2.10-definite-assign-pass-2
- 16.2.10-definite-assign-pass-3
- 16.2.10-definite-assign-pass-4
- 16.2.10-definite-assign-pass-5
- 16.2.10-definite-assign-fail-1
- 16.2.10-definite-assign-fail-2
- 16.2.11-definite-unassign-pass-1
- 16.2.11-definite-unassign-pass-2
- 16.2.11-definite-unassign-pass-3
- 16.2.11-definite-unassign-pass-4
- 16.2.11-definite-unassign-pass-5
- 16.2.11-definite-unassign-pass-6
- 16.2.11-definite-unassign-pass-7
- 16.2.11-definite-unassign-pass-8
- 16.2.11-definite-unassign-pass-9
- 16.2.11-definite-unassign-pass-10
- 16.2.11-definite-unassign-pass-11
- 16.2.11-definite-unassign-fail-1
- 16.2.11-definite-unassign-fail-2
- 16.2.11-definite-unassign-fail-3
- 16.2.11-definite-unassign-fail-4
- 16.2.11-definite-unassign-fail-5
- 16.2.11-definite-unassign-fail-6
- 16.2.11-definite-unassign-fail-7
- 16.2.11-definite-unassign-fail-8
- 16.2.11-definite-unassign-fail-9
- 16.2.11-definite-unassign-fail-10
- 16.2.11-definite-unassign-fail-11
- 16.2.11-definite-unassign-fail-12
- 16.2.11-definite-assign-pass-1
- 16.2.11-definite-assign-pass-2
- 16.2.11-definite-assign-pass-3
- 16.2.11-definite-assign-fail-1
- 16.2.11-definite-assign-fail-2
- 16.2.11-definite-assign-fail-3
- 16.2.11-definite-assign-fail-4
- 16.2.14-definite-unassign-fail-1
- 16.2.14-definite-unassign-fail-2
- 16.2.14-definite-unassign-fail-3
- 16.2.14-definite-unassign-fail-4
- 16.2.14-definite-unassign-fail-5
- 16.2.14-definite-unassign-fail-6
- 16.2.14-definite-unassign-fail-7
- 16.2.14-definite-unassign-fail-8
- 16.2.14-definite-unassign-fail-9
- 16.2.14-definite-unassign-fail-10
- 16.2.14-definite-unassign-fail-11
- 16.2.14-definite-unassign-fail-12
- 16.2.14-definite-unassign-fail-13
- 16.2.14-definite-unassign-fail-14
- 16.2.14-definite-unassign-fail-15
- 16.2.14-definite-unassign-fail-16
- 16.5-anonymous-1
- 16.5-anonymous-2
- 16.5-anonymous-3
- 16.8-constructor-1
- 16.8-constructor-2
- 16.8-constructor-3
- 16.8-constructor-4
- 16.8-constructor-5
- 16.8-constructor-6
- 16.8-constructor-7
- 16.8-constructor-8
- 16.8-constructor-9
- 16.8-parameter-1
- 16.8-parameter-2
- 16.8-parameter-3
- 14.19.exception-1
- 14.19.exception-2
- 14.19.exception-3
- 14.19.exception-4
- 14.19.exception-5
- 14.19.exception-6
- 14.19.exception-7
- 14.19.exception-8
- 14.19.exception-9
- 14.19.exception-10
- 14.19.exception-11
- 14.19.exception-12
- 14.19.exception-13
- 14.19.exception-14
- 14.19.exception-15
- 14.19.exception-16
- 14.19.exception-17
- 14.19.exception-18
- 14.19.exception-19
- 14.19.exception-20
- 14.19.exception-21
- 14.19.exception-22
- 14.19.exception-23
- 14.19.exception-24
- 3.10.1-runtime-endianness-1
- 3.10.2-runtime-endianness-1
- 3.10.4-runtime-coalescense-1
- 3.10.5-runtime-1
- 4.10-jvms-runtime-1
- 6.6.1-runtime-privateconstructor-1
- 8.1.2-runtime-1
- 8.3-runtime-1
- 8.4.6-runtime-miranda-1
- 8.4.6.4-multiple-runtime-1
- 8.8.3-runtime-inner-1
- 8.8.3-runtime-inner-2
- 8.8.3-runtime-inner-3
- 8.8.3-runtime-inner-4
- 8.8.5-runtime-inner-1
- 8.8.5-runtime-inner-2
- 8.8.5-runtime-inner-3
- 8.8.5-runtime-inner-4
- 8.8.7-runtime-default-1
- 8.8.7-runtime-default-2
- 8.8.7-runtime-default-3
- 8.8.7-runtime-accessible-default-1
- 12.4.1-runtime-1
- 12.4.1-runtime-2
- 12.4.1-runtime-3
- 12.4.1-runtime-4
- 12.4.2-runtime-1
- 12.5-runtime-1
- 12.5-runtime-2
- 12.5-runtime-3
- 13.1-runtime-constant-1
- 13.1-runtime-constant-2
- 13.1-runtime-constant-3
- 13.1-runtime-field-1
- 14-runtime-jump-1
- 14-runtime-jump-2
- 14.3-1-runtime-1
- 14.3-1-runtime-2
- 14.3.1-runtime-3
- 14.9.1-runtime-1
- 14.9.1-runtime-2
- 14.9.2-runtime-1
- 14.10-runtime-verifier-1
- 14.10-runtime-verifier-2
- 14.10-runtime-fallthrough-1
- 14.10-runtime-fallthrough-2
- 14.10-runtime-break-1
- 14.10-runtime-break-2
- 14.11-runtime-1
- 14.12-runtime-1
- 14.13-runtime-1
- 14.14-runtime-jump-1
- 14.18-runtime-1
- 14.19.1-runtime-1
- 14.19.1-runtime-2
- 14.19.1-runtime-3
- 14.19.2-runtime-try-1
- 14.19.2-runtime-jump-1
- 14.19.2-runtime-2
- 15.8.4-runtime-1
- 15.9-runtime-numcalls-1
- 15.9.4-runtime-creation-1
- 15.9.4-runtime-creation-2
- 15.9.4-runtime-creation-3
- 15.9.4-runtime-creation-4
- 15.9.4-runtime-creation-5
- 15.11.1-runtime-static-1
- 15.11.1-runtime-static-2
- 15.11.1-runtime-static-3
- 15.11.2-runtime-1
- 15.11.2-runtime-2
- 15.12.3-runtime-mode-1
- 15.12.3-runtime-mode-2
- 15.12.3-runtime-mode-3
- 15.12.3-runtime-mode-4
- 15.12.3-runtime-mode-5
- 15.12.3-runtime-mode-6
- 15.12.4.1-runtime-static-1
- 15.12.4.1-runtime-static-2
- 15.12.4.1-runtime-static-3
- 15.12.4.1-runtime-super-1
- 15.12.4.1-runtime-super-2
- 15.13.2-runtime-example-1
- 15.13.2-runtime-example-2
- 15.13.2-runtime-example-3
- 15.13.2-runtime-example-4
- 15.14-runtime-1
- 15.14-runtime-2
- 15.14-runtime-3
- 15.14-runtime-4
- 15.15-runtime-1
- 15.15-runtime-2
- 15.15-runtime-3
- 15.15-runtime-4
- 15.18.1.1-runtime-1
- 15.18.1.1-runtime-2
- 15.18.1.1-runtime-3
- 15.20-2-runtime-1
- 15.20-2-runtime-2
- 15.21.3-runtime-1
- 15.21.3-runtime-2
- 15.25-runtime-1
- 15.25-runtime-2
- 15.25-runtime-3
- 15.25-runtime-4
- 15.25-runtime-5
- 15.25-runtime-6
- 15.25-runtime-7
- 15.25-runtime-8
- 15.26.1-runtime-1
- 15.26.2-runtime-1
- 15.26.2-runtime-2
- 15.28-runtime-constant-1
- 15.28-runtime-constant-2
- 15.28-runtime-constant-3
- 15.28-runtime-constant-4
- 15.28-runtime-constant-5
- 16.5-runtime-1
- 16.5-runtime-2
- 16.5-runtime-3
- 16.5-runtime-4
- 16.5-runtime-5
- non-jls-jsr41.3-runtime-1
- non-jls-jsr41.3-runtime-2
- non-jls-jsr41.2-syntax-1
- non-jls-jsr41.2-syntax-2
- non-jls-jsr41.2-syntax-3
- non-jls-jsr41.2-syntax-4
- non-jls-jsr41.2-syntax-5
- non-jls-jsr41.2-syntax-6
- non-jls-jsr41.2-syntax-7
- non-jls-jsr41.2-syntax-8
- non-jls-jsr41.2-syntax-9
- non-jls-jsr41.2-syntax-10
- non-jls-jsr41.2-syntax-11
- non-jls-jsr41.2-syntax-12
- non-jls-jsr41.2-syntax-13
- non-jls-jsr41.2-syntax-14
- non-jls-jsr41.2-syntax-15
- non-jls-jsr41.2-syntax-16
- non-jls-jsr41.2-syntax-17
- non-jls-jsr41.2-syntax-18
- non-jls-jsr41.2-syntax-19
- non-jls-jsr41.2-syntax-20
- non-jls-jsr41.2-syntax-21
- non-jls-jsr41.2-syntax-22
- non-jls-jsr41.2-nesting-1
- non-jls-jsr41.2-nesting-2
- non-jls-jsr41.2-nesting-3
- non-jls-jsr41.2-nesting-4
- non-jls-jsr41.2-clash-1
- non-jls-jsr41.4-definite-assignment-fail-1
- non-jls-jsr41.4-definite-assignment-fail-2
- non-jls-jsr41.4-definite-assignment-fail-3
- non-jls-jsr41.4-definite-assignment-fail-4
- non-jls-jsr41.4-definite-assignment-fail-5
- non-jls-jsr41.4-definite-assignment-fail-6
- non-jls-jsr41.4-definite-assignment-fail-7
- non-jls-jsr41.4-definite-assignment-fail-8
- non-jls-jsr41.4-definite-assignment-fail-9
- non-jls-jsr41.4-definite-assignment-fail-10
- non-jls-jsr41.4-definite-assignment-fail-11
- non-jls-jsr41.4-definite-assignment-fail-12
- non-jls-jsr41.4-definite-assignment-fail-13
- non-jls-jsr41.4-definite-assignment-pass-1
- non-jls-jsr41.4-definite-assignment-pass-2
- non-jls-jsr41.4-definite-assignment-pass-3
- non-jls-jsr41.4-definite-assignment-pass-4
- non-jls-jsr41.4-definite-assignment-pass-5
- non-jls-jsr41.4-definite-assignment-pass-6
- non-jls-jsr41.4-definite-assignment-pass-7
- non-jls-jsr41.4-definite-assignment-pass-8
- non-jls-jsr41.4-definite-assignment-pass-9
- non-jls-jsr41.4-definite-assignment-pass-10
- non-jls-jsr41.4-definite-assignment-pass-11
- non-jls-jsr41.4-definite-assignment-pass-12
- non-jls-jsr41.4-definite-unassignment-fail-1
- non-jls-jsr41.4-definite-unassignment-fail-2
- non-jls-jsr41.4-definite-unassignment-fail-3
- non-jls-jsr41.4-definite-unassignment-fail-4
- non-jls-jsr41.4-definite-unassignment-fail-5
- non-jls-jsr41.4-definite-unassignment-fail-6
- non-jls-jsr41.4-definite-unassignment-fail-7
- non-jls-jsr41.4-definite-unassignment-fail-8
- non-jls-jsr41.4-definite-unassignment-fail-9
- non-jls-jsr41.4-definite-unassignment-fail-10
- non-jls-jsr41.4-definite-unassignment-fail-11
- non-jls-jsr41.4-definite-unassignment-fail-12
- non-jls-jsr41.4-definite-unassignment-fail-13
- non-jls-jsr41.4-definite-unassignment-fail-14
- non-jls-jsr41.4-definite-unassignment-fail-15
- non-jls-jsr41.4-definite-unassignment-fail-16
- non-jls-jsr41.4-definite-unassignment-fail-17
- non-jls-jsr41.4-definite-unassignment-fail-18
- non-jls-jsr41.4-definite-unassignment-fail-19
- non-jls-jsr41.4-definite-unassignment-fail-20
- non-jls-jsr41.4-definite-unassignment-fail-21
- non-jls-jsr41.4-definite-unassignment-fail-22
- non-jls-jsr41.4-definite-unassignment-fail-23
- non-jls-jsr41.4-definite-unassignment-fail-24
- non-jls-jsr41.4-definite-unassignment-pass-1
- non-jls-jsr41.4-definite-unassignment-pass-2
- non-jls-jsr41.4-definite-unassignment-pass-3
- non-jls-jsr41.4-definite-unassignment-pass-4
- non-jls-jsr41.4-definite-unassignment-pass-5
- non-jls-jsr41.4-definite-unassignment-pass-6
- non-jls-jsr41.4-definite-unassignment-pass-7
- non-jls-jsr41.4-definite-unassignment-pass-8
- non-jls-jsr41.4-definite-unassignment-pass-9
- non-jls-jsr41.4-definite-unassignment-pass-10
- non-jls-jsr41.4-definite-unassignment-try-1
- non-jls-jsr41.4-definite-unassignment-try-2
- non-jls-jsr41.4-definite-unassignment-try-3
- non-jls-jsr41.4-definite-unassignment-try-4
- non-jls-jsr41.4-definite-unassignment-try-5
- non-jls-jsr41.4-definite-unassignment-try-6
- non-jls-jsr41.4-definite-unassignment-try-7
- non-jls-jsr41.4-definite-unassignment-try-8
- non-jls-jsr41.4-definite-unassignment-try-9
- non-jls-jsr41.4-definite-unassignment-try-10
- non-jls-jsr41.4-definite-unassignment-try-11
- non-jls-jsr41.4-definite-unassignment-try-12
- non-jls-jsr41.4-loop-1
- non-jls-jsr41.4-loop-2
- non-jls-jsr41.4-loop-3
- non-jls-jsr41.4-loop-4
- non-jls-jsr41.4-loop-5
- non-jls-jsr41.4-loop-6
- non-jls-jsr41.4-loop-7
- non-jls-jsr41.4-loop-8
- non-jls-jsr41.4-loop-9
- non-jls-jsr41.4-loop-10
- non-jls-jsr41.4-loop-11
- non-jls-jsr41.4-loop-12
- non-jls-jsr41.4-loop-13
- non-jls-jsr41.4-loop-14
- non-jls-jsr41.4-loop-15
- non-jls-jsr41.4-loop-16
- non-jls-jsr41.4-loop-17
- non-jls-jsr41.4-loop-18
- non-jls-jsr41.4-reachability-1
- non-jls-jsr41.4-reachability-2
- non-jls-jsr41.4-reachability-3
- non-jls-jsr41.4-reachability-4
- non-jls-jsr41.4-reachability-5
- non-jls-argument-expansion-1
- non-jls-argument-expansion-2
- non-jls-argument-expansion-3
- non-jls-argument-expansion-4
- non-jls-argument-expansion-5
- non-jls-argument-expansion-6
- non-jls-argument-expansion-7
- non-jls-argument-expansion-8
- non-jls-argument-expansion-9
- non-jls-argument-expansion-10
- non-jls-argument-expansion-11
- non-jls-argument-expansion-12
- non-jls-argument-expansion-13
- non-jls-argument-expansion-error-1
- non-jls-argument-expansion-error-2
- non-jls-argument-expansion-error-3
- non-jls-argument-expansion-tokens-1
- non-jls-argument-expansion-tokens-2
- non-jls-argument-expansion-tokens-3
- non-jls-argument-expansion-tokens-4
- non-jls-argument-expansion-tokens-5
- non-jls-argument-expansion-tokens-6
- non-jls-encoding-1
- non-jls-encoding-2
- non-jls-encoding-3
- non-jls-encoding-4
- non-jls-encoding-5
- non-jls-encoding-6
- non-jls-invalid-encoding-1
- non-jls-random-crashers-1
- non-jls-zip-1
- non-jls-zip-2
- non-jls-zip-3
- non-jls-zip-4
- gcj-PR198
- 3.1-jikes-comments-non-ascii-1
- 3.1-jikes-identifier-non-ascii-1
- 3.1-jikes-character-literal-non-ascii-1
- 3.1-jikes-string-literal-non-ascii-1
- 3.1-jikes-non-ascii-1
- 3.10.4-jikes-non-ascii-1
- 3.10.4-jikes-non-ascii-2
- 7.5.2-jikes-package-not-found-1
- 8.3.2-jikes-message-1
- 8.4.5-jikes-1
- 8.8.5.1-jikes-before-block-statements-1
- 8.8.5.1-jikes-before-block-statements-2
- 14.7-jikes-message-1
- 14.19-jikes-message-1
- 14.20-jikes-message-1
- 14.20-jikes-message-2
- 14.20-jikes-message-3
- jikes-1
- jikes-3
- 4.7.10-jvms-class-1
- 4.7.10-jvms-class-2
- 4.7.10-jvms-class-3
- 4.7.10-jvms-class-4
- 4.7.10-jvms-class-5
- 4.7.10-jvms-class-6
- 4.7.10-jvms-class-7
- 4.7.10-jvms-class-8
- 4.7.10-jvms-class-9
- 4.7.10-jvms-class-10
- 4.7.10-jvms-class-11
- 4.7.10-jvms-class-12
- 4.7.10-jvms-class-13
- 4.7.10-jvms-class-14
- 4.7.10-jvms-class-15
- 4.7.10-jvms-class-16
- 4.7.10-jvms-class-17
- 4.7.10-jvms-class-18
- 4.7.10-jvms-class-19
- 4.7.10-jvms-method-1
- 4.7.10-jvms-method-2
- 4.7.10-jvms-method-3
- 4.7.10-jvms-method-4
- 4.7.10-jvms-method-5
- 4.7.10-jvms-method-6
- 4.7.10-jvms-method-7
- 4.7.10-jvms-method-8
- 4.7.10-jvms-method-9
- 4.7.10-jvms-method-10
- 4.7.10-jvms-method-11
- 4.7.10-jvms-method-12
- 4.7.10-jvms-constructor-1
- 4.7.10-jvms-constructor-2
- 4.7.10-jvms-constructor-3
- 4.7.10-jvms-constructor-4
- 4.7.10-jvms-constructor-5
- 4.7.10-jvms-constructor-6
- 4.7.10-jvms-constructor-7
- 4.7.10-jvms-constructor-8
- 4.7.10-jvms-constructor-9
- 4.7.10-jvms-constructor-10
- 4.7.10-jvms-constructor-11
- 4.7.10-jvms-constructor-12
- 4.7.10-jvms-constructor-13
- 4.7.10-jvms-constructor-14
- 4.7.10-jvms-field-1
- 4.7.10-jvms-field-2
- 4.7.10-jvms-field-3
- 4.7.10-jvms-field-4
- 4.7.10-jvms-field-5
- 4.7.10-jvms-field-6
- 4.7.10-jvms-field-7
- 4.7.10-jvms-field-8
- 4.7.10-jvms-field-9
- 4.7.10-jvms-field-10
- 4.7.10-jvms-field-11
- 4.7.10-jvms-field-12
- 4.7.10-jvms-field-13
- 4.7.10-jvms-lex-1
- 4.7.10-jvms-lex-2
- 4.7.10-jvms-lex-3
- 4.7.10-jvms-lex-4
- 4.7.10-jvms-lex-5
- 4.7.10-jvms-lex-6
- 4.7.10-jvms-lex-7
- 4.7.10-jvms-lex-8
- 4.7.10-jvms-lex-9
- 4.7.10-jvms-lex-10
- 4.10-jvms-1
- 4.10-jvms-2
- 4.10-jvms-3
- 4.10-jvms-4
- 4.10-jvms-5
- 4.10-jvms-6
- 4.10-jvms-7
- 4.10-jvms-8
- 4.10-jvms-9
- 4.10-jvms-10
- 4.10-jvms-11
- 4.10-jvms-12
- 4.10-jvms-13
- 4.10-jvms-14
- 4.10-jvms-15
- 4.10-jvms-16
- 4.10-jvms-17
- 4.10-jvms-18
- 4.10-jvms-19
- 4.10-jvms-20
- 4.10-jvms-21
- 4.10-jvms-22
- 4.10-jvms-23