langtools/test/tools/javac/classfiles/attributes/innerclasses/README.txt
author jlahoda
Thu, 09 Oct 2014 10:08:52 +0200
changeset 26993 513b2cae81c3
parent 26101 d5dd2ecd2353
permissions -rw-r--r--
8057652: Request to improve error messages for labeled declarations Summary: Parse labeled statements as block statements to improve error recovery for labeled declarations; related cleanup. Reviewed-by: jjg
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
26101
d5dd2ecd2353 8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff changeset
     1
The description of the tests for the InnerClasses attribute.
d5dd2ecd2353 8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff changeset
     2
d5dd2ecd2353 8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff changeset
     3
InnerClassesTestBase is the base class for tests of inner classes attribute.
d5dd2ecd2353 8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff changeset
     4
Each tests extends the base class.
d5dd2ecd2353 8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff changeset
     5
The scenario of tests:
d5dd2ecd2353 8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff changeset
     6
    1. set possible values of class modifiers, outer/inner class types.
d5dd2ecd2353 8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff changeset
     7
    2. according to set class modifiers, a test generates sources
d5dd2ecd2353 8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff changeset
     8
       and golden data with generateTestCases.
d5dd2ecd2353 8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff changeset
     9
    3. a test loops through all test cases and checks InnerClasses attribute in method test().
d5dd2ecd2353 8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff changeset
    10
d5dd2ecd2353 8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff changeset
    11
Example, possible flags for outer class are Modifier.PRIVATE and Modifier.PUBLIC,
d5dd2ecd2353 8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff changeset
    12
possible flags for inner class are Modifier.EMPTY, outer class type is CLASS
d5dd2ecd2353 8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff changeset
    13
and inner class type is CLASS.
d5dd2ecd2353 8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff changeset
    14
At the second step the test generates two test cases:
d5dd2ecd2353 8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff changeset
    15
  1. public class A {
d5dd2ecd2353 8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff changeset
    16
       public class B {
d5dd2ecd2353 8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff changeset
    17
         class C {}
d5dd2ecd2353 8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff changeset
    18
        }
d5dd2ecd2353 8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff changeset
    19
     }
d5dd2ecd2353 8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff changeset
    20
  2. public class A {
d5dd2ecd2353 8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff changeset
    21
       private class B {
d5dd2ecd2353 8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff changeset
    22
         class C {}
d5dd2ecd2353 8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff changeset
    23
       }
d5dd2ecd2353 8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff changeset
    24
     }
d5dd2ecd2353 8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff changeset
    25
d5dd2ecd2353 8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff changeset
    26
The list of tests.
d5dd2ecd2353 8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff changeset
    27
d5dd2ecd2353 8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff changeset
    28
Test: test if there is not inner class, the InnerClasses attribute
d5dd2ecd2353 8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff changeset
    29
is not generated (NoInnerClasses.java).
d5dd2ecd2353 8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff changeset
    30
d5dd2ecd2353 8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff changeset
    31
Test: inner classes in anonymous class (InnerClassesInAnonymousClassTest.java).
d5dd2ecd2353 8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff changeset
    32
Possible access flags of the inner class: abstract and final.
d5dd2ecd2353 8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff changeset
    33
d5dd2ecd2353 8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff changeset
    34
Test: inner classes in local class (InnerClassesInLocalClassTest.java).
d5dd2ecd2353 8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff changeset
    35
Locations of local class: static and instance initializer, constructor, method, lambda,
d5dd2ecd2353 8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff changeset
    36
default and static methods of interface.
d5dd2ecd2353 8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff changeset
    37
d5dd2ecd2353 8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff changeset
    38
Test: test the outer_class_info_index and inner_name_index of
d5dd2ecd2353 8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff changeset
    39
local and anonymous classes (InnerClassesIndexTest.java).
d5dd2ecd2353 8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff changeset
    40
d5dd2ecd2353 8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff changeset
    41
List of test cases for Inner*InInner*Test:
d5dd2ecd2353 8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff changeset
    42
    * InnerClassesInInnerClassTest
d5dd2ecd2353 8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff changeset
    43
        outer flags: all possible flags
d5dd2ecd2353 8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff changeset
    44
        inner flags: all possible flags
d5dd2ecd2353 8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff changeset
    45
    * InnerClassesInInnerEnumTest
d5dd2ecd2353 8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff changeset
    46
        outer flags: all access flags, abstract
d5dd2ecd2353 8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff changeset
    47
        inner flags: all possible flags
d5dd2ecd2353 8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff changeset
    48
    * InnerClassesInInnerAnnotationTest
d5dd2ecd2353 8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff changeset
    49
        outer flags: all access flags, abstract
d5dd2ecd2353 8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff changeset
    50
        inner flags: all flags, except private and protected
d5dd2ecd2353 8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff changeset
    51
    * InnerClassesInInnerInterfaceTest
d5dd2ecd2353 8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff changeset
    52
        outer flags: all access flags, abstract
d5dd2ecd2353 8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff changeset
    53
        inner flags: all flags, except private and protected
d5dd2ecd2353 8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff changeset
    54
d5dd2ecd2353 8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff changeset
    55
    * InnerEnumsInInnerClassTest
d5dd2ecd2353 8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff changeset
    56
        outer flags: all possible flags
d5dd2ecd2353 8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff changeset
    57
        inner flags: all possible flags
d5dd2ecd2353 8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff changeset
    58
    * InnerEnumsInInnerEnumTest
d5dd2ecd2353 8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff changeset
    59
        outer flags: all possible flags
d5dd2ecd2353 8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff changeset
    60
        inner flags: all possible flags
d5dd2ecd2353 8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff changeset
    61
    * InnerEnumsInInnerAnnotationTest
d5dd2ecd2353 8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff changeset
    62
        outer flags: all access flags, abstract, static
d5dd2ecd2353 8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff changeset
    63
        inner flags: public, static
d5dd2ecd2353 8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff changeset
    64
    * InnerEnumsInInnerInterfaceTest
d5dd2ecd2353 8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff changeset
    65
        outer flags: all access flags, abstract, static
d5dd2ecd2353 8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff changeset
    66
        inner flags: public, static
d5dd2ecd2353 8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff changeset
    67
d5dd2ecd2353 8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff changeset
    68
    * InnerAnnotationInInnerClassTest
d5dd2ecd2353 8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff changeset
    69
        outer flags: all possible flags, except static
d5dd2ecd2353 8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff changeset
    70
        inner flags: all access flags, abstract and static
d5dd2ecd2353 8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff changeset
    71
    * InnerAnnotationInInnerEnumTest
d5dd2ecd2353 8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff changeset
    72
        outer flags: all access flags, static
d5dd2ecd2353 8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff changeset
    73
        inner flags: all access flags, abstract and static
d5dd2ecd2353 8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff changeset
    74
    * InnerAnnotationInInnerAnnotation
d5dd2ecd2353 8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff changeset
    75
        outer flags: all access flags, static and abstract
d5dd2ecd2353 8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff changeset
    76
        inner flags: public, abstract, static
d5dd2ecd2353 8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff changeset
    77
    * InnerAnnotationInInnerInterface
d5dd2ecd2353 8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff changeset
    78
        outer flags: all access flags, static and abstract
d5dd2ecd2353 8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff changeset
    79
        inner flags: public, abstract, static
d5dd2ecd2353 8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff changeset
    80
d5dd2ecd2353 8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff changeset
    81
    * InnerInterfaceInInnerClassTest
d5dd2ecd2353 8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff changeset
    82
        outer flags: all possible flags, except static
d5dd2ecd2353 8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff changeset
    83
        inner flags: all access flags, abstract and static
d5dd2ecd2353 8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff changeset
    84
    * InnerInterfaceInInnerEnumTest
d5dd2ecd2353 8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff changeset
    85
        outer flags: all access flags, static
d5dd2ecd2353 8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff changeset
    86
        inner flags: all access flags, abstract and static
d5dd2ecd2353 8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff changeset
    87
    * InnerInterfaceInInnerAnnotation
d5dd2ecd2353 8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff changeset
    88
        outer flags: all access flags, static and abstract
d5dd2ecd2353 8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff changeset
    89
        inner flags: public, abstract, static
d5dd2ecd2353 8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff changeset
    90
    * InnerInterfaceInInnerInterface
d5dd2ecd2353 8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff changeset
    91
        outer flags: all access flags, static and abstract
d5dd2ecd2353 8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff changeset
    92
        inner flags: public, abstract, static