コード例 #1
0
 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);
 }
コード例 #2
0
        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;
        }