diff options
author | acolyer <acolyer> | 2005-09-09 14:19:19 +0000 |
---|---|---|
committer | acolyer <acolyer> | 2005-09-09 14:19:19 +0000 |
commit | 2942ca0f23ee0489efce58272768529e6b907a63 (patch) | |
tree | 8c71702707ed2548de5e4e228d5fb9b3e96a9a44 | |
parent | dc4ba2950b8ad87956d93eba5110d7a18288021c (diff) | |
download | aspectj-2942ca0f23ee0489efce58272768529e6b907a63.tar.gz aspectj-2942ca0f23ee0489efce58272768529e6b907a63.zip |
tests and fix for pr108826, not correctly converting from T[] to ResolvedType.
-rw-r--r-- | org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/lookup/EclipseFactory.java | 7 | ||||
-rw-r--r-- | tests/bugs150/pr106874.aj | 24 | ||||
-rw-r--r-- | tests/bugs150/pr108826.aj | 5 | ||||
-rw-r--r-- | tests/pr108826.aj | 0 | ||||
-rw-r--r-- | tests/src/org/aspectj/systemtest/ajc150/Ajc150Tests.java | 4 | ||||
-rw-r--r-- | tests/src/org/aspectj/systemtest/ajc150/ajc150.xml | 8 |
6 files changed, 47 insertions, 1 deletions
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> T[] method(T[] array) { + return null; + } +} diff --git a/tests/pr108826.aj b/tests/pr108826.aj new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/tests/pr108826.aj 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 @@ <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> <!-- ============================================================================ --> <!-- ============================================================================ --> |