Browse Source

tests and fix for pr103051 :- declare soft and adviceexecution

tags/V1_5_0RC1
acolyer 18 years ago
parent
commit
554e73397c

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

@@ -448,6 +448,12 @@ public class EclipseFactory {
public ResolvedMember makeResolvedMember(MethodBinding binding) {
return makeResolvedMember(binding, binding.declaringClass);
}
public ResolvedMember makeResolvedMember(MethodBinding binding, Shadow.Kind shadowKind) {
Member.Kind memberKind = binding.isConstructor() ? Member.CONSTRUCTOR : Member.METHOD;
if (shadowKind == Shadow.AdviceExecution) memberKind = Member.ADVICE;
return makeResolvedMember(binding,binding.declaringClass,memberKind);
}

/**
* Conversion from a methodbinding (eclipse) to a resolvedmember (aspectj) is now done
@@ -481,8 +487,13 @@ public class EclipseFactory {
}
return result;
}
public ResolvedMember makeResolvedMember(MethodBinding binding, TypeBinding declaringType) {
return makeResolvedMember(binding,declaringType,
binding.isConstructor() ? Member.CONSTRUCTOR : Member.METHOD);
}

public ResolvedMember makeResolvedMember(MethodBinding binding, TypeBinding declaringType, Member.Kind memberKind) {
//System.err.println("member for: " + binding + ", " + new String(binding.declaringClass.sourceName));

// Convert the type variables and store them
@@ -501,7 +512,7 @@ public class EclipseFactory {
ResolvedType realDeclaringType = world.resolve(fromBinding(declaringType));
if (realDeclaringType.isRawType()) realDeclaringType = realDeclaringType.getGenericType();
ResolvedMemberImpl ret = new ResolvedMemberImpl(
binding.isConstructor() ? Member.CONSTRUCTOR : Member.METHOD,
memberKind,
realDeclaringType,
binding.modifiers,
fromBinding(binding.returnType),

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

@@ -166,8 +166,9 @@ public class EclipseShadow extends Shadow {
return null;
//throw new RuntimeException("unimplemented: " + e);
}
return new EclipseShadow(world, kind,
world.makeResolvedMember(e.binding), astNode, context);
return
new EclipseShadow(world, kind,
world.makeResolvedMember(e.binding,kind), astNode, context);
} else if (astNode instanceof TypeDeclaration) {
return new EclipseShadow(world, Shadow.StaticInitialization,
new MemberImpl(Member.STATIC_INITIALIZATION,

+ 12
- 0
tests/bugs150/Pr103051.aj View File

@@ -0,0 +1,12 @@
import java.io.IOException;

public aspect Pr103051 {
declare soft: IOException: within(Pr103051) && adviceexecution();

before() : execution(* main(..)) {
throw new IOException("test");
}

public static void main(String args[]) {
}
}

+ 4
- 0
tests/src/org/aspectj/systemtest/ajc150/Ajc150Tests.java View File

@@ -725,6 +725,10 @@ public class Ajc150Tests extends org.aspectj.testing.XMLBasedAjcTestCase {
public void testReflectionOfAbstractITDs() {
runTest("reflection on abstract ITDs (Billing example)");
}
public void testDeclareSoftWithAdviceExecution() {
runTest("declare soft and adviceexecution");
}

/*
* Load-time weaving bugs

+ 4
- 0
tests/src/org/aspectj/systemtest/ajc150/ajc150.xml View File

@@ -80,6 +80,10 @@
</stdout>
</run>
</ajc-test>
<ajc-test dir="bugs150" title="declare soft and adviceexecution" pr="103051">
<compile files="Pr103051.aj" options="-Xdev:Pinpoint"/>
</ajc-test>
<ajc-test dir="bugs150/pr114436" title="ClassFormatError binary weaving perthis">
<compile files="SimpleTrace.aj,ConcreteSimpleTracing.aj" outjar="aspects.jar"/>

Loading…
Cancel
Save