MemberTypeInheritance.java revision 0:9a66ca7c79fa
190075Sobrien/* 2132718Skan * Copyright 1999 Sun Microsystems, Inc. All Rights Reserved. 3169689Skan * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 490075Sobrien * 590075Sobrien * This code is free software; you can redistribute it and/or modify it 690075Sobrien * under the terms of the GNU General Public License version 2 only, as 790075Sobrien * published by the Free Software Foundation. 8132718Skan * 990075Sobrien * This code is distributed in the hope that it will be useful, but WITHOUT 10132718Skan * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11132718Skan * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 12132718Skan * version 2 for more details (a copy is included in the LICENSE file that 13132718Skan * accompanied this code). 1490075Sobrien * 15132718Skan * You should have received a copy of the GNU General Public License version 16132718Skan * 2 along with this work; if not, write to the Free Software Foundation, 17132718Skan * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18132718Skan * 1990075Sobrien * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, 20132718Skan * CA 95054 USA or visit www.sun.com if you need additional information or 21132718Skan * have any questions. 22169689Skan */ 23169689Skan 24169689Skan/* 2590075Sobrien * @test 2690075Sobrien * @bug 4254213 27132718Skan * @summary Verify that member types of classes and interfaces can be inherited. 28132718Skan * 2990075Sobrien * @run compile MemberTypeInheritance.java 3090075Sobrien */ 3190075Sobrien 3290075Sobrienclass C { 3390075Sobrien class D {} 3490075Sobrien interface E {} 3590075Sobrien} 3690075Sobrien 3790075Sobrieninterface I { 3890075Sobrien class J {} 3990075Sobrien interface K{} 4090075Sobrien} 4190075Sobrien 4290075Sobrienclass L extends C {} 4390075Sobrien 4490075Sobrieninterface M extends I {} 4590075Sobrien 4690075Sobrienclass X extends C implements I { 4790075Sobrien D d; 4890075Sobrien E e; 4990075Sobrien J j; 5090075Sobrien K k; 5190075Sobrien} 5290075Sobrien 53132718Skanclass Y extends L implements M { 54169689Skan D d; 5590075Sobrien E e; 5690075Sobrien J j; 5790075Sobrien K k; 5890075Sobrien} 5990075Sobrien 6090075Sobrienclass Outer { 6190075Sobrien 6290075Sobrien class C { 63169689Skan class D {} 64132718Skan // Inner class cannot have member interface (static member). 65169689Skan } 66169689Skan 67132718Skan interface I { 68132718Skan class J {} 69169689Skan interface K{} 70132718Skan } 71132718Skan 72169689Skan class L extends C {} 73169689Skan 74132718Skan interface M extends I {} 75132718Skan 76169689Skan class X extends C implements I { 7790075Sobrien D d; 78132718Skan J j; 7990075Sobrien K k; 80132718Skan } 81132718Skan 82132718Skan class Y extends L implements M { 83132718Skan D d; 84132718Skan J j; 85132718Skan K k; 86132718Skan } 87132718Skan 88169689Skan void test() { 89132718Skan 90132718Skan // Blocks may not contain local interfaces. 91132718Skan 92132718Skan class C { 93132718Skan class D {} 94132718Skan // Inner class cannot have member interface (static member). 95132718Skan } 96132718Skan 97132718Skan class L extends C {} 98132718Skan 99132718Skan class X extends C { 100132718Skan D d; 101132718Skan } 102132718Skan 103132718Skan class Y extends L { 104132718Skan D d; 105132718Skan } 106132718Skan 107132718Skan } 108132718Skan 109132718Skan} 110132718Skan