1 2 3 /* 4 * Copyright (c) 2024, 2024, Oracle and/or its affiliates. All rights reserved. 5 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 6 * 7 * This code is free software; you can redistribute it and/or modify it 8 * under the terms of the GNU General Public License version 2 only, as 9 * published by the Free Software Foundation. 10 * 11 * This code is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 * version 2 for more details (a copy is included in the LICENSE file that 15 * accompanied this code). 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 * 25 */ 26 /* 27 * @test 28 * @summary test that illegal field modifiers are detected correctly 29 * @enablePreview 30 * @compile fieldModifiersTest.jcod 31 * @run main/othervm -Xverify:remote IllegalFieldModifiers 32 */ 33 34 35 public class IllegalFieldModifiers { 36 37 public static void runTest(String test_name, String message) throws Exception { 38 System.out.println("Testing: " + test_name); 39 try { 40 Class newClass = Class.forName(test_name); 41 } catch (java.lang.ClassFormatError e) { 42 if (!e.getMessage().contains(message)) { 43 throw new RuntimeException( "Wrong ClassFormatError: " + e.getMessage()); 44 } 45 } 46 } 47 48 public static void main(String[] args) throws Exception { 49 50 // Test that ACC_FINAL with ACC_VOLATILE is illegal. 51 runTest("FinalAndVolatile", "Illegal field modifiers in class FinalAndVolatile"); 52 53 // Test that ACC_STATIC with ACC_STRICT is illegal. 54 runTest("StrictAndStatic", "Illegal field modifiers in class StrictAndStatic"); 55 56 // Test that ACC_STRICT without ACC_FINAL is illegal. 57 runTest("StrictNotFinal", "Illegal field modifiers in class StrictNotFinal"); 58 59 // Test that a value class cannot have field without ACC_STATIC or ACC_STRICT 60 runTest("NotStaticNotStrict", "Illegal field modifiers in class NotStaticNotStrict"); 61 } 62 63 }