Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[aspectj-dev] Deeply nested anonymous classes bug
  • From: Justin Tullgren <jtullgren@xxxxxxxxxxxxxxx>
  • Date: Wed, 5 Aug 2020 16:10:08 +0000
  • Accept-language: en-US
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=thunderhead.com; dmarc=pass action=none header.from=thunderhead.com; dkim=pass header.d=thunderhead.com; arc=none
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=oGEi5tL91Jg5LIrjPr9BzZVeQcS0m10gkoIzroBGxkM=; b=eREvvdWZE1bwM2ZKTteGxdO3LuIOSvTYZcuP93K0jtf59OnHPFjWXPAL3fnITuGXwjhzQfeY7l7oKGxACUXA3FN8hirosdH46p84q/4OqPFgAQq8WXzgYNnWAGPSuPNP8+lXhGi/fuZOHW8OoMohjj87oyN0RhjSKt7wT3rZwjmdZWf3j0IBa42PZfH32UnzHuR5cO55Wa/1DJaLtdGXjy39FjhlGpHSwiTdRHbZtV/F8sDDTvoyO89hyOoWNtWvVVaU/w0ZFELPHaw6T06YR2qEMV6tXJ9BjUcAH1gW75eriEQGeF3ps+gUm+9mJFrBuI/2ZP2gu/JaSIwnrN4saA==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=dnDsmbyptL5NQQveUSumr4CNvmbbYgiMcAXMosFBLdLl/GGBJG5wg29sqfKPIntVVNIa8V++VrLuETHnZBAsv9bYO0Wefg0Gj/YVuFjwYzyQ25RKpjgA/9lAcRh5Hx05AuPDLyttra/nnj0ac4rAqyF5alrFyoo6HGZv9TB0RA/9sNRe9AiUD2BKLsbKIJGyjjwmPSct7kh6HX1N92zXPEYHa+oIuIqx0flcPvjhy2vAwkLYvIbK8oP7Z3EBpZDaNmcTL1D+HOe0+KZ1fxSZOp5Q+sXXy5U01wn2L751HhB/kZ1/R/V/Nu1UmRlq25vMmfFVBs5QbvzxtE1wO2qoHg==
  • Delivered-to: aspectj-dev@xxxxxxxxxxx
  • List-archive: <https://www.eclipse.org/mailman/private/aspectj-dev>
  • List-help: <mailto:aspectj-dev-request@eclipse.org?subject=help>
  • List-subscribe: <https://www.eclipse.org/mailman/listinfo/aspectj-dev>, <mailto:aspectj-dev-request@eclipse.org?subject=subscribe>
  • List-unsubscribe: <https://www.eclipse.org/mailman/options/aspectj-dev>, <mailto:aspectj-dev-request@eclipse.org?subject=unsubscribe>
  • Thread-index: AQHWa0LjsxZq7+qPl0mG57b1N1C3rQ==
  • Thread-topic: Deeply nested anonymous classes bug
  • User-agent: Microsoft-MacOutlook/16.39.20071300

Hi,

 

We use the AspectJ compiler to transform bytecode (both java and kotlin) for Android projects before it is turned into dex format bytecode.  This has been working well however we have found a bug and I am looking for guidance.

 

My main questions are

  1. Does anyone have a workaround?
  2. How can I get the bug triaged?

 

Thank you in advance.

 

 

Here is the bug I have logged: https://bugs.eclipse.org/bugs/show_bug.cgi?id=565713

 

Here is the explanation of the bug

 

AJ Compiler/Runtime Version: 1.9.6

Compiler Args (values omitted):             

            -aspectpath

            -inpath

            -target,

            -source

            -d

            -log

            -classpath

            -bootclasspath

            -verbose

            -Xlint:ignore

 

During compile time weaving deeply nested anonymous inner classes cause the compiler to fail with this message:

Whilst processing type 'Lcom/test/MainActivity$configure$1$2$1$1;' - cannot cast the outer type to a reference type.

 

This issue is reproduced more easily in kotlin as kotlin is more functional and adds a lot of anonymous inner classes via their standard library higher order functions. 

 

Here is the sample code that produces the issue (totally bogus, just shows the issue):

 

fun configure() {
  
findViewById<View>(R.id.FirstFragment)
     
// apply is a higher order function accepting a lambda/function (IE anonymous class)
     
.apply {
        
loader = object : LoaderWrapper() { }
           
// another apply
           
.apply {
              
doHide = { aEnum ->
                 
doHide = {}
                 
findViewById<View>(R.id.SecondFragment)
                    
// another apply
                    
.apply {
                       
doHide = {
                           
// another apply
                          
it.apply {

                           }
                        }
                     }
               }
            }
      }
}

 

 

 

 

 

 

Here is the decompiled java code:

// MainActivity.java
package com.test;

import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import java.util.HashMap;
import kotlin.Metadata;
import kotlin.jvm.functions.Function1;
import org.jetbrains.annotations.Nullable;

@Metadata(
  
mv = {1, 1, 16},
  
bv = {1, 0, 3},
  
k = 1,
  
d1 = {"\u0000 \n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010\u0002\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0000\u0018\u00002\u00020\u0001B\u0005¢\u0006\u0002\u0010\u0002J\u0006\u0010\u0005\u001a\u00020\u0006J\u0012\u0010\u0007\u001a\u00020\u00062\b\u0010\b\u001a\u0004\u0018\u00010\tH\u0014R\u0010\u0010\u0003\u001a\u0004\u0018\u00010\u0004X\u0082\u000e¢\u0006\u0002\n\u0000¨\u0006\n"},
  
d2 = {"Lcom/test/MainActivity;", "Landroidx/appcompat/app/AppCompatActivity;", "()V", "loader", "Lcom/test/Loader;", "configure", "", "onCreate", "savedInstanceState", "Landroid/os/Bundle;", "app"}
)
public
final class MainActivity extends AppCompatActivity {
   private
Loader loader;
  
private HashMap _$_findViewCache;

  
protected void onCreate(@Nullable Bundle savedInstanceState) {
     
super.onCreate(savedInstanceState);
     
this.setContentView(1300071);
     
this.setSupportActionBar((Toolbar)this.findViewById(1000191));
     
((FloatingActionButton)this.findViewById(1000144)).setOnClickListener((OnClickListener)null.INSTANCE);
     
this.configure();
  
}

   public
final void configure() {
     
View var1 = this.findViewById(1000003);
     
boolean var2 = false;
     
boolean var3 = false;
     
int var5 = false;
     
MainActivity$configure$1$1 var6 = new MainActivity$configure$1$1();
     
boolean var8 = false;
     
boolean var9 = false;
     
int var11 = false;
     
var6.setDoHide((Function1)(new MainActivity$$special$$inlined$apply$lambda$1(var6, var1)));
     
this.loader = (Loader)var6;
  
}

   public
View _$_findCachedViewById(int var1) {
     
if (this._$_findViewCache == null) {
        
this._$_findViewCache = new HashMap();
     
}

      
View var2 = (View)this._$_findViewCache.get(var1);
     
if (var2 == null) {
        
var2 = this.findViewById(var1);
        
this._$_findViewCache.put(var1, var2);
     
}

     
return var2;
  
}

   public
void _$_clearFindViewByIdCache() {
     
if (this._$_findViewCache != null) {
        
this._$_findViewCache.clear();
     
}

   }
}
// MainActivity$configure$1$2$1$2$1.java
package com.test;

import com.test.Loader.AEnum;
import kotlin.Metadata;
import kotlin.Unit;
import kotlin.jvm.functions.Function1;
import kotlin.jvm.internal.Intrinsics;
import kotlin.jvm.internal.Lambda;
import org.jetbrains.annotations.NotNull;

@Metadata(
  
mv = {1, 1, 16},
  
bv = {1, 0, 3},
  
k = 3,
  
d1 = {"\u0000\u000e\n\u0000\n\u0002\u0010\u0002\n\u0000\n\u0002\u0018\u0002\n\u0000\u0010\u0000\u001a\u00020\u00012\u0006\u0010\u0002\u001a\u00020\u0003H\n¢\u0006\u0002\b\u0004"},
  
d2 = {"<anonymous>", "", "it", "Lcom/test/Loader$AEnum;", "invoke"}
)
final class MainActivity$configure$1$2$1$2$1 extends Lambda implements Function1 {
   public
static final MainActivity$configure$1$2$1$2$1 INSTANCE = new MainActivity$configure$1$2$1$2$1();

  
// $FF: synthetic method
   // $FF: bridge method
  
public Object invoke(Object var1) {
     
this.invoke((AEnum)var1);
     
return Unit.INSTANCE;
  
}

   public
final void invoke(@NotNull AEnum it) {
     
Intrinsics.checkParameterIsNotNull(it, "it");
     
boolean var3 = false;
     
boolean var4 = false;
      
boolean var6 = false;
  
}

  
MainActivity$configure$1$2$1$2$1() {
     
super(1);
  
}
}
// MainActivity$configure$1$1.java
package com.test;

import kotlin.Metadata;

@Metadata(
  
mv = {1, 1, 16},
  
bv = {1, 0, 3},
  
k = 1,
  
d1 = {"\u0000\u000b\n\u0000\n\u0002\u0018\u0002\n\u0000*\u0001\u0000\b\n\u0018\u00002\u00020\u0001¨\u0006\u0002"},
  
d2 = {"com/test/MainActivity$configure$1$1", "Lcom/test/LoaderWrapper;", "app"}
)
public
final class MainActivity$configure$1$1 extends LoaderWrapper {
  
MainActivity$configure$1$1() {
   }
}
// MainActivity$$special$$inlined$apply$lambda$1.java
package com.test;

import android.view.View;
import com.test.Loader.AEnum;
import kotlin.Metadata;
import kotlin.Unit;
import kotlin.jvm.functions.Function1;
import kotlin.jvm.internal.Intrinsics;
import kotlin.jvm.internal.Lambda;
import org.jetbrains.annotations.NotNull;

@Metadata(
  
mv = {1, 1, 16},
  
bv = {1, 0, 3},
  
k = 3,
  
d1 = {"\u0000\u0010\n\u0000\n\u0002\u0010\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0002\u0010\u0000\u001a\u00020\u00012\u0006\u0010\u0002\u001a\u00020\u0003H\n¢\u0006\u0002\b\u0004¨\u0006\u0005"},
  
d2 = {"<anonymous>", "", "aEnum", "Lcom/test/Loader$AEnum;", "invoke", "com/test/MainActivity$configure$1$2$1"}
)
final class MainActivity$$special$$inlined$apply$lambda$1 extends Lambda implements Function1 {
  
// $FF: synthetic field
  
final MainActivity$configure$1$1 $this_apply;
  
// $FF: synthetic field
  
final View $this_apply$inlined;

  
MainActivity$$special$$inlined$apply$lambda$1(MainActivity$configure$1$1 var1, View var2) {
     
super(1);
     
this.$this_apply = var1;
     
this.$this_apply$inlined = var2;
  
}

  
// $FF: synthetic method
   // $FF: bridge method
  
public Object invoke(Object var1) {
     
this.invoke((AEnum)var1);
     
return Unit.INSTANCE;
  
}

   public
final void invoke(@NotNull AEnum aEnum) {
     
Intrinsics.checkParameterIsNotNull(aEnum, "aEnum");
     
this.$this_apply.setDoHide((Function1)null.INSTANCE);
     
View var2 = this.$this_apply$inlined.findViewById(1000018);
     
boolean var3 = false;
     
boolean var4 = false;
     
int var6 = false;
     
this.$this_apply.setDoHide((Function1)MainActivity$configure$1$2$1$2$1.INSTANCE);
  
}
}

 

 

 

 

 

 

Here is the bytecode:

// ================com/test/MainActivity.class =================

// class version 50.0 (50)

// access flags 0x31

public final class com/test/MainActivity extends androidx/appcompat/app/AppCompatActivity {

 

 

  // access flags 0x2

  private Lcom/test/Loader; loader

 

  // access flags 0x4

  protected onCreate(Landroid/os/Bundle;)V

    // annotable parameter count: 1 (visible)

    // annotable parameter count: 1 (invisible)

    @Lorg/jetbrains/annotations/Nullable;() // invisible, parameter 0

   L0

    LINENUMBER 16 L0

    ALOAD 0

    ALOAD 1

    INVOKESPECIAL androidx/appcompat/app/AppCompatActivity.onCreate (Landroid/os/Bundle;)V

   L1

    LINENUMBER 17 L1

    ALOAD 0

    LDC 1300071

    INVOKEVIRTUAL com/test/MainActivity.setContentView (I)V

   L2

    LINENUMBER 18 L2

    ALOAD 0

    ALOAD 0

    LDC 1000191

    INVOKEVIRTUAL com/test/MainActivity.findViewById (I)Landroid/view/View;

    CHECKCAST androidx/appcompat/widget/Toolbar

    INVOKEVIRTUAL com/test/MainActivity.setSupportActionBar (Landroidx/appcompat/widget/Toolbar;)V

   L3

    LINENUMBER 20 L3

    ALOAD 0

    LDC 1000144

    INVOKEVIRTUAL com/test/MainActivity.findViewById (I)Landroid/view/View;

    CHECKCAST com/google/android/material/floatingactionbutton/FloatingActionButton

    GETSTATIC com/test/MainActivity$onCreate$1.INSTANCE : Lcom/test/MainActivity$onCreate$1;

    CHECKCAST android/view/View$OnClickListener

    INVOKEVIRTUAL com/google/android/material/floatingactionbutton/FloatingActionButton.setOnClickListener (Landroid/view/View$OnClickListener;)V

   L4

    LINENUMBER 25 L4

    ALOAD 0

    INVOKEVIRTUAL com/test/MainActivity.configure ()V

   L5

    LINENUMBER 26 L5

    RETURN

   L6

    LOCALVARIABLE this Lcom/test/MainActivity; L0 L6 0

    LOCALVARIABLE savedInstanceState Landroid/os/Bundle; L0 L6 1

    MAXSTACK = 3

    MAXLOCALS = 2

 

  // access flags 0x11

  public final configure()V

   L0

    LINENUMBER 29 L0

   L1

    LINENUMBER 31 L1

   L2

    LINENUMBER 29 L2

    ALOAD 0

    LDC 1000003

    INVOKEVIRTUAL com/test/MainActivity.findViewById (I)Landroid/view/View;

    ASTORE 1

   L3

    LINENUMBER 31 L3

   L4

    ICONST_0

    ISTORE 2

   L5

    ICONST_0

    ISTORE 3

   L6

    ALOAD 1

    ASTORE 4

   L7

    ICONST_0

    ISTORE 5

   L8

    LINENUMBER 32 L8

   L9

    LINENUMBER 34 L9

    ALOAD 0

   L10

    LINENUMBER 32 L10

    NEW com/test/MainActivity$configure$1$1

    DUP

    INVOKESPECIAL com/test/MainActivity$configure$1$1.<init> ()V

    ASTORE 6

   L11

    LINENUMBER 34 L11

    ASTORE 7

   L12

    ICONST_0

    ISTORE 8

   L13

    ICONST_0

    ISTORE 9

   L14

    ALOAD 6

    ASTORE 10

   L15

    ICONST_0

    ISTORE 11

   L16

    LINENUMBER 35 L16

    ALOAD 10

    NEW com/test/MainActivity$$special$$inlined$apply$lambda$1

    DUP

    ALOAD 10

    ALOAD 4

    INVOKESPECIAL com/test/MainActivity$$special$$inlined$apply$lambda$1.<init> (Lcom/test/MainActivity$configure$1$1;Landroid/view/View;)V

    CHECKCAST kotlin/jvm/functions/Function1

    INVOKEVIRTUAL com/test/MainActivity$configure$1$1.setDoHide (Lkotlin/jvm/functions/Function1;)V

   L17

    LINENUMBER 48 L17

   L18

    NOP

   L19

    LINENUMBER 34 L19

   L20

    ALOAD 6

   L21

    ASTORE 12

    ALOAD 7

    ALOAD 12

    CHECKCAST com/test/Loader

    PUTFIELD com/test/MainActivity.loader : Lcom/test/Loader;

   L22

    LINENUMBER 49 L22

   L23

    NOP

   L24

    LINENUMBER 31 L24

   L25

   L26

    NOP

   L27

    LINENUMBER 50 L27

    RETURN

   L28

    LOCALVARIABLE $this$apply Lcom/test/MainActivity$configure$1$1; L15 L18 10

    LOCALVARIABLE $i$a$-apply-MainActivity$configure$1$2 I L16 L18 11

    LOCALVARIABLE $this$apply Landroid/view/View; L7 L23 4

    LOCALVARIABLE $i$a$-apply-MainActivity$configure$1 I L8 L23 5

    LOCALVARIABLE this Lcom/test/MainActivity; L0 L28 0

    MAXSTACK = 5

    MAXLOCALS = 13

 

  // access flags 0x1

  public <init>()V

   L0

    LINENUMBER 11 L0

    ALOAD 0

   L1

    LINENUMBER 11 L1

    INVOKESPECIAL androidx/appcompat/app/AppCompatActivity.<init> ()V

    RETURN

   L2

    LOCALVARIABLE this Lcom/test/MainActivity; L0 L2 0

    MAXSTACK = 1

    MAXLOCALS = 1

 

  // access flags 0x1

  public _$_findCachedViewById(I)Landroid/view/View;

    ALOAD 0

    GETFIELD com/test/MainActivity._$_findViewCache : Ljava/util/HashMap;

    IFNONNULL L0

    ALOAD 0

    NEW java/util/HashMap

    DUP

    INVOKESPECIAL java/util/HashMap.<init> ()V

    PUTFIELD com/test/MainActivity._$_findViewCache : Ljava/util/HashMap;

   L0

    ALOAD 0

    GETFIELD com/test/MainActivity._$_findViewCache : Ljava/util/HashMap;

    ILOAD 1

    INVOKESTATIC java/lang/Integer.valueOf (I)Ljava/lang/Integer;

    INVOKEVIRTUAL java/util/HashMap.get (Ljava/lang/Object;)Ljava/lang/Object;

    CHECKCAST android/view/View

    ASTORE 2

    ALOAD 2

    IFNONNULL L1

    ALOAD 0

    ILOAD 1

    INVOKEVIRTUAL androidx/fragment/app/FragmentActivity.findViewById (I)Landroid/view/View;

    ASTORE 2

    ALOAD 0

    GETFIELD com/test/MainActivity._$_findViewCache : Ljava/util/HashMap;

    ILOAD 1

    INVOKESTATIC java/lang/Integer.valueOf (I)Ljava/lang/Integer;

    ALOAD 2

    INVOKEVIRTUAL java/util/HashMap.put (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;

    POP

   L1

    ALOAD 2

    ARETURN

    MAXSTACK = 3

    MAXLOCALS = 3

 

  // access flags 0x1

  public _$_clearFindViewByIdCache()V

    ALOAD 0

    GETFIELD com/test/MainActivity._$_findViewCache : Ljava/util/HashMap;

    IFNULL L0

    ALOAD 0

    GETFIELD com/test/MainActivity._$_findViewCache : Ljava/util/HashMap;

    INVOKEVIRTUAL java/util/HashMap.clear ()V

   L0

    RETURN

    MAXSTACK = 1

    MAXLOCALS = 1

 

  // access flags 0x2

  private Ljava/util/HashMap; _$_findViewCache

 

  @Lkotlin/Metadata;(mv={1, 1, 16}, bv={1, 0, 3}, k=1, d1={"\u0000 \n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\u0008\u0002\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010\u0002\n\u0002\u0008\u0002\n\u0002\u0018\u0002\n\u0000\u0018\u00002\u00020\u0001B\u0005\u00a2\u0006\u0002\u0010\u0002J\u0006\u0010\u0005\u001a\u00020\u0006J\u0012\u0010\u0007\u001a\u00020\u00062\u0008\u0010\u0008\u001a\u0004\u0018\u00010\u0009H\u0014R\u0010\u0010\u0003\u001a\u0004\u0018\u00010\u0004X\u0082\u000e\u00a2\u0006\u0002\n\u0000\u00a8\u0006\n"}, d2={"Lcom/test/MainActivity;", "Landroidx/appcompat/app/AppCompatActivity;", "()V", "loader", "Lcom/test/Loader;", "configure", "", "onCreate", "savedInstanceState", "Landroid/os/Bundle;", "app"})

  // access flags 0x18

  final static INNERCLASS com/test/MainActivity$onCreate$1 null null

  // compiled from: MainActivity.kt

  // debug info: SMAP

MainActivity.kt

Kotlin

*S Kotlin

*F

+ 1 MainActivity.kt

com/test/MainActivity

*L

1#1,52:1

*E

 

}

 

 

// ================com/test/MainActivity$onCreate$1.class =================

// class version 50.0 (50)

// access flags 0x30

final class com/test/MainActivity$onCreate$1 implements android/view/View$OnClickListener {

 

 

  // access flags 0x11

  public final onClick(Landroid/view/View;)V

    // annotable parameter count: 1 (visible)

    // annotable parameter count: 1 (invisible)

   L0

    LINENUMBER 21 L0

   L1

    LINENUMBER 22 L1

   L2

    LINENUMBER 21 L2

   L3

    LINENUMBER 22 L3

   L4

    LINENUMBER 21 L4

    ALOAD 1

    LDC "Replace with your own action"

    CHECKCAST java/lang/CharSequence

    ICONST_0

    INVOKESTATIC com/google/android/material/snackbar/Snackbar.make (Landroid/view/View;Ljava/lang/CharSequence;I)Lcom/google/android/material/snackbar/Snackbar;

   L5

    LINENUMBER 22 L5

    LDC "Action"

    CHECKCAST java/lang/CharSequence

    ACONST_NULL

    INVOKEVIRTUAL com/google/android/material/snackbar/Snackbar.setAction (Ljava/lang/CharSequence;Landroid/view/View$OnClickListener;)Lcom/google/android/material/snackbar/Snackbar;

    INVOKEVIRTUAL com/google/android/material/snackbar/Snackbar.show ()V

   L6

    LINENUMBER 23 L6

    RETURN

   L7

    LOCALVARIABLE this Lcom/test/MainActivity$onCreate$1; L0 L7 0

    LOCALVARIABLE view Landroid/view/View; L0 L7 1

    MAXSTACK = 3

    MAXLOCALS = 2

 

  // access flags 0x0

  <init>()V

    ALOAD 0

    INVOKESPECIAL java/lang/Object.<init> ()V

    RETURN

    MAXSTACK = 1

    MAXLOCALS = 1

 

  // access flags 0x19

  public final static Lcom/test/MainActivity$onCreate$1; INSTANCE

 

  // access flags 0x8

  static <clinit>()V

    NEW com/test/MainActivity$onCreate$1

    DUP

    INVOKESPECIAL com/test/MainActivity$onCreate$1.<init> ()V

    PUTSTATIC com/test/MainActivity$onCreate$1.INSTANCE : Lcom/test/MainActivity$onCreate$1;

    RETURN

    MAXSTACK = 2

    MAXLOCALS = 0

 

  @Lkotlin/Metadata;(mv={1, 1, 16}, bv={1, 0, 3}, k=3, d1={"\u0000\u0010\n\u0000\n\u0002\u0010\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\u0008\u0002\u0010\u0000\u001a\u00020\u00012\u000e\u0010\u0002\u001a\n \u0004*\u0004\u0018\u00010\u00030\u0003H\n\u00a2\u0006\u0002\u0008\u0005"}, d2={"<anonymous>", "", "view", "Landroid/view/View;", "kotlin.jvm.PlatformType", "onClick"})

  OUTERCLASS com/test/MainActivity onCreate (Landroid/os/Bundle;)V

  // access flags 0x18

  final static INNERCLASS com/test/MainActivity$onCreate$1 null null

  // compiled from: MainActivity.kt

}

 

 

// ================com/test/MainActivity$configure$1$1.class =================

// class version 50.0 (50)

// access flags 0x31

public final class com/test/MainActivity$configure$1$1 extends com/test/LoaderWrapper {

 

  OUTERCLASS com/test/MainActivity configure ()V

 

  // access flags 0x0

  <init>()V

   L0

    LINENUMBER 32 L0

    ALOAD 0

   L1

    LINENUMBER 32 L1

    INVOKESPECIAL com/test/LoaderWrapper.<init> ()V

    RETURN

   L2

    LOCALVARIABLE this Lcom/test/MainActivity$configure$1$1; L0 L2 0

    MAXSTACK = 1

    MAXLOCALS = 1

 

  @Lkotlin/Metadata;(mv={1, 1, 16}, bv={1, 0, 3}, k=1, d1={"\u0000\u000b\n\u0000\n\u0002\u0018\u0002\n\u0000*\u0001\u0000\u0008\n\u0018\u00002\u00020\u0001\u00a8\u0006\u0002"}, d2={"com/test/MainActivity$configure$1$1", "Lcom/test/LoaderWrapper;", "app"})

  // access flags 0x19

  public final static INNERCLASS com/test/MainActivity$configure$1$1 null null

  // compiled from: MainActivity.kt

}

 

 

// ================com/test/MainActivity$configure$1$2$1$1.class =================

// class version 50.0 (50)

// access flags 0x30

// signature Lkotlin/jvm/internal/Lambda;Lkotlin/jvm/functions/Function1<Lcom/test/Loader$AEnum;Lkotlin/Unit;>;

// declaration: com/test/MainActivity$configure$1$2$1$1 extends kotlin.jvm.internal.Lambda implements kotlin.jvm.functions.Function1<com.test.Loader$AEnum, kotlin.Unit>

final class com/test/MainActivity$configure$1$2$1$1 extends kotlin/jvm/internal/Lambda implements kotlin/jvm/functions/Function1 {

 

 

  // access flags 0x1041

  public synthetic bridge invoke(Ljava/lang/Object;)Ljava/lang/Object;

   L0

    LINENUMBER 11 L0

    ALOAD 0

    ALOAD 1

    CHECKCAST com/test/Loader$AEnum

    INVOKEVIRTUAL com/test/MainActivity$configure$1$2$1$1.invoke (Lcom/test/Loader$AEnum;)V

    GETSTATIC kotlin/Unit.INSTANCE : Lkotlin/Unit;

    ARETURN

    MAXSTACK = 2

    MAXLOCALS = 2

 

  // access flags 0x11

  public final invoke(Lcom/test/Loader$AEnum;)V

    // annotable parameter count: 1 (visible)

    // annotable parameter count: 1 (invisible)

    @Lorg/jetbrains/annotations/NotNull;() // invisible, parameter 0

   L0

    ALOAD 1

    LDC "it"

    INVOKESTATIC kotlin/jvm/internal/Intrinsics.checkParameterIsNotNull (Ljava/lang/Object;Ljava/lang/String;)V

   L1

    LINENUMBER 36 L1

    RETURN

   L2

    LOCALVARIABLE this Lcom/test/MainActivity$configure$1$2$1$1; L0 L2 0

    LOCALVARIABLE it Lcom/test/Loader$AEnum; L0 L2 1

    MAXSTACK = 2

    MAXLOCALS = 2

 

  // access flags 0x0

  <init>()V

    ALOAD 0

    ICONST_1

    INVOKESPECIAL kotlin/jvm/internal/Lambda.<init> (I)V

    RETURN

    MAXSTACK = 2

    MAXLOCALS = 1

 

  // access flags 0x19

  public final static Lcom/test/MainActivity$configure$1$2$1$1; INSTANCE

 

  // access flags 0x8

  static <clinit>()V

    NEW com/test/MainActivity$configure$1$2$1$1

    DUP

    INVOKESPECIAL com/test/MainActivity$configure$1$2$1$1.<init> ()V

    PUTSTATIC com/test/MainActivity$configure$1$2$1$1.INSTANCE : Lcom/test/MainActivity$configure$1$2$1$1;

    RETURN

    MAXSTACK = 2

    MAXLOCALS = 0

 

  @Lkotlin/Metadata;(mv={1, 1, 16}, bv={1, 0, 3}, k=3, d1={"\u0000\u000e\n\u0000\n\u0002\u0010\u0002\n\u0000\n\u0002\u0018\u0002\n\u0000\u0010\u0000\u001a\u00020\u00012\u0006\u0010\u0002\u001a\u00020\u0003H\n\u00a2\u0006\u0002\u0008\u0004"}, d2={"<anonymous>", "", "it", "Lcom/test/Loader$AEnum;", "invoke"})

  OUTERCLASS com/test/MainActivity$configure$1$2$1 invoke (Lcom/test/Loader$AEnum;)V

  // access flags 0x18

  final static INNERCLASS com/test/MainActivity$configure$1$2$1$1 null null

  // access flags 0x18

  final static INNERCLASS com/test/MainActivity$configure$1$2$1 null null

  // compiled from: MainActivity.kt

}

 

 

// ================com/test/MainActivity$configure$1$2$1$2$1.class =================

// class version 50.0 (50)

// access flags 0x30

// signature Lkotlin/jvm/internal/Lambda;Lkotlin/jvm/functions/Function1<Lcom/test/Loader$AEnum;Lkotlin/Unit;>;

// declaration: com/test/MainActivity$configure$1$2$1$2$1 extends kotlin.jvm.internal.Lambda implements kotlin.jvm.functions.Function1<com.test.Loader$AEnum, kotlin.Unit>

final class com/test/MainActivity$configure$1$2$1$2$1 extends kotlin/jvm/internal/Lambda implements kotlin/jvm/functions/Function1 {

 

 

  // access flags 0x1041

  public synthetic bridge invoke(Ljava/lang/Object;)Ljava/lang/Object;

   L0

    LINENUMBER 11 L0

    ALOAD 0

    ALOAD 1

    CHECKCAST com/test/Loader$AEnum

    INVOKEVIRTUAL com/test/MainActivity$configure$1$2$1$2$1.invoke (Lcom/test/Loader$AEnum;)V

    GETSTATIC kotlin/Unit.INSTANCE : Lkotlin/Unit;

    ARETURN

    MAXSTACK = 2

    MAXLOCALS = 2

 

  // access flags 0x11

  public final invoke(Lcom/test/Loader$AEnum;)V

    // annotable parameter count: 1 (visible)

    // annotable parameter count: 1 (invisible)

    @Lorg/jetbrains/annotations/NotNull;() // invisible, parameter 0

   L0

    ALOAD 1

    LDC "it"

    INVOKESTATIC kotlin/jvm/internal/Intrinsics.checkParameterIsNotNull (Ljava/lang/Object;Ljava/lang/String;)V

   L1

    LINENUMBER 42 L1

    ALOAD 1

    ASTORE 2

   L2

    ICONST_0

    ISTORE 3

   L3

    ICONST_0

    ISTORE 4

   L4

    ALOAD 2

    ASTORE 5

   L5

    ICONST_0

    ISTORE 6

   L6

    LINENUMBER 44 L6

    NOP

   L7

    NOP

   L8

    LINENUMBER 42 L8

   L9

   L10

    NOP

   L11

    LINENUMBER 45 L11

    RETURN

   L12

    LOCALVARIABLE $this$apply Lcom/test/Loader$AEnum; L5 L7 5

    LOCALVARIABLE $i$a$-apply-MainActivity$configure$1$2$1$2$1$1 I L6 L7 6

    LOCALVARIABLE this Lcom/test/MainActivity$configure$1$2$1$2$1; L0 L12 0

    LOCALVARIABLE it Lcom/test/Loader$AEnum; L0 L12 1

    MAXSTACK = 2

    MAXLOCALS = 7

 

  // access flags 0x0

  <init>()V

    ALOAD 0

    ICONST_1

    INVOKESPECIAL kotlin/jvm/internal/Lambda.<init> (I)V

    RETURN

    MAXSTACK = 2

    MAXLOCALS = 1

 

  // access flags 0x19

  public final static Lcom/test/MainActivity$configure$1$2$1$2$1; INSTANCE

 

  // access flags 0x8

  static <clinit>()V

    NEW com/test/MainActivity$configure$1$2$1$2$1

    DUP

    INVOKESPECIAL com/test/MainActivity$configure$1$2$1$2$1.<init> ()V

    PUTSTATIC com/test/MainActivity$configure$1$2$1$2$1.INSTANCE : Lcom/test/MainActivity$configure$1$2$1$2$1;

    RETURN

    MAXSTACK = 2

    MAXLOCALS = 0

 

  @Lkotlin/Metadata;(mv={1, 1, 16}, bv={1, 0, 3}, k=3, d1={"\u0000\u000e\n\u0000\n\u0002\u0010\u0002\n\u0000\n\u0002\u0018\u0002\n\u0000\u0010\u0000\u001a\u00020\u00012\u0006\u0010\u0002\u001a\u00020\u0003H\n\u00a2\u0006\u0002\u0008\u0004"}, d2={"<anonymous>", "", "it", "Lcom/test/Loader$AEnum;", "invoke"})

  OUTERCLASS com/test/MainActivity$configure$1$2$1 invoke (Lcom/test/Loader$AEnum;)V

  // access flags 0x18

  final static INNERCLASS com/test/MainActivity$configure$1$2$1$2$1 null null

  // compiled from: MainActivity.kt

  // debug info: SMAP

MainActivity.kt

Kotlin

*S Kotlin

*F

+ 1 MainActivity.kt

com/test/MainActivity$configure$1$2$1$2$1

*L

1#1,52:1

*E

 

}

 

 

// ================com/test/MainActivity$$special$$inlined$apply$lambda$1.class =================

// class version 50.0 (50)

// access flags 0x30

// signature Lkotlin/jvm/internal/Lambda;Lkotlin/jvm/functions/Function1<Lcom/test/Loader$AEnum;Lkotlin/Unit;>;

// declaration: com/test/MainActivity$$special$$inlined$apply$lambda$1 extends kotlin.jvm.internal.Lambda implements kotlin.jvm.functions.Function1<com.test.Loader$AEnum, kotlin.Unit>

final class com/test/MainActivity$$special$$inlined$apply$lambda$1 extends kotlin/jvm/internal/Lambda implements kotlin/jvm/functions/Function1 {

 

  OUTERCLASS com/test/MainActivity configure ()V

 

  // access flags 0x0

  <init>(Lcom/test/MainActivity$configure$1$1;Landroid/view/View;)V

   L0

    ALOAD 0

    ALOAD 1

    PUTFIELD com/test/MainActivity$$special$$inlined$apply$lambda$1.$this_apply : Lcom/test/MainActivity$configure$1$1;

    ALOAD 0

    ALOAD 2

    PUTFIELD com/test/MainActivity$$special$$inlined$apply$lambda$1.$this_apply$inlined : Landroid/view/View;

    ALOAD 0

    ICONST_1

    INVOKESPECIAL kotlin/jvm/internal/Lambda.<init> (I)V

    RETURN

   L1

    MAXSTACK = 2

    MAXLOCALS = 3

 

  // access flags 0x1010

  final synthetic Lcom/test/MainActivity$configure$1$1; $this_apply

 

  // access flags 0x1010

  final synthetic Landroid/view/View; $this_apply$inlined

 

  // access flags 0x1041

  public synthetic bridge invoke(Ljava/lang/Object;)Ljava/lang/Object;

   L0

    LINENUMBER 11 L0

    ALOAD 0

    ALOAD 1

    CHECKCAST com/test/Loader$AEnum

    INVOKEVIRTUAL com/test/MainActivity$$special$$inlined$apply$lambda$1.invoke (Lcom/test/Loader$AEnum;)V

    GETSTATIC kotlin/Unit.INSTANCE : Lkotlin/Unit;

    ARETURN

   L1

    MAXSTACK = 2

    MAXLOCALS = 2

 

  // access flags 0x11

  public final invoke(Lcom/test/Loader$AEnum;)V

    @Lorg/jetbrains/annotations/NotNull;() // invisible, parameter 0

   L0

    ALOAD 1

    LDC "aEnum"

    INVOKESTATIC kotlin/jvm/internal/Intrinsics.checkParameterIsNotNull (Ljava/lang/Object;Ljava/lang/String;)V

   L1

    LINENUMBER 36 L1

    ALOAD 0

    GETFIELD com/test/MainActivity$$special$$inlined$apply$lambda$1.$this_apply : Lcom/test/MainActivity$configure$1$1;

    GETSTATIC com/test/MainActivity$configure$1$2$1$1.INSTANCE : Lcom/test/MainActivity$configure$1$2$1$1;

    CHECKCAST kotlin/jvm/functions/Function1

    INVOKEVIRTUAL com/test/MainActivity$configure$1$1.setDoHide (Lkotlin/jvm/functions/Function1;)V

   L2

    LINENUMBER 37 L2

    LINENUMBER 39 L2

    LINENUMBER 37 L2

    ALOAD 0

    GETFIELD com/test/MainActivity$$special$$inlined$apply$lambda$1.$this_apply$inlined : Landroid/view/View;

    LDC 1000018

    INVOKEVIRTUAL android/view/View.findViewById (I)Landroid/view/View;

    ASTORE 2

   L3

    LINENUMBER 39 L3

    ICONST_0

    ISTORE 3

    ICONST_0

    ISTORE 4

    ALOAD 2

    ASTORE 5

   L4

    ICONST_0

    ISTORE 6

   L5

    LINENUMBER 40 L5

    ALOAD 0

    GETFIELD com/test/MainActivity$$special$$inlined$apply$lambda$1.$this_apply : Lcom/test/MainActivity$configure$1$1;

    GETSTATIC com/test/MainActivity$configure$1$2$1$2$1.INSTANCE : Lcom/test/MainActivity$configure$1$2$1$2$1;

    CHECKCAST kotlin/jvm/functions/Function1

    INVOKEVIRTUAL com/test/MainActivity$configure$1$1.setDoHide (Lkotlin/jvm/functions/Function1;)V

   L6

    LINENUMBER 46 L6

    NOP

   L7

    LINENUMBER 39 L7

    NOP

   L8

    LINENUMBER 47 L8

    RETURN

   L9

    LOCALVARIABLE $this$apply Landroid/view/View; L4 L6 5

    LOCALVARIABLE $i$a$-apply-MainActivity$configure$1$2$1$2 I L5 L6 6

    LOCALVARIABLE this Lcom/test/MainActivity$$special$$inlined$apply$lambda$1; L0 L9 0

    LOCALVARIABLE aEnum Lcom/test/Loader$AEnum; L0 L9 1

    MAXSTACK = 2

    MAXLOCALS = 7

  // access flags 0x18

  final static INNERCLASS com/test/MainActivity$configure$1$2$1$1 null null

  // access flags 0x18

  final static INNERCLASS com/test/MainActivity$$special$$inlined$apply$lambda$1 null null

 

  @Lkotlin/Metadata;(mv={1, 1, 16}, bv={1, 0, 3}, k=3, d1={"\u0000\u0010\n\u0000\n\u0002\u0010\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\u0008\u0002\u0010\u0000\u001a\u00020\u00012\u0006\u0010\u0002\u001a\u00020\u0003H\n\u00a2\u0006\u0002\u0008\u0004\u00a8\u0006\u0005"}, d2={"<anonymous>", "", "aEnum", "Lcom/test/Loader$AEnum;", "invoke", "com/test/MainActivity$configure$1$2$1"})

  OUTERCLASS com/test/MainActivity configure ()V

  // compiled from: MainActivity.kt

  // debug info: SMAP

MainActivity.kt

Kotlin

*S Kotlin

*F

+ 1 MainActivity.kt

com/test/MainActivity$configure$1$2$1

*L

1#1,52:1

*E

 

}

 

 

// ================META-INF/app.kotlin_module =================

 

Justin Tullgren
Senior Software Engineer
T
M 603-512-2826
jtullgren@xxxxxxxxxxxxxxx


“Watch

Read the Forrester Wave

Thunderhead is the trading name of Thunderhead One, Inc. which is registered in Virginia, USA under No. 07993165 whose registered office is at Suite 4017, 250 Commercial Street, Manchester, NH 03101.

The contents of this e-mail are intended for the named addressee only. It contains confidential information. Unless you are the named addressee or an authorized designee, you may not copy or use it, or disclose it to anyone else. If you received it in error please notify us immediately and then destroy it.


Back to the top