Browse Source

fix and test for 123901. test for 125475 (commented out)

tags/POST_MEMORY_CHANGES
aclement 18 years ago
parent
commit
693945fed3

+ 5
- 3
org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/AccessForInlineVisitor.java View File

@@ -41,6 +41,7 @@ import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.BlockScope;
import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.FieldBinding;
import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.MethodBinding;
import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ParameterizedMethodBinding;
import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ProblemFieldBinding;
import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding;
import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeBinding;
import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.VariableBinding;
@@ -96,11 +97,12 @@ public class AccessForInlineVisitor extends ASTVisitor {
//!!! understand and fix this case later
receiverType = ref.otherBindings[0].declaringClass;
}
for (int i=0, len=ref.otherBindings.length; i < len; i++) {
boolean cont = true; // don't continue if we come across a problem
for (int i=0, len=ref.otherBindings.length; i < len && cont; i++) {
FieldBinding binding = ref.otherBindings[i];
ref.otherBindings[i] = getAccessibleField(binding, receiverType);
receiverType = binding.type;
if (!(binding instanceof ProblemFieldBinding)) receiverType = binding.type;
else cont=false;
}
}
}

+ 5
- 0
tests/bugs151/pr123901/A.java View File

@@ -0,0 +1,5 @@
package a;

public class A {
public void x(){}
}

+ 8
- 0
tests/bugs151/pr123901/B.java View File

@@ -0,0 +1,8 @@
package a;
public aspect B {
void around():call(void *(..)){
A a = new A();
a.A.a.x(); // This line raises the NPE
proceed();
}
}

+ 6
- 0
tests/bugs151/pr125475/TestEmptyPointcutAtAspect.java View File

@@ -0,0 +1,6 @@
@Aspect
public class TestEmptyPointcutAtAspect {

@Pointcut("")
protected void scope () {}
}

+ 2
- 0
tests/src/org/aspectj/systemtest/ajc151/Ajc151Tests.java View File

@@ -33,6 +33,8 @@ public class Ajc151Tests extends org.aspectj.testing.XMLBasedAjcTestCase {
public void testCallInheritedGenericMethod_pr124999() { runTest("calling inherited generic method from around advice");}
public void testIncorrectlyReferencingPointcuts_pr122452() { runTest("incorrectly referencing pointcuts");}
public void testIncorrectlyReferencingPointcuts_pr122452_2() { runTest("incorrectly referencing pointcuts - 2");}
//public void testEmptyPointcut_pr125475() { runTest("empty pointcut in atAJ");}
public void testInlinevisitorNPE_pr123901() { runTest("inlinevisitor NPE");}
public void testMixingNumbersOfTypeParameters_pr125080() {
runTest("mixing numbers of type parameters");

+ 10
- 0
tests/src/org/aspectj/systemtest/ajc151/ajc151.xml View File

@@ -5,6 +5,12 @@
<ajc-test dir="bugs151" title="member types in generic types">
<compile files="pr122458.aj" options="-1.5 -emacssym"/>
</ajc-test>
<ajc-test dir="bugs151/pr123901" title="inlinevisitor NPE">
<compile files="A.java,B.java" options="-1.5">
<message kind="error" line="5" text="a.A cannot be resolved or is not a field"/>
</compile>
</ajc-test>
<ajc-test dir="bugs151" title="member types in generic types - 2">
@@ -98,4 +104,8 @@
<compile files="pkg/C.java,pkg/A.aj" options="-emacssym"/>
</ajc-test>

<ajc-test dir="bugs151/pr125475" title="empty pointcut in atAJ">
<compile files="TestEmptyPointcutAtAspect.java" options="-1.5"/>
</ajc-test>

</suite>

Loading…
Cancel
Save