MemberTypeInheritance.java revision 553:9d9f26857129
1171169Smlaier/* 2171169Smlaier * Copyright (c) 1999, Oracle and/or its affiliates. All rights reserved. 3171169Smlaier * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4171169Smlaier * 5171169Smlaier * This code is free software; you can redistribute it and/or modify it 6171169Smlaier * under the terms of the GNU General Public License version 2 only, as 7171169Smlaier * published by the Free Software Foundation. 8171169Smlaier * 9171169Smlaier * This code is distributed in the hope that it will be useful, but WITHOUT 10171169Smlaier * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11171169Smlaier * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 12171169Smlaier * version 2 for more details (a copy is included in the LICENSE file that 13171169Smlaier * accompanied this code). 14171169Smlaier * 15171169Smlaier * You should have received a copy of the GNU General Public License version 16171169Smlaier * 2 along with this work; if not, write to the Free Software Foundation, 17171169Smlaier * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18171169Smlaier * 19171169Smlaier * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20171169Smlaier * or visit www.oracle.com if you need additional information or have any 21171169Smlaier * questions. 22171169Smlaier */ 23171169Smlaier 24171169Smlaier/* 25171169Smlaier * @test 26171169Smlaier * @bug 4254213 27171169Smlaier * @summary Verify that member types of classes and interfaces can be inherited. 28171169Smlaier * 29171169Smlaier * @run compile MemberTypeInheritance.java 30171169Smlaier */ 31171169Smlaier 32171169Smlaierclass C { 33171169Smlaier class D {} 34171169Smlaier interface E {} 35171169Smlaier} 36171169Smlaier 37171169Smlaierinterface I { 38171169Smlaier class J {} 39171169Smlaier interface K{} 40171169Smlaier} 41171169Smlaier 42171169Smlaierclass L extends C {} 43171169Smlaier 44171169Smlaierinterface M extends I {} 45171169Smlaier 46171169Smlaierclass X extends C implements I { 47171169Smlaier D d; 48171169Smlaier E e; 49171169Smlaier J j; 50171169Smlaier K k; 51171169Smlaier} 52171169Smlaier 53171169Smlaierclass Y extends L implements M { 54171169Smlaier D d; 55171169Smlaier E e; 56171169Smlaier J j; 57171169Smlaier K k; 58171169Smlaier} 59171169Smlaier 60171169Smlaierclass Outer { 61171169Smlaier 62171169Smlaier class C { 63171169Smlaier class D {} 64171169Smlaier // Inner class cannot have member interface (static member). 65171169Smlaier } 66171169Smlaier 67171169Smlaier interface I { 68171169Smlaier class J {} 69171169Smlaier interface K{} 70171169Smlaier } 71171169Smlaier 72171169Smlaier class L extends C {} 73171169Smlaier 74171169Smlaier interface M extends I {} 75171169Smlaier 76171169Smlaier class X extends C implements I { 77171169Smlaier D d; 78171169Smlaier J j; 79171169Smlaier K k; 80171169Smlaier } 81171169Smlaier 82171169Smlaier class Y extends L implements M { 83171169Smlaier D d; 84171169Smlaier J j; 85171169Smlaier K k; 86171169Smlaier } 87171169Smlaier 88171169Smlaier void test() { 89171169Smlaier 90171169Smlaier // Blocks may not contain local interfaces. 91171169Smlaier 92171169Smlaier class C { 93171169Smlaier class D {} 94171169Smlaier // Inner class cannot have member interface (static member). 95171169Smlaier } 96171169Smlaier 97171169Smlaier class L extends C {} 98171169Smlaier 99171169Smlaier class X extends C { 100171169Smlaier D d; 101171169Smlaier } 102171169Smlaier 103171169Smlaier class Y extends L { 104171169Smlaier D d; 105171169Smlaier } 106171169Smlaier 107171169Smlaier } 108171169Smlaier 109171169Smlaier} 110171169Smlaier