Fix Android layout widget redeclarations
This commit is contained in:
+2
-1
@@ -51,7 +51,8 @@ class AndroidFindMemberUsagesHandler(
|
||||
override fun getPrimaryElements(): Array<PsiElement> {
|
||||
assert(isAndroidSyntheticElement(declaration))
|
||||
|
||||
val name = (declaration as JetProperty).getName()!!
|
||||
val property = declaration as JetProperty
|
||||
val name = property.getName()!!
|
||||
val parser = ServiceManager.getService(declaration.getProject(), javaClass<AndroidUIXmlProcessor>())
|
||||
val psiElement = parser?.resourceManager?.idToXmlAttribute(name) as? XmlAttribute
|
||||
if (psiElement != null && psiElement.getValueElement() != null) {
|
||||
|
||||
+1
-1
@@ -30,7 +30,7 @@ public class IDEAndroidResourceManager(val module: Module) : AndroidResourceMana
|
||||
|
||||
override fun idToXmlAttribute(id: String): PsiElement? {
|
||||
var ret: PsiElement? = null
|
||||
for (file in getLayoutXmlFiles()) {
|
||||
for (file in getLayoutXmlFiles().values().flatMap { it }) {
|
||||
file.accept(AndroidXmlVisitor({ retId, wClass, valueElement ->
|
||||
if (retId == id) ret = valueElement
|
||||
}))
|
||||
|
||||
+6
-5
@@ -41,13 +41,14 @@ class IDEAndroidUIXmlProcessor(val module: Module) : AndroidUIXmlProcessor(modul
|
||||
}
|
||||
}
|
||||
|
||||
override fun parseSingleFile(file: PsiFile): List<AndroidWidget> {
|
||||
override fun parseLayout(files: List<PsiFile>): List<AndroidWidget> {
|
||||
val widgets = arrayListOf<AndroidWidget>()
|
||||
file.accept(AndroidXmlVisitor({ id, wClass, valueElement ->
|
||||
widgets.add(AndroidWidget(id, wClass))
|
||||
}))
|
||||
val visitor = AndroidXmlVisitor { id, widgetType, attribute ->
|
||||
widgets.add(AndroidWidget(id, widgetType))
|
||||
}
|
||||
|
||||
return widgets
|
||||
files.forEach { it.accept(visitor) }
|
||||
return removeDuplicates(widgets)
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user