346 return isAccessible(env, t, false); |
346 return isAccessible(env, t, false); |
347 } |
347 } |
348 |
348 |
349 boolean isAccessible(Env<AttrContext> env, Type t, boolean checkInner) { |
349 boolean isAccessible(Env<AttrContext> env, Type t, boolean checkInner) { |
350 return (t.hasTag(ARRAY)) |
350 return (t.hasTag(ARRAY)) |
351 ? isAccessible(env, types.upperBound(types.elemtype(t))) |
351 ? isAccessible(env, types.cvarUpperBound(types.elemtype(t))) |
352 : isAccessible(env, t.tsym, checkInner); |
352 : isAccessible(env, t.tsym, checkInner); |
353 } |
353 } |
354 |
354 |
355 /** Is symbol accessible as a member of given type in given environment? |
355 /** Is symbol accessible as a member of given type in given environment? |
356 * @param env The current environment. |
356 * @param env The current environment. |
1009 * a type-variable T, it is not true that {@code U(T) <: T}, |
1009 * a type-variable T, it is not true that {@code U(T) <: T}, |
1010 * so we need to guard against that. |
1010 * so we need to guard against that. |
1011 */ |
1011 */ |
1012 private Type U(Type found) { |
1012 private Type U(Type found) { |
1013 return found == pt ? |
1013 return found == pt ? |
1014 found : types.upperBound(found); |
1014 found : types.cvarUpperBound(found); |
1015 } |
1015 } |
1016 |
1016 |
1017 @Override |
1017 @Override |
1018 protected MethodResultInfo dup(Type newPt) { |
1018 protected MethodResultInfo dup(Type newPt) { |
1019 return new MethodResultInfo(newPt, checkContext); |
1019 return new MethodResultInfo(newPt, checkContext); |