src/share/classes/com/sun/tools/javac/comp/Check.java

changeset 1366
12cf6bfd8c05
parent 1358
fc123bdeddb8
child 1374
c002fdee76fd
equal deleted inserted replaced
1365:2013982bee34 1366:12cf6bfd8c05
1119 // private 1119 // private
1120 implicit = PRIVATE; 1120 implicit = PRIVATE;
1121 mask = PRIVATE; 1121 mask = PRIVATE;
1122 } else 1122 } else
1123 mask = ConstructorFlags; 1123 mask = ConstructorFlags;
1124 } else if ((sym.owner.flags_field & INTERFACE) != 0) 1124 } else if ((sym.owner.flags_field & INTERFACE) != 0) {
1125 mask = implicit = InterfaceMethodFlags; 1125 if ((flags & DEFAULT) != 0) {
1126 mask = InterfaceDefaultMethodMask;
1127 implicit = PUBLIC;
1128 } else {
1129 mask = implicit = InterfaceMethodFlags;
1130 }
1131 }
1126 else { 1132 else {
1127 mask = MethodFlags; 1133 mask = MethodFlags;
1128 } 1134 }
1129 // Imply STRICTFP if owner has STRICTFP set. 1135 // Imply STRICTFP if owner has STRICTFP set.
1130 if (((flags|implicit) & Flags.ABSTRACT) == 0) 1136 if (((flags|implicit) & Flags.ABSTRACT) == 0)
1167 implicit |= sym.owner.flags_field & STRICTFP; 1173 implicit |= sym.owner.flags_field & STRICTFP;
1168 break; 1174 break;
1169 default: 1175 default:
1170 throw new AssertionError(); 1176 throw new AssertionError();
1171 } 1177 }
1172 long illegal = flags & StandardFlags & ~mask; 1178 long illegal = flags & ExtendedStandardFlags & ~mask;
1173 if (illegal != 0) { 1179 if (illegal != 0) {
1174 if ((illegal & INTERFACE) != 0) { 1180 if ((illegal & INTERFACE) != 0) {
1175 log.error(pos, "intf.not.allowed.here"); 1181 log.error(pos, "intf.not.allowed.here");
1176 mask |= INTERFACE; 1182 mask |= INTERFACE;
1177 } 1183 }
1183 else if ((sym.kind == TYP || 1189 else if ((sym.kind == TYP ||
1184 // ISSUE: Disallowing abstract&private is no longer appropriate 1190 // ISSUE: Disallowing abstract&private is no longer appropriate
1185 // in the presence of inner classes. Should it be deleted here? 1191 // in the presence of inner classes. Should it be deleted here?
1186 checkDisjoint(pos, flags, 1192 checkDisjoint(pos, flags,
1187 ABSTRACT, 1193 ABSTRACT,
1188 PRIVATE | STATIC)) 1194 PRIVATE | STATIC | DEFAULT))
1189 && 1195 &&
1190 checkDisjoint(pos, flags, 1196 checkDisjoint(pos, flags,
1191 ABSTRACT | INTERFACE, 1197 ABSTRACT | INTERFACE,
1192 FINAL | NATIVE | SYNCHRONIZED) 1198 FINAL | NATIVE | SYNCHRONIZED)
1193 && 1199 &&
1207 checkDisjoint(pos, flags, 1213 checkDisjoint(pos, flags,
1208 ABSTRACT | NATIVE, 1214 ABSTRACT | NATIVE,
1209 STRICTFP))) { 1215 STRICTFP))) {
1210 // skip 1216 // skip
1211 } 1217 }
1212 return flags & (mask | ~StandardFlags) | implicit; 1218 return flags & (mask | ~ExtendedStandardFlags) | implicit;
1213 } 1219 }
1214 1220
1215 1221
1216 /** Determine if this enum should be implicitly final. 1222 /** Determine if this enum should be implicitly final.
1217 * 1223 *

mercurial