]> source.dussan.org Git - aspectj.git/commitdiff
336136
authoraclement <aclement>
Thu, 3 Feb 2011 02:37:15 +0000 (02:37 +0000)
committeraclement <aclement>
Thu, 3 Feb 2011 02:37:15 +0000 (02:37 +0000)
org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/lookup/InterTypeScope.java

index bf1a084a9c9786b073cd4fc0d50517fc3f30aba9..f4e6e4df0e40c69d55d7a826eead67dcb574316a 100644 (file)
@@ -10,7 +10,6 @@
  *     PARC     initial implementation 
  * ******************************************************************/
 
-
 package org.aspectj.ajdt.internal.compiler.lookup;
 
 import java.util.HashMap;
@@ -31,7 +30,8 @@ import org.aspectj.weaver.BCException;
 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);
@@ -41,47 +41,53 @@ public class InterTypeScope extends ClassScope {
        }
 
        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;
@@ -89,22 +95,22 @@ public class InterTypeScope extends ClassScope {
                        }
                        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;
        }
-       
 
 }