Browse Source

added tests and fixes

fixed two bugs in ajcTestsFailing
tags/v1_1_0_RC1
jhugunin 21 years ago
parent
commit
d6b8b38cd0

+ 10
- 0
org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/InterTypeFieldDeclaration.java View File

@@ -67,6 +67,14 @@ public class InterTypeFieldDeclaration extends InterTypeDeclaration {
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(
@@ -129,6 +137,8 @@ public class InterTypeFieldDeclaration extends InterTypeDeclaration {
EclipseFactory world = EclipseFactory.fromScopeLookupEnvironment(classScope);
resolveOnType(classScope);
if (classScope.referenceContext.binding == null) return null;
binding = classScope.referenceContext.binding.resolveTypesFor(binding);
if (ignoreFurtherInvestigation) return null;

+ 2
- 1
org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/lookup/EclipseFactory.java View File

@@ -108,13 +108,14 @@ public class EclipseFactory {
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++) {

+ 20
- 0
tests/ajcTests.xml View File

@@ -5610,4 +5610,24 @@
<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>

+ 5
- 1
tests/ajcTestsBroken.xml View File

@@ -67,5 +67,9 @@
</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>

+ 6
- 20
tests/ajcTestsFailing.xml View File

@@ -52,19 +52,6 @@
</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">
@@ -72,13 +59,6 @@
</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"
@@ -104,4 +84,10 @@
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>

+ 23
- 0
tests/bugs/AspectInitError.java View File

@@ -0,0 +1,23 @@


/** 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");
}
}

+ 28
- 0
tests/bugs/ThisJoinPointAndVerifier.java View File

@@ -0,0 +1,28 @@


/** 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());
}
}

+ 21
- 0
tests/jimTests.xml View File

@@ -1,5 +1,26 @@
<!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>

<!--

Loading…
Cancel
Save