private static boolean isInnerClass(Symbol.TypeSymbol typeSymbol) { return !typeSymbol.equals(((JavaSymbol.TypeJavaSymbol) typeSymbol).outermostClass()); }
private boolean isInnerClass(Symbol.TypeSymbol typeSymbol) { return !typeSymbol.equals(((JavaSymbol.TypeJavaSymbol) typeSymbol).outermostClass()); }
private static boolean isInnerClass(Symbol.TypeSymbol typeSymbol) { return !typeSymbol.equals(((JavaSymbol.TypeJavaSymbol) typeSymbol).outermostClass()); }
/** * Is class accessible in given environment? */ @VisibleForTesting boolean isAccessible(Env env, JavaSymbol.TypeJavaSymbol c) { final boolean result; switch (c.flags() & Flags.ACCESS_FLAGS) { case Flags.PRIVATE: result = (env.enclosingClass().outermostClass() == c.owner().outermostClass()); break; case 0: result = (env.packge() == c.packge()); break; case Flags.PUBLIC: result = true; break; case Flags.PROTECTED: result = (env.packge() == c.packge()) || isInnerSubClass(env.enclosingClass(), c.owner()); break; default: throw new IllegalStateException(); } // TODO check accessibility of enclosing type: isAccessible(env, c.type.getEnclosingType()) return result; }
/** * Is symbol accessible as a member of given class in given environment? * <p/> * Symbol is accessible only if not overridden by another symbol. If overridden, then strictly speaking it is not a member. */ private boolean isAccessible(Env env, JavaSymbol.TypeJavaSymbol site, JavaSymbol symbol) { switch (symbol.flags() & Flags.ACCESS_FLAGS) { case Flags.PRIVATE: //if enclosing class is null, we are checking accessibility for imports so we return false. // no check of overriding, because private members cannot be overridden return env.enclosingClass != null && (env.enclosingClass().outermostClass() == symbol.owner().outermostClass()) && isInheritedIn(symbol, site); case 0: return (env.packge() == symbol.packge()) && isAccessible(env, site) && isInheritedIn(symbol, site) && notOverriddenIn(site, symbol); case Flags.PUBLIC: return isAccessible(env, site) && notOverriddenIn(site, symbol); case Flags.PROTECTED: return ((env.packge() == symbol.packge()) || isProtectedAccessible(symbol, env.enclosingClass, site)) && isAccessible(env, site) && notOverriddenIn(site, symbol); default: throw new IllegalStateException(); } }
private static boolean isGuiClass(TypeJavaSymbol symbol) { for (ClassJavaType superType : symbol.superTypes()) { TypeJavaSymbol superTypeSymbol = superType.getSymbol(); if (hasGuiPackage(superTypeSymbol)) { return true; } } return hasGuiPackage(symbol) || (!symbol.equals(symbol.outermostClass()) && isGuiClass(symbol.outermostClass())); }
private static boolean isGuiClass(TypeJavaSymbol symbol) { for (ClassJavaType superType : symbol.superTypes()) { TypeJavaSymbol superTypeSymbol = superType.getSymbol(); if (hasGuiPackage(superTypeSymbol)) { return true; } } return hasGuiPackage(symbol) || (!symbol.equals(symbol.outermostClass()) && isGuiClass(symbol.outermostClass())); }
private boolean isGuiClass(TypeJavaSymbol symbol) { for (ClassJavaType superType : symbol.superTypes()) { TypeJavaSymbol superTypeSymbol = superType.getSymbol(); if (hasGuiPackage(superTypeSymbol)) { return true; } } return hasGuiPackage(symbol) || (!symbol.equals(symbol.outermostClass()) && isGuiClass(symbol.outermostClass())); }