From: tromey Date: Thu, 18 May 2006 18:51:35 +0000 (+0000) Subject: * testsuite/libjava.special/special.exp (gcj_special_pr21115): X-Git-Url: http://git.sourceforge.jp/view?p=pf3gnuchains%2Fgcc-fork.git;a=commitdiff_plain;h=f3151bc5c29486eb5bfd612776fd7019033cda68 * testsuite/libjava.special/special.exp (gcj_special_pr21115): Renamed. (gcj_write_and_byte_compile): New proc. (gcj_special_lazy_illegal_access): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@113890 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/libjava/ChangeLog b/libjava/ChangeLog index 1d0492fe9f6..f8af155f26b 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,10 @@ +2006-05-18 Tom Tromey + + * testsuite/libjava.special/special.exp (gcj_special_pr21115): + Renamed. + (gcj_write_and_byte_compile): New proc. + (gcj_special_lazy_illegal_access): Likewise. + 2006-05-18 Mark Wielaard Imported GNU Classpath 0.90 diff --git a/libjava/testsuite/libjava.special/special.exp b/libjava/testsuite/libjava.special/special.exp index 76afd9a70b0..ab18b47bff1 100644 --- a/libjava/testsuite/libjava.special/special.exp +++ b/libjava/testsuite/libjava.special/special.exp @@ -1,6 +1,6 @@ # Special test cases. These require tricky build procedures. -proc gcj_special_run {} { +proc gcj_special_pr21115 {} { global srcdir subdir env # ---- PR 21115 ------------------------------------------------------- @@ -13,7 +13,7 @@ proc gcj_special_run {} { } pass "bytecompile pr21115I.java" - if {! [gcj_link pr21115 pr21115 [list ${srcdir}/${subdir}/pr21115.java]]} { + if {! [gcj_link pr21115 pr21115 [list ${srcdir}/${subdir}/pr21115.java]]} { fail "compiling/linking pr21115.java" # FIXME return 0 @@ -27,4 +27,72 @@ proc gcj_special_run {} { return 1 } -gcj_special_run +# Write a .java file and bytecompile it. Return 0 on failure. +proc gcj_write_and_byte_compile {name contents} { + set fd [open $name w] + puts $fd $contents + close $fd + + if {! [bytecompile_file $name [pwd]]} { + fail "bytecompile $name" + # FIXME - should use `untested' on all remaining tests. + # But that is hard. + return 0 + } + pass "bytecompile $name" + return 1 +} + +# Check that BC-compiled code lazily throws IllegalAccessError. +proc gcj_special_lazy_illegal_access {} { + global srcdir subdir env + + # Write and compile the initial files. + if {! [gcj_write_and_byte_compile LazyA.java { + public class LazyA { + public static void m() { } + } + }]} { + return 0 + } + if {! [gcj_write_and_byte_compile LazyB.java { + public class LazyB { + public static void m() { } + public static void main(String[] args) { } + } + }]} { + return 0 + } + + # Create the expected output file. + set fd [open Lazy.out w] + close $fd + + # Now recompile LazyA with different access for m(). + if {! [gcj_write_and_byte_compile LazyA.java { + public class LazyA { + private static void m() { } + } + }]} { + return 0 + } + + # Link and run... this should still work, since we don't actually + # try to call LazyA.m(). + if {! [gcj_link Lazy LazyB {LazyA.class LazyB.class} \ + additional_flags=-findirect-dispatch]} { + fail "compiling/linking pr21115.java" + # FIXME + return 0 + } + + if {! [gcj_invoke Lazy Lazy.out ""]} { + # FIXME + return 0 + } + + return 1 +} + +gcj_special_pr21115 +gcj_special_lazy_illegal_access