Skip to content

Do not filter @JvmSynthetic classes in Kotlin #1846

@Godin

Description

@Godin

For Example.kt

@file:JvmSynthetic

fun main(args: Array<String>) {
}

execution of

kotlin-2.1.10/bin/kotlinc -d classes src
java -javaagent:jacoco-0.8.12/lib/jacocoagent.jar -cp kotlin-2.1.10/lib/kotlin-stdlib.jar:classes ExampleKt
java -jar jacoco-0.8.12/lib/jacococli.jar report --classfiles classes --html report

produces

[WARN] No execution data files provided.
[INFO] Analyzing 0 classes.

because ACC_SYNTHETIC classes are ignored

if ((reader.getAccess() & Opcodes.ACC_SYNTHETIC) != 0) {
return;
}

javap -v -p classes/ExampleKt.class
public final class ExampleKt
  minor version: 0
  major version: 52
  flags: (0x1031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER, ACC_SYNTHETIC
  this_class: #2                          // ExampleKt
  super_class: #4                         // java/lang/Object
  interfaces: 0, fields: 0, methods: 1, attributes: 2
{
  public static final void main(java.lang.String[]);
    descriptor: ([Ljava/lang/String;)V
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    Code:
      stack=2, locals=1, args_size=1
         0: aload_0
         1: ldc           #9                  // String args
         3: invokestatic  #15                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
         6: return
      LineNumberTable:
        line 4: 6
      LocalVariableTable:
        Start  Length  Slot  Name   Signature
            0       7     0  args   [Ljava/lang/String;
    RuntimeInvisibleParameterAnnotations:
      parameter 0:
        0: #7()
          org.jetbrains.annotations.NotNull
}
SourceFile: "Example.kt"
RuntimeVisibleAnnotations:
  0: #17(#18=[I#19,I#20,I#21],#22=I#19,#23=I#24,#25=[s#26],#27=[s#5,s#28,s#8,s#28,s#28,s#6])
    kotlin.Metadata(
      mv=[2,1,0]
      k=2
      xi=48
      d1=["\u0000\u0012\n\u0000\n\u0002\u0010\u0002\n\u0000\n\u0002\u0010\u0011\n\u0002\u0010\u000e\n\u0000\u001a\u0019\u0010\u0000\u001a\u00020\u00012\f\u0010\u0002\u001a\b\u0012\u0004\u0012\u00020\u00040\u0003¢\u0006\u0002\u0010\u0005"]
      d2=["main","","args","","","([Ljava/lang/String;)V"]
    )

Metadata

Metadata

Assignees

No one assigned

    Projects

    Status

    Awaiting triage

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions