equal
deleted
inserted
replaced
195 isInnerSubClass(env.enclClass.sym, c.owner); |
195 isInnerSubClass(env.enclClass.sym, c.owner); |
196 break; |
196 break; |
197 } |
197 } |
198 return (checkInner == false || c.type.getEnclosingType() == Type.noType) ? |
198 return (checkInner == false || c.type.getEnclosingType() == Type.noType) ? |
199 isAccessible : |
199 isAccessible : |
200 isAccessible & isAccessible(env, c.type.getEnclosingType(), checkInner); |
200 isAccessible && isAccessible(env, c.type.getEnclosingType(), checkInner); |
201 } |
201 } |
202 //where |
202 //where |
203 /** Is given class a subclass of given base class, or an inner class |
203 /** Is given class a subclass of given base class, or an inner class |
204 * of a subclass? |
204 * of a subclass? |
205 * Return null if no such class exists. |
205 * Return null if no such class exists. |
232 public boolean isAccessible(Env<AttrContext> env, Type site, Symbol sym) { |
232 public boolean isAccessible(Env<AttrContext> env, Type site, Symbol sym) { |
233 return isAccessible(env, site, sym, false); |
233 return isAccessible(env, site, sym, false); |
234 } |
234 } |
235 public boolean isAccessible(Env<AttrContext> env, Type site, Symbol sym, boolean checkInner) { |
235 public boolean isAccessible(Env<AttrContext> env, Type site, Symbol sym, boolean checkInner) { |
236 if (sym.name == names.init && sym.owner != site.tsym) return false; |
236 if (sym.name == names.init && sym.owner != site.tsym) return false; |
237 ClassSymbol sub; |
|
238 switch ((short)(sym.flags() & AccessFlags)) { |
237 switch ((short)(sym.flags() & AccessFlags)) { |
239 case PRIVATE: |
238 case PRIVATE: |
240 return |
239 return |
241 (env.enclClass.sym == sym.owner // fast special case |
240 (env.enclClass.sym == sym.owner // fast special case |
242 || |
241 || |