< prev index next >

src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavacParser.java

Print this page




3702         int pos = token.pos;
3703         Name name = ident();
3704         if (isRestrictedLocalVarTypeName(name, pos, true)) {
3705             reportSyntaxError(pos, Errors.VarNotAllowed);
3706         }
3707 
3708         if (isRestrictedRecordTypeName(name)) {
3709             reportSyntaxError(pos, Errors.RecordNotAllowed(name));
3710         }
3711         return name;
3712     }
3713 
3714     Map<Name, JCVariableDecl> headerFields(JCModifiers recordClassMods) {
3715         accept(LPAREN);
3716         Map<Name, JCVariableDecl> fields = new LinkedHashMap<>();
3717         while (token.kind != RPAREN) {
3718             JCModifiers mods = modifiersOpt();
3719             if (mods.flags != 0) {
3720                 log.error(mods.pos, Errors.RecordCantDeclareFieldModifiers);
3721             }
3722             mods.flags |= Flags.RECORD | Flags.FINAL;
3723             mods.flags |= (recordClassMods.flags & Flags.ABSTRACT) != 0 ? Flags.PROTECTED : 0;
3724             JCExpression type = parseType();
3725             int pos = token.pos;
3726             Name id = ident();
3727             if (!fields.containsKey(id)) {
3728                 List<Pair<Accessors.Kind, Name>> accessors = List.of(new Pair<>(Accessors.Kind.GET, id));
3729                 fields.put(id, toP(F.at(pos).VarDef(mods, id, type, null, accessors)));
3730             } else {
3731                 log.error(pos, Errors.RecordCantDeclareDuplicateFields);
3732             }
3733             if (token.kind == COMMA) {
3734                 nextToken();
3735             }
3736         }
3737         accept(RPAREN);
3738         return fields;
3739     }
3740 
3741     /** InterfaceDeclaration = INTERFACE Ident TypeParametersOpt
3742      *                         [EXTENDS TypeList] InterfaceBody




3702         int pos = token.pos;
3703         Name name = ident();
3704         if (isRestrictedLocalVarTypeName(name, pos, true)) {
3705             reportSyntaxError(pos, Errors.VarNotAllowed);
3706         }
3707 
3708         if (isRestrictedRecordTypeName(name)) {
3709             reportSyntaxError(pos, Errors.RecordNotAllowed(name));
3710         }
3711         return name;
3712     }
3713 
3714     Map<Name, JCVariableDecl> headerFields(JCModifiers recordClassMods) {
3715         accept(LPAREN);
3716         Map<Name, JCVariableDecl> fields = new LinkedHashMap<>();
3717         while (token.kind != RPAREN) {
3718             JCModifiers mods = modifiersOpt();
3719             if (mods.flags != 0) {
3720                 log.error(mods.pos, Errors.RecordCantDeclareFieldModifiers);
3721             }
3722             mods.flags |= Flags.RECORD | Flags.FINAL | Flags.PRIVATE;
3723             mods.flags |= (recordClassMods.flags & Flags.ABSTRACT) != 0 ? Flags.PROTECTED : 0;
3724             JCExpression type = parseType();
3725             int pos = token.pos;
3726             Name id = ident();
3727             if (!fields.containsKey(id)) {
3728                 List<Pair<Accessors.Kind, Name>> accessors = List.of(new Pair<>(Accessors.Kind.GET, id));
3729                 fields.put(id, toP(F.at(pos).VarDef(mods, id, type, null, accessors)));
3730             } else {
3731                 log.error(pos, Errors.RecordCantDeclareDuplicateFields);
3732             }
3733             if (token.kind == COMMA) {
3734                 nextToken();
3735             }
3736         }
3737         accept(RPAREN);
3738         return fields;
3739     }
3740 
3741     /** InterfaceDeclaration = INTERFACE Ident TypeParametersOpt
3742      *                         [EXTENDS TypeList] InterfaceBody


< prev index next >