From cb3a8d87d094fcc611aed54b99db6f1e154f066f Mon Sep 17 00:00:00 2001 From: Vyacheslav Gerasimov Date: Wed, 16 Aug 2017 15:38:41 +0300 Subject: [PATCH] Android Extensions: Correctly handle namespaces in layout xml #KT-19451 Fixed Target versions 1.1.5 --- .../kotlin/android/synthetic/AndroidConst.kt | 3 +-- .../android/synthetic/idea/AndroidXmlVisitor.kt | 3 ++- .../customNamespaceName/customNamespaceName.kt | 12 ++++++++++++ .../customNamespaceName/res/layout/layout.xml | 17 +++++++++++++++++ .../android/AndroidGotoTestGenerated.java | 6 ++++++ 5 files changed, 38 insertions(+), 3 deletions(-) create mode 100644 plugins/android-extensions/android-extensions-idea/testData/android/goto/customNamespaceName/customNamespaceName.kt create mode 100644 plugins/android-extensions/android-extensions-idea/testData/android/goto/customNamespaceName/res/layout/layout.xml diff --git a/plugins/android-extensions/android-extensions-compiler/src/org/jetbrains/kotlin/android/synthetic/AndroidConst.kt b/plugins/android-extensions/android-extensions-compiler/src/org/jetbrains/kotlin/android/synthetic/AndroidConst.kt index 678d83799d2..965f0ed05e0 100644 --- a/plugins/android-extensions/android-extensions-compiler/src/org/jetbrains/kotlin/android/synthetic/AndroidConst.kt +++ b/plugins/android-extensions/android-extensions-compiler/src/org/jetbrains/kotlin/android/synthetic/AndroidConst.kt @@ -28,9 +28,8 @@ object AndroidConst { list } - val ANDROID_NAMESPACE: String = "android" + val ANDROID_NAMESPACE: String = "http://schemas.android.com/apk/res/android" val ID_ATTRIBUTE_NO_NAMESPACE: String = "id" - val ID_ATTRIBUTE: String = "$ANDROID_NAMESPACE:$ID_ATTRIBUTE_NO_NAMESPACE" val CLASS_ATTRIBUTE_NO_NAMESPACE: String = "class" val IDENTIFIER_REGEX = "^@(\\+)?(([A-Za-z0-9_\\.]+)\\:)?id\\/([A-Za-z0-9_]+)$".toRegex() diff --git a/plugins/android-extensions/android-extensions-idea/src/org/jetbrains/kotlin/android/synthetic/idea/AndroidXmlVisitor.kt b/plugins/android-extensions/android-extensions-idea/src/org/jetbrains/kotlin/android/synthetic/idea/AndroidXmlVisitor.kt index 50399fe18d7..20c02294edd 100644 --- a/plugins/android-extensions/android-extensions-idea/src/org/jetbrains/kotlin/android/synthetic/idea/AndroidXmlVisitor.kt +++ b/plugins/android-extensions/android-extensions-idea/src/org/jetbrains/kotlin/android/synthetic/idea/AndroidXmlVisitor.kt @@ -43,7 +43,7 @@ class AndroidXmlVisitor(val elementCallback: (ResourceIdentifier, String, XmlAtt return } - val idAttribute = tag?.getAttribute(AndroidConst.ID_ATTRIBUTE) + val idAttribute = tag?.getAttribute(AndroidConst.ID_ATTRIBUTE_NO_NAMESPACE, AndroidConst.ANDROID_NAMESPACE) if (idAttribute != null) { val idAttributeValue = idAttribute.value if (idAttributeValue != null) { @@ -52,6 +52,7 @@ class AndroidXmlVisitor(val elementCallback: (ResourceIdentifier, String, XmlAtt if (name != null) elementCallback(name, xmlType, idAttribute) } } + tag?.acceptChildren(this) } } \ No newline at end of file diff --git a/plugins/android-extensions/android-extensions-idea/testData/android/goto/customNamespaceName/customNamespaceName.kt b/plugins/android-extensions/android-extensions-idea/testData/android/goto/customNamespaceName/customNamespaceName.kt new file mode 100644 index 00000000000..9f46c34cb62 --- /dev/null +++ b/plugins/android-extensions/android-extensions-idea/testData/android/goto/customNamespaceName/customNamespaceName.kt @@ -0,0 +1,12 @@ +package com.myapp + +import android.app.Activity +import android.os.Bundle +import java.io.File +import kotlinx.android.synthetic.main.layout.* + +public class MyActivity : Activity() { + override fun onCreate(savedInstanceState: Bundle?) {} + val button = login +} + diff --git a/plugins/android-extensions/android-extensions-idea/testData/android/goto/customNamespaceName/res/layout/layout.xml b/plugins/android-extensions/android-extensions-idea/testData/android/goto/customNamespaceName/res/layout/layout.xml new file mode 100644 index 00000000000..98030a0349c --- /dev/null +++ b/plugins/android-extensions/android-extensions-idea/testData/android/goto/customNamespaceName/res/layout/layout.xml @@ -0,0 +1,17 @@ + + + + +