private void defineEnumConstant(EnumConstantDeclarationNode enumConstant, TypeBuilder typeBuilder) { var name = context.getIdentifier(enumConstant.NameOffset, enumConstant.NameLength); if (typeBuilder.getField(name) != null) { context.addError(CompileErrorId.AlreadyDefinedField, enumConstant, BytecodeHelper.getDisplayName(typeBuilder), name); } var fieldBuilder = typeBuilder.defineField(name, typeBuilder); enumConstant.addUserData(fieldBuilder); fieldBuilder.setEnum(true); fieldBuilder.setPublic(true); fieldBuilder.setStatic(true); fieldBuilder.setFinal(true); }
private ITypeMember parseEnumConstant(List<AnnotationSectionNode> annotations) { var result = new EnumConstantDeclarationNode { NameOffset = scanner.StartPosition, NameLength = getLexicalUnitLength(), StartPosition = scanner.StartPosition }; if (docCommentEndPosition > 0) { result.DocumentationOffset = docCommentStartPosition; result.DocumentationLength = docCommentEndPosition - docCommentStartPosition; docCommentEndPosition = 0; } setScannerState(result); result.Annotations.addAll(annotations); int endPosition = scanner.EndPosition; if (nextLexicalUnit(true) == LexicalUnit.OpenParenthesis) { if (nextLexicalUnit(true) != LexicalUnit.CloseParenthesis) { endPosition = parseArguments(result.Arguments); } else { endPosition = scanner.EndPosition; nextLexicalUnit(true); } } result.EndPosition = endPosition; return result; }