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;
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;
--- /dev/null
+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
--- /dev/null
+class CantFindType {
+ public <T> T[] method(T[] array) {
+ return null;
+ }
+}
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) {
<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>
<!-- ============================================================================ -->
<!-- ============================================================================ -->