duke@1: /* ohair@554: * Copyright (c) 1998, 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: /* duke@1: * @test duke@1: * @bug 4102566 duke@1: * @summary Test access methods for assignment targets. duke@1: * @author William Maddox (maddox) duke@1: * duke@1: * @compile AccessMethodsLHS.java duke@1: * @run main AccessMethodsLHS duke@1: */ duke@1: duke@1: public class AccessMethodsLHS { duke@1: duke@1: static void fail(String msg) throws Exception { duke@1: throw new Exception("FAIL: " + msg); duke@1: } duke@1: duke@1: static int arg = 123456; duke@1: duke@1: private int i; duke@1: private double d; duke@1: duke@1: private void m(int x) throws Exception { duke@1: System.out.println("called AccessMethodsLHS.m"); duke@1: if (x != 123456) duke@1: AccessMethodsLHS.fail("bad argument"); duke@1: } duke@1: duke@1: public static class Bar { duke@1: private int i; duke@1: private double d; duke@1: private String s; duke@1: duke@1: private void m(int x) throws Exception { duke@1: System.out.println("called AccessMethodsLHS.Bar.m"); duke@1: if (x != 123456) duke@1: AccessMethodsLHS.fail("bad argument"); duke@1: } duke@1: duke@1: // Static members are permitted in a static inner class. duke@1: duke@1: static private int si; duke@1: static private double sd; duke@1: static private String ss; duke@1: duke@1: static private void sm(int x) throws Exception { duke@1: System.out.println("called AccessMethodsLHS.Bar.sm"); duke@1: if (x != 123456) duke@1: AccessMethodsLHS.fail("bad argument"); duke@1: } duke@1: } duke@1: duke@1: public static class Baz { duke@1: private int i; duke@1: private double d; duke@1: private String s; duke@1: duke@1: private void m(int x) throws Exception { duke@1: System.out.println("called Baz.m"); duke@1: if (x != 123456) duke@1: AccessMethodsLHS.fail("bad argument"); duke@1: } duke@1: duke@1: // Compiler rejects static members here correctly. duke@1: duke@1: // static private int si; duke@1: // static private double sd; duke@1: // static private String ss; duke@1: } duke@1: duke@1: public class Quux { duke@1: void DoIt () throws Exception { duke@1: m(arg); duke@1: i = 1; duke@1: d = 1.0; duke@1: i += 5; duke@1: i--; duke@1: } duke@1: void DoMore(AccessMethodsLHS f) throws Exception { duke@1: f.m(arg); duke@1: } duke@1: } duke@1: duke@1: public static class Quem { duke@1: void DoIt () { duke@1: // Illegal static refs to non-static vars duke@1: // i = 1; duke@1: // d = 1.0; duke@1: // i += 5; duke@1: // i--; duke@1: } duke@1: } duke@1: duke@1: static int effects = 0; duke@1: duke@1: static Bar iBar(Bar x) { effects++; return x; } duke@1: duke@1: static Baz iBaz(Baz x) { effects++; return x; } duke@1: duke@1: static void checkEffects(int i) throws Exception { duke@1: if (effects != 1) { duke@1: AccessMethodsLHS.fail("incorrect side-effect behavior (" + effects + "): " + i); duke@1: } duke@1: effects = 0; duke@1: } duke@1: duke@1: static public void main(String args[]) throws Exception { duke@1: duke@1: Bar b = new Bar(); duke@1: Baz c = new Baz(); duke@1: duke@1: System.out.println("testing assignment"); duke@1: duke@1: AccessMethodsLHS f = new AccessMethodsLHS(); duke@1: duke@1: Quux q1 = f.new Quux(); duke@1: q1.DoIt(); duke@1: q1.DoMore(f); duke@1: duke@1: Quem q2 = new Quem(); duke@1: q2.DoIt(); duke@1: duke@1: // *** Static class, Non-static members *** duke@1: duke@1: b.m(arg); duke@1: duke@1: // Integer (1 word) duke@1: duke@1: b.i = 5; duke@1: System.out.println(b.i); duke@1: if (b.i != 5) duke@1: AccessMethodsLHS.fail("simple assignment"); duke@1: System.out.println(b.i); duke@1: duke@1: duke@1: if ((b.i += 10) != 15) duke@1: AccessMethodsLHS.fail("add-assign result"); duke@1: System.out.println(b.i); duke@1: duke@1: if (b.i != 15) duke@1: AccessMethodsLHS.fail("add-assign effect"); duke@1: System.out.println(b.i); duke@1: duke@1: b.s = "foo"; duke@1: if (!(b.s += "bar").equals("foobar")) duke@1: AccessMethodsLHS.fail("concat-assign result"); duke@1: System.out.println(b.s); duke@1: duke@1: if (!b.s.equals("foobar")) duke@1: AccessMethodsLHS.fail("concat-assign effect"); duke@1: System.out.println(b.s); duke@1: duke@1: b.s = "foo"; duke@1: b.s += "bar"; duke@1: if (!b.s.equals("foobar")) duke@1: AccessMethodsLHS.fail("concat-assign effect (novalue)"); duke@1: System.out.println(b.s); duke@1: duke@1: b.i = 0; duke@1: b.i++; duke@1: if (b.i != 1) duke@1: AccessMethodsLHS.fail("post-increment effect"); duke@1: System.out.println(b.i); duke@1: duke@1: b.i = 5; duke@1: if (b.i++ != 5) duke@1: AccessMethodsLHS.fail("post-increment result"); duke@1: if (b.i != 6) duke@1: AccessMethodsLHS.fail("post-increment effect (embedded)"); duke@1: System.out.println(b.i); duke@1: duke@1: b.i = 1; duke@1: --b.i; duke@1: if (b.i != 0) duke@1: AccessMethodsLHS.fail("pre-decrement effect"); duke@1: duke@1: b.i = 5; duke@1: if (--b.i != 4) duke@1: AccessMethodsLHS.fail("pre-decrement result"); duke@1: if (b.i != 4) duke@1: AccessMethodsLHS.fail("pre-decrement effect (embedded)"); duke@1: System.out.println(b.i); duke@1: duke@1: // Double (2 word) duke@1: duke@1: b.d = 5.0; duke@1: System.out.println(b.d); duke@1: if (b.d != 5.0) duke@1: AccessMethodsLHS.fail("simple assignment"); duke@1: System.out.println(b.d); duke@1: duke@1: if ((b.d += 10) != 15.0) duke@1: AccessMethodsLHS.fail("add-assign result"); duke@1: System.out.println(b.d); duke@1: duke@1: if (b.d != 15.0) duke@1: AccessMethodsLHS.fail("add-assign effect"); duke@1: System.out.println(b.d); duke@1: duke@1: b.d = 0.0; duke@1: b.d++; duke@1: if (b.d != 1.0) duke@1: AccessMethodsLHS.fail("post-increment effect"); duke@1: System.out.println(b.d); duke@1: duke@1: b.d = 5.0; duke@1: if (b.d++ != 5.0) duke@1: AccessMethodsLHS.fail("post-increment result"); duke@1: if (b.d != 6.0) duke@1: AccessMethodsLHS.fail("post-increment effect (embedded)"); duke@1: System.out.println(b.d); duke@1: duke@1: b.d = 1.0; duke@1: --b.d; duke@1: if (b.d != 0.0) duke@1: AccessMethodsLHS.fail("pre-decrement effect"); duke@1: duke@1: b.d = 5.0; duke@1: if (--b.d != 4.0) duke@1: AccessMethodsLHS.fail("pre-decrement result"); duke@1: if (b.d != 4.0) duke@1: AccessMethodsLHS.fail("pre-decrement effect (embedded)"); duke@1: System.out.println(b.d); duke@1: duke@1: // Integer (1 word) with side-effects in object reference duke@1: duke@1: iBar(b).i = 5; duke@1: checkEffects(1); duke@1: System.out.println(b.i); duke@1: if (b.i != 5) duke@1: AccessMethodsLHS.fail("simple assignment"); duke@1: duke@1: System.out.println(b.i); duke@1: duke@1: if ((iBar(b).i += 10) != 15) duke@1: AccessMethodsLHS.fail("add-assign result"); duke@1: checkEffects(2); duke@1: System.out.println(b.i); duke@1: duke@1: if (b.i != 15) duke@1: AccessMethodsLHS.fail("add-assign effect"); duke@1: System.out.println(b.i); duke@1: duke@1: b.i = 0; duke@1: iBar(b).i++; duke@1: checkEffects(3); duke@1: if (b.i != 1) duke@1: AccessMethodsLHS.fail("post-increment effect"); duke@1: System.out.println(b.i); duke@1: duke@1: b.i = 5; duke@1: if (iBar(b).i++ != 5) duke@1: AccessMethodsLHS.fail("post-increment result"); duke@1: checkEffects(4); duke@1: if (b.i != 6) duke@1: AccessMethodsLHS.fail("post-increment effect (embedded)"); duke@1: System.out.println(b.i); duke@1: duke@1: b.i = 1; duke@1: --iBar(b).i; duke@1: checkEffects(5); duke@1: if (b.i != 0) duke@1: AccessMethodsLHS.fail("pre-decrement effect"); duke@1: duke@1: b.i = 5; duke@1: if (--iBar(b).i != 4) duke@1: AccessMethodsLHS.fail("pre-decrement result"); duke@1: checkEffects(6); duke@1: if (b.i != 4) duke@1: AccessMethodsLHS.fail("pre-decrement effect (embedded)"); duke@1: System.out.println(b.i); duke@1: duke@1: duke@1: // *** Static class, Static members *** duke@1: duke@1: Bar.sm(arg); duke@1: duke@1: // Integer (1 word) duke@1: duke@1: Bar.si = 5; duke@1: System.out.println(Bar.si); duke@1: if (Bar.si != 5) duke@1: AccessMethodsLHS.fail("simple assignment"); duke@1: System.out.println(Bar.si); duke@1: duke@1: if ((Bar.si += 10) != 15) duke@1: AccessMethodsLHS.fail("add-assign result"); duke@1: System.out.println(Bar.si); duke@1: duke@1: if (Bar.si != 15) duke@1: AccessMethodsLHS.fail("add-assign effect"); duke@1: System.out.println(Bar.si); duke@1: duke@1: Bar.ss = "foo"; duke@1: if (!(Bar.ss += "bar").equals("foobar")) duke@1: AccessMethodsLHS.fail("concat-assign result"); duke@1: System.out.println(Bar.ss); duke@1: duke@1: if (!Bar.ss.equals("foobar")) duke@1: AccessMethodsLHS.fail("concat-assign effect"); duke@1: System.out.println(Bar.ss); duke@1: duke@1: Bar.ss = "foo"; duke@1: Bar.ss += "bar"; duke@1: if (!Bar.ss.equals("foobar")) duke@1: AccessMethodsLHS.fail("concat-assign effect (novalue)"); duke@1: System.out.println(Bar.ss); duke@1: duke@1: Bar.si = 0; duke@1: Bar.si++; duke@1: if (Bar.si != 1) duke@1: AccessMethodsLHS.fail("post-increment effect"); duke@1: System.out.println(Bar.si); duke@1: duke@1: Bar.si = 5; duke@1: if (Bar.si++ != 5) duke@1: AccessMethodsLHS.fail("post-increment result"); duke@1: if (Bar.si != 6) duke@1: AccessMethodsLHS.fail("post-increment effect (embedded)"); duke@1: System.out.println(Bar.si); duke@1: duke@1: Bar.si = 1; duke@1: --Bar.si; duke@1: if (Bar.si != 0) duke@1: AccessMethodsLHS.fail("pre-decrement effect"); duke@1: duke@1: Bar.si = 5; duke@1: if (--Bar.si != 4) duke@1: AccessMethodsLHS.fail("pre-decrement result"); duke@1: if (Bar.si != 4) duke@1: AccessMethodsLHS.fail("pre-decrement effect (embedded)"); duke@1: System.out.println(Bar.si); duke@1: duke@1: // Double (2 word) duke@1: duke@1: Bar.sd = 5.0; duke@1: System.out.println(Bar.sd); duke@1: if (Bar.sd != 5.0) duke@1: AccessMethodsLHS.fail("simple assignment"); duke@1: System.out.println(Bar.sd); duke@1: duke@1: if ((Bar.sd += 10) != 15.0) duke@1: AccessMethodsLHS.fail("add-assign result"); duke@1: System.out.println(Bar.sd); duke@1: duke@1: if (Bar.sd != 15.0) duke@1: AccessMethodsLHS.fail("add-assign effect"); duke@1: System.out.println(Bar.sd); duke@1: duke@1: Bar.sd = 0.0; duke@1: Bar.sd++; duke@1: if (Bar.sd != 1.0) duke@1: AccessMethodsLHS.fail("post-increment effect"); duke@1: System.out.println(Bar.sd); duke@1: duke@1: Bar.sd = 5.0; duke@1: if (Bar.sd++ != 5.0) duke@1: AccessMethodsLHS.fail("post-increment result"); duke@1: if (Bar.sd != 6.0) duke@1: AccessMethodsLHS.fail("post-increment effect (embedded)"); duke@1: System.out.println(Bar.sd); duke@1: duke@1: Bar.sd = 1.0; duke@1: --Bar.sd; duke@1: if (Bar.sd != 0.0) duke@1: AccessMethodsLHS.fail("pre-decrement effect"); duke@1: duke@1: Bar.sd = 5.0; duke@1: if (--Bar.sd != 4.0) duke@1: AccessMethodsLHS.fail("pre-decrement result"); duke@1: if (Bar.sd != 4.0) duke@1: AccessMethodsLHS.fail("pre-decrement effect (embedded)"); duke@1: System.out.println(Bar.sd); duke@1: duke@1: duke@1: // *** Static class, Static members (invoked via object reference) *** duke@1: duke@1: b.sm(arg); duke@1: duke@1: iBar(b).sm(arg); duke@1: checkEffects(101); duke@1: duke@1: // Integer (1 word) duke@1: duke@1: b.si = 5; duke@1: System.out.println(b.si); duke@1: if (b.si != 5) duke@1: AccessMethodsLHS.fail("simple assignment"); duke@1: System.out.println(b.si); duke@1: duke@1: if ((b.si += 10) != 15) duke@1: AccessMethodsLHS.fail("add-assign result"); duke@1: System.out.println(b.si); duke@1: duke@1: if (b.si != 15) duke@1: AccessMethodsLHS.fail("add-assign effect"); duke@1: System.out.println(b.si); duke@1: duke@1: b.ss = "foo"; duke@1: if (!(b.ss += "bar").equals("foobar")) duke@1: AccessMethodsLHS.fail("concat-assign result"); duke@1: System.out.println(b.ss); duke@1: duke@1: if (!b.ss.equals("foobar")) duke@1: AccessMethodsLHS.fail("concat-assign effect"); duke@1: System.out.println(b.ss); duke@1: duke@1: b.ss = "foo"; duke@1: b.ss += "bar"; duke@1: if (!b.ss.equals("foobar")) duke@1: AccessMethodsLHS.fail("concat-assign effect (novalue)"); duke@1: System.out.println(b.ss); duke@1: duke@1: b.si = 0; duke@1: b.si++; duke@1: if (b.si != 1) duke@1: AccessMethodsLHS.fail("post-increment effect"); duke@1: System.out.println(b.si); duke@1: duke@1: b.si = 5; duke@1: if (b.si++ != 5) duke@1: AccessMethodsLHS.fail("post-increment result"); duke@1: if (b.si != 6) duke@1: AccessMethodsLHS.fail("post-increment effect (embedded)"); duke@1: System.out.println(b.si); duke@1: duke@1: b.si = 1; duke@1: --b.si; duke@1: if (b.si != 0) duke@1: AccessMethodsLHS.fail("pre-decrement effect"); duke@1: duke@1: b.si = 5; duke@1: if (--b.si != 4) duke@1: AccessMethodsLHS.fail("pre-decrement result"); duke@1: if (b.si != 4) duke@1: AccessMethodsLHS.fail("pre-decrement effect (embedded)"); duke@1: System.out.println(b.si); duke@1: duke@1: // Double (2 word) duke@1: duke@1: b.sd = 5.0; duke@1: System.out.println(b.sd); duke@1: if (b.sd != 5.0) duke@1: AccessMethodsLHS.fail("simple assignment"); duke@1: System.out.println(b.sd); duke@1: duke@1: if ((b.sd += 10) != 15.0) duke@1: AccessMethodsLHS.fail("add-assign result"); duke@1: System.out.println(b.sd); duke@1: duke@1: if (b.sd != 15.0) duke@1: AccessMethodsLHS.fail("add-assign effect"); duke@1: System.out.println(b.sd); duke@1: duke@1: b.sd = 0.0; duke@1: b.sd++; duke@1: if (b.sd != 1.0) duke@1: AccessMethodsLHS.fail("post-increment effect"); duke@1: System.out.println(b.sd); duke@1: duke@1: b.sd = 5.0; duke@1: if (b.sd++ != 5.0) duke@1: AccessMethodsLHS.fail("post-increment result"); duke@1: if (b.sd != 6.0) duke@1: AccessMethodsLHS.fail("post-increment effect (embedded)"); duke@1: System.out.println(b.sd); duke@1: duke@1: b.sd = 1.0; duke@1: --b.sd; duke@1: if (b.sd != 0.0) duke@1: AccessMethodsLHS.fail("pre-decrement effect"); duke@1: duke@1: b.sd = 5.0; duke@1: if (--b.sd != 4.0) duke@1: AccessMethodsLHS.fail("pre-decrement result"); duke@1: if (b.sd != 4.0) duke@1: AccessMethodsLHS.fail("pre-decrement effect (embedded)"); duke@1: System.out.println(b.sd); duke@1: duke@1: // Integer (1 word) with side-effects in object reference duke@1: duke@1: iBar(b).si = 5; duke@1: checkEffects(7); duke@1: System.out.println(b.si); duke@1: if (b.si != 5) duke@1: AccessMethodsLHS.fail("simple assignment"); duke@1: System.out.println(b.si); duke@1: duke@1: if ((iBar(b).si += 10) != 15) duke@1: AccessMethodsLHS.fail("add-assign result"); duke@1: checkEffects(8); duke@1: System.out.println(b.si); duke@1: duke@1: if (b.si != 15) duke@1: AccessMethodsLHS.fail("add-assign effect"); duke@1: System.out.println(b.si); duke@1: duke@1: iBar(b).si = 0; duke@1: checkEffects(9); duke@1: iBar(b).si++; duke@1: checkEffects(10); duke@1: if (b.si != 1) duke@1: AccessMethodsLHS.fail("post-increment effect"); duke@1: System.out.println(b.si); duke@1: duke@1: b.si = 5; duke@1: if (iBar(b).si++ != 5) duke@1: AccessMethodsLHS.fail("post-increment result"); duke@1: checkEffects(11); duke@1: if (b.si != 6) duke@1: AccessMethodsLHS.fail("post-increment effect (embedded)"); duke@1: System.out.println(b.si); duke@1: duke@1: b.si = 1; duke@1: --iBar(b).si; duke@1: checkEffects(12); duke@1: if (b.si != 0) duke@1: AccessMethodsLHS.fail("pre-decrement effect"); duke@1: duke@1: b.si = 5; duke@1: if (--iBar(b).si != 4) duke@1: AccessMethodsLHS.fail("pre-decrement result"); duke@1: checkEffects(13); duke@1: if (b.si != 4) duke@1: AccessMethodsLHS.fail("pre-decrement effect (embedded)"); duke@1: System.out.println(b.si); duke@1: duke@1: duke@1: // *** Non-static class, Non-static members *** duke@1: duke@1: c.m(arg); duke@1: duke@1: iBaz(c).m(arg); duke@1: checkEffects(102); duke@1: duke@1: // Integer (1 word) duke@1: duke@1: c.i = 5; duke@1: System.out.println(c.i); duke@1: if (c.i != 5) duke@1: AccessMethodsLHS.fail("simple assignment"); duke@1: System.out.println(c.i); duke@1: duke@1: if ((c.i += 10) != 15) duke@1: AccessMethodsLHS.fail("add-assign result"); duke@1: System.out.println(c.i); duke@1: duke@1: if (c.i != 15) duke@1: AccessMethodsLHS.fail("add-assign effect"); duke@1: System.out.println(c.i); duke@1: duke@1: c.s = "foo"; duke@1: if (!(c.s += "bar").equals("foobar")) duke@1: AccessMethodsLHS.fail("concat-assign result"); duke@1: System.out.println(c.s); duke@1: duke@1: if (!c.s.equals("foobar")) duke@1: AccessMethodsLHS.fail("concat-assign effect"); duke@1: System.out.println(c.s); duke@1: duke@1: c.s = "foo"; duke@1: c.s += "bar"; duke@1: if (!c.s.equals("foobar")) duke@1: AccessMethodsLHS.fail("concat-assign effect (novalue)"); duke@1: System.out.println(c.s); duke@1: duke@1: c.i = 0; duke@1: c.i++; duke@1: if (c.i != 1) duke@1: AccessMethodsLHS.fail("post-increment effect"); duke@1: System.out.println(c.i); duke@1: duke@1: c.i = 5; duke@1: if (c.i++ != 5) duke@1: AccessMethodsLHS.fail("post-increment result"); duke@1: if (c.i != 6) duke@1: AccessMethodsLHS.fail("post-increment effect (embedded)"); duke@1: System.out.println(c.i); duke@1: duke@1: c.i = 1; duke@1: --c.i; duke@1: if (c.i != 0) duke@1: AccessMethodsLHS.fail("pre-decrement effect"); duke@1: duke@1: c.i = 5; duke@1: if (--c.i != 4) duke@1: AccessMethodsLHS.fail("pre-decrement result"); duke@1: if (c.i != 4) duke@1: AccessMethodsLHS.fail("pre-decrement effect (embedded)"); duke@1: System.out.println(c.i); duke@1: duke@1: // Double (2 word) duke@1: duke@1: c.d = 5.0; duke@1: System.out.println(c.d); duke@1: if (c.d != 5.0) duke@1: AccessMethodsLHS.fail("simple assignment"); duke@1: System.out.println(c.d); duke@1: duke@1: if ((c.d += 10) != 15.0) duke@1: AccessMethodsLHS.fail("add-assign result"); duke@1: System.out.println(c.d); duke@1: duke@1: if (c.d != 15.0) duke@1: AccessMethodsLHS.fail("add-assign effect"); duke@1: System.out.println(c.d); duke@1: duke@1: c.d = 0.0; duke@1: c.d++; duke@1: if (c.d != 1.0) duke@1: AccessMethodsLHS.fail("post-increment effect"); duke@1: System.out.println(c.d); duke@1: duke@1: c.d = 5.0; duke@1: if (c.d++ != 5.0) duke@1: AccessMethodsLHS.fail("post-increment result"); duke@1: if (c.d != 6.0) duke@1: AccessMethodsLHS.fail("post-increment effect (embedded)"); duke@1: System.out.println(c.d); duke@1: duke@1: c.d = 1.0; duke@1: --c.d; duke@1: if (c.d != 0.0) duke@1: AccessMethodsLHS.fail("pre-decrement effect"); duke@1: duke@1: c.d = 5.0; duke@1: if (--c.d != 4.0) duke@1: AccessMethodsLHS.fail("pre-decrement result"); duke@1: if (c.d != 4.0) duke@1: AccessMethodsLHS.fail("pre-decrement effect (embedded)"); duke@1: System.out.println(c.d); duke@1: duke@1: // Double (2 word) with side-effects in object reference duke@1: duke@1: iBaz(c).d = 5.0; duke@1: checkEffects(14); duke@1: System.out.println(c.d); duke@1: if (c.d != 5.0) duke@1: AccessMethodsLHS.fail("simple assignment"); duke@1: System.out.println(c.d); duke@1: duke@1: if ((iBaz(c).d += 10) != 15.0) duke@1: AccessMethodsLHS.fail("add-assign result"); duke@1: checkEffects(15); duke@1: System.out.println(c.d); duke@1: duke@1: if (c.d != 15.0) duke@1: AccessMethodsLHS.fail("add-assign effect"); duke@1: System.out.println(c.d); duke@1: duke@1: c.d = 0.0; duke@1: iBaz(c).d++; duke@1: checkEffects(16); duke@1: if (c.d != 1.0) duke@1: AccessMethodsLHS.fail("post-increment effect"); duke@1: System.out.println(c.d); duke@1: duke@1: c.d = 5.0; duke@1: if (iBaz(c).d++ != 5.0) duke@1: AccessMethodsLHS.fail("post-increment result"); duke@1: checkEffects(17); duke@1: if (c.d != 6.0) duke@1: AccessMethodsLHS.fail("post-increment effect (embedded)"); duke@1: System.out.println(c.d); duke@1: duke@1: c.d = 1.0; duke@1: --iBaz(c).d; duke@1: checkEffects(18); duke@1: if (c.d != 0.0) duke@1: AccessMethodsLHS.fail("pre-decrement effect"); duke@1: duke@1: c.d = 5.0; duke@1: if (--iBaz(c).d != 4.0) duke@1: AccessMethodsLHS.fail("pre-decrement result"); duke@1: checkEffects(19); duke@1: if (c.d != 4.0) duke@1: AccessMethodsLHS.fail("pre-decrement effect (embedded)"); duke@1: System.out.println(c.d); duke@1: duke@1: // All done. duke@1: duke@1: System.out.println("done"); duke@1: } duke@1: }