Skip to content

Commit 68892e7

Browse files
committed
Add imports for XML widget tags, support.v4 fake package files
(cherry picked from commit f7400d9)
1 parent e35c717 commit 68892e7

File tree

25 files changed

+261
-124
lines changed

25 files changed

+261
-124
lines changed
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
package android.appwidget
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
package android.inputmethodservice
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
package android.opengl
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
package android.webkit

compiler/testData/cli/jvm/pluginSimple.args

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,8 @@ plugin\:org.jetbrains.kotlin.android\:androidRes=$TESTDATA_DIR$/androidPlugin/re
99
$TESTDATA_DIR$/pluginSimple.kt
1010
$TESTDATA_DIR$/androidPlugin/androidApp.kt
1111
$TESTDATA_DIR$/androidPlugin/androidView.kt
12-
$TESTDATA_DIR$/androidPlugin/androidWidget.kt
12+
$TESTDATA_DIR$/androidPlugin/androidWidget.kt
13+
$TESTDATA_DIR$/androidPlugin/fakeAppwidgetPackage.kt
14+
$TESTDATA_DIR$/androidPlugin/fakeInputMethodServicePackage.kt
15+
$TESTDATA_DIR$/androidPlugin/fakeOpenglPackage.kt
16+
$TESTDATA_DIR$/androidPlugin/fakeWebkitPackage.kt

compiler/testData/cli/jvm/pluginSimpleUsage.args

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,8 @@ plugin\:org.jetbrains.kotlin.android\:androidManifest=$TESTDATA_DIR$/androidPlug
77
$TESTDATA_DIR$/pluginSimple.kt
88
$TESTDATA_DIR$/androidPlugin/androidApp.kt
99
$TESTDATA_DIR$/androidPlugin/androidView.kt
10-
$TESTDATA_DIR$/androidPlugin/androidWidget.kt
10+
$TESTDATA_DIR$/androidPlugin/androidWidget.kt
11+
$TESTDATA_DIR$/androidPlugin/fakeAppwidgetPackage.kt
12+
$TESTDATA_DIR$/androidPlugin/fakeInputMethodServicePackage.kt
13+
$TESTDATA_DIR$/androidPlugin/fakeOpenglPackage.kt
14+
$TESTDATA_DIR$/androidPlugin/fakeWebkitPackage.kt

plugins/android-compiler-plugin/src/org/jetbrains/kotlin/lang/resolve/android/AndroidUIXmlProcessor.kt

Lines changed: 25 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -85,8 +85,13 @@ public abstract class AndroidUIXmlProcessor(protected val project: Project) {
8585
public fun parse(generateCommonFiles: Boolean = true): List<String> {
8686
val commonFiles = if (generateCommonFiles) {
8787
val clearCacheFile = renderLayoutFile(AndroidConst.SYNTHETIC_PACKAGE) {} +
88-
renderClearCacheFunction("Activity") + renderClearCacheFunction("Fragment")
89-
listOf(clearCacheFile, FLEXIBLE_TYPE_FILE)
88+
renderClearCacheFunction("android.app.Activity") + renderClearCacheFunction("android.app.Fragment")
89+
90+
listOf(clearCacheFile,
91+
FLEXIBLE_TYPE_FILE,
92+
FAKE_SUPPORT_V4_APP_FILE,
93+
FAKE_SUPPORT_V4_VIEW_FILE,
94+
FAKE_SUPPORT_V4_WIDGET_FILE)
9095
} else listOf()
9196

9297
return resourceManager.getLayoutXmlFiles().flatMap { entry ->
@@ -96,12 +101,12 @@ public abstract class AndroidUIXmlProcessor(protected val project: Project) {
96101
val layoutPackage = files[0].genSyntheticPackageName()
97102

98103
val mainLayoutFile = renderLayoutFile(layoutPackage, widgets) {
99-
writeSyntheticProperty("Activity", it, "findViewById(0)")
100-
writeSyntheticProperty("Fragment", it, "getView().findViewById(0)")
104+
writeSyntheticProperty("android.app.Activity", it, "findViewById(0)")
105+
writeSyntheticProperty("android.app.Fragment", it, "getView().findViewById(0)")
101106
}
102107

103108
val viewLayoutFile = renderLayoutFile("$layoutPackage.view", widgets) {
104-
writeSyntheticProperty("View", it, "findViewById(0)")
109+
writeSyntheticProperty("android.view.View", it, "findViewById(0)")
105110
}
106111

107112
listOf(mainLayoutFile, viewLayoutFile)
@@ -170,13 +175,25 @@ public abstract class AndroidUIXmlProcessor(protected val project: Project) {
170175
private val EXPLICIT_FLEXIBLE_CLASS_NAME = Flexibility.FLEXIBLE_TYPE_CLASSIFIER.getRelativeClassName().asString()
171176

172177
private val ANDROID_IMPORTS = listOf(
173-
"android.app.Activity",
174-
"android.app.Fragment",
175-
"android.view.View",
178+
"android.app.*",
179+
"android.view.*",
176180
"android.widget.*",
181+
"android.webkit.*",
182+
"android.inputmethodservice.*",
183+
"android.opengl.*",
184+
"android.appwidget.*",
185+
"android.support.v4.app.*",
186+
"android.support.v4.view.*",
187+
"android.support.v4.widget.*",
177188
Flexibility.FLEXIBLE_TYPE_CLASSIFIER.asSingleFqName().asString())
178189

179190
private val FLEXIBLE_TYPE_FILE = "package $EXPLICIT_FLEXIBLE_PACKAGE\n\nclass $EXPLICIT_FLEXIBLE_CLASS_NAME<L, U>"
191+
192+
private val FAKE_SUPPORT_V4_WIDGET_FILE = "package android.support.v4.widget"
193+
194+
private val FAKE_SUPPORT_V4_VIEW_FILE = "package android.support.v4.view"
195+
196+
private val FAKE_SUPPORT_V4_APP_FILE = "package android.support.v4.app"
180197
}
181198

182199
}
Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,20 @@
11
package kotlinx.android.synthetic.layout
22

3-
import android.app.Activity
4-
import android.app.Fragment
5-
import android.view.View
3+
import android.app.*
4+
import android.view.*
65
import android.widget.*
6+
import android.webkit.*
7+
import android.inputmethodservice.*
8+
import android.opengl.*
9+
import android.appwidget.*
10+
import android.support.v4.app.*
11+
import android.support.v4.view.*
12+
import android.support.v4.widget.*
713
import kotlin.internal.flexible.ft
814

9-
val Activity.MyButton: ft<org.my.cool.Button, org.my.cool.Button?>
15+
val android.app.Activity.MyButton: ft<org.my.cool.Button, org.my.cool.Button?>
1016
get() = findViewById(0) as org.my.cool.Button
1117

12-
val Fragment.MyButton: ft<org.my.cool.Button, org.my.cool.Button?>
18+
val android.app.Fragment.MyButton: ft<org.my.cool.Button, org.my.cool.Button?>
1319
get() = getView().findViewById(0) as org.my.cool.Button
1420

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,17 @@
11
package kotlinx.android.synthetic.layout.view
22

3-
import android.app.Activity
4-
import android.app.Fragment
5-
import android.view.View
3+
import android.app.*
4+
import android.view.*
65
import android.widget.*
6+
import android.webkit.*
7+
import android.inputmethodservice.*
8+
import android.opengl.*
9+
import android.appwidget.*
10+
import android.support.v4.app.*
11+
import android.support.v4.view.*
12+
import android.support.v4.widget.*
713
import kotlin.internal.flexible.ft
814

9-
val View.MyButton: ft<org.my.cool.Button, org.my.cool.Button?>
15+
val android.view.View.MyButton: ft<org.my.cool.Button, org.my.cool.Button?>
1016
get() = findViewById(0) as org.my.cool.Button
1117

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,20 @@
11
package kotlinx.android.synthetic.layout
22

3-
import android.app.Activity
4-
import android.app.Fragment
5-
import android.view.View
3+
import android.app.*
4+
import android.view.*
65
import android.widget.*
6+
import android.webkit.*
7+
import android.inputmethodservice.*
8+
import android.opengl.*
9+
import android.appwidget.*
10+
import android.support.v4.app.*
11+
import android.support.v4.view.*
12+
import android.support.v4.widget.*
713
import kotlin.internal.flexible.ft
814

9-
val Activity.MyButton: ft<org.my.cool.Button, org.my.cool.Button?>
15+
val android.app.Activity.MyButton: ft<org.my.cool.Button, org.my.cool.Button?>
1016
get() = findViewById(0) as org.my.cool.Button
1117

12-
val Fragment.MyButton: ft<org.my.cool.Button, org.my.cool.Button?>
18+
val android.app.Fragment.MyButton: ft<org.my.cool.Button, org.my.cool.Button?>
1319
get() = getView().findViewById(0) as org.my.cool.Button
1420

0 commit comments

Comments
 (0)