Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,8 @@
// THE POSSIBILITY OF SUCH DAMAGE.
package org.objectweb.asm.tree.analysis;

import org.checkerframework.checker.signature.qual.InternalForm;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
Expand Down Expand Up @@ -103,7 +105,7 @@ public Analyzer(final Interpreter<V> interpreter) {
* @throws AnalyzerException if a problem occurs during the analysis.
*/
@SuppressWarnings("unchecked")
public Frame<V>[] analyze(final String owner, final MethodNode method) throws AnalyzerException {
public Frame<V>[] analyze(final @InternalForm String owner, final MethodNode method) throws AnalyzerException {
if ((method.access & (ACC_ABSTRACT | ACC_NATIVE)) != 0) {
frames = (Frame<V>[]) new Frame<?>[0];
return frames;
Expand Down Expand Up @@ -307,7 +309,7 @@ public Frame<V>[] analyze(final String owner, final MethodNode method) throws An
* instruction cannot be reached (dead code).
* @throws AnalyzerException if a problem occurs during the analysis.
*/
public Frame<V>[] analyzeAndComputeMaxs(final String owner, final MethodNode method)
public Frame<V>[] analyzeAndComputeMaxs(final @InternalForm String owner, final MethodNode method)
throws AnalyzerException {
method.maxLocals = computeMaxLocals(method);
method.maxStack = -1;
Expand Down Expand Up @@ -492,7 +494,7 @@ private void findSubroutine(
* @param method the method to be analyzed.
* @return the initial execution stack frame of the 'method'.
*/
private Frame<V> computeInitialFrame(final String owner, final MethodNode method) {
private Frame<V> computeInitialFrame(final @InternalForm String owner, final MethodNode method) {
Frame<V> frame = newFrame(method.maxLocals, method.maxStack);
int currentLocal = 0;
boolean isInstanceMethod = (method.access & ACC_STATIC) == 0;
Expand Down Expand Up @@ -552,7 +554,7 @@ public List<TryCatchBlockNode> getHandlers(final int insnIndex) {
* @param method the method to be analyzed.
* @throws AnalyzerException if a problem occurs.
*/
protected void init(final String owner, final MethodNode method) throws AnalyzerException {
protected void init(final @InternalForm String owner, final MethodNode method) throws AnalyzerException {
// Nothing to do.
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ public class BasicInterpreter extends Interpreter<BasicValue> implements Opcodes
* Special type used for the {@literal null} literal. This is an object reference type with
* descriptor 'Lnull;'.
*/
@SuppressWarnings("argument") // "null" is not @InternalForm
public static final Type NULL_TYPE = Type.getObjectType("null");

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -437,6 +437,7 @@ protected boolean isAssignableFrom(final Type type1, final Type type2) {
* @param type an object reference type (i.e., with Type.OBJECT sort).
* @return the class corresponding to 'type'.
*/
@SuppressWarnings("argument") // "e.toString()" is @FullyQualifiedName ?
protected Class<?> getClass(final Type type) {
try {
if (type.getSort() == Type.ARRAY) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ MethodNodeBuilder typeInsn(final int opcode, final String operand) {

MethodNodeBuilder methodInsn(
final int opcode,
final String owner,
final @InternalForm String owner,
final String name,
final String descriptor,
final boolean isInterface) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ void testConstructor() {
"java/util/Map, java/util/List, java/lang/Object"
})
void testMerge_objectTypes(
final String internalName1, final String internalName2, final String expectedInternalName) {
final @InternalForm String internalName1, final @InternalForm String internalName2, final @InternalForm String expectedInternalName) {
BasicValue value1 = new BasicValue(Type.getObjectType(internalName1));
BasicValue value2 = new BasicValue(Type.getObjectType(internalName2));
SimpleVerifier verifier = new SimpleVerifier();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,11 @@
// THE POSSIBILITY OF SUCH DAMAGE.
package org.objectweb.asm.commons;

import org.checkerframework.checker.signature.qual.MethodDescriptor;
import org.checkerframework.checker.signature.qual.FieldDescriptor;
import org.checkerframework.checker.signature.qual.Identifier;
import org.checkerframework.checker.signature.qual.InternalForm;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
Expand Down Expand Up @@ -364,7 +369,7 @@ public void visitVarInsn(final int opcode, final int varIndex) {

@Override
public void visitFieldInsn(
final int opcode, final String owner, final String name, final String descriptor) {
final int opcode, final @InternalForm String owner, final @Identifier String name, final @FieldDescriptor String descriptor) {
super.visitFieldInsn(opcode, owner, name, descriptor);
if (isConstructor && !superClassConstructorCalled) {
char firstDescriptorChar = descriptor.charAt(0);
Expand Down Expand Up @@ -422,7 +427,7 @@ public void visitLdcInsn(final Object value) {
}

@Override
public void visitMultiANewArrayInsn(final String descriptor, final int numDimensions) {
public void visitMultiANewArrayInsn(final @FieldDescriptor String descriptor, final int numDimensions) {
super.visitMultiANewArrayInsn(descriptor, numDimensions);
if (isConstructor && !superClassConstructorCalled) {
for (int i = 0; i < numDimensions; i++) {
Expand All @@ -433,7 +438,7 @@ public void visitMultiANewArrayInsn(final String descriptor, final int numDimens
}

@Override
public void visitTypeInsn(final int opcode, final String type) {
public void visitTypeInsn(final int opcode, final @InternalForm String type) {
super.visitTypeInsn(opcode, type);
// ANEWARRAY, CHECKCAST or INSTANCEOF don't change stack.
if (isConstructor && !superClassConstructorCalled && opcode == NEW) {
Expand All @@ -444,9 +449,9 @@ public void visitTypeInsn(final int opcode, final String type) {
@Override
public void visitMethodInsn(
final int opcodeAndSource,
final String owner,
final String name,
final String descriptor,
final @InternalForm String owner,
final @Identifier String name,
final @MethodDescriptor String descriptor,
final boolean isInterface) {
if (api < Opcodes.ASM5 && (opcodeAndSource & Opcodes.SOURCE_DEPRECATED) == 0) {
// Redirect the call to the deprecated version of this method.
Expand Down Expand Up @@ -498,7 +503,7 @@ private void doVisitMethodInsn(final int opcode, final String name, final String
@Override
public void visitInvokeDynamicInsn(
final String name,
final String descriptor,
final @MethodDescriptor String descriptor,
final Handle bootstrapMethodHandle,
final Object... bootstrapMethodArguments) {
super.visitInvokeDynamicInsn(name, descriptor, bootstrapMethodHandle, bootstrapMethodArguments);
Expand Down Expand Up @@ -567,7 +572,7 @@ public void visitTableSwitchInsn(

@Override
public void visitTryCatchBlock(
final Label start, final Label end, final Label handler, final String type) {
final Label start, final Label end, final Label handler, final @InternalForm String type) {
super.visitTryCatchBlock(start, end, handler, type);
// By definition of 'forwardJumpStackFrames', 'handler' should be pushed only if there is an
// instruction between 'start' and 'end' at which the super class constructor is not yet
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,11 @@
// THE POSSIBILITY OF SUCH DAMAGE.
package org.objectweb.asm.commons;

import org.checkerframework.checker.signature.qual.MethodDescriptor;
import org.checkerframework.checker.signature.qual.FieldDescriptor;
import org.checkerframework.checker.signature.qual.Identifier;
import org.checkerframework.checker.signature.qual.InternalForm;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
Expand Down Expand Up @@ -97,7 +102,7 @@ public class AnalyzerAdapter extends MethodVisitor {
private int maxLocals;

/** The owner's class name. */
private String owner;
private @InternalForm String owner;

/**
* Constructs a new {@link AnalyzerAdapter}. <i>Subclasses must not use this constructor</i>.
Expand All @@ -113,7 +118,7 @@ public class AnalyzerAdapter extends MethodVisitor {
* @throws IllegalStateException If a subclass calls this constructor.
*/
public AnalyzerAdapter(
final String owner,
final @InternalForm String owner,
final int access,
final String name,
final String descriptor,
Expand All @@ -138,7 +143,7 @@ public AnalyzerAdapter(
*/
protected AnalyzerAdapter(
final int api,
final String owner,
final @InternalForm String owner,
final int access,
final String name,
final String descriptor,
Expand Down Expand Up @@ -256,7 +261,7 @@ public void visitVarInsn(final int opcode, final int varIndex) {
}

@Override
public void visitTypeInsn(final int opcode, final String type) {
public void visitTypeInsn(final int opcode, final @InternalForm String type) {
if (opcode == Opcodes.NEW) {
if (labels == null) {
Label label = new Label();
Expand All @@ -276,17 +281,17 @@ public void visitTypeInsn(final int opcode, final String type) {

@Override
public void visitFieldInsn(
final int opcode, final String owner, final String name, final String descriptor) {
final int opcode, final @InternalForm String owner, final @Identifier String name, final @FieldDescriptor String descriptor) {
super.visitFieldInsn(opcode, owner, name, descriptor);
execute(opcode, 0, descriptor);
}

@Override
public void visitMethodInsn(
final int opcodeAndSource,
final String owner,
final String name,
final String descriptor,
final @InternalForm String owner,
final @Identifier String name,
final @MethodDescriptor String descriptor,
final boolean isInterface) {
if (api < Opcodes.ASM5 && (opcodeAndSource & Opcodes.SOURCE_DEPRECATED) == 0) {
// Redirect the call to the deprecated version of this method.
Expand Down Expand Up @@ -329,7 +334,7 @@ public void visitMethodInsn(
@Override
public void visitInvokeDynamicInsn(
final String name,
final String descriptor,
final @MethodDescriptor String descriptor,
final Handle bootstrapMethodHandle,
final Object... bootstrapMethodArguments) {
super.visitInvokeDynamicInsn(name, descriptor, bootstrapMethodHandle, bootstrapMethodArguments);
Expand Down Expand Up @@ -424,15 +429,15 @@ public void visitLookupSwitchInsn(final Label dflt, final int[] keys, final Labe
}

@Override
public void visitMultiANewArrayInsn(final String descriptor, final int numDimensions) {
public void visitMultiANewArrayInsn(final @FieldDescriptor String descriptor, final int numDimensions) {
super.visitMultiANewArrayInsn(descriptor, numDimensions);
execute(Opcodes.MULTIANEWARRAY, numDimensions, descriptor);
}

@Override
public void visitLocalVariable(
final String name,
final String descriptor,
final @Identifier String name,
final @FieldDescriptor String descriptor,
final String signature,
final Label start,
final Label end,
Expand Down Expand Up @@ -892,11 +897,11 @@ private void execute(final int opcode, final int intArg, final String stringArg)
break;
case Opcodes.ANEWARRAY:
pop();
pushDescriptor("[" + Type.getObjectType(stringArg));
pushDescriptor((@InternalForm String)("[" + Type.getObjectType((@InternalForm String) stringArg)));
break;
case Opcodes.CHECKCAST:
pop();
pushDescriptor(Type.getObjectType(stringArg).getDescriptor());
pushDescriptor(Type.getObjectType((@InternalForm String) stringArg).getDescriptor());
break;
case Opcodes.MULTIANEWARRAY:
pop(intArg);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,8 @@

package org.objectweb.asm.commons;

import org.checkerframework.checker.signature.qual.Identifier;
import org.checkerframework.checker.signature.qual.FieldDescriptor;
import org.objectweb.asm.AnnotationVisitor;
import org.objectweb.asm.Opcodes;

Expand All @@ -42,7 +44,7 @@ public class AnnotationRemapper extends AnnotationVisitor {
* The descriptor of the visited annotation. May be {@literal null}, for instance for
* AnnotationDefault.
*/
protected final String descriptor;
protected final @FieldDescriptor String descriptor;

/** The remapper used to remap the types in the visited annotation. */
protected final Remapper remapper;
Expand Down Expand Up @@ -70,7 +72,7 @@ public AnnotationRemapper(final AnnotationVisitor annotationVisitor, final Remap
* @param remapper the remapper to use to remap the types in the visited annotation.
*/
public AnnotationRemapper(
final String descriptor, final AnnotationVisitor annotationVisitor, final Remapper remapper) {
final @FieldDescriptor String descriptor, final AnnotationVisitor annotationVisitor, final Remapper remapper) {
this(/* latest api = */ Opcodes.ASM9, descriptor, annotationVisitor, remapper);
}

Expand Down Expand Up @@ -100,7 +102,7 @@ protected AnnotationRemapper(
*/
protected AnnotationRemapper(
final int api,
final String descriptor,
final @FieldDescriptor String descriptor,
final AnnotationVisitor annotationVisitor,
final Remapper remapper) {
super(api, annotationVisitor);
Expand All @@ -109,17 +111,17 @@ protected AnnotationRemapper(
}

@Override
public void visit(final String name, final Object value) {
public void visit(final @Identifier String name, final Object value) {
super.visit(mapAnnotationAttributeName(name), remapper.mapValue(value));
}

@Override
public void visitEnum(final String name, final String descriptor, final String value) {
public void visitEnum(final @Identifier String name, final @FieldDescriptor String descriptor, final String value) {
super.visitEnum(mapAnnotationAttributeName(name), remapper.mapDesc(descriptor), value);
}

@Override
public AnnotationVisitor visitAnnotation(final String name, final String descriptor) {
public AnnotationVisitor visitAnnotation(final @Identifier String name, final @FieldDescriptor String descriptor) {
AnnotationVisitor annotationVisitor =
super.visitAnnotation(mapAnnotationAttributeName(name), remapper.mapDesc(descriptor));
if (annotationVisitor == null) {
Expand All @@ -132,7 +134,7 @@ public AnnotationVisitor visitAnnotation(final String name, final String descrip
}

@Override
public AnnotationVisitor visitArray(final String name) {
public AnnotationVisitor visitArray(final @Identifier String name) {
AnnotationVisitor annotationVisitor = super.visitArray(mapAnnotationAttributeName(name));
if (annotationVisitor == null) {
return null;
Expand Down Expand Up @@ -165,7 +167,7 @@ protected AnnotationVisitor createAnnotationRemapper(final AnnotationVisitor ann
* @return the newly created remapper.
*/
protected AnnotationVisitor createAnnotationRemapper(
final String descriptor, final AnnotationVisitor annotationVisitor) {
final @FieldDescriptor String descriptor, final AnnotationVisitor annotationVisitor) {
return new AnnotationRemapper(api, descriptor, annotationVisitor, remapper)
.orDeprecatedValue(createAnnotationRemapper(annotationVisitor));
}
Expand Down Expand Up @@ -201,7 +203,7 @@ final AnnotationVisitor orDeprecatedValue(final AnnotationVisitor deprecatedAnno
* @param name the name of the annotation attribute.
* @return the new name of the annotation attribute.
*/
private String mapAnnotationAttributeName(final String name) {
private @Identifier String mapAnnotationAttributeName(final @Identifier String name) {
if (descriptor == null) {
return name;
}
Expand Down
Loading