ClassModifiers.java revision 610
553N/A * Copyright (c) 1998, 2006, Oracle and/or its affiliates. All rights reserved. 0N/A * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 0N/A * This code is free software; you can redistribute it and/or modify it 0N/A * under the terms of the GNU General Public License version 2 only, as 0N/A * published by the Free Software Foundation. 0N/A * This code is distributed in the hope that it will be useful, but WITHOUT 0N/A * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 0N/A * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 0N/A * version 2 for more details (a copy is included in the LICENSE file that 0N/A * accompanied this code). 0N/A * You should have received a copy of the GNU General Public License version 0N/A * 2 along with this work; if not, write to the Free Software Foundation, 0N/A * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 553N/A * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 553N/A * or visit www.oracle.com if you need additional information or have any 0N/A * @bug 4109894 4239646 4785453 0N/A * @summary Verify that class modifiers bits written into class 0N/A * file are correct, including those within InnerClasses attributes. 0N/A * @author John Rose (jrose). Entered as a regression test by Bill Maddox (maddox). 0N/A //all "protected" type members are transformed to "public" 0N/A //all "private" type members are transformed to package-scope 0N/A //all "static" type members are transformed to non-static 0N/A //a class is one of {,public,private,protected}x{,static}x{,abstract,final} 0N/A //all of these 24 combinations are legal 0N/A //all of these 24 combinations generate distinct InnerClasses modifiers 0N/A //transformed class modifiers can be {,public}x{,abstract,final} 0N/A //thus, each of the next 6 groups of 4 have identical transformed modifiers 0N/A //all interface members are automatically "static" whether marked so or not 0N/A //all interfaces are automatically "abstract" whether marked so or not 0N/A //thus, interface modifiers are only distinguished by access permissions 0N/A //thus, each of the next 4 groups of 4 classes have identical modifiers 0N/A abstract protected interface iARI{}
0N/A static abstract protected interface iSARI{}
0N/A static abstract private interface iSAVI{}
0N/A static abstract public interface iSAUI{}
0N/A //no members can be "protected" or "private" 0N/A //all type members are automatically "public" whether marked so or not 0N/A //all type members are automatically "static" whether marked so or not 0N/A //thus, each of the next 3 groups of 4 classes have identical modifiers 0N/A //all interface members are automatically "static" whether marked so or not 0N/A //all interfaces are automatically "abstract" whether marked so or not 0N/A //thus, all 8 of the following classes have identical modifiers: 0N/A static abstract public interface jSAUI{}