/*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
* @test
* @bug 4102566
* @summary Test access methods for assignment targets.
* @author William Maddox (maddox)
*
* @compile AccessMethodsLHS.java
* @run main AccessMethodsLHS
*/
public class AccessMethodsLHS {
}
private int i;
private double d;
private void m(int x) throws Exception {
if (x != 123456)
}
public static class Bar {
private int i;
private double d;
private String s;
private void m(int x) throws Exception {
if (x != 123456)
}
// Static members are permitted in a static inner class.
static private int si;
static private double sd;
if (x != 123456)
}
}
public static class Baz {
private int i;
private double d;
private String s;
private void m(int x) throws Exception {
if (x != 123456)
}
// Compiler rejects static members here correctly.
// static private int si;
// static private double sd;
// static private String ss;
}
public class Quux {
m(arg);
i = 1;
d = 1.0;
i += 5;
i--;
}
f.m(arg);
}
}
public static class Quem {
void DoIt () {
// Illegal static refs to non-static vars
// i = 1;
// d = 1.0;
// i += 5;
// i--;
}
}
if (effects != 1) {
}
effects = 0;
}
AccessMethodsLHS f = new AccessMethodsLHS();
// *** Static class, Non-static members ***
b.m(arg);
// Integer (1 word)
b.i = 5;
if (b.i != 5)
if ((b.i += 10) != 15)
if (b.i != 15)
b.s = "foo";
if (!b.s.equals("foobar"))
b.s = "foo";
b.s += "bar";
if (!b.s.equals("foobar"))
b.i = 0;
b.i++;
if (b.i != 1)
b.i = 5;
if (b.i++ != 5)
if (b.i != 6)
b.i = 1;
--b.i;
if (b.i != 0)
b.i = 5;
if (--b.i != 4)
if (b.i != 4)
// Double (2 word)
b.d = 5.0;
if (b.d != 5.0)
if ((b.d += 10) != 15.0)
if (b.d != 15.0)
b.d = 0.0;
b.d++;
if (b.d != 1.0)
b.d = 5.0;
if (b.d++ != 5.0)
if (b.d != 6.0)
b.d = 1.0;
--b.d;
if (b.d != 0.0)
b.d = 5.0;
if (--b.d != 4.0)
if (b.d != 4.0)
// Integer (1 word) with side-effects in object reference
iBar(b).i = 5;
checkEffects(1);
if (b.i != 5)
checkEffects(2);
if (b.i != 15)
b.i = 0;
iBar(b).i++;
checkEffects(3);
if (b.i != 1)
b.i = 5;
if (iBar(b).i++ != 5)
checkEffects(4);
if (b.i != 6)
b.i = 1;
--iBar(b).i;
checkEffects(5);
if (b.i != 0)
b.i = 5;
if (--iBar(b).i != 4)
checkEffects(6);
if (b.i != 4)
// *** Static class, Static members ***
// Integer (1 word)
// Double (2 word)
// *** Static class, Static members (invoked via object reference) ***
checkEffects(101);
// Integer (1 word)
b.si = 5;
if (b.si != 5)
if (b.si != 15)
b.ss = "foo";
b.ss = "foo";
b.ss += "bar";
b.si = 0;
b.si++;
if (b.si != 1)
b.si = 5;
if (b.si++ != 5)
if (b.si != 6)
b.si = 1;
--b.si;
if (b.si != 0)
b.si = 5;
if (--b.si != 4)
if (b.si != 4)
// Double (2 word)
b.sd = 5.0;
if (b.sd != 5.0)
if (b.sd != 15.0)
b.sd = 0.0;
b.sd++;
if (b.sd != 1.0)
b.sd = 5.0;
if (b.sd++ != 5.0)
if (b.sd != 6.0)
b.sd = 1.0;
--b.sd;
if (b.sd != 0.0)
b.sd = 5.0;
if (--b.sd != 4.0)
if (b.sd != 4.0)
// Integer (1 word) with side-effects in object reference
checkEffects(7);
if (b.si != 5)
checkEffects(8);
if (b.si != 15)
checkEffects(9);
checkEffects(10);
if (b.si != 1)
b.si = 5;
checkEffects(11);
if (b.si != 6)
b.si = 1;
checkEffects(12);
if (b.si != 0)
b.si = 5;
checkEffects(13);
if (b.si != 4)
// *** Non-static class, Non-static members ***
c.m(arg);
checkEffects(102);
// Integer (1 word)
c.i = 5;
if (c.i != 5)
if ((c.i += 10) != 15)
if (c.i != 15)
c.s = "foo";
if (!c.s.equals("foobar"))
c.s = "foo";
c.s += "bar";
if (!c.s.equals("foobar"))
c.i = 0;
c.i++;
if (c.i != 1)
c.i = 5;
if (c.i++ != 5)
if (c.i != 6)
c.i = 1;
--c.i;
if (c.i != 0)
c.i = 5;
if (--c.i != 4)
if (c.i != 4)
// Double (2 word)
c.d = 5.0;
if (c.d != 5.0)
if ((c.d += 10) != 15.0)
if (c.d != 15.0)
c.d = 0.0;
c.d++;
if (c.d != 1.0)
c.d = 5.0;
if (c.d++ != 5.0)
if (c.d != 6.0)
c.d = 1.0;
--c.d;
if (c.d != 0.0)
c.d = 5.0;
if (--c.d != 4.0)
if (c.d != 4.0)
// Double (2 word) with side-effects in object reference
iBaz(c).d = 5.0;
checkEffects(14);
if (c.d != 5.0)
checkEffects(15);
if (c.d != 15.0)
c.d = 0.0;
iBaz(c).d++;
checkEffects(16);
if (c.d != 1.0)
c.d = 5.0;
if (iBaz(c).d++ != 5.0)
checkEffects(17);
if (c.d != 6.0)
c.d = 1.0;
--iBaz(c).d;
checkEffects(18);
if (c.d != 0.0)
c.d = 5.0;
if (--iBaz(c).d != 4.0)
checkEffects(19);
if (c.d != 4.0)
// All done.
}
}