[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [aspectj-users] Changes in introduction for aspectj compiler 1.1
|
I didn't find this in the bug db, so I posted it:
http://bugs.eclipse.org/bugs/show_bug.cgi?id=39993
William, I did not include your email or name since you did
not post the bug yourself. If you would like notification
of bug activity (e.g., when fixed), add yourself as a cc.
I did not create a test case. For anyone who would like to
help in that regard, please see
http://dev.eclipse.org/viewcvs/indextech.cgi/~checkout~/aspectj-home/doc/faq.html#q:harnesstestcases
Wes
Jim.Hugunin@xxxxxxxx wrote:
This is useful information for users, and I'm very happy you could find a work-around and share it with others. However, this is also a 1.1 compiler bug. You've already done the hard work of reducing this to a small self-contained test case that reproduces the problem. Could you please submit this to the bug report system so that it will be fixed in a future release?
FYI - If you find any bugs, please submit a reproducible test case to https://dev.eclipse.org (-> Bug Reports) (product AspectJ, component Compiler).
Thanks - Jim
-----Original Message-----
From: William DeMoss II [mailto:wdemoss@xxxxxxxxxxxx]
Sent: Thursday, June 26, 2003 8:47 PM
To: aspectj-users@xxxxxxxxxxx
Subject: [aspectj-users] Changes in introduction for aspectj compiler 1.1
I was playing around with porting over our current project witch uses
1.0.6 to the new compiler and looking into the little differences that
would need to be addressed. I came across a obscure difference between
the two concerning introduction. I thought it would be of help to pass
it along. Here is the example.
interface Identifiable {
void setId(Id id);
Id getId();
}
aspect IdentifiableAspect {
private Id Identifiable.id = null;
public Id Identifiable.getId() {
return this.id;
}
public void Identifiable.setId(Id id) {
this.id = id;
}
public int Identifiable.hashCode() {
return (this.getId() == null)
? super.hashCode()
: this.getId().hashCode();
}
}
The method of interest is the introduction of hashCode. Proir to the new
compiler this worked fine. Now it throws a NullPointer exception in the
compiler w/o a good error message. However, if you change the
functionallity to the following:
int around(Identifiable i): target(i)
&& call(public int hashCode())
{
return (i.getId() == null)
? proceed(i)
: i.getId().hashCode();
}
It accomplishes the same goal. I believe this has to do with the new
compiler bytecode weaving as opposed to the source code weaving done
with the prior version. Hope that can save someone some trouble.
- wd
_______________________________________________
aspectj-users mailing list
aspectj-users@xxxxxxxxxxx
http://dev.eclipse.org/mailman/listinfo/aspectj-users
_______________________________________________
aspectj-users mailing list
aspectj-users@xxxxxxxxxxx
http://dev.eclipse.org/mailman/listinfo/aspectj-users