From: acolyer Date: Fri, 9 Sep 2005 14:19:19 +0000 (+0000) Subject: tests and fix for pr108826, not correctly converting from T[] to ResolvedType. X-Git-Tag: preDefaultReweavable~105 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=2942ca0f23ee0489efce58272768529e6b907a63;p=aspectj.git tests and fix for pr108826, not correctly converting from T[] to ResolvedType. --- diff --git a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/lookup/EclipseFactory.java b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/lookup/EclipseFactory.java index de3f7b028..406542ec1 100644 --- a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/lookup/EclipseFactory.java +++ b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/lookup/EclipseFactory.java @@ -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; diff --git a/tests/bugs150/pr106874.aj b/tests/bugs150/pr106874.aj new file mode 100644 index 000000000..94bcb156f --- /dev/null +++ b/tests/bugs150/pr106874.aj @@ -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 + {} +} \ No newline at end of file diff --git a/tests/bugs150/pr108826.aj b/tests/bugs150/pr108826.aj new file mode 100644 index 000000000..4ddf14516 --- /dev/null +++ b/tests/bugs150/pr108826.aj @@ -0,0 +1,5 @@ +class CantFindType { + public T[] method(T[] array) { + return null; + } +} diff --git a/tests/pr108826.aj b/tests/pr108826.aj new file mode 100644 index 000000000..e69de29bb diff --git a/tests/src/org/aspectj/systemtest/ajc150/Ajc150Tests.java b/tests/src/org/aspectj/systemtest/ajc150/Ajc150Tests.java index 08dba80f3..ca3e41eee 100644 --- a/tests/src/org/aspectj/systemtest/ajc150/Ajc150Tests.java +++ b/tests/src/org/aspectj/systemtest/ajc150/Ajc150Tests.java @@ -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) { diff --git a/tests/src/org/aspectj/systemtest/ajc150/ajc150.xml b/tests/src/org/aspectj/systemtest/ajc150/ajc150.xml index b8ba23212..49c468112 100644 --- a/tests/src/org/aspectj/systemtest/ajc150/ajc150.xml +++ b/tests/src/org/aspectj/systemtest/ajc150/ajc150.xml @@ -527,9 +527,15 @@ + + + - + + + +