src/share/classes/com/sun/tools/javac/code/Symbol.java

changeset 1513
cf84b07a82db
parent 1491
9f42a06a49c0
child 1521
71f35e4b93a5
equal deleted inserted replaced
1512:b12ffdfa1341 1513:cf84b07a82db
1231 // JLS 8.4.6.1 1231 // JLS 8.4.6.1
1232 switch ((int)(flags_field & Flags.AccessFlags)) { 1232 switch ((int)(flags_field & Flags.AccessFlags)) {
1233 case Flags.PRIVATE: 1233 case Flags.PRIVATE:
1234 return false; 1234 return false;
1235 case Flags.PUBLIC: 1235 case Flags.PUBLIC:
1236 return true; 1236 return !this.owner.isInterface() ||
1237 (flags_field & STATIC) == 0;
1237 case Flags.PROTECTED: 1238 case Flags.PROTECTED:
1238 return (origin.flags() & INTERFACE) == 0; 1239 return (origin.flags() & INTERFACE) == 0;
1239 case 0: 1240 case 0:
1240 // for package private: can only override in the same 1241 // for package private: can only override in the same
1241 // package 1242 // package
1242 return 1243 return
1243 this.packge() == origin.packge() && 1244 this.packge() == origin.packge() &&
1244 (origin.flags() & INTERFACE) == 0; 1245 (origin.flags() & INTERFACE) == 0;
1245 default: 1246 default:
1246 return false; 1247 return false;
1248 }
1249 }
1250
1251 @Override
1252 public boolean isInheritedIn(Symbol clazz, Types types) {
1253 switch ((int)(flags_field & Flags.AccessFlags)) {
1254 case PUBLIC:
1255 return !this.owner.isInterface() ||
1256 clazz == owner ||
1257 (flags_field & STATIC) == 0;
1258 default:
1259 return super.isInheritedIn(clazz, types);
1247 } 1260 }
1248 } 1261 }
1249 1262
1250 /** The implementation of this (abstract) symbol in class origin; 1263 /** The implementation of this (abstract) symbol in class origin;
1251 * null if none exists. Synthetic methods are not considered 1264 * null if none exists. Synthetic methods are not considered

mercurial