List of usage examples for org.objectweb.asm Opcodes ACC_ENUM
int ACC_ENUM
To view the source code for org.objectweb.asm Opcodes ACC_ENUM.
Click Source Link
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!"); } }