RFR: JDK-8042803 Types.wildLowerBound and cvarLowerBound should call unannotatedType()

Dan Smith daniel.smith at oracle.com
Tue Jun 17 19:32:49 UTC 2014


This is a small patch to properly handle AnnotatedTypes in 8u20 in some code of mine from a previous bug fix.  No patch for 9, because AnnotatedTypes have been removed there.

—Dan

diff -r b060e7c2f5cc src/share/classes/com/sun/tools/javac/code/Types.java
--- a/src/share/classes/com/sun/tools/javac/code/Types.java	Mon Jun 16 11:19:22 2014 -0700
+++ b/src/share/classes/com/sun/tools/javac/code/Types.java	Tue Jun 17 13:32:35 2014 -0600
@@ -135,7 +135,7 @@
              else
                  return wildUpperBound(w.type);
          }
-         else return t;
+         else return t.unannotatedType();
      }
 
      /**
@@ -147,7 +147,7 @@
              TypeVar v = (TypeVar) t.unannotatedType();
              return v.isCaptured() ? cvarUpperBound(v.bound) : v;
          }
-         else return t;
+         else return t.unannotatedType();
      }
 
     /**
@@ -156,10 +156,10 @@
      */
     public Type wildLowerBound(Type t) {
         if (t.hasTag(WILDCARD)) {
-            WildcardType w = (WildcardType) t;
+            WildcardType w = (WildcardType) t.unannotatedType();
             return w.isExtendsBound() ? syms.botType : wildLowerBound(w.type);
         }
-        else return t;
+        else return t.unannotatedType();
     }
 
     /**
@@ -167,10 +167,11 @@
      * @param t a type
      */
     public Type cvarLowerBound(Type t) {
-        if (t.hasTag(TYPEVAR) && ((TypeVar) t).isCaptured()) {
-            return cvarLowerBound(t.getLowerBound());
+        if (t.hasTag(TYPEVAR)) {
+            TypeVar v = (TypeVar) t.unannotatedType();
+            return v.isCaptured() ? cvarLowerBound(v.getLowerBound()) : v;
         }
-        else return t;
+        else return t.unannotatedType();
     }
     // </editor-fold>



More information about the compiler-dev mailing list