diff --git a/plugins/android-extensions/android-extensions-compiler/src/org/jetbrains/kotlin/android/synthetic/codegen/AbstractAndroidExtensionsExpressionCodegenExtension.kt b/plugins/android-extensions/android-extensions-compiler/src/org/jetbrains/kotlin/android/synthetic/codegen/AbstractAndroidExtensionsExpressionCodegenExtension.kt
index 6b01174a210..8505a4844d8 100644
--- a/plugins/android-extensions/android-extensions-compiler/src/org/jetbrains/kotlin/android/synthetic/codegen/AbstractAndroidExtensionsExpressionCodegenExtension.kt
+++ b/plugins/android-extensions/android-extensions-compiler/src/org/jetbrains/kotlin/android/synthetic/codegen/AbstractAndroidExtensionsExpressionCodegenExtension.kt
@@ -154,7 +154,7 @@ abstract class AbstractAndroidExtensionsExpressionCodegenExtension : ExpressionC
val targetClass = codegen.myClass as? KtClass ?: return
val container = codegen.descriptor
- if (container.kind != ClassKind.CLASS || container.isInner || DescriptorUtils.isLocal(container)) return
+ if (container.kind != ClassKind.CLASS && container.kind != ClassKind.OBJECT) return
val containerOptions = ContainerOptionsProxy.create(container)
if (containerOptions.getCacheOrDefault(targetClass) == NO_CACHE) return
diff --git a/plugins/android-extensions/android-extensions-compiler/testData/codegen/android/androidEntityInnerClass/0.kt b/plugins/android-extensions/android-extensions-compiler/testData/codegen/android/androidEntityInnerClass/0.kt
new file mode 100644
index 00000000000..d8e27fe7013
--- /dev/null
+++ b/plugins/android-extensions/android-extensions-compiler/testData/codegen/android/androidEntityInnerClass/0.kt
@@ -0,0 +1,40 @@
+package test
+
+import android.app.Activity
+import android.view.View
+import android.widget.*
+import kotlinx.android.synthetic.main.layout.*
+import kotlinx.android.extensions.*
+
+class R {
+ class id {
+ companion object {
+ const val login = 5
+ }
+ }
+}
+
+class MyActivity(): Activity() {
+ val loginItem = Button(this)
+
+ val entity = MyEntity(object : FrameLayout(this) {
+ override fun findViewById(id: Int) : View? = when(id) {
+ R.id.login -> loginItem
+ else -> null
+ }
+ })
+
+ val entity2: LayoutContainer = entity
+
+ public fun box(): String {
+ val o = if (entity.login.toString() == "Button") "O" else ""
+ val k = if (entity2.login.toString() == "Button") "K" else ""
+ return o + k // "OK"
+ }
+
+ inner class MyEntity(override val containerView: View) : LayoutContainer
+}
+
+fun box(): String {
+ return MyActivity().box()
+}
diff --git a/plugins/android-extensions/android-extensions-compiler/testData/codegen/android/androidEntityInnerClass/1.kt b/plugins/android-extensions/android-extensions-compiler/testData/codegen/android/androidEntityInnerClass/1.kt
new file mode 100644
index 00000000000..0788ecc38c3
--- /dev/null
+++ b/plugins/android-extensions/android-extensions-compiler/testData/codegen/android/androidEntityInnerClass/1.kt
@@ -0,0 +1,30 @@
+package test
+
+import android.app.Activity
+import android.view.View
+import android.widget.*
+import kotlinx.android.synthetic.main.layout.*
+import kotlinx.android.extensions.*
+
+class R {
+ class id {
+ companion object {
+ const val login = 5
+ }
+ }
+}
+
+class MyActivity(): Activity() {
+ val loginItem = Button(this)
+ val entity = MyEntity(loginItem)
+
+ init {
+ entity.login
+ }
+
+ inner class MyEntity(override val containerView: View) : LayoutContainer
+}
+
+fun box(): String {
+ return "OK"
+}
diff --git a/plugins/android-extensions/android-extensions-compiler/testData/codegen/android/androidEntityInnerClass/AndroidManifest.xml b/plugins/android-extensions/android-extensions-compiler/testData/codegen/android/androidEntityInnerClass/AndroidManifest.xml
new file mode 100644
index 00000000000..00856b86107
--- /dev/null
+++ b/plugins/android-extensions/android-extensions-compiler/testData/codegen/android/androidEntityInnerClass/AndroidManifest.xml
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/plugins/android-extensions/android-extensions-compiler/testData/codegen/android/androidEntityInnerClass/layout/layout.xml b/plugins/android-extensions/android-extensions-compiler/testData/codegen/android/androidEntityInnerClass/layout/layout.xml
new file mode 100644
index 00000000000..3e1b7254a52
--- /dev/null
+++ b/plugins/android-extensions/android-extensions-compiler/testData/codegen/android/androidEntityInnerClass/layout/layout.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/plugins/plugins-tests/tests/org/jetbrains/kotlin/android/synthetic/test/AndroidBoxTestGenerated.java b/plugins/plugins-tests/tests/org/jetbrains/kotlin/android/synthetic/test/AndroidBoxTestGenerated.java
index 3f4123c7d49..6a5ea36bc7c 100644
--- a/plugins/plugins-tests/tests/org/jetbrains/kotlin/android/synthetic/test/AndroidBoxTestGenerated.java
+++ b/plugins/plugins-tests/tests/org/jetbrains/kotlin/android/synthetic/test/AndroidBoxTestGenerated.java
@@ -44,6 +44,12 @@ public class AndroidBoxTestGenerated extends AbstractAndroidBoxTest {
doCompileAgainstAndroidSdkTest(fileName);
}
+ @TestMetadata("androidEntityInnerClass")
+ public void testAndroidEntityInnerClass() throws Exception {
+ String fileName = KotlinTestUtils.navigationMetadata("plugins/android-extensions/android-extensions-compiler/testData/codegen/android/androidEntityInnerClass/");
+ doCompileAgainstAndroidSdkTest(fileName);
+ }
+
@TestMetadata("fqNameInAttr")
public void testFqNameInAttr() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("plugins/android-extensions/android-extensions-compiler/testData/codegen/android/fqNameInAttr/");
@@ -107,6 +113,12 @@ public class AndroidBoxTestGenerated extends AbstractAndroidBoxTest {
doFakeInvocationTest(fileName);
}
+ @TestMetadata("androidEntityInnerClass")
+ public void testAndroidEntityInnerClass() throws Exception {
+ String fileName = KotlinTestUtils.navigationMetadata("plugins/android-extensions/android-extensions-compiler/testData/codegen/android/androidEntityInnerClass/");
+ doFakeInvocationTest(fileName);
+ }
+
@TestMetadata("fqNameInAttr")
public void testFqNameInAttr() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("plugins/android-extensions/android-extensions-compiler/testData/codegen/android/fqNameInAttr/");