Example usage for org.objectweb.asm Opcodes ACC_ENUM

List of usage examples for org.objectweb.asm Opcodes ACC_ENUM

Introduction

In this page you can find the example usage for org.objectweb.asm Opcodes ACC_ENUM.

Prototype

int ACC_ENUM

To view the source code for org.objectweb.asm Opcodes ACC_ENUM.

Click Source Link

Usage

From source file:com.google.devtools.kythe.analyzers.jvm.KytheClassVisitor.java

License:Open Source License

@Override
public void visit(int version, int access, String name, String signature, String superName,
        String[] interfaces) {/* w w w  .ja  v a 2 s. c om*/
    classType = JvmGraph.Type.referenceType(name);
    classVName = flagSet(access, Opcodes.ACC_ENUM) ? jvmGraph.emitEnumNode(classType)
            : flagSet(access, Opcodes.ACC_INTERFACE) ? jvmGraph.emitInterfaceNode(classType)
                    : jvmGraph.emitClassNode(classType);
    if (enclosingJarFile != null) {
        entrySets.emitEdge(entrySets.newImplicitAnchorAndEmit(enclosingJarFile).getVName(), EdgeKind.DEFINES,
                classVName);
    }
    if (superName != null) {
        entrySets.emitEdge(classVName, EdgeKind.EXTENDS,
                jvmGraph.getReferenceVName(JvmGraph.Type.referenceType(superName)));
    }
    for (String iface : interfaces) {
        entrySets.emitEdge(classVName, EdgeKind.EXTENDS,
                jvmGraph.emitInterfaceNode(JvmGraph.Type.referenceType(iface)));
    }
    super.visit(version, access, name, signature, superName, interfaces);
}

From source file:com.google.gwt.dev.javac.CompilationUnitTypeOracleUpdater.java

License:Apache License

/**
 * Doesn't retain a reference to the TypeData.
 *//*from  ww w .  jav  a 2 s .c om*/
private JRealClassType createType(TypeData typeData, CollectClassData collectClassData,
        CollectClassData enclosingClassData) {
    int access = collectClassData.getAccess();
    String simpleName = Shared.getShortName(typeData.sourceName);
    JRealClassType type = null;
    String packageName = typeData.packageName;
    JPackage pkg = typeOracle.getOrCreatePackage(packageName);
    boolean isInterface = (access & Opcodes.ACC_INTERFACE) != 0;
    assert !collectClassData.hasNoExternalName();
    String enclosingSimpleName = null;
    if (enclosingClassData != null) {
        enclosingSimpleName = enclosingClassData.getNestedSourceName();
    }
    if ((access & Opcodes.ACC_ANNOTATION) != 0) {
        type = newAnnotationType(pkg, enclosingSimpleName, simpleName);
    } else if ((access & Opcodes.ACC_ENUM) != 0) {
        type = newEnumType(pkg, enclosingSimpleName, simpleName);
    } else {
        JTypeParameter[] typeParams = getTypeParametersForClass(collectClassData);
        if ((typeParams != null && typeParams.length > 0)
                || nonStaticInsideGeneric(collectClassData, enclosingClassData)) {
            type = new JGenericType(typeOracle, pkg, enclosingSimpleName, simpleName, isInterface, typeParams);
        } else {
            type = newRealClassType(pkg, enclosingSimpleName, simpleName, isInterface);
        }
    }

    type.addModifierBits(mapBits(ASM_TO_SHARED_MODIFIERS, access));
    if (isInterface) {
        // Always add implicit modifiers on interfaces.
        type.addModifierBits(Shared.MOD_STATIC | Shared.MOD_ABSTRACT);
    }
    type.addLastModifiedTime(typeData.lastModifiedTime);

    return type;
}

From source file:com.google.gwt.dev.javac.CompilationUnitTypeOracleUpdater.java

License:Apache License

private boolean resolveField(TreeLogger logger, JRealClassType unresolvedType, CollectFieldData field,
        TypeParameterLookup typeParamLookup, int[] nextEnumOrdinal, TypeOracleBuildContext context) {
    Map<Class<? extends Annotation>, Annotation> declaredAnnotations = Maps.newHashMap();
    resolveAnnotations(logger, field.getAnnotations(), declaredAnnotations);
    String name = field.getName();
    JField jfield;//from   w w w. j  a  v  a  2s .c om
    if ((field.getAccess() & Opcodes.ACC_ENUM) != 0) {
        assert (unresolvedType.isEnum() != null);
        jfield = newEnumConstant(unresolvedType, name, declaredAnnotations, nextEnumOrdinal[0]++);
    } else {
        JField newField = newField(unresolvedType, name, declaredAnnotations);
        jfield = newField;
    }

    // Get modifiers.
    addModifierBits(jfield, mapBits(ASM_TO_SHARED_MODIFIERS, field.getAccess()));

    String signature = field.getSignature();
    JType fieldJType;
    if (signature != null) {
        SignatureReader reader = new SignatureReader(signature);
        JType[] fieldTypeRef = new JType[1];
        reader.acceptType(
                new ResolveTypeSignature(context.resolver, logger, fieldTypeRef, typeParamLookup, null));
        fieldJType = fieldTypeRef[0];
        if (fieldJType == null) {
            logger.log(TreeLogger.ERROR, "Unable to resolve type in field signature " + signature);
            return false;
        }
    } else {
        Type fieldType = Type.getType(field.getDesc());
        fieldJType = resolveType(fieldType);
        if (fieldJType == null) {
            logger.log(TreeLogger.ERROR,
                    "Unable to resolve type " + fieldType.getInternalName() + " of field " + field.getName());
            return false;
        }
    }
    setFieldType(jfield, fieldJType);
    return true;
}

From source file:com.google.gwt.dev.javac.TypeOracleMediator.java

License:Open Source License

private JRealClassType createType(CompiledClass compiledClass, CollectClassData classData,
        CollectClassData enclosingClassData) {
    int access = classData.getAccess();
    String qname = compiledClass.getSourceName();
    String className = Shared.getShortName(qname);
    JRealClassType resultType = null;//from   ww  w  .ja v  a 2  s  .c  om
    String jpkgName = compiledClass.getPackageName();
    JPackage pkg = typeOracle.getOrCreatePackage(jpkgName);
    boolean isIntf = (access & Opcodes.ACC_INTERFACE) != 0;
    assert !classData.hasNoExternalName();
    String enclosingTypeName = null;
    if (enclosingClassData != null) {
        enclosingTypeName = InternalName.toSourceName(InternalName.getClassName(enclosingClassData.getName()));
    }
    if ((access & Opcodes.ACC_ANNOTATION) != 0) {
        resultType = newAnnotationType(pkg, enclosingTypeName, className);
    } else if ((access & Opcodes.ACC_ENUM) != 0) {
        resultType = newEnumType(pkg, enclosingTypeName, className);
    } else {
        JTypeParameter[] typeParams = getTypeParametersForClass(classData);
        if ((typeParams != null && typeParams.length > 0)
                || nonStaticInsideGeneric(classData, enclosingClassData)) {
            resultType = new JGenericType(typeOracle, pkg, enclosingTypeName, className, isIntf, typeParams);
        } else {
            resultType = newRealClassType(pkg, enclosingTypeName, className, isIntf);
        }
    }

    /*
     * Declare type parameters for all methods; we must do this during the first
     * pass.
     */
    // if (typeDecl.methods != null) {
    // for (AbstractMethodDeclaration method : typeDecl.methods) {
    // declareTypeParameters(method.typeParameters());
    // }
    // }
    /*
     * Add modifiers since these are needed for
     * TypeOracle.getParameterizedType's error checking code.
     */
    resultType.addModifierBits(mapBits(ASM_TO_SHARED_MODIFIERS, access));
    if (isIntf) {
        // Always add implicit modifiers on interfaces.
        resultType.addModifierBits(Shared.MOD_STATIC | Shared.MOD_ABSTRACT);
    }

    return resultType;
}

From source file:com.google.gwt.dev.javac.TypeOracleMediator.java

License:Open Source License

private boolean resolveField(TreeLogger logger, JRealClassType type, CollectFieldData field,
        TypeParameterLookup typeParamLookup, int[] nextEnumOrdinal) {
    Map<Class<? extends Annotation>, Annotation> declaredAnnotations = new HashMap<Class<? extends Annotation>, Annotation>();
    resolveAnnotations(logger, field.getAnnotations(), declaredAnnotations);
    String name = field.getName();
    JField jfield;/*from  ww  w. ja  va  2  s. co  m*/
    if ((field.getAccess() & Opcodes.ACC_ENUM) != 0) {
        assert (type.isEnum() != null);
        jfield = newEnumConstant(type, name, declaredAnnotations, nextEnumOrdinal[0]++);
    } else {
        JField newField = newField(type, name, declaredAnnotations);
        jfield = newField;
    }

    // Get modifiers.
    //
    addModifierBits(jfield, mapBits(ASM_TO_SHARED_MODIFIERS, field.getAccess()));

    String signature = field.getSignature();
    JType fieldType;
    if (signature != null) {
        SignatureReader reader = new SignatureReader(signature);
        JType[] fieldTypeRef = new JType[1];
        reader.acceptType(
                new ResolveTypeSignature(resolver, binaryMapper, logger, fieldTypeRef, typeParamLookup, null));
        fieldType = fieldTypeRef[0];
        // TraceSignatureVisitor trace = new TraceSignatureVisitor(
        // methodData.getAccess());
        // reader.acceptType(trace);
        // System.err.println("Field " + name + ": " + trace.getDeclaration());

    } else {
        fieldType = resolveType(Type.getType(field.getDesc()));
    }
    if (fieldType == null) {
        return false;
    }
    setFieldType(jfield, fieldType);
    return true;
}

From source file:com.googlecode.dex2jar.ir.ToStringUtil.java

License:Apache License

public static String getAccDes(int acc) {
    StringBuilder sb = new StringBuilder();
    if ((acc & Opcodes.ACC_PUBLIC) != 0) {
        sb.append("public ");
    }//w w  w.  j  a v  a  2  s .  co m
    if ((acc & Opcodes.ACC_PROTECTED) != 0) {
        sb.append("protected ");
    }
    if ((acc & Opcodes.ACC_PRIVATE) != 0) {
        sb.append("private ");
    }
    if ((acc & Opcodes.ACC_STATIC) != 0) {
        sb.append("static ");
    }
    if ((acc & Opcodes.ACC_ABSTRACT) != 0 && (acc & Opcodes.ACC_INTERFACE) == 0) {
        sb.append("abstract ");
    }
    if ((acc & Opcodes.ACC_ANNOTATION) != 0) {
        sb.append("annotation ");
    }
    if ((acc & Opcodes.ACC_BRIDGE) != 0) {
        sb.append("bridge ");
    }
    if ((acc & Opcodes.ACC_DEPRECATED) != 0) {
        sb.append("deprecated ");
    }
    if ((acc & Opcodes.ACC_ENUM) != 0) {
        sb.append("enum ");
    }
    if ((acc & Opcodes.ACC_FINAL) != 0) {
        sb.append("final ");
    }
    if ((acc & Opcodes.ACC_INTERFACE) != 0) {
        sb.append("interace ");
    }
    if ((acc & Opcodes.ACC_NATIVE) != 0) {
        sb.append("native ");
    }
    if ((acc & Opcodes.ACC_STRICT) != 0) {
        sb.append("strict ");
    }
    if ((acc & Opcodes.ACC_SYNCHRONIZED) != 0) {
        sb.append("synchronized ");
    }
    if ((acc & Opcodes.ACC_TRANSIENT) != 0) {
        sb.append("transient ");
    }
    if ((acc & Opcodes.ACC_VARARGS) != 0) {
        sb.append("varargs ");
    }
    if ((acc & Opcodes.ACC_VOLATILE) != 0) {
        sb.append("volatile ");
    }
    return sb.toString();
}

From source file:com.googlecode.dex2jar.tools.JarAccessCmd.java

License:Apache License

static int str2acc(String s) {
    if (s == null) {
        return 0;
    }/*from w w  w  .  j  a  v  a2s . c om*/
    int result = 0;
    s = s.toLowerCase();
    if (s.contains("public")) {
        result |= Opcodes.ACC_PUBLIC;
    }
    if (s.contains("private")) {
        result |= Opcodes.ACC_PRIVATE;
    }
    if (s.contains("protected")) {
        result |= Opcodes.ACC_PROTECTED;
    }
    if (s.contains("final")) {
        result |= Opcodes.ACC_FINAL;
    }
    if (s.contains("static")) {
        result |= Opcodes.ACC_STATIC;
    }
    if (s.contains("super")) {
        result |= Opcodes.ACC_SUPER;
    }
    if (s.contains("synchronized")) {
        result |= Opcodes.ACC_SYNCHRONIZED;
    }
    if (s.contains("volatile")) {
        result |= Opcodes.ACC_VOLATILE;
    }
    if (s.contains("bridge")) {
        result |= Opcodes.ACC_BRIDGE;
    }
    if (s.contains("transient")) {
        result |= Opcodes.ACC_TRANSIENT;
    }
    if (s.contains("varargs")) {
        result |= Opcodes.ACC_VARARGS;
    }
    if (s.contains("native")) {
        result |= Opcodes.ACC_NATIVE;
    }
    if (s.contains("strict")) {
        result |= Opcodes.ACC_STRICT;
    }
    if (s.contains("interface")) {
        result |= Opcodes.ACC_INTERFACE;
    }
    if (s.contains("abstract")) {
        result |= Opcodes.ACC_ABSTRACT;
    }
    if (s.contains("synthetic")) {
        result |= Opcodes.ACC_SYNTHETIC;
    }
    if (s.contains("annotation")) {
        result |= Opcodes.ACC_ANNOTATION;
    }
    if (s.contains("enum")) {
        result |= Opcodes.ACC_ENUM;
    }
    if (s.contains("deprecated")) {
        result |= Opcodes.ACC_DEPRECATED;
    }
    return result;
}

From source file:com.googlecode.japi.checker.model.ClassData.java

License:Apache License

public boolean isEnum() {
    return (this.getAccess() & Opcodes.ACC_ENUM) == Opcodes.ACC_ENUM;
}

From source file:com.helger.meta.tools.codeingstyleguide.MainCheckCodingStyleguide.java

License:Apache License

private static void _checkClass(@Nonnull final IProject eProject, @Nonnull final ClassNode cn) {
    final String sClassLocalName = CGStringHelper.getClassLocalName(CGStringHelper.getClassFromPath(cn.name));
    final boolean bIsSpecialCase = sClassLocalName.equals("package-info");
    if (bIsSpecialCase)
        return;//from   ww  w  . jav  a2  s . c o  m

    String sInnerClassLocalName = StringHelper.getFromLastExcl(sClassLocalName, '$');
    if (sInnerClassLocalName == null)
        sInnerClassLocalName = sClassLocalName;
    else if (StringParser.isUnsignedInt(sInnerClassLocalName)) {
        // It's an anonymous inner class - use the full name
        sInnerClassLocalName = sClassLocalName;
    }

    final String sPrefix = "[" + sClassLocalName + "] ";
    final boolean bClassIsAbstract = Modifier.isAbstract(cn.access);
    final boolean bClassIsAnnotation = (cn.access & Opcodes.ACC_ANNOTATION) != 0;
    final boolean bClassIsEnum = (cn.access & Opcodes.ACC_ENUM) != 0;
    final boolean bClassIsInterface = Modifier.isInterface(cn.access);

    if (bClassIsInterface) {
        if (bClassIsAnnotation) {
            // TODO
        } else {
            if (sInnerClassLocalName.startsWith("I")) {
                if (sInnerClassLocalName.length() > 1 && !Character.isUpperCase(sInnerClassLocalName.charAt(1)))
                    _warn(eProject, sPrefix + "Interface names should have an upper case second letter");
            } else if (!sInnerClassLocalName.startsWith("I") && !sClassLocalName.endsWith("MBean"))
                _warn(eProject, sPrefix + "Interface names should start with an uppercase 'I'");
        }
    } else {
        if (bClassIsEnum) {
            if (!sInnerClassLocalName.startsWith("E"))
                _warn(eProject, sPrefix + "enum classes should start with 'E'");
        } else {
            if (bClassIsAbstract) {
                if (!sInnerClassLocalName.startsWith("Abstract") && !sInnerClassLocalName.contains("Singleton"))
                    _warn(eProject, sPrefix + "Abstract classes should start with 'Abstract'");
            }
        }
    }
}

From source file:com.helger.meta.tools.codeingstyleguide.MainCheckCodingStyleguide.java

License:Apache License

private static void _checkMethods(@Nonnull final IProject eProject, @Nonnull final ClassNode cn) {
    final String sClassLocalName = CGStringHelper.getClassLocalName(CGStringHelper.getClassFromPath(cn.name));
    final boolean bIsSpecialCase = false;
    if (bIsSpecialCase)
        return;/*  w ww.j av  a  2 s .  c om*/

    final boolean bClassIsAbstract = Modifier.isAbstract(cn.access);
    final boolean bClassIsEnum = (cn.access & Opcodes.ACC_ENUM) != 0;
    final boolean bClassIsFinal = Modifier.isFinal(cn.access);
    final boolean bClassIsInterface = Modifier.isInterface(cn.access);

    final List<MethodNode> aAllCtors = new ArrayList<>();
    for (final Object oMethod : cn.methods) {
        final MethodNode mn = (MethodNode) oMethod;

        if (ASMUtils.containsAnnotation(mn, CodingStyleguideUnaware.class))
            continue;

        final String sPrefix = "[" + sClassLocalName + "::" + mn.name + "] ";

        final boolean bIsConstructor = mn.name.equals("<init>");
        final boolean bIsPrivate = Modifier.isPrivate(mn.access);
        final boolean bIsFinal = Modifier.isFinal(mn.access);

        if (bIsConstructor)
            aAllCtors.add(mn);

        if (bIsPrivate) {
            if (!bIsConstructor && !mn.name.startsWith("_") && !mn.name.equals("readObject")
                    && !mn.name.equals("writeObject") && !mn.name.equals("readResolve")
                    && !mn.name.startsWith("lambda$"))
                _warn(eProject, sPrefix + "Privat methods should start with an underscore");
        }

        if (bIsFinal) {
            if (bClassIsFinal)
                _warn(eProject, sPrefix + "final method in final class");

            if (ASMUtils.containsAnnotation(mn, OverrideOnDemand.class))
                _warn(eProject, sPrefix + "final method uses @OverrideOnDemand annotation");
        } else {
            if (bClassIsFinal && ASMUtils.containsAnnotation(mn, OverrideOnDemand.class))
                _warn(eProject, sPrefix + "final class uses @OverrideOnDemand annotation");
        }
    }

    if (bClassIsAbstract && !bClassIsInterface && !bClassIsEnum) {
        boolean bAnyNonPrivateCtor = false;
        for (final MethodNode aCtor : aAllCtors)
            if (!Modifier.isPrivate(aCtor.access)) {
                bAnyNonPrivateCtor = true;
                break;
            }
        if (!bAnyNonPrivateCtor)
            _warn(eProject, "[" + sClassLocalName + "] The abstract class contains only private constructors!");
    }
}