Class KotlinInlineClassFilter

  • All Implemented Interfaces:
    IFilter

    final class KotlinInlineClassFilter
    extends java.lang.Object
    implements IFilter
    Filters methods that Kotlin compiler generates for inline classes. For
     @kotlin.jvm.JvmInline
     value class Example(val value: String) : Base {
       fun f(p: String) { ... }
       fun f(p: Example) { ... }
       override fun base() { ... }
     }
     
    Kotlin compiler produces
     @kotlin.jvm.JvmInline
     class Example implements Base {
       private final String value;
       public String getValue() { return value; }
    
       private synthetic Example(String value) { this.value = value; }
    
       public static String constructor-impl(String value) { ... }
    
       public static void f-impl(String value, String p) { ... }
    
       public static void f-ulP-heY(String value, String p) { ... }
    
       public void base() { base-impl(value); }
       public static void base-impl(String value) { ... }
    
       public String toString() { return toString-impl(value); }
       public static String toString-impl(String value) { ... }
    
       public boolean equals(Object other) { return equals-impl(value, other); }
       public static boolean equals-impl(String value, Object other) { ... }
    
       public int hashCode() { return hashCode-impl(value); }
       public static int hashCode-impl(String value) { ... }
    
       public final synthetic String unbox-impl() { return value; }
       public static synthetic Example box-impl(String value) { return new Example(value); }
    
       public static equals-impl0(String value1, String value2) { ... }
     }
     
    Except getter all non-synthetic non-static methods delegate to corresponding static methods. Non-static methods are provided for interoperability with Java and can not be invoked from Kotlin without reflection and so should be filtered out.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void filter​(org.objectweb.asm.tree.MethodNode methodNode, IFilterContext context, IFilterOutput output)
      This method is called for every method.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • KotlinInlineClassFilter

        KotlinInlineClassFilter()
    • Method Detail

      • filter

        public void filter​(org.objectweb.asm.tree.MethodNode methodNode,
                           IFilterContext context,
                           IFilterOutput output)
        Description copied from interface: IFilter
        This method is called for every method. The filter implementation is expected to inspect the provided method and report its result to the given IFilterOutput instance.
        Specified by:
        filter in interface IFilter
        Parameters:
        methodNode - method to inspect
        context - context information for the method
        output - callback to report filtering results to