test/tools/javac/AccessMethods/AccessMethodsLHS.java

Wed, 27 Apr 2016 01:34:52 +0800

author
aoqi
date
Wed, 27 Apr 2016 01:34:52 +0800
changeset 0
959103a6100f
child 2525
2eb010b6cb22
permissions
-rw-r--r--

Initial load
http://hg.openjdk.java.net/jdk8u/jdk8u/langtools/
changeset: 2573:53ca196be1ae
tag: jdk8u25-b17

aoqi@0 1 /*
aoqi@0 2 * Copyright (c) 1998, Oracle and/or its affiliates. All rights reserved.
aoqi@0 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
aoqi@0 4 *
aoqi@0 5 * This code is free software; you can redistribute it and/or modify it
aoqi@0 6 * under the terms of the GNU General Public License version 2 only, as
aoqi@0 7 * published by the Free Software Foundation.
aoqi@0 8 *
aoqi@0 9 * This code is distributed in the hope that it will be useful, but WITHOUT
aoqi@0 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
aoqi@0 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
aoqi@0 12 * version 2 for more details (a copy is included in the LICENSE file that
aoqi@0 13 * accompanied this code).
aoqi@0 14 *
aoqi@0 15 * You should have received a copy of the GNU General Public License version
aoqi@0 16 * 2 along with this work; if not, write to the Free Software Foundation,
aoqi@0 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
aoqi@0 18 *
aoqi@0 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
aoqi@0 20 * or visit www.oracle.com if you need additional information or have any
aoqi@0 21 * questions.
aoqi@0 22 */
aoqi@0 23
aoqi@0 24 /*
aoqi@0 25 * @test
aoqi@0 26 * @bug 4102566
aoqi@0 27 * @summary Test access methods for assignment targets.
aoqi@0 28 * @author William Maddox (maddox)
aoqi@0 29 *
aoqi@0 30 * @compile AccessMethodsLHS.java
aoqi@0 31 * @run main AccessMethodsLHS
aoqi@0 32 */
aoqi@0 33
aoqi@0 34 public class AccessMethodsLHS {
aoqi@0 35
aoqi@0 36 static void fail(String msg) throws Exception {
aoqi@0 37 throw new Exception("FAIL: " + msg);
aoqi@0 38 }
aoqi@0 39
aoqi@0 40 static int arg = 123456;
aoqi@0 41
aoqi@0 42 private int i;
aoqi@0 43 private double d;
aoqi@0 44
aoqi@0 45 private void m(int x) throws Exception {
aoqi@0 46 System.out.println("called AccessMethodsLHS.m");
aoqi@0 47 if (x != 123456)
aoqi@0 48 AccessMethodsLHS.fail("bad argument");
aoqi@0 49 }
aoqi@0 50
aoqi@0 51 public static class Bar {
aoqi@0 52 private int i;
aoqi@0 53 private double d;
aoqi@0 54 private String s;
aoqi@0 55
aoqi@0 56 private void m(int x) throws Exception {
aoqi@0 57 System.out.println("called AccessMethodsLHS.Bar.m");
aoqi@0 58 if (x != 123456)
aoqi@0 59 AccessMethodsLHS.fail("bad argument");
aoqi@0 60 }
aoqi@0 61
aoqi@0 62 // Static members are permitted in a static inner class.
aoqi@0 63
aoqi@0 64 static private int si;
aoqi@0 65 static private double sd;
aoqi@0 66 static private String ss;
aoqi@0 67
aoqi@0 68 static private void sm(int x) throws Exception {
aoqi@0 69 System.out.println("called AccessMethodsLHS.Bar.sm");
aoqi@0 70 if (x != 123456)
aoqi@0 71 AccessMethodsLHS.fail("bad argument");
aoqi@0 72 }
aoqi@0 73 }
aoqi@0 74
aoqi@0 75 public static class Baz {
aoqi@0 76 private int i;
aoqi@0 77 private double d;
aoqi@0 78 private String s;
aoqi@0 79
aoqi@0 80 private void m(int x) throws Exception {
aoqi@0 81 System.out.println("called Baz.m");
aoqi@0 82 if (x != 123456)
aoqi@0 83 AccessMethodsLHS.fail("bad argument");
aoqi@0 84 }
aoqi@0 85
aoqi@0 86 // Compiler rejects static members here correctly.
aoqi@0 87
aoqi@0 88 // static private int si;
aoqi@0 89 // static private double sd;
aoqi@0 90 // static private String ss;
aoqi@0 91 }
aoqi@0 92
aoqi@0 93 public class Quux {
aoqi@0 94 void DoIt () throws Exception {
aoqi@0 95 m(arg);
aoqi@0 96 i = 1;
aoqi@0 97 d = 1.0;
aoqi@0 98 i += 5;
aoqi@0 99 i--;
aoqi@0 100 }
aoqi@0 101 void DoMore(AccessMethodsLHS f) throws Exception {
aoqi@0 102 f.m(arg);
aoqi@0 103 }
aoqi@0 104 }
aoqi@0 105
aoqi@0 106 public static class Quem {
aoqi@0 107 void DoIt () {
aoqi@0 108 // Illegal static refs to non-static vars
aoqi@0 109 // i = 1;
aoqi@0 110 // d = 1.0;
aoqi@0 111 // i += 5;
aoqi@0 112 // i--;
aoqi@0 113 }
aoqi@0 114 }
aoqi@0 115
aoqi@0 116 static int effects = 0;
aoqi@0 117
aoqi@0 118 static Bar iBar(Bar x) { effects++; return x; }
aoqi@0 119
aoqi@0 120 static Baz iBaz(Baz x) { effects++; return x; }
aoqi@0 121
aoqi@0 122 static void checkEffects(int i) throws Exception {
aoqi@0 123 if (effects != 1) {
aoqi@0 124 AccessMethodsLHS.fail("incorrect side-effect behavior (" + effects + "): " + i);
aoqi@0 125 }
aoqi@0 126 effects = 0;
aoqi@0 127 }
aoqi@0 128
aoqi@0 129 static public void main(String args[]) throws Exception {
aoqi@0 130
aoqi@0 131 Bar b = new Bar();
aoqi@0 132 Baz c = new Baz();
aoqi@0 133
aoqi@0 134 System.out.println("testing assignment");
aoqi@0 135
aoqi@0 136 AccessMethodsLHS f = new AccessMethodsLHS();
aoqi@0 137
aoqi@0 138 Quux q1 = f.new Quux();
aoqi@0 139 q1.DoIt();
aoqi@0 140 q1.DoMore(f);
aoqi@0 141
aoqi@0 142 Quem q2 = new Quem();
aoqi@0 143 q2.DoIt();
aoqi@0 144
aoqi@0 145 // *** Static class, Non-static members ***
aoqi@0 146
aoqi@0 147 b.m(arg);
aoqi@0 148
aoqi@0 149 // Integer (1 word)
aoqi@0 150
aoqi@0 151 b.i = 5;
aoqi@0 152 System.out.println(b.i);
aoqi@0 153 if (b.i != 5)
aoqi@0 154 AccessMethodsLHS.fail("simple assignment");
aoqi@0 155 System.out.println(b.i);
aoqi@0 156
aoqi@0 157
aoqi@0 158 if ((b.i += 10) != 15)
aoqi@0 159 AccessMethodsLHS.fail("add-assign result");
aoqi@0 160 System.out.println(b.i);
aoqi@0 161
aoqi@0 162 if (b.i != 15)
aoqi@0 163 AccessMethodsLHS.fail("add-assign effect");
aoqi@0 164 System.out.println(b.i);
aoqi@0 165
aoqi@0 166 b.s = "foo";
aoqi@0 167 if (!(b.s += "bar").equals("foobar"))
aoqi@0 168 AccessMethodsLHS.fail("concat-assign result");
aoqi@0 169 System.out.println(b.s);
aoqi@0 170
aoqi@0 171 if (!b.s.equals("foobar"))
aoqi@0 172 AccessMethodsLHS.fail("concat-assign effect");
aoqi@0 173 System.out.println(b.s);
aoqi@0 174
aoqi@0 175 b.s = "foo";
aoqi@0 176 b.s += "bar";
aoqi@0 177 if (!b.s.equals("foobar"))
aoqi@0 178 AccessMethodsLHS.fail("concat-assign effect (novalue)");
aoqi@0 179 System.out.println(b.s);
aoqi@0 180
aoqi@0 181 b.i = 0;
aoqi@0 182 b.i++;
aoqi@0 183 if (b.i != 1)
aoqi@0 184 AccessMethodsLHS.fail("post-increment effect");
aoqi@0 185 System.out.println(b.i);
aoqi@0 186
aoqi@0 187 b.i = 5;
aoqi@0 188 if (b.i++ != 5)
aoqi@0 189 AccessMethodsLHS.fail("post-increment result");
aoqi@0 190 if (b.i != 6)
aoqi@0 191 AccessMethodsLHS.fail("post-increment effect (embedded)");
aoqi@0 192 System.out.println(b.i);
aoqi@0 193
aoqi@0 194 b.i = 1;
aoqi@0 195 --b.i;
aoqi@0 196 if (b.i != 0)
aoqi@0 197 AccessMethodsLHS.fail("pre-decrement effect");
aoqi@0 198
aoqi@0 199 b.i = 5;
aoqi@0 200 if (--b.i != 4)
aoqi@0 201 AccessMethodsLHS.fail("pre-decrement result");
aoqi@0 202 if (b.i != 4)
aoqi@0 203 AccessMethodsLHS.fail("pre-decrement effect (embedded)");
aoqi@0 204 System.out.println(b.i);
aoqi@0 205
aoqi@0 206 // Double (2 word)
aoqi@0 207
aoqi@0 208 b.d = 5.0;
aoqi@0 209 System.out.println(b.d);
aoqi@0 210 if (b.d != 5.0)
aoqi@0 211 AccessMethodsLHS.fail("simple assignment");
aoqi@0 212 System.out.println(b.d);
aoqi@0 213
aoqi@0 214 if ((b.d += 10) != 15.0)
aoqi@0 215 AccessMethodsLHS.fail("add-assign result");
aoqi@0 216 System.out.println(b.d);
aoqi@0 217
aoqi@0 218 if (b.d != 15.0)
aoqi@0 219 AccessMethodsLHS.fail("add-assign effect");
aoqi@0 220 System.out.println(b.d);
aoqi@0 221
aoqi@0 222 b.d = 0.0;
aoqi@0 223 b.d++;
aoqi@0 224 if (b.d != 1.0)
aoqi@0 225 AccessMethodsLHS.fail("post-increment effect");
aoqi@0 226 System.out.println(b.d);
aoqi@0 227
aoqi@0 228 b.d = 5.0;
aoqi@0 229 if (b.d++ != 5.0)
aoqi@0 230 AccessMethodsLHS.fail("post-increment result");
aoqi@0 231 if (b.d != 6.0)
aoqi@0 232 AccessMethodsLHS.fail("post-increment effect (embedded)");
aoqi@0 233 System.out.println(b.d);
aoqi@0 234
aoqi@0 235 b.d = 1.0;
aoqi@0 236 --b.d;
aoqi@0 237 if (b.d != 0.0)
aoqi@0 238 AccessMethodsLHS.fail("pre-decrement effect");
aoqi@0 239
aoqi@0 240 b.d = 5.0;
aoqi@0 241 if (--b.d != 4.0)
aoqi@0 242 AccessMethodsLHS.fail("pre-decrement result");
aoqi@0 243 if (b.d != 4.0)
aoqi@0 244 AccessMethodsLHS.fail("pre-decrement effect (embedded)");
aoqi@0 245 System.out.println(b.d);
aoqi@0 246
aoqi@0 247 // Integer (1 word) with side-effects in object reference
aoqi@0 248
aoqi@0 249 iBar(b).i = 5;
aoqi@0 250 checkEffects(1);
aoqi@0 251 System.out.println(b.i);
aoqi@0 252 if (b.i != 5)
aoqi@0 253 AccessMethodsLHS.fail("simple assignment");
aoqi@0 254
aoqi@0 255 System.out.println(b.i);
aoqi@0 256
aoqi@0 257 if ((iBar(b).i += 10) != 15)
aoqi@0 258 AccessMethodsLHS.fail("add-assign result");
aoqi@0 259 checkEffects(2);
aoqi@0 260 System.out.println(b.i);
aoqi@0 261
aoqi@0 262 if (b.i != 15)
aoqi@0 263 AccessMethodsLHS.fail("add-assign effect");
aoqi@0 264 System.out.println(b.i);
aoqi@0 265
aoqi@0 266 b.i = 0;
aoqi@0 267 iBar(b).i++;
aoqi@0 268 checkEffects(3);
aoqi@0 269 if (b.i != 1)
aoqi@0 270 AccessMethodsLHS.fail("post-increment effect");
aoqi@0 271 System.out.println(b.i);
aoqi@0 272
aoqi@0 273 b.i = 5;
aoqi@0 274 if (iBar(b).i++ != 5)
aoqi@0 275 AccessMethodsLHS.fail("post-increment result");
aoqi@0 276 checkEffects(4);
aoqi@0 277 if (b.i != 6)
aoqi@0 278 AccessMethodsLHS.fail("post-increment effect (embedded)");
aoqi@0 279 System.out.println(b.i);
aoqi@0 280
aoqi@0 281 b.i = 1;
aoqi@0 282 --iBar(b).i;
aoqi@0 283 checkEffects(5);
aoqi@0 284 if (b.i != 0)
aoqi@0 285 AccessMethodsLHS.fail("pre-decrement effect");
aoqi@0 286
aoqi@0 287 b.i = 5;
aoqi@0 288 if (--iBar(b).i != 4)
aoqi@0 289 AccessMethodsLHS.fail("pre-decrement result");
aoqi@0 290 checkEffects(6);
aoqi@0 291 if (b.i != 4)
aoqi@0 292 AccessMethodsLHS.fail("pre-decrement effect (embedded)");
aoqi@0 293 System.out.println(b.i);
aoqi@0 294
aoqi@0 295
aoqi@0 296 // *** Static class, Static members ***
aoqi@0 297
aoqi@0 298 Bar.sm(arg);
aoqi@0 299
aoqi@0 300 // Integer (1 word)
aoqi@0 301
aoqi@0 302 Bar.si = 5;
aoqi@0 303 System.out.println(Bar.si);
aoqi@0 304 if (Bar.si != 5)
aoqi@0 305 AccessMethodsLHS.fail("simple assignment");
aoqi@0 306 System.out.println(Bar.si);
aoqi@0 307
aoqi@0 308 if ((Bar.si += 10) != 15)
aoqi@0 309 AccessMethodsLHS.fail("add-assign result");
aoqi@0 310 System.out.println(Bar.si);
aoqi@0 311
aoqi@0 312 if (Bar.si != 15)
aoqi@0 313 AccessMethodsLHS.fail("add-assign effect");
aoqi@0 314 System.out.println(Bar.si);
aoqi@0 315
aoqi@0 316 Bar.ss = "foo";
aoqi@0 317 if (!(Bar.ss += "bar").equals("foobar"))
aoqi@0 318 AccessMethodsLHS.fail("concat-assign result");
aoqi@0 319 System.out.println(Bar.ss);
aoqi@0 320
aoqi@0 321 if (!Bar.ss.equals("foobar"))
aoqi@0 322 AccessMethodsLHS.fail("concat-assign effect");
aoqi@0 323 System.out.println(Bar.ss);
aoqi@0 324
aoqi@0 325 Bar.ss = "foo";
aoqi@0 326 Bar.ss += "bar";
aoqi@0 327 if (!Bar.ss.equals("foobar"))
aoqi@0 328 AccessMethodsLHS.fail("concat-assign effect (novalue)");
aoqi@0 329 System.out.println(Bar.ss);
aoqi@0 330
aoqi@0 331 Bar.si = 0;
aoqi@0 332 Bar.si++;
aoqi@0 333 if (Bar.si != 1)
aoqi@0 334 AccessMethodsLHS.fail("post-increment effect");
aoqi@0 335 System.out.println(Bar.si);
aoqi@0 336
aoqi@0 337 Bar.si = 5;
aoqi@0 338 if (Bar.si++ != 5)
aoqi@0 339 AccessMethodsLHS.fail("post-increment result");
aoqi@0 340 if (Bar.si != 6)
aoqi@0 341 AccessMethodsLHS.fail("post-increment effect (embedded)");
aoqi@0 342 System.out.println(Bar.si);
aoqi@0 343
aoqi@0 344 Bar.si = 1;
aoqi@0 345 --Bar.si;
aoqi@0 346 if (Bar.si != 0)
aoqi@0 347 AccessMethodsLHS.fail("pre-decrement effect");
aoqi@0 348
aoqi@0 349 Bar.si = 5;
aoqi@0 350 if (--Bar.si != 4)
aoqi@0 351 AccessMethodsLHS.fail("pre-decrement result");
aoqi@0 352 if (Bar.si != 4)
aoqi@0 353 AccessMethodsLHS.fail("pre-decrement effect (embedded)");
aoqi@0 354 System.out.println(Bar.si);
aoqi@0 355
aoqi@0 356 // Double (2 word)
aoqi@0 357
aoqi@0 358 Bar.sd = 5.0;
aoqi@0 359 System.out.println(Bar.sd);
aoqi@0 360 if (Bar.sd != 5.0)
aoqi@0 361 AccessMethodsLHS.fail("simple assignment");
aoqi@0 362 System.out.println(Bar.sd);
aoqi@0 363
aoqi@0 364 if ((Bar.sd += 10) != 15.0)
aoqi@0 365 AccessMethodsLHS.fail("add-assign result");
aoqi@0 366 System.out.println(Bar.sd);
aoqi@0 367
aoqi@0 368 if (Bar.sd != 15.0)
aoqi@0 369 AccessMethodsLHS.fail("add-assign effect");
aoqi@0 370 System.out.println(Bar.sd);
aoqi@0 371
aoqi@0 372 Bar.sd = 0.0;
aoqi@0 373 Bar.sd++;
aoqi@0 374 if (Bar.sd != 1.0)
aoqi@0 375 AccessMethodsLHS.fail("post-increment effect");
aoqi@0 376 System.out.println(Bar.sd);
aoqi@0 377
aoqi@0 378 Bar.sd = 5.0;
aoqi@0 379 if (Bar.sd++ != 5.0)
aoqi@0 380 AccessMethodsLHS.fail("post-increment result");
aoqi@0 381 if (Bar.sd != 6.0)
aoqi@0 382 AccessMethodsLHS.fail("post-increment effect (embedded)");
aoqi@0 383 System.out.println(Bar.sd);
aoqi@0 384
aoqi@0 385 Bar.sd = 1.0;
aoqi@0 386 --Bar.sd;
aoqi@0 387 if (Bar.sd != 0.0)
aoqi@0 388 AccessMethodsLHS.fail("pre-decrement effect");
aoqi@0 389
aoqi@0 390 Bar.sd = 5.0;
aoqi@0 391 if (--Bar.sd != 4.0)
aoqi@0 392 AccessMethodsLHS.fail("pre-decrement result");
aoqi@0 393 if (Bar.sd != 4.0)
aoqi@0 394 AccessMethodsLHS.fail("pre-decrement effect (embedded)");
aoqi@0 395 System.out.println(Bar.sd);
aoqi@0 396
aoqi@0 397
aoqi@0 398 // *** Static class, Static members (invoked via object reference) ***
aoqi@0 399
aoqi@0 400 b.sm(arg);
aoqi@0 401
aoqi@0 402 iBar(b).sm(arg);
aoqi@0 403 checkEffects(101);
aoqi@0 404
aoqi@0 405 // Integer (1 word)
aoqi@0 406
aoqi@0 407 b.si = 5;
aoqi@0 408 System.out.println(b.si);
aoqi@0 409 if (b.si != 5)
aoqi@0 410 AccessMethodsLHS.fail("simple assignment");
aoqi@0 411 System.out.println(b.si);
aoqi@0 412
aoqi@0 413 if ((b.si += 10) != 15)
aoqi@0 414 AccessMethodsLHS.fail("add-assign result");
aoqi@0 415 System.out.println(b.si);
aoqi@0 416
aoqi@0 417 if (b.si != 15)
aoqi@0 418 AccessMethodsLHS.fail("add-assign effect");
aoqi@0 419 System.out.println(b.si);
aoqi@0 420
aoqi@0 421 b.ss = "foo";
aoqi@0 422 if (!(b.ss += "bar").equals("foobar"))
aoqi@0 423 AccessMethodsLHS.fail("concat-assign result");
aoqi@0 424 System.out.println(b.ss);
aoqi@0 425
aoqi@0 426 if (!b.ss.equals("foobar"))
aoqi@0 427 AccessMethodsLHS.fail("concat-assign effect");
aoqi@0 428 System.out.println(b.ss);
aoqi@0 429
aoqi@0 430 b.ss = "foo";
aoqi@0 431 b.ss += "bar";
aoqi@0 432 if (!b.ss.equals("foobar"))
aoqi@0 433 AccessMethodsLHS.fail("concat-assign effect (novalue)");
aoqi@0 434 System.out.println(b.ss);
aoqi@0 435
aoqi@0 436 b.si = 0;
aoqi@0 437 b.si++;
aoqi@0 438 if (b.si != 1)
aoqi@0 439 AccessMethodsLHS.fail("post-increment effect");
aoqi@0 440 System.out.println(b.si);
aoqi@0 441
aoqi@0 442 b.si = 5;
aoqi@0 443 if (b.si++ != 5)
aoqi@0 444 AccessMethodsLHS.fail("post-increment result");
aoqi@0 445 if (b.si != 6)
aoqi@0 446 AccessMethodsLHS.fail("post-increment effect (embedded)");
aoqi@0 447 System.out.println(b.si);
aoqi@0 448
aoqi@0 449 b.si = 1;
aoqi@0 450 --b.si;
aoqi@0 451 if (b.si != 0)
aoqi@0 452 AccessMethodsLHS.fail("pre-decrement effect");
aoqi@0 453
aoqi@0 454 b.si = 5;
aoqi@0 455 if (--b.si != 4)
aoqi@0 456 AccessMethodsLHS.fail("pre-decrement result");
aoqi@0 457 if (b.si != 4)
aoqi@0 458 AccessMethodsLHS.fail("pre-decrement effect (embedded)");
aoqi@0 459 System.out.println(b.si);
aoqi@0 460
aoqi@0 461 // Double (2 word)
aoqi@0 462
aoqi@0 463 b.sd = 5.0;
aoqi@0 464 System.out.println(b.sd);
aoqi@0 465 if (b.sd != 5.0)
aoqi@0 466 AccessMethodsLHS.fail("simple assignment");
aoqi@0 467 System.out.println(b.sd);
aoqi@0 468
aoqi@0 469 if ((b.sd += 10) != 15.0)
aoqi@0 470 AccessMethodsLHS.fail("add-assign result");
aoqi@0 471 System.out.println(b.sd);
aoqi@0 472
aoqi@0 473 if (b.sd != 15.0)
aoqi@0 474 AccessMethodsLHS.fail("add-assign effect");
aoqi@0 475 System.out.println(b.sd);
aoqi@0 476
aoqi@0 477 b.sd = 0.0;
aoqi@0 478 b.sd++;
aoqi@0 479 if (b.sd != 1.0)
aoqi@0 480 AccessMethodsLHS.fail("post-increment effect");
aoqi@0 481 System.out.println(b.sd);
aoqi@0 482
aoqi@0 483 b.sd = 5.0;
aoqi@0 484 if (b.sd++ != 5.0)
aoqi@0 485 AccessMethodsLHS.fail("post-increment result");
aoqi@0 486 if (b.sd != 6.0)
aoqi@0 487 AccessMethodsLHS.fail("post-increment effect (embedded)");
aoqi@0 488 System.out.println(b.sd);
aoqi@0 489
aoqi@0 490 b.sd = 1.0;
aoqi@0 491 --b.sd;
aoqi@0 492 if (b.sd != 0.0)
aoqi@0 493 AccessMethodsLHS.fail("pre-decrement effect");
aoqi@0 494
aoqi@0 495 b.sd = 5.0;
aoqi@0 496 if (--b.sd != 4.0)
aoqi@0 497 AccessMethodsLHS.fail("pre-decrement result");
aoqi@0 498 if (b.sd != 4.0)
aoqi@0 499 AccessMethodsLHS.fail("pre-decrement effect (embedded)");
aoqi@0 500 System.out.println(b.sd);
aoqi@0 501
aoqi@0 502 // Integer (1 word) with side-effects in object reference
aoqi@0 503
aoqi@0 504 iBar(b).si = 5;
aoqi@0 505 checkEffects(7);
aoqi@0 506 System.out.println(b.si);
aoqi@0 507 if (b.si != 5)
aoqi@0 508 AccessMethodsLHS.fail("simple assignment");
aoqi@0 509 System.out.println(b.si);
aoqi@0 510
aoqi@0 511 if ((iBar(b).si += 10) != 15)
aoqi@0 512 AccessMethodsLHS.fail("add-assign result");
aoqi@0 513 checkEffects(8);
aoqi@0 514 System.out.println(b.si);
aoqi@0 515
aoqi@0 516 if (b.si != 15)
aoqi@0 517 AccessMethodsLHS.fail("add-assign effect");
aoqi@0 518 System.out.println(b.si);
aoqi@0 519
aoqi@0 520 iBar(b).si = 0;
aoqi@0 521 checkEffects(9);
aoqi@0 522 iBar(b).si++;
aoqi@0 523 checkEffects(10);
aoqi@0 524 if (b.si != 1)
aoqi@0 525 AccessMethodsLHS.fail("post-increment effect");
aoqi@0 526 System.out.println(b.si);
aoqi@0 527
aoqi@0 528 b.si = 5;
aoqi@0 529 if (iBar(b).si++ != 5)
aoqi@0 530 AccessMethodsLHS.fail("post-increment result");
aoqi@0 531 checkEffects(11);
aoqi@0 532 if (b.si != 6)
aoqi@0 533 AccessMethodsLHS.fail("post-increment effect (embedded)");
aoqi@0 534 System.out.println(b.si);
aoqi@0 535
aoqi@0 536 b.si = 1;
aoqi@0 537 --iBar(b).si;
aoqi@0 538 checkEffects(12);
aoqi@0 539 if (b.si != 0)
aoqi@0 540 AccessMethodsLHS.fail("pre-decrement effect");
aoqi@0 541
aoqi@0 542 b.si = 5;
aoqi@0 543 if (--iBar(b).si != 4)
aoqi@0 544 AccessMethodsLHS.fail("pre-decrement result");
aoqi@0 545 checkEffects(13);
aoqi@0 546 if (b.si != 4)
aoqi@0 547 AccessMethodsLHS.fail("pre-decrement effect (embedded)");
aoqi@0 548 System.out.println(b.si);
aoqi@0 549
aoqi@0 550
aoqi@0 551 // *** Non-static class, Non-static members ***
aoqi@0 552
aoqi@0 553 c.m(arg);
aoqi@0 554
aoqi@0 555 iBaz(c).m(arg);
aoqi@0 556 checkEffects(102);
aoqi@0 557
aoqi@0 558 // Integer (1 word)
aoqi@0 559
aoqi@0 560 c.i = 5;
aoqi@0 561 System.out.println(c.i);
aoqi@0 562 if (c.i != 5)
aoqi@0 563 AccessMethodsLHS.fail("simple assignment");
aoqi@0 564 System.out.println(c.i);
aoqi@0 565
aoqi@0 566 if ((c.i += 10) != 15)
aoqi@0 567 AccessMethodsLHS.fail("add-assign result");
aoqi@0 568 System.out.println(c.i);
aoqi@0 569
aoqi@0 570 if (c.i != 15)
aoqi@0 571 AccessMethodsLHS.fail("add-assign effect");
aoqi@0 572 System.out.println(c.i);
aoqi@0 573
aoqi@0 574 c.s = "foo";
aoqi@0 575 if (!(c.s += "bar").equals("foobar"))
aoqi@0 576 AccessMethodsLHS.fail("concat-assign result");
aoqi@0 577 System.out.println(c.s);
aoqi@0 578
aoqi@0 579 if (!c.s.equals("foobar"))
aoqi@0 580 AccessMethodsLHS.fail("concat-assign effect");
aoqi@0 581 System.out.println(c.s);
aoqi@0 582
aoqi@0 583 c.s = "foo";
aoqi@0 584 c.s += "bar";
aoqi@0 585 if (!c.s.equals("foobar"))
aoqi@0 586 AccessMethodsLHS.fail("concat-assign effect (novalue)");
aoqi@0 587 System.out.println(c.s);
aoqi@0 588
aoqi@0 589 c.i = 0;
aoqi@0 590 c.i++;
aoqi@0 591 if (c.i != 1)
aoqi@0 592 AccessMethodsLHS.fail("post-increment effect");
aoqi@0 593 System.out.println(c.i);
aoqi@0 594
aoqi@0 595 c.i = 5;
aoqi@0 596 if (c.i++ != 5)
aoqi@0 597 AccessMethodsLHS.fail("post-increment result");
aoqi@0 598 if (c.i != 6)
aoqi@0 599 AccessMethodsLHS.fail("post-increment effect (embedded)");
aoqi@0 600 System.out.println(c.i);
aoqi@0 601
aoqi@0 602 c.i = 1;
aoqi@0 603 --c.i;
aoqi@0 604 if (c.i != 0)
aoqi@0 605 AccessMethodsLHS.fail("pre-decrement effect");
aoqi@0 606
aoqi@0 607 c.i = 5;
aoqi@0 608 if (--c.i != 4)
aoqi@0 609 AccessMethodsLHS.fail("pre-decrement result");
aoqi@0 610 if (c.i != 4)
aoqi@0 611 AccessMethodsLHS.fail("pre-decrement effect (embedded)");
aoqi@0 612 System.out.println(c.i);
aoqi@0 613
aoqi@0 614 // Double (2 word)
aoqi@0 615
aoqi@0 616 c.d = 5.0;
aoqi@0 617 System.out.println(c.d);
aoqi@0 618 if (c.d != 5.0)
aoqi@0 619 AccessMethodsLHS.fail("simple assignment");
aoqi@0 620 System.out.println(c.d);
aoqi@0 621
aoqi@0 622 if ((c.d += 10) != 15.0)
aoqi@0 623 AccessMethodsLHS.fail("add-assign result");
aoqi@0 624 System.out.println(c.d);
aoqi@0 625
aoqi@0 626 if (c.d != 15.0)
aoqi@0 627 AccessMethodsLHS.fail("add-assign effect");
aoqi@0 628 System.out.println(c.d);
aoqi@0 629
aoqi@0 630 c.d = 0.0;
aoqi@0 631 c.d++;
aoqi@0 632 if (c.d != 1.0)
aoqi@0 633 AccessMethodsLHS.fail("post-increment effect");
aoqi@0 634 System.out.println(c.d);
aoqi@0 635
aoqi@0 636 c.d = 5.0;
aoqi@0 637 if (c.d++ != 5.0)
aoqi@0 638 AccessMethodsLHS.fail("post-increment result");
aoqi@0 639 if (c.d != 6.0)
aoqi@0 640 AccessMethodsLHS.fail("post-increment effect (embedded)");
aoqi@0 641 System.out.println(c.d);
aoqi@0 642
aoqi@0 643 c.d = 1.0;
aoqi@0 644 --c.d;
aoqi@0 645 if (c.d != 0.0)
aoqi@0 646 AccessMethodsLHS.fail("pre-decrement effect");
aoqi@0 647
aoqi@0 648 c.d = 5.0;
aoqi@0 649 if (--c.d != 4.0)
aoqi@0 650 AccessMethodsLHS.fail("pre-decrement result");
aoqi@0 651 if (c.d != 4.0)
aoqi@0 652 AccessMethodsLHS.fail("pre-decrement effect (embedded)");
aoqi@0 653 System.out.println(c.d);
aoqi@0 654
aoqi@0 655 // Double (2 word) with side-effects in object reference
aoqi@0 656
aoqi@0 657 iBaz(c).d = 5.0;
aoqi@0 658 checkEffects(14);
aoqi@0 659 System.out.println(c.d);
aoqi@0 660 if (c.d != 5.0)
aoqi@0 661 AccessMethodsLHS.fail("simple assignment");
aoqi@0 662 System.out.println(c.d);
aoqi@0 663
aoqi@0 664 if ((iBaz(c).d += 10) != 15.0)
aoqi@0 665 AccessMethodsLHS.fail("add-assign result");
aoqi@0 666 checkEffects(15);
aoqi@0 667 System.out.println(c.d);
aoqi@0 668
aoqi@0 669 if (c.d != 15.0)
aoqi@0 670 AccessMethodsLHS.fail("add-assign effect");
aoqi@0 671 System.out.println(c.d);
aoqi@0 672
aoqi@0 673 c.d = 0.0;
aoqi@0 674 iBaz(c).d++;
aoqi@0 675 checkEffects(16);
aoqi@0 676 if (c.d != 1.0)
aoqi@0 677 AccessMethodsLHS.fail("post-increment effect");
aoqi@0 678 System.out.println(c.d);
aoqi@0 679
aoqi@0 680 c.d = 5.0;
aoqi@0 681 if (iBaz(c).d++ != 5.0)
aoqi@0 682 AccessMethodsLHS.fail("post-increment result");
aoqi@0 683 checkEffects(17);
aoqi@0 684 if (c.d != 6.0)
aoqi@0 685 AccessMethodsLHS.fail("post-increment effect (embedded)");
aoqi@0 686 System.out.println(c.d);
aoqi@0 687
aoqi@0 688 c.d = 1.0;
aoqi@0 689 --iBaz(c).d;
aoqi@0 690 checkEffects(18);
aoqi@0 691 if (c.d != 0.0)
aoqi@0 692 AccessMethodsLHS.fail("pre-decrement effect");
aoqi@0 693
aoqi@0 694 c.d = 5.0;
aoqi@0 695 if (--iBaz(c).d != 4.0)
aoqi@0 696 AccessMethodsLHS.fail("pre-decrement result");
aoqi@0 697 checkEffects(19);
aoqi@0 698 if (c.d != 4.0)
aoqi@0 699 AccessMethodsLHS.fail("pre-decrement effect (embedded)");
aoqi@0 700 System.out.println(c.d);
aoqi@0 701
aoqi@0 702 // All done.
aoqi@0 703
aoqi@0 704 System.out.println("done");
aoqi@0 705 }
aoqi@0 706 }

mercurial