* PARC initial implementation
* ******************************************************************/
-
package org.aspectj.ajdt.internal.compiler.lookup;
import java.util.HashMap;
public class InterTypeScope extends ClassScope {
ReferenceBinding onType;
List aliases;
- Map /* real type variable > alias letter */ usedAliases; // Used later when reconstructing the resolved member
+ Map<TypeVariableBinding, String> /* real type variable > alias letter */usedAliases; // Used later when reconstructing the
+ // resolved member
public InterTypeScope(Scope parent, ReferenceBinding onType) {
super(parent, null);
}
public InterTypeScope(Scope parent, ReferenceBinding rb, List list) {
- this(parent,rb);
+ this(parent, rb);
this.aliases = list;
}
-
+
public String getAnyAliasForTypeVariableBinding(TypeVariableBinding tvb) {
- if (usedAliases==null) return null;
- return (String)usedAliases.get(tvb);
+ if (usedAliases == null)
+ return null;
+ return (String) usedAliases.get(tvb);
}
// this method depends on the fact that BinaryTypeBinding extends SourceTypeBinding
private SourceTypeBinding makeSourceTypeBinding(ReferenceBinding onType) {
- if (onType instanceof SourceTypeBinding) return (SourceTypeBinding)onType;
+ if (onType instanceof SourceTypeBinding)
+ return (SourceTypeBinding) onType;
else if (onType instanceof ParameterizedTypeBinding) {
- ReferenceBinding rb = ((ParameterizedTypeBinding)onType).type;
- if (rb instanceof SourceTypeBinding) return (SourceTypeBinding)rb;
- else throw new BCException("In parameterized type "+onType+", can't handle reference binding "+rb);
- } else if (onType instanceof ProblemReferenceBinding) {
+ ReferenceBinding rb = ((ParameterizedTypeBinding) onType).type;
+ if (rb instanceof SourceTypeBinding)
+ return (SourceTypeBinding) rb;
+ else
+ throw new BCException("In parameterized type " + onType + ", can't handle reference binding " + rb);
+ } else if (onType instanceof ProblemReferenceBinding) {
return null;
} else if (onType instanceof TypeVariableBinding) {
// Problem will have already been reported, cant ITD on a type variable.
return null;
}
-
+
throw new BCException("can't handle: " + onType);
}
public SourceTypeBinding invocationType() {
return parent.enclosingSourceType();
}
-
+
public int addDepth() {
return 0;
}
-
public TypeVariableBinding findTypeVariable(char[] name, SourceTypeBinding sourceType) {
+ if (sourceType == null) {
+ return null;
+ }
String variableName = new String(name);
- int aliased = (aliases==null?-1:aliases.indexOf(variableName));
- if (aliased!=-1) {
- if (aliased>sourceType.typeVariables.length || sourceType.typeVariables.length==0) {
- TypeVariableBinding tvb = new TypeVariableBinding("fake".toCharArray(),null,0);
+ int aliased = (aliases == null ? -1 : aliases.indexOf(variableName));
+ if (aliased != -1) {
+ if (aliased > sourceType.typeVariables.length || sourceType.typeVariables.length == 0) {
+ TypeVariableBinding tvb = new TypeVariableBinding("fake".toCharArray(), null, 0);
tvb.superclass = getJavaLangObject();
tvb.fPackage = new PackageBinding(environment());
return tvb;
}
TypeVariableBinding tvb = sourceType.typeVariables()[aliased];
tvb.fPackage = sourceType.fPackage;
- if (usedAliases==null) usedAliases = new HashMap();
- usedAliases.put(tvb,variableName);
+ if (usedAliases == null)
+ usedAliases = new HashMap<TypeVariableBinding, String>();
+ usedAliases.put(tvb, variableName);
return tvb;
} else {
- TypeVariableBinding variableBinding = sourceType.getTypeVariable(name);
- if (variableBinding == null) { // GENERICITDFIX
- // Inside generic aspect, might want the type var attached to us
- variableBinding = parent.findTypeVariable(name,((ClassScope) parent).referenceContext.binding);
- }
- return variableBinding;
+ TypeVariableBinding variableBinding = sourceType.getTypeVariable(name);
+ if (variableBinding == null) { // GENERICITDFIX
+ // Inside generic aspect, might want the type var attached to us
+ variableBinding = parent.findTypeVariable(name, ((ClassScope) parent).referenceContext.binding);
+ }
+ return variableBinding;
}
}
public Map getRecoveryAliases() {
return usedAliases;
}
-
}