EclipseFactory world = EclipseFactory.fromScopeLookupEnvironment(upperScope);
ResolvedMember sig = munger.getSignature();
TypeX aspectType = EclipseFactory.fromBinding(upperScope.referenceContext.binding);
+
+ if (sig.getReturnType() == ResolvedTypeX.VOID ||
+ (sig.getReturnType().isArray() && (sig.getReturnType().getComponentType() == ResolvedTypeX.VOID)))
+ {
+ upperScope.problemReporter().signalError(sourceStart, sourceEnd,
+ "field type can not be void");
+ }
+
//
// System.err.println("sig: " + sig);
// System.err.println("field: " + world.makeFieldBinding(
EclipseFactory world = EclipseFactory.fromScopeLookupEnvironment(classScope);
resolveOnType(classScope);
+ if (classScope.referenceContext.binding == null) return null;
+
binding = classScope.referenceContext.binding.resolveTypesFor(binding);
if (ignoreFurtherInvestigation) return null;
if (binding instanceof HelperInterfaceBinding) {
return ((HelperInterfaceBinding) binding).getTypeX();
}
- if (binding.qualifiedSourceName() == null) {
+ if (binding == null || binding.qualifiedSourceName() == null) {
return ResolvedTypeX.MISSING;
}
return TypeX.forName(getName(binding));
}
public static TypeX[] fromBindings(TypeBinding[] bindings) {
+ if (bindings == null) return TypeX.NONE;
int len = bindings.length;
TypeX[] ret = new TypeX[len];
for (int i=0; i<len; i++) {
<compile files="TransactionTest.java,sub/ExecutionMonitor.java,sub/ObserverProtocol.aj"/>
<run class="TransactionTest"/>
</ajc-test>
+
+ <ajc-test dir="bugs" pr="34210"
+ title="thisJoinPoint.getArgs() causes IncompatibleClassChangeError">
+ <compile files="ThisJoinPointAndVerifier.java"/>
+ <run class="ThisJoinPointAndVerifier"/>
+ </ajc-test>
+
+ <ajc-test dir="errors" keywords="error"
+ title="inter-type declaration of void field">
+ <compile files="VoidFieldDeclarationCE.java">
+ <message kind="error" line="7"/>
+ </compile>
+ </ajc-test>
+
+ <ajc-test dir="binding"
+ title="no such constructor for proceed argument (error)">
+ <compile files="UnfoundConstructor.java">
+ <message kind="error" line="25"/>
+ </compile>
+ </ajc-test>
</suite>
</compile>
</ajc-test>
-
+ <ajc-test dir="bugs" pr="33948"
+ title="default constructor inter-type declaration">
+ <compile files="ConstructorDeclaration.java"/>
+ <run class="ConstructorDeclaration"/>
+ </ajc-test>
</suite>
</compile>
</ajc-test>
- <ajc-test dir="binding"
- title="no such constructor for proceed argument (error)">
- <compile files="UnfoundConstructor.java">
- <message kind="error" line="25"/>
- </compile>
- </ajc-test>
-
- <ajc-test dir="bugs" pr="33948"
- title="default constructor inter-type declaration">
- <compile files="ConstructorDeclaration.java"/>
- <run class="ConstructorDeclaration"/>
- </ajc-test>
-
<ajc-test dir="errors" keywords="error"
title="class extending abstract aspect">
<compile files="ClassExtendingAbstractAspectCE.java">
</compile>
</ajc-test>
- <ajc-test dir="errors" keywords="error"
- title="inter-type declaration of void field">
- <compile files="VoidFieldDeclarationCE.java">
- <message kind="error" line="7"/>
- </compile>
- </ajc-test>
-
<ajc-test dir="incremental/stringliteral"
title="incrementally change string size and wire in injar classes">
<compile staging="true" options="-incremental"
before main packageOne.Main"/>
</ajc-test>
+ <ajc-test dir="bugs" pr="34206"
+ title="before():execution(new(..)) does not throw NoAspectBoundException">
+ <compile files="AspectInitError.java"/>
+ <run class="AspectInitError"/>
+ </ajc-test>
+
</suite>
--- /dev/null
+
+
+/** Bugzilla Bug 34206
+ before():execution(new(..)) does not throw NoAspectBoundException */
+public class AspectInitError {
+ public static void main(String[] args) {
+ //Watchcall.aspectOf();
+ AspectInitError c = new AspectInitError();
+ }
+
+}
+
+aspect Watchcall {
+ pointcut myConstructor(): execution(new(..));
+
+ before(): myConstructor() {
+ System.err.println("Entering Constructor");
+ }
+
+ after(): myConstructor() {
+ System.err.println("Leaving Constructor");
+ }
+}
--- /dev/null
+
+
+/** Bugzilla Bug 34210
+ thisJoinPoint.getArgs() causes IncompatibleClassChangeError */
+public class ThisJoinPointAndVerifier {
+ public void method() {
+ System.out.println("Executed method");
+ }
+ public static void main(String args[]) {
+ ThisJoinPointAndVerifier td = new ThisJoinPointAndVerifier();
+ td.method();
+ }
+}
+
+aspect Log1 {
+ pointcut logged_method() :
+ call(* ThisJoinPointAndVerifier.*(..));
+ after() : logged_method() {
+ Object[] args = thisJoinPoint.getArgs();
+ System.out.println ("Log1a: leaving " + thisJoinPoint.getSignature());
+ }
+ // comment this advice for scenario 2
+ after() : logged_method() {
+ //VM crash on scenario 1
+ //Object[] args = thisJoinPoint.getArgs();
+ System.out.println ("Log1b: leaving " + thisJoinPoint.getSignature());
+ }
+}
\ No newline at end of file
<!DOCTYPE suite SYSTEM "../tests/ajcTestSuite.dtd">
<suite>
+ <ajc-test dir="new/declare" pr="31724"
+ title="omnibus declare warning context"
+ comment="XXX untested: no source context shown">
+ <compile files="DeclareWarning.java">
+ <message kind="warning" line="5"/>
+ <message kind="warning" line="12"/>
+ <message kind="warning" line="13"/>
+ <message kind="warning" line="14"/>
+ <message kind="warning" line="15"/>
+ <message kind="warning" line="16"/>
+ <message kind="warning" line="17"/>
+ <message kind="warning" line="18"/>
+ <message kind="warning" line="21"/>
+ <message kind="warning" line="22"/>
+ <message kind="warning" line="23"/>
+ <message kind="warning" line="33"/>
+ <message kind="warning" line="36"/>
+ <message kind="warning" line="39"/>
+ <message kind="warning" line="74"/>
+ </compile>
+ </ajc-test>
<!--