--- /dev/null
+abstract class ValueChange<Q> {
+ public ValueChange(Q initValue) { }
+}
+
+abstract class SyncValueGroup<T> extends ValueChange<T> {
+ public SyncValueGroup(T initValue) {
+ super(initValue);
+ }
+ public final synchronized void link(SyncValueGroup<T> ... list) { }
+}
+
+class SyncValueTest {
+ class SyncInteger extends SyncValueGroup<Integer> {
+ public SyncInteger(int val) {
+ super(new Integer(val));
+ }
+ }
+ private SyncInteger a = new SyncInteger(1);
+ public void testSyncValueGroup() {
+ a.link(a);
+ }
+}
+
+aspect X {
+ before(): call(* *(..)) {}
+}
+
\ No newline at end of file
// public void testAmbiguousBinding_pr121805() { runTest("ambiguous binding");}
// public void testNoIllegalStateExceptionWithGenericInnerAspect_pr156058() { runTest("no IllegalStateException with generic inner aspect"); }
// public void testNegatedAnnotationMatchingProblem_pr153464() { runTest("negated annotation matching problem");}
+ public void testGenericArrays_pr158624() { runTest("generics and arrays"); }
public void testMissingLineNumbersInStacktraceBefore_pr145442() { runTest("missing line numbers in stacktrace before");}
public void testMissingLineNumbersInStacktraceBefore_pr145442_Binary() { runTest("missing line numbers in stacktrace before - binary");}
public void testAnnotationStylePointcutNPE_pr158412() { runTest("annotation style pointcut npe"); }
<ajc-test dir="bugs153/pr148908" title="ensure getSourceSignature correct with static field">
<compile files="BadInterface.java" options="-emacssym"/>
</ajc-test>
+
+ <ajc-test dir="bugs153/pr158624" title="generics and arrays">
+ <compile files="ValueChange.java" options="-1.5"/>
+ </ajc-test>
<ajc-test dir="bugs153/pr153845" title="IllegalStateException at GenericSignatureParser.java">
<compile files="GenericType.java,Aspect.java,Aspect2.java,Interface.java" options="-1.5" outjar="blob.jar"/>
}
UnresolvedType parameterizedReturnType = parameterize(getGenericReturnType(),typeMap,isParameterized);
- UnresolvedType[] parameterizedParameterTypes = new UnresolvedType[getGenericParameterTypes().length];
+ UnresolvedType[] parameterizedParameterTypes = new UnresolvedType[getGenericParameterTypes().length];
+ UnresolvedType[] genericParameterTypes = getGenericParameterTypes();
for (int i = 0; i < parameterizedParameterTypes.length; i++) {
parameterizedParameterTypes[i] =
- parameterize(getGenericParameterTypes()[i], typeMap,isParameterized);
+ parameterize(genericParameterTypes[i], typeMap,isParameterized);
}
ResolvedMemberImpl ret = new ResolvedMemberImpl(
getKind(),
return (UnresolvedType) typeVariableMap.get(variableName);
} else if (aType.isParameterizedType()) {
if (inParameterizedType) {
+ if (aType instanceof UnresolvedType) aType= aType.resolve(((ResolvedType)getDeclaringType()).getWorld());
return aType.parameterize(typeVariableMap);
} else {
return aType.getRawType();