Browse Source

332388: test and fix

tags/V1_6_11RC1
aclement 13 years ago
parent
commit
b1bc04f163

+ 14
- 1
org.aspectj.matcher/src/org/aspectj/weaver/TypeVariableReferenceType.java View File

@@ -9,6 +9,7 @@
package org.aspectj.weaver;

import java.util.Map;
import org.aspectj.bridge.Message;

/**
* ReferenceType representing a type variable. The delegate for this reference type is the upperbound on the type variable (so
@@ -41,7 +42,19 @@ public class TypeVariableReferenceType extends ReferenceType implements TypeVari
@Override
public ReferenceTypeDelegate getDelegate() {
if (this.delegate == null) {
setDelegate(new BoundedReferenceTypeDelegate((ReferenceType) typeVariable.getFirstBound().resolve(world)));
ResolvedType resolvedFirstBound = typeVariable.getFirstBound().resolve(world);
BoundedReferenceTypeDelegate brtd = null;
if (resolvedFirstBound.isMissing()) {
brtd = new BoundedReferenceTypeDelegate((ReferenceType) world.resolve(UnresolvedType.OBJECT));
setDelegate(brtd); // set now because getSourceLocation() below will cause a recursive step to discover the delegate
world.getMessageHandler().handleMessage(
new Message("Unable to find type for generic bound. Missing type is " + resolvedFirstBound.getName(),
getSourceLocation(), true));
} else {
brtd = new BoundedReferenceTypeDelegate((ReferenceType) resolvedFirstBound);
setDelegate(brtd);
}

}
return this.delegate;
}

Loading…
Cancel
Save