// -*- Mode: java; -*- import org.aspectj.testing.Tester; public class Driver { public static void main(String[] args) { test(); } public static void test() { MagicKey key = new MagicKey(); Pos p1 = new Pos(key); Tester.checkEqual(p1.getOther(), 1, "introduced value"); } } class Pos { int _x = 0; int _y = 0; public int getX() { return(_x); } public int getY() { return(_y); } public void move(int x, int y) { _x = x; _y = y; } } aspect Foo { // this has been declared illegal syntax as of 4/19/99, see below for fix // introduce public int Pos.id = 1, Pos.other; //introduction Pos { //XXX might want to test for this in the future //public int Pos.id=1, Pos.other; public int Pos.id=1; public int Pos.other; int Pos.getOther() { return other; } Pos.new(MagicKey key) { other = id; id = getOther(); } //} } class MagicKey {}