Browse Source

tests and fix for pr108826, not correctly converting from T[] to ResolvedType.

tags/preDefaultReweavable
acolyer 18 years ago
parent
commit
2942ca0f23

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

@@ -36,6 +36,7 @@ import org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeDeclaration;
import org.aspectj.org.eclipse.jdt.internal.compiler.ast.Wildcard;
import org.aspectj.org.eclipse.jdt.internal.compiler.impl.Constant;
import org.aspectj.org.eclipse.jdt.internal.compiler.impl.ReferenceContext;
import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ArrayBinding;
import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.BaseTypes;
import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.Binding;
import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.FieldBinding;
@@ -199,6 +200,12 @@ public class EclipseFactory {
return fromTypeVariableBinding((TypeVariableBinding)binding);
}
// handle arrays since the component type may need special treatment too...
if (binding instanceof ArrayBinding) {
ArrayBinding aBinding = (ArrayBinding) binding;
UnresolvedType componentType = fromBinding(aBinding.leafComponentType);
return UnresolvedType.makeArray(componentType, aBinding.dimensions);
}
if (binding instanceof WildcardBinding) {
WildcardBinding eWB = (WildcardBinding) binding;

+ 24
- 0
tests/bugs150/pr106874.aj View File

@@ -0,0 +1,24 @@
public class pr106874 {
class Inner { // works if static
private Integer field;
void bug() {
field = new Integer(0);
}
}

public static void main(String[] args) {
new pr106874().new Inner().bug();
}
}

aspect Aspect {
before(Object t) :
// target(Object) && // works
// this(t) && // works
target(t) && // fails
// set(* Bug.Inner.field) // works
// set(Integer Bug.Inner.*) // works
// get(* Bug.Inner.*) // works
set(* pr106874.Inner.*) // fails
{}
}

+ 5
- 0
tests/bugs150/pr108826.aj View File

@@ -0,0 +1,5 @@
class CantFindType {
public <T> T[] method(T[] array) {
return null;
}
}

+ 0
- 0
tests/pr108826.aj View File


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

@@ -413,6 +413,10 @@ public class Ajc150Tests extends org.aspectj.testing.XMLBasedAjcTestCase {
public void testNoVerifyErrorWithSetOnInnerType() {
runTest("no verify error with set on inner type");
}
public void testCantFindTypeErrorWithGenericReturnTypeOrParameter() {
runTest("cant find type error with generic return type or parameter");
}
// helper methods.....
public SyntheticRepository createRepos(File cpentry) {

+ 7
- 1
tests/src/org/aspectj/systemtest/ajc150/ajc150.xml View File

@@ -527,9 +527,15 @@
<compile files="VerifyErrorOnSet.aj" options="-1.5" >
</compile>
<run class="test.VerifyErrorOnSet"/>
<compile files="pr106874.aj" options="-1.5" >
</compile>
<run class="pr106874"/>
</ajc-test>
<ajc-test dir="bugs150" pr="108826" title="cant find type error with generic return type or parameter">
<compile files="pr108826.aj" options="-1.5 -emacssym" >
</compile>
</ajc-test>
<!-- ============================================================================ -->
<!-- ============================================================================ -->

Loading…
Cancel
Save