duke@1: # ohair@962: # Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved. duke@1: # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. duke@1: # duke@1: # This code is free software; you can redistribute it and/or modify it duke@1: # under the terms of the GNU General Public License version 2 only, as duke@1: # published by the Free Software Foundation. duke@1: # duke@1: # This code is distributed in the hope that it will be useful, but WITHOUT duke@1: # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or duke@1: # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License duke@1: # version 2 for more details (a copy is included in the LICENSE file that duke@1: # accompanied this code). duke@1: # duke@1: # You should have received a copy of the GNU General Public License version duke@1: # 2 along with this work; if not, write to the Free Software Foundation, duke@1: # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. duke@1: # ohair@554: # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA ohair@554: # or visit www.oracle.com if you need additional information or have any ohair@554: # questions. duke@1: # duke@1: duke@1: # @test duke@1: # @bug 4981566 5028634 5094412 6304984 duke@1: # @summary Check interpretation of -target and -source options duke@1: # @build CheckClassFileVersion jjg@287: # @run shell check.sh duke@1: duke@1: TESTJAVA=${TESTJAVA:?} duke@1: TC=${TESTCLASSES-.} duke@1: duke@1: J="$TESTJAVA/bin/java" duke@1: JC="$TESTJAVA/bin/javac" jjg@838: CFV="${TESTVMOPTS} -cp $TC CheckClassFileVersion" duke@1: duke@1: rm -f $TC/X.java $TC/X.java duke@1: echo 'public class X { }' > $TC/X.java duke@1: echo 'public enum Y { }' > $TC/Y.java duke@1: duke@1: duke@1: # Check class-file versions duke@1: duke@1: check() { duke@1: V=$1; shift duke@1: echo "+ javac $* [$V]" jjg@838: "$JC" ${TESTTOOLVMOPTS} -d $TC $* $TC/X.java && "$J" $CFV $TC/X.class $V || exit 2 duke@1: } duke@1: duke@1: check 48.0 -source 1.4 jjg@287: duke@1: check 49.0 -source 1.4 -target 1.5 jjg@287: check 49.0 -source 1.5 -target 1.5 jjg@287: jjg@287: check 50.0 -source 1.4 -target 1.6 jjg@287: check 50.0 -source 1.5 -target 1.6 jjg@287: check 50.0 -source 1.6 -target 1.6 jjg@287: check 50.0 -source 1.6 -target 6 jjg@287: check 50.0 -source 6 -target 1.6 jjg@287: check 50.0 -source 6 -target 6 jjg@287: jjg@287: check 51.0 jjg@287: check 51.0 -source 1.5 jjg@287: check 51.0 -source 1.6 jjg@287: check 51.0 -source 6 jjg@287: check 51.0 -source 1.7 jjg@287: check 51.0 -source 7 duke@1: check 51.0 -target 1.7 duke@1: check 51.0 -target 7 duke@1: duke@1: duke@1: # Check source versions duke@1: duke@1: fail() { duke@1: echo "+ javac $*" jjg@838: if "$JC" ${TESTTOOLVMOPTS} -d $TC $*; then duke@1: echo "-- did not fail as expected" duke@1: exit 3 duke@1: else duke@1: echo "-- failed as expected" duke@1: fi duke@1: } duke@1: duke@1: pass() { duke@1: echo "+ javac $*" jjg@838: if "$JC" ${TESTTOOLVMOPTS} -d $TC $*; then duke@1: echo "-- passed" duke@1: else duke@1: echo "-- failed" duke@1: exit 4 duke@1: fi duke@1: } duke@1: jjg@287: # the following need to be updated when -source 7 features are available duke@1: checksrc14() { pass $* $TC/X.java; fail $* $TC/Y.java; } duke@1: checksrc15() { pass $* $TC/X.java; pass $* $TC/Y.java; } duke@1: checksrc16() { checksrc15 $* ; } jjg@287: checksrc17() { checksrc15 $* ; } duke@1: duke@1: checksrc14 -source 1.4 duke@1: checksrc14 -source 1.4 -target 1.5 duke@1: duke@1: checksrc15 -source 1.5 jjg@287: checksrc15 -source 1.5 -target 1.5 duke@1: duke@1: checksrc16 -source 1.6 duke@1: checksrc16 -source 6 jjg@287: checksrc16 -source 1.6 -target 1.6 jjg@287: checksrc16 -source 6 -target 6 jjg@287: jjg@287: checksrc17 jjg@287: checksrc17 -target 1.7 jjg@287: checksrc17 -target 7 jjg@287: checksrc17 -source 1.7 jjg@287: checksrc17 -source 7 jjg@287: checksrc17 -source 1.7 -target 1.7 jjg@287: checksrc17 -source 7 -target 7 duke@1: duke@1: fail -source 1.5 -target 1.4 $TC/X.java duke@1: fail -source 1.6 -target 1.4 $TC/X.java duke@1: fail -source 6 -target 1.4 $TC/X.java duke@1: fail -source 1.6 -target 1.5 $TC/X.java duke@1: fail -source 6 -target 1.5 $TC/X.java