diff --git a/muzzle/src/main/java/io/opentelemetry/javaagent/tooling/muzzle/ReferenceCollectingClassVisitor.java b/muzzle/src/main/java/io/opentelemetry/javaagent/tooling/muzzle/ReferenceCollectingClassVisitor.java index 03c99ada9c..19007e5616 100644 --- a/muzzle/src/main/java/io/opentelemetry/javaagent/tooling/muzzle/ReferenceCollectingClassVisitor.java +++ b/muzzle/src/main/java/io/opentelemetry/javaagent/tooling/muzzle/ReferenceCollectingClassVisitor.java @@ -362,6 +362,12 @@ final class ReferenceCollectingClassVisitor extends ClassVisitor { ? underlyingType(Type.getType(owner)) : Type.getType("L" + owner + ";"); + // method invoked on a primitive array type + if (ownerType.getSort() != Type.OBJECT) { + super.visitMethodInsn(opcode, owner, name, descriptor, isInterface); + return; + } + { // ref for method return type Type returnType = underlyingType(methodType.getReturnType()); if (returnType.getSort() == Type.OBJECT) { diff --git a/muzzle/src/test/java/muzzle/TestClasses.java b/muzzle/src/test/java/muzzle/TestClasses.java index 2f3b878330..b7dca652da 100644 --- a/muzzle/src/test/java/muzzle/TestClasses.java +++ b/muzzle/src/test/java/muzzle/TestClasses.java @@ -14,6 +14,7 @@ import net.bytebuddy.asm.Advice; public class TestClasses { public static class MethodBodyAdvice { + @SuppressWarnings("ReturnValueIgnored") @Advice.OnMethodEnter public static void methodBodyAdvice() { A a = new A(); @@ -24,6 +25,7 @@ public class TestClasses { a.publicB.methodWithArrays(new String[0]); B.staticMethod(); A.staticB.method("bar"); + new int[0].clone(); } public static class A {