1170 nextToken();
1171 if (token.kind == LT) typeArgs = typeArguments(false);
1172 t = creator(pos, typeArgs);
1173 typeArgs = null;
1174 } else return illegal();
1175 break;
1176 case MONKEYS_AT:
1177 // Only annotated cast types and method references are valid
1178 List<JCAnnotation> typeAnnos = typeAnnotationsOpt();
1179 if (typeAnnos.isEmpty()) {
1180 // else there would be no '@'
1181 throw new AssertionError("Expected type annotations, but found none!");
1182 }
1183
1184 JCExpression expr = term3();
1185
1186 if ((mode & TYPE) == 0) {
1187 // Type annotations on class literals no longer legal
1188 switch (expr.getTag()) {
1189 case REFERENCE: {
1190 JCMemberReference mref = (JCMemberReference) expr;
1191 mref.expr = toP(F.at(pos).AnnotatedType(typeAnnos, mref.expr));
1192 t = mref;
1193 break;
1194 }
1195 case SELECT: {
1196 JCFieldAccess sel = (JCFieldAccess) expr;
1197
1198 if (sel.name != names._class) {
1199 return illegal();
1200 } else {
1201 log.error(token.pos, "no.annotations.on.dot.class");
1202 return expr;
1203 }
1204 }
1205 default:
1206 return illegal(typeAnnos.head.pos);
1207 }
1208
1209 } else {
1210 // Type annotations targeting a cast
|
1170 nextToken();
1171 if (token.kind == LT) typeArgs = typeArguments(false);
1172 t = creator(pos, typeArgs);
1173 typeArgs = null;
1174 } else return illegal();
1175 break;
1176 case MONKEYS_AT:
1177 // Only annotated cast types and method references are valid
1178 List<JCAnnotation> typeAnnos = typeAnnotationsOpt();
1179 if (typeAnnos.isEmpty()) {
1180 // else there would be no '@'
1181 throw new AssertionError("Expected type annotations, but found none!");
1182 }
1183
1184 JCExpression expr = term3();
1185
1186 if ((mode & TYPE) == 0) {
1187 // Type annotations on class literals no longer legal
1188 switch (expr.getTag()) {
1189 case REFERENCE: {
1190 JCMemberReference mref = (JCMemberReference) expr.setPos(pos);
1191 mref.expr = toP(F.at(pos).AnnotatedType(typeAnnos, mref.expr));
1192 t = mref;
1193 break;
1194 }
1195 case SELECT: {
1196 JCFieldAccess sel = (JCFieldAccess) expr;
1197
1198 if (sel.name != names._class) {
1199 return illegal();
1200 } else {
1201 log.error(token.pos, "no.annotations.on.dot.class");
1202 return expr;
1203 }
1204 }
1205 default:
1206 return illegal(typeAnnos.head.pos);
1207 }
1208
1209 } else {
1210 // Type annotations targeting a cast
|